diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 2ce16230c2..0000000000 --- a/.eslintrc.js +++ /dev/null @@ -1,109 +0,0 @@ -module.exports = { - root: true, - - extends: ['@metamask/eslint-config'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, - - env: { - 'shared-node-browser': true, - }, - - rules: { - // This prevents importing Node.js builtins. We currently use them in - // our codebase, so this rule is disabled. This rule should be disabled - // in `@metamask/eslint-config-nodejs` in the future. - 'import/no-nodejs-modules': 'off', - - // This prevents using the `console.log` and similar functions. All logging - // should be done through the module logger, or `logError` function in - // `@metamask/snaps-utils`. - 'no-console': 'error', - - // This prevents using Node.js and/or browser specific globals. We - // currently use both in our codebase, so this rule is disabled. - 'no-restricted-globals': 'off', - - // This rule disallows the `private` modifier on class fields, but we - // use it in some places. It also disables function expressions, but this - // triggers for class methods as well. - 'no-restricted-syntax': 'off', - }, - - overrides: [ - { - files: ['**/*.js', '**/*.cjs'], - extends: ['@metamask/eslint-config-nodejs'], - - parserOptions: { - ecmaVersion: 2020, - }, - - rules: { - // This prevents using Node.js and/or browser specific globals. We - // currently use both in our codebase, so this rule is disabled. - 'no-restricted-globals': 'off', - }, - }, - - { - files: ['**/*.mjs'], - parserOptions: { - ecmaVersion: 2022, - sourceType: 'module', - }, - }, - - { - files: ['**/*.ts', '**/*.tsx', '**/*.mts'], - extends: ['@metamask/eslint-config-typescript'], - rules: { - // This rule disallows the `private` modifier on class fields, but we - // use it in some places. It also disables function expressions, but this - // triggers for class methods as well. - 'no-restricted-syntax': 'off', - - // This allows importing the `Text` JSX component. - '@typescript-eslint/no-shadow': [ - 'error', - { - allow: ['Text'], - }, - ], - - // Without the `allowAny` option, this rule causes a lot of false - // positives. - '@typescript-eslint/restrict-template-expressions': [ - 'error', - { - allowAny: true, - allowBoolean: true, - allowNumber: true, - }, - ], - }, - }, - - { - files: ['**/*.test.ts', '**/*.test.tsx', '**/*.test.js'], - extends: ['@metamask/eslint-config-jest'], - rules: { - '@typescript-eslint/no-shadow': [ - 'error', - { allow: ['describe', 'expect', 'it'] }, - ], - '@typescript-eslint/unbound-method': 'off', - 'no-console': 'off', - }, - }, - ], - - ignorePatterns: [ - '!.prettierrc.js', - '**/!.eslintrc.js', - '**/dist*/', - 'packages/**', - ], -}; diff --git a/.github/workflows/build-lint-test.yml b/.github/workflows/build-lint-test.yml index d7166b8332..dee9bdb81f 100644 --- a/.github/workflows/build-lint-test.yml +++ b/.github/workflows/build-lint-test.yml @@ -168,10 +168,6 @@ jobs: name: Lint runs-on: ubuntu-latest needs: prepare - strategy: - fail-fast: false - matrix: - package-name: ${{ fromJson(needs.prepare.outputs.all-workspace-package-names) }} steps: - uses: actions/checkout@v4 - name: Setup Node @@ -180,7 +176,8 @@ jobs: node-version-file: '.nvmrc' cache: yarn - run: yarn --immutable --immutable-cache - - run: yarn workspace ${{ matrix.package-name }} run lint:ci + - name: Lint + run: yarn lint - name: Require clean working directory shell: bash run: | diff --git a/.prettierrc.js b/.prettierrc.mjs similarity index 67% rename from .prettierrc.js rename to .prettierrc.mjs index b2d98d2ee2..3322d0306b 100644 --- a/.prettierrc.js +++ b/.prettierrc.mjs @@ -1,8 +1,11 @@ // All of these are defaults except singleQuote, but we specify them // for explicitness -module.exports = { +const config = { quoteProps: 'as-needed', singleQuote: true, tabWidth: 2, trailingComma: 'all', + plugins: ['prettier-plugin-packagejson'], }; + +export default config; diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000000..0560a972c7 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,366 @@ +import base, { createConfig } from '@metamask/eslint-config'; +import browser from '@metamask/eslint-config-browser'; +import jest from '@metamask/eslint-config-jest'; +import nodejs from '@metamask/eslint-config-nodejs'; +import typescript from '@metamask/eslint-config-typescript'; + +const config = createConfig([ + { + ignores: [ + '**/assembly', + '**/build', + '**/coverage', + '**/dist', + '**/docs', + '**/public', + '.yarn', + ], + }, + + // Base configuration + { + extends: base, + + languageOptions: { + sourceType: 'module', + parserOptions: { + tsconfigRootDir: import.meta.dirname, + project: ['./tsconfig.packages.json'], + }, + }, + + settings: { + 'import-x/extensions': ['.js', '.mjs', '.wasm'], + }, + + rules: { + // This allows `Promise.catch().finally()` to be used without a return + // statement. + // TODO: Upstream this change to `@metamask/eslint-config`. + 'promise/catch-or-return': [ + 'error', + { + allowFinally: true, + }, + ], + + // By default the `resolve` and `reject` parameters of a Promise are + // expected to be named `resolve` and `reject`. This rule allows the + // parameters to be named `resolveSomething` and `rejectSomething`. + // TODO: Upstream this change to `@metamask/eslint-config`. + 'promise/param-names': [ + 'error', + { + resolvePattern: '^_?resolve', + rejectPattern: '^_?reject', + }, + ], + }, + }, + + // TypeScript source files + { + files: ['**/*.ts', '**/*.mts', '**/*.tsx'], + extends: typescript, + + rules: { + // This prevents using the `console.log` and similar functions. All logging + // should be done through the module logger, or `logError` function in + // `@metamask/snaps-utils`. + 'no-console': 'error', + + // This allows `@property` despite being "redundant" in a type system. + // We use it to document the properties of an object that are not declared + // directly in the type. + // TODO: Upstream this change to `@metamask/eslint-config`. + 'jsdoc/check-tag-names': [ + 'error', + { + definedTags: ['property'], + }, + ], + + // This is too strict for some cases, like when a Promise is used to + // perform a side effect. + // TODO: Upstream this change to `@metamask/eslint-config`. + 'promise/always-return': 'off', + + // TODO: Consider enabling this rule. + '@typescript-eslint/explicit-function-return-type': 'off', + + // This allows importing the `Text` JSX component. + '@typescript-eslint/no-shadow': [ + 'error', + { + allow: ['Text'], + }, + ], + + // When enabled, this rule disallows comparing strings to enums. This is + // too strict for some cases. + // TODO: Upstream this change to `@metamask/eslint-config-typescript`. + '@typescript-eslint/no-unsafe-enum-comparison': 'off', + + // Without the `allowAny` option, this rule causes a lot of false + // positives. + '@typescript-eslint/restrict-template-expressions': [ + 'error', + { + allowAny: true, + allowBoolean: true, + allowNumber: true, + }, + ], + + // Copied from `@metamask/eslint-config-typescript`, but modified to allow + // more flexibility in imports. + // TODO: Upstream this change to `@metamask/eslint-config-typescript`. + '@typescript-eslint/naming-convention': [ + 'error', + { + selector: 'default', + format: ['camelCase'], + leadingUnderscore: 'allow', + trailingUnderscore: 'forbid', + }, + { + selector: 'enumMember', + format: ['PascalCase'], + }, + { + selector: 'import', + format: ['camelCase', 'PascalCase', 'snake_case', 'UPPER_CASE'], + }, + { + selector: 'interface', + format: ['PascalCase'], + custom: { + regex: '^I[A-Z]', + match: false, + }, + }, + { + selector: 'objectLiteralMethod', + format: ['camelCase', 'PascalCase', 'UPPER_CASE'], + }, + { + selector: 'objectLiteralProperty', + format: ['camelCase', 'PascalCase', 'UPPER_CASE'], + }, + { + selector: 'typeLike', + format: ['PascalCase'], + }, + { + selector: 'typeParameter', + format: ['PascalCase'], + custom: { + regex: '^.{3,}', + match: true, + }, + }, + { + selector: 'variable', + format: ['camelCase', 'UPPER_CASE', 'PascalCase'], + leadingUnderscore: 'allow', + }, + { + selector: 'parameter', + format: ['camelCase', 'PascalCase'], + leadingUnderscore: 'allow', + }, + { + selector: [ + 'classProperty', + 'objectLiteralProperty', + 'typeProperty', + 'classMethod', + 'objectLiteralMethod', + 'typeMethod', + 'accessor', + 'enumMember', + ], + format: null, + modifiers: ['requiresQuotes'], + }, + ], + + // Allow `Promise.reject` to be called with any value. + // TODO: Upstream this change to `@metamask/eslint-config-typescript`. + '@typescript-eslint/prefer-promise-reject-errors': 'off', + + // Copied from `@metamask/eslint-config-typescript`, but modified to + // consider `default` as exhaustive in switch statements. + // TODO: Upstream this change to `@metamask/eslint-config-typescript`. + '@typescript-eslint/switch-exhaustiveness-check': [ + 'error', + { + considerDefaultExhaustiveForUnions: true, + }, + ], + }, + }, + + // Node.js + TypeScript scripts + { + files: [ + '**/scripts/**/*.ts', + '**/scripts/**/*.mts', + 'packages/snaps-execution-environments/scripts/**/*.ts', + ], + + extends: nodejs, + + languageOptions: { + sourceType: 'module', + parserOptions: { + tsconfigRootDir: import.meta.dirname, + project: ['./tsconfig.json'], + }, + }, + + rules: { + 'n/hashbang': 'off', + }, + }, + + // CommonJS Node.js scripts + { + files: ['**/*.js', '**/*.cjs'], + extends: nodejs, + + languageOptions: { + sourceType: 'script', + }, + + rules: { + 'n/hashbang': 'off', + }, + }, + + // ESM Node.js scripts + { + files: ['**/*.mjs'], + extends: nodejs, + + languageOptions: { + sourceType: 'module', + }, + + rules: { + 'n/hashbang': 'off', + }, + }, + + // Test files + { + files: [ + '**/*.test.ts', + '**/*.test.tsx', + '**/*.test.browser.ts', + '**/*.test.js', + ], + extends: [jest, nodejs], + + rules: { + // This rule is too strict for test files. + // TODO: Upstream this change to `@metamask/eslint-config-jest`. + '@typescript-eslint/unbound-method': 'off', + + 'jest/expect-expect': [ + 'error', + { + assertFunctionNames: ['expect', 'expectSaga', 'expectTypeOf'], + }, + ], + + // This rule is too strict for test files. + // TODO: Upstream this change to `@metamask/eslint-config-jest`. + 'jest/no-conditional-in-test': 'off', + + // This rule is too strict for test files. + 'n/no-unsupported-features/node-builtins': 'off', + + // This rule is too strict for test files. + 'no-console': 'off', + }, + }, + + // Files that contain Node.js functionality + { + files: [ + 'packages/create-snap/src/**/*', + 'packages/snaps-browserify-plugin/src/**/*', + 'packages/snaps-cli/src/**/*', + 'packages/snaps-controllers/src/services/node-js/**/*', + 'packages/snaps-jest/src/**/*', + 'packages/snaps-rollup-plugin/src/**/*', + 'packages/snaps-simulation/src/**/*', + 'packages/snaps-utils/src/**/*', + 'packages/snaps-webpack-plugin/src/**/*', + 'packages/test-snaps/src/**/*', + '**/scripts/**/*.ts', + '**/test-utils/**/*.ts', + '**/webpack.config.ts', + '**/snap.config.ts', + ], + extends: nodejs, + + rules: { + // These rules are too strict for some cases. + // TODO: Re-investigate these rules. + 'n/callback-return': 'off', + 'n/hashbang': 'off', + 'n/no-unsupported-features/node-builtins': 'off', + 'n/no-process-env': 'off', + 'n/no-process-exit': 'off', + 'n/no-sync': 'off', + 'no-restricted-globals': 'off', + }, + }, + + // Files that contain browser functionality + { + files: [ + 'packages/snaps-controllers/src/services/iframe/**/*', + 'packages/snaps-controllers/src/services/webworker/**/*', + 'packages/snaps-execution-environments/src/**/*', + 'packages/snaps-simulator/src/**/*', + 'packages/snaps-simulator/jest.setup.js', + 'packages/test-snaps/src/**/*', + '**/*.test.browser.ts', + ], + extends: [browser], + }, + + // Entrypoint files for legacy build tools + { + files: [ + 'packages/snaps-controllers/react-native.d.ts', + 'packages/snaps-controllers/react-native.js', + 'packages/snaps-sdk/jsx-dev-runtime.d.ts', + 'packages/snaps-sdk/jsx-dev-runtime.js', + 'packages/snaps-sdk/jsx-runtime.d.ts', + 'packages/snaps-sdk/jsx-runtime.js', + 'packages/snaps-sdk/jsx.d.ts', + 'packages/snaps-sdk/jsx.js', + ], + + rules: { + 'import-x/extensions': 'off', + 'import-x/no-unresolved': 'off', + }, + }, + + // Wasm example + { + files: ['packages/examples/packages/wasm/src/index.ts'], + + rules: { + // This rule changes depending on whether the build files exist or not. + 'import-x/extensions': 'off', + }, + }, +]); + +export default config; diff --git a/jest.config.base.js b/jest.config.base.js index fecb9a9fa2..dd25ae776d 100644 --- a/jest.config.base.js +++ b/jest.config.base.js @@ -121,6 +121,10 @@ module.exports = { // A preset that is used as a base for Jest's configuration // preset: '', + // The path to the Prettier executable used to format snapshots + // Jest doesn't support Prettier 3 yet, so we use Prettier 2 + prettierPath: require.resolve('prettier-2'), + // Run tests from one or more projects // projects: undefined, diff --git a/package.json b/package.json index 07a5978b66..5708080f4d 100644 --- a/package.json +++ b/package.json @@ -25,12 +25,11 @@ "get-release-tag": "ts-node --swc scripts/get-release-tag.ts", "postinstall": "simple-git-hooks", "install-chrome": "./scripts/install-chrome.sh", - "lint": "yarn workspaces foreach --all --parallel run lint:eslint && yarn lint:misc --check && yarn lint:tsconfig && yarn constraints && yarn lint:dependencies", - "lint:ci": "yarn lint:eslint && yarn lint:misc --check && yarn lint:tsconfig && yarn constraints && yarn lint:dependencies", + "lint": "yarn lint:eslint && yarn lint:misc --check && yarn lint:tsconfig && yarn constraints && yarn lint:dependencies", "lint:dependencies": "yarn workspaces foreach --all --parallel --verbose run lint:dependencies && yarn dedupe --check", - "lint:eslint": "eslint . --cache --ext js,cjs,mjs,jsx,ts,mts,cts,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn workspaces foreach --all --parallel run lint:eslint --fix && yarn lint:misc --write && yarn lint:tsconfig && yarn constraints --fix && yarn dedupe", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn '**/*.json' '**/*.md' '!**/CHANGELOG.md' '**/*.yml' '**/*.html'", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn '**/*.json' '**/*.md' '!**/CHANGELOG.md' '**/*.yml' '**/*.html'", "lint:tsconfig": "node scripts/verify-tsconfig.mjs", "prepare-preview-builds": "./scripts/prepare-preview-builds.sh", "publish-previews": "yarn workspaces foreach --all --parallel --verbose run publish:preview", @@ -79,31 +78,31 @@ }, "devDependencies": { "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/create-release-branch": "^3.1.0", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", + "@metamask/create-release-branch": "^4.0.0", + "@metamask/eslint-config": "^14.0.0", + "@metamask/eslint-config-browser": "^14.0.0", + "@metamask/eslint-config-jest": "^14.0.0", + "@metamask/eslint-config-nodejs": "^14.0.0", + "@metamask/eslint-config-typescript": "^14.0.0", "@metamask/utils": "^11.2.0", "@swc/core": "1.3.78", "@ts-bridge/cli": "^0.6.1", "@types/jest": "^27.5.1", "@types/lodash": "^4", "@types/node": "18.14.2", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", "@yarnpkg/types": "^4.0.0", "chromedriver": "^133.0.1", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", + "eslint-config-prettier": "^9.1.0", + "eslint-import-resolver-typescript": "^3.6.3", + "eslint-plugin-import-x": "^4.3.0", + "eslint-plugin-jest": "^28.8.3", + "eslint-plugin-jsdoc": "^50.2.4", + "eslint-plugin-n": "^17.10.3", + "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-promise": "^7.1.0", "execa": "^5.1.1", "favicons": "^7.1.2", "geckodriver": "^4.2.0", @@ -112,14 +111,16 @@ "lint-staged": "^12.4.1", "lodash": "^4.17.21", "minimatch": "^7.4.1", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", + "prettier-2": "npm:prettier@^2.8.8", + "prettier-plugin-packagejson": "^2.5.8", "rimraf": "^4.1.2", "semver": "^7.5.4", "simple-git-hooks": "^2.7.0", "ts-node": "^10.9.1", "tsx": "^4.19.1", "typescript": "~5.3.3", + "typescript-eslint": "^8.6.0", "vite": "^4.3.9" }, "packageManager": "yarn@4.4.1", diff --git a/packages/create-snap/.eslintrc.js b/packages/create-snap/.eslintrc.js deleted file mode 100644 index 2665f97874..0000000000 --- a/packages/create-snap/.eslintrc.js +++ /dev/null @@ -1,24 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, - - overrides: [ - { - files: ['**/*.ts'], - extends: ['@metamask/eslint-config-nodejs'], - globals: { - snaps: true, - }, - }, - - { - files: ['src/main.ts'], - rules: { - 'n/shebang': 'off', - }, - }, - ], -}; diff --git a/packages/create-snap/package.json b/packages/create-snap/package.json index 0e9dfb7ed2..dc4f98f003 100644 --- a/packages/create-snap/package.json +++ b/packages/create-snap/package.json @@ -47,9 +47,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ../../.gitignore", "publish:package": "../../scripts/publish-package.sh", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../scripts/since-latest-release.sh", @@ -66,35 +66,21 @@ }, "devDependencies": { "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", "@ts-bridge/cli": "^0.6.1", "@types/jest": "^27.5.1", "@types/node": "18.14.2", "@types/yargs": "^17.0.24", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-it-up": "^2.0.0", "jest-silent-reporter": "^0.6.0", "memfs": "^3.4.13", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "tsc-watch": "^4.5.0", "typescript": "~5.3.3" diff --git a/packages/create-snap/src/cmds/init/index.ts b/packages/create-snap/src/cmds/init/index.ts index 93a5cc14c3..8ab8534e1e 100644 --- a/packages/create-snap/src/cmds/init/index.ts +++ b/packages/create-snap/src/cmds/init/index.ts @@ -1,9 +1,9 @@ import { logInfo } from '@metamask/snaps-utils'; import type yargs from 'yargs'; +import { initHandler } from './initHandler'; import builders from '../../builders'; import type { YargsArgs } from '../../types/yargs'; -import { initHandler } from './initHandler'; export const initCommand = { command: ['$0 [directory]'], diff --git a/packages/create-snap/src/cmds/init/initHandler.test.ts b/packages/create-snap/src/cmds/init/initHandler.test.ts index 27262933f0..5695e01a6e 100644 --- a/packages/create-snap/src/cmds/init/initHandler.test.ts +++ b/packages/create-snap/src/cmds/init/initHandler.test.ts @@ -8,10 +8,10 @@ import { promises as fs } from 'fs'; import pathUtils from 'path'; import semver from 'semver'; -import { resetFileSystem } from '../../test-utils'; -import type { YargsArgs } from '../../types/yargs'; import { initHandler } from './initHandler'; import * as initUtils from './initUtils'; +import { resetFileSystem } from '../../test-utils'; +import type { YargsArgs } from '../../types/yargs'; jest.mock('fs'); diff --git a/packages/create-snap/src/cmds/init/initHandler.ts b/packages/create-snap/src/cmds/init/initHandler.ts index ed55ffee78..01698fb0fb 100644 --- a/packages/create-snap/src/cmds/init/initHandler.ts +++ b/packages/create-snap/src/cmds/init/initHandler.ts @@ -1,5 +1,3 @@ -// eslint-disable-next-line import/no-extraneous-dependencies -import cliPackageJson from '@metamask/create-snap/package.json'; import type { NpmSnapPackageJson } from '@metamask/snaps-utils'; import { NpmSnapFileNames, @@ -10,9 +8,8 @@ import { import { promises as fs } from 'fs'; import pathUtils from 'path'; import type { SemVer } from 'semver'; -import semver from 'semver'; +import { minVersion, satisfies } from 'semver'; -import type { YargsArgs } from '../../types/yargs'; import { buildSnap, cloneTemplate, @@ -23,6 +20,8 @@ import { SNAP_LOCATION, yarnInstall, } from './initUtils'; +import type { YargsArgs } from '../../types/yargs'; +import cliPackageJson from '@metamask/create-snap/package.json'; /** * Creates a new snap package, based on one of the provided templates. This @@ -38,9 +37,9 @@ export async function initHandler(argv: YargsArgs) { const { directory } = argv; const versionRange = cliPackageJson.engines.node; - const minimumVersion = (semver.minVersion(versionRange) as SemVer).format(); + const minimumVersion = (minVersion(versionRange) as SemVer).format(); - const isVersionSupported = semver.satisfies(process.version, versionRange); + const isVersionSupported = satisfies(process.version, versionRange); if (!isVersionSupported) { throw new Error( @@ -71,7 +70,7 @@ export async function initHandler(argv: YargsArgs) { force: true, recursive: true, }); - } catch (error) { + } catch { throw new Error('Init Error: Failed to create template.'); } @@ -106,7 +105,7 @@ export async function initHandler(argv: YargsArgs) { ...argv, dist: distPath[0], outfileName: distPath[1], - src: packageJson.main || 'src/index.js', + src: packageJson.main ?? 'src/index.js', snapLocation, }; } diff --git a/packages/create-snap/src/cmds/init/initUtils.test.ts b/packages/create-snap/src/cmds/init/initUtils.test.ts index 22a60433fd..17c41ba9f7 100644 --- a/packages/create-snap/src/cmds/init/initUtils.test.ts +++ b/packages/create-snap/src/cmds/init/initUtils.test.ts @@ -3,7 +3,6 @@ import childProcess from 'child_process'; import { promises as fs } from 'fs'; import pathUtils from 'path'; -import { resetFileSystem } from '../../test-utils'; import { buildSnap, cloneTemplate, @@ -14,6 +13,7 @@ import { yarnInstall, TEMPLATE_GIT_URL, } from './initUtils'; +import { resetFileSystem } from '../../test-utils'; jest.mock('fs'); diff --git a/packages/create-snap/src/cmds/init/initUtils.ts b/packages/create-snap/src/cmds/init/initUtils.ts index ad744389e2..e247b1983d 100644 --- a/packages/create-snap/src/cmds/init/initUtils.ts +++ b/packages/create-snap/src/cmds/init/initUtils.ts @@ -21,7 +21,7 @@ export async function prepareWorkingDirectory( if (!isCurrentDirectory) { try { await fs.mkdir(directory, { recursive: true }); - } catch (error) { + } catch { throw new Error('Init Error: Failed to create new directory.'); } } diff --git a/packages/create-snap/src/types/yargs.d.ts b/packages/create-snap/src/types/yargs.d.ts index a107ce6f2c..9d11ba25d2 100644 --- a/packages/create-snap/src/types/yargs.d.ts +++ b/packages/create-snap/src/types/yargs.d.ts @@ -1,6 +1,6 @@ import type { Options } from 'yargs'; -// eslint-disable-next-line @typescript-eslint/ban-types +// eslint-disable-next-line @typescript-eslint/no-empty-object-type type OptionalArguments = Type & { /** Non-option arguments */ _?: (string | number)[]; diff --git a/packages/examples/.eslintrc.js b/packages/examples/.eslintrc.js deleted file mode 100644 index 59e575e707..0000000000 --- a/packages/examples/.eslintrc.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, - - ignorePatterns: [ - '!.prettierrc.js', - '**/!.eslintrc.js', - '**/dist*/', - 'packages/**', - ], -}; diff --git a/packages/examples/package.json b/packages/examples/package.json index a0c3b4b099..51b0087708 100644 --- a/packages/examples/package.json +++ b/packages/examples/package.json @@ -28,9 +28,9 @@ "lint": "yarn workspaces foreach --worktree --parallel --verbose --interlaced --no-private run lint && yarn lint:dependencies", "lint:ci": "yarn lint:eslint && yarn lint:misc --check", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!packages/**\" --ignore-path ../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!packages/**\" --ignore-path ../../.gitignore", "since-latest-release": "../../scripts/since-latest-release.sh", "start": "yarn workspaces foreach --worktree --parallel --verbose --interlaced --no-private --jobs unlimited run start", "start:test": "yarn start", @@ -42,25 +42,12 @@ }, "devDependencies": { "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@metamask/auto-changelog": "^4.1.0", + "@types/node": "18.14.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "typescript": "~5.3.3" }, diff --git a/packages/examples/packages/bip32/.eslintrc.js b/packages/examples/packages/bip32/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/bip32/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/bip32/package.json b/packages/examples/packages/bip32/package.json index 011d85738a..cf76930de7 100644 --- a/packages/examples/packages/bip32/package.json +++ b/packages/examples/packages/bip32/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -52,31 +52,18 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "typescript": "~5.3.3" }, diff --git a/packages/examples/packages/bip32/snap.manifest.json b/packages/examples/packages/bip32/snap.manifest.json index 6bf1562ee7..62b7cabfee 100644 --- a/packages/examples/packages/bip32/snap.manifest.json +++ b/packages/examples/packages/bip32/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "iJ+zuqN5tinxEjlP6gbP0UQVLZ9hBZT6AV9K9UROj7Q=", + "shasum": "dzOD3mPn8PgVXC3LT3OtKqs09WIcvuYo/mIZGfhsTPw=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/bip32/src/index.ts b/packages/examples/packages/bip32/src/index.ts index b342c64a5c..f9a196c70b 100644 --- a/packages/examples/packages/bip32/src/index.ts +++ b/packages/examples/packages/bip32/src/index.ts @@ -46,7 +46,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { const { message, curve, ...params } = request.params as SignMessageParams; if (!message || typeof message !== 'string') { - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new InvalidParamsError(`Invalid signature data: "${message}".`); } @@ -74,7 +73,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { }); if (!approved) { - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new UserRejectedRequestError(); } @@ -100,7 +98,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { } default: - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new MethodNotFoundError({ method: request.method }); } }; diff --git a/packages/examples/packages/bip44/.eslintrc.js b/packages/examples/packages/bip44/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/bip44/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/bip44/package.json b/packages/examples/packages/bip44/package.json index b4ff8b3bfb..cb3c91a2f0 100644 --- a/packages/examples/packages/bip44/package.json +++ b/packages/examples/packages/bip44/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -51,31 +51,18 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "rimraf": "^4.1.2", "ts-node": "^10.9.1", "typescript": "~5.3.3" diff --git a/packages/examples/packages/bip44/snap.manifest.json b/packages/examples/packages/bip44/snap.manifest.json index 0b917cfcb0..7f013f7763 100644 --- a/packages/examples/packages/bip44/snap.manifest.json +++ b/packages/examples/packages/bip44/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "ftZ8b1Vf/X1lpWRsd3h97gcXwDCS66QAJ10HSWT7ru4=", + "shasum": "t0+OXVvAOnJOEgxjLB9Gz9CtAhNJr0nj9WC7nEeEZUs=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/bip44/src/index.ts b/packages/examples/packages/bip44/src/index.ts index 0efbe9a89d..4025ea5155 100644 --- a/packages/examples/packages/bip44/src/index.ts +++ b/packages/examples/packages/bip44/src/index.ts @@ -59,7 +59,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { }); if (!approved) { - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new UserRejectedRequestError(); } @@ -68,7 +67,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { } default: - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new MethodNotFoundError({ method: request.method }); } }; diff --git a/packages/examples/packages/browserify-plugin/.eslintrc.js b/packages/examples/packages/browserify-plugin/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/browserify-plugin/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/browserify-plugin/package.json b/packages/examples/packages/browserify-plugin/package.json index 7b58c47dd0..cf29f811b0 100644 --- a/packages/examples/packages/browserify-plugin/package.json +++ b/packages/examples/packages/browserify-plugin/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "test": "jest --reporters=jest-silent-reporter", @@ -45,35 +45,23 @@ "@metamask/snaps-sdk": "workspace:^" }, "devDependencies": { + "@babel/core": "^7.23.2", "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-browserify-plugin": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "babelify": "^10.0.0", "browserify": "^17.0.0", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "typescript": "~5.3.3" }, diff --git a/packages/examples/packages/browserify-plugin/scripts/build.ts b/packages/examples/packages/browserify-plugin/scripts/build.ts index 074091000c..2c78e3689d 100644 --- a/packages/examples/packages/browserify-plugin/scripts/build.ts +++ b/packages/examples/packages/browserify-plugin/scripts/build.ts @@ -31,7 +31,7 @@ async function main() { // For this example we use Babel to transpile the TypeScript code to // JavaScript. - // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires + // eslint-disable-next-line @typescript-eslint/no-require-imports, n/global-require bundler.transform(require('babelify'), { ...babelConfig, extensions: ['.js', '.ts'], diff --git a/packages/examples/packages/browserify-plugin/snap.manifest.json b/packages/examples/packages/browserify-plugin/snap.manifest.json index ff95620d0c..7c1c084a28 100644 --- a/packages/examples/packages/browserify-plugin/snap.manifest.json +++ b/packages/examples/packages/browserify-plugin/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "6q7hDfHkTpecnN0cdclgC5ovyAjcEVy02E0NqWc1mnw=", + "shasum": "F82zbRfEEnc1c86GZ4InV+zw8QWVrLUidEXAn9JEsQU=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/browserify-plugin/src/index.ts b/packages/examples/packages/browserify-plugin/src/index.ts index 9d9669a1ad..9df9df4067 100644 --- a/packages/examples/packages/browserify-plugin/src/index.ts +++ b/packages/examples/packages/browserify-plugin/src/index.ts @@ -23,7 +23,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { return 'Hello from Browserify!'; default: { - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new MethodNotFoundError({ method: request.method }); } } diff --git a/packages/examples/packages/browserify/.eslintrc.js b/packages/examples/packages/browserify/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/browserify/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/browserify/package.json b/packages/examples/packages/browserify/package.json index 0ba3299f9c..8084824ac6 100644 --- a/packages/examples/packages/browserify/package.json +++ b/packages/examples/packages/browserify/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -48,31 +48,18 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "rimraf": "^4.1.2", "ts-node": "^10.9.1", "typescript": "~5.3.3" diff --git a/packages/examples/packages/browserify/snap.manifest.json b/packages/examples/packages/browserify/snap.manifest.json index 1a6fadaaf6..6bf7b04b1a 100644 --- a/packages/examples/packages/browserify/snap.manifest.json +++ b/packages/examples/packages/browserify/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "01h/ih5+fbuodnJpydhY26YnNWPqJclCFS/MAAQicd8=", + "shasum": "1sJyCRTlEdkAIK1YhFlrKr10ANhP1JkHj6dO9TE2HNc=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/browserify/src/index.ts b/packages/examples/packages/browserify/src/index.ts index 9d008cf841..92f1bbee41 100644 --- a/packages/examples/packages/browserify/src/index.ts +++ b/packages/examples/packages/browserify/src/index.ts @@ -25,7 +25,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { return 'Hello from the MetaMask Snaps CLI using Browserify!'; default: { - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new MethodNotFoundError({ method: request.method }); } } diff --git a/packages/examples/packages/client-status/.eslintrc.js b/packages/examples/packages/client-status/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/client-status/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/client-status/package.json b/packages/examples/packages/client-status/package.json index a5425b6105..6e85348219 100644 --- a/packages/examples/packages/client-status/package.json +++ b/packages/examples/packages/client-status/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -48,31 +48,18 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "rimraf": "^4.1.2", "ts-node": "^10.9.1", "typescript": "~5.3.3" diff --git a/packages/examples/packages/client-status/snap.manifest.json b/packages/examples/packages/client-status/snap.manifest.json index 3b4177619d..5cabe885e1 100644 --- a/packages/examples/packages/client-status/snap.manifest.json +++ b/packages/examples/packages/client-status/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "mvh9iUL6VVM3QwUTLrGZEmL8VtEm1Jj6bKxQtsLosx8=", + "shasum": "tDnnS9elZTARovw9Fsbg+CaNYp6v4g8aBb7+uvdYQmQ=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/client-status/src/index.ts b/packages/examples/packages/client-status/src/index.ts index 8c85ec82fa..7cfead5220 100644 --- a/packages/examples/packages/client-status/src/index.ts +++ b/packages/examples/packages/client-status/src/index.ts @@ -23,7 +23,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { } default: - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new MethodNotFoundError({ method: request.method }); } }; diff --git a/packages/examples/packages/cronjobs/.eslintrc.js b/packages/examples/packages/cronjobs/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/cronjobs/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/cronjobs/package.json b/packages/examples/packages/cronjobs/package.json index 67d8c61d17..e8f2a88008 100644 --- a/packages/examples/packages/cronjobs/package.json +++ b/packages/examples/packages/cronjobs/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -48,31 +48,18 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "rimraf": "^4.1.2", "ts-node": "^10.9.1", "typescript": "~5.3.3" diff --git a/packages/examples/packages/cronjobs/snap.manifest.json b/packages/examples/packages/cronjobs/snap.manifest.json index e5c23d751d..ee89f69b01 100644 --- a/packages/examples/packages/cronjobs/snap.manifest.json +++ b/packages/examples/packages/cronjobs/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "czkd23b4t8a+CnlfLjak2zPVvk0eECSuI1PzHWgEAGs=", + "shasum": "cN0208xWa/KFZC1yxBzxI5kX8ippChcAvh6EktyVZc8=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/cronjobs/src/index.ts b/packages/examples/packages/cronjobs/src/index.ts index 1aa24ad4d0..4e92488be1 100644 --- a/packages/examples/packages/cronjobs/src/index.ts +++ b/packages/examples/packages/cronjobs/src/index.ts @@ -50,7 +50,6 @@ export const onCronjob: OnCronjobHandler = async ({ request }) => { }, }); default: - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new MethodNotFoundError({ method: request.method }); } }; @@ -105,7 +104,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { method: 'snap_getBackgroundEvents', }); default: - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new MethodNotFoundError({ method: request.method }); } }; diff --git a/packages/examples/packages/dialogs/.eslintrc.js b/packages/examples/packages/dialogs/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/dialogs/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/dialogs/package.json b/packages/examples/packages/dialogs/package.json index f95b55dea1..36c559115c 100644 --- a/packages/examples/packages/dialogs/package.json +++ b/packages/examples/packages/dialogs/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -48,31 +48,18 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "typescript": "~5.3.3" }, diff --git a/packages/examples/packages/dialogs/snap.manifest.json b/packages/examples/packages/dialogs/snap.manifest.json index 42ff81f079..ccc6996d41 100644 --- a/packages/examples/packages/dialogs/snap.manifest.json +++ b/packages/examples/packages/dialogs/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "Sy56F8gTThab6pXhLHLKatPi24Ga65UUCNKbAJDtMm4=", + "shasum": "IYw+FXMDWsuPR9+Di86/XAyYLNKhGRD0V+cxpVRmE/k=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/dialogs/src/index.tsx b/packages/examples/packages/dialogs/src/index.tsx index dce8676b44..a1849576e3 100644 --- a/packages/examples/packages/dialogs/src/index.tsx +++ b/packages/examples/packages/dialogs/src/index.tsx @@ -91,7 +91,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { }); default: - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new MethodNotFoundError({ method: request.method }); } }; diff --git a/packages/examples/packages/errors/.eslintrc.js b/packages/examples/packages/errors/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/errors/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/errors/package.json b/packages/examples/packages/errors/package.json index d1ca433a7f..8fdc64d8ec 100644 --- a/packages/examples/packages/errors/package.json +++ b/packages/examples/packages/errors/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -48,31 +48,18 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "typescript": "~5.3.3" }, diff --git a/packages/examples/packages/ethereum-provider/.eslintrc.js b/packages/examples/packages/ethereum-provider/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/ethereum-provider/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/ethereum-provider/package.json b/packages/examples/packages/ethereum-provider/package.json index c1cbc20af5..29b4612e8b 100644 --- a/packages/examples/packages/ethereum-provider/package.json +++ b/packages/examples/packages/ethereum-provider/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -49,31 +49,18 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "typescript": "~5.3.3" }, diff --git a/packages/examples/packages/ethereum-provider/snap.manifest.json b/packages/examples/packages/ethereum-provider/snap.manifest.json index dacf85874d..c918e24789 100644 --- a/packages/examples/packages/ethereum-provider/snap.manifest.json +++ b/packages/examples/packages/ethereum-provider/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "Th+gwjgKpqbXL++jm6rjBf58y36kbFA0pEJL9le6SCc=", + "shasum": "3yNS8C8gVjvRlfTPRzm+pIx3RNk8zqFdvE1LzgvM5eQ=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/ethereum-provider/src/index.ts b/packages/examples/packages/ethereum-provider/src/index.ts index 0683c38f1e..0f10af988a 100644 --- a/packages/examples/packages/ethereum-provider/src/index.ts +++ b/packages/examples/packages/ethereum-provider/src/index.ts @@ -230,7 +230,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { } default: - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new MethodNotFoundError({ method: request.method }); } }; diff --git a/packages/examples/packages/ethers-js/.eslintrc.js b/packages/examples/packages/ethers-js/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/ethers-js/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/ethers-js/package.json b/packages/examples/packages/ethers-js/package.json index 6d8b527a8c..71c959fb95 100644 --- a/packages/examples/packages/ethers-js/package.json +++ b/packages/examples/packages/ethers-js/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -49,34 +49,21 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "typescript": "~5.3.3", - "webpack": "^5.88.0" + "webpack": "^5.97.1" }, "engines": { "node": "^18.16 || >=20" diff --git a/packages/examples/packages/ethers-js/snap.manifest.json b/packages/examples/packages/ethers-js/snap.manifest.json index 8bc8b173ca..a438d4c19e 100644 --- a/packages/examples/packages/ethers-js/snap.manifest.json +++ b/packages/examples/packages/ethers-js/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "pV02QBfwhnQFjQ18NCH4IeA2Iq+paPovQntwqr4qOaU=", + "shasum": "Jlze2D18cQUFtRPMu4IbpSa+54YvNYgr1Sa7Jqj2tX4=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/ethers-js/src/index.ts b/packages/examples/packages/ethers-js/src/index.ts index 1fcbfbb9d4..30cab5bce8 100644 --- a/packages/examples/packages/ethers-js/src/index.ts +++ b/packages/examples/packages/ethers-js/src/index.ts @@ -56,7 +56,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { }); if (!result) { - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new UserRejectedRequestError(); } @@ -64,7 +63,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { } default: - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new MethodNotFoundError({ method: request.method }); } }; diff --git a/packages/examples/packages/file-upload/.eslintrc.js b/packages/examples/packages/file-upload/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/file-upload/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/file-upload/package.json b/packages/examples/packages/file-upload/package.json index 7648de6502..5c238ba63f 100644 --- a/packages/examples/packages/file-upload/package.json +++ b/packages/examples/packages/file-upload/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -49,31 +49,18 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "rimraf": "^4.1.2", "ts-node": "^10.9.1", "typescript": "~5.3.3" diff --git a/packages/examples/packages/file-upload/snap.manifest.json b/packages/examples/packages/file-upload/snap.manifest.json index 76e1771acb..c50bf69eed 100644 --- a/packages/examples/packages/file-upload/snap.manifest.json +++ b/packages/examples/packages/file-upload/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "8D+EWR7VjuiMc1HL3x8qXO1tEQ+2RNBKOLBbpv5WGCs=", + "shasum": "qo0qoM0/DU0zKe66aVaWwNQV4mFKtUiqTTR7oXaXXS4=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/file-upload/src/index.tsx b/packages/examples/packages/file-upload/src/index.tsx index fdbf69a5ee..0b169603eb 100644 --- a/packages/examples/packages/file-upload/src/index.tsx +++ b/packages/examples/packages/file-upload/src/index.tsx @@ -44,7 +44,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { } default: - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new MethodNotFoundError({ method: request.method, }); diff --git a/packages/examples/packages/get-entropy/.eslintrc.js b/packages/examples/packages/get-entropy/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/get-entropy/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/get-entropy/package.json b/packages/examples/packages/get-entropy/package.json index 453ddffbe1..981eb77ba0 100644 --- a/packages/examples/packages/get-entropy/package.json +++ b/packages/examples/packages/get-entropy/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -50,31 +50,18 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "typescript": "~5.3.3" }, diff --git a/packages/examples/packages/get-entropy/snap.manifest.json b/packages/examples/packages/get-entropy/snap.manifest.json index ac8099a04a..e15c1a34fd 100644 --- a/packages/examples/packages/get-entropy/snap.manifest.json +++ b/packages/examples/packages/get-entropy/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "Ea9PCkKk6aB3z3obvSR2FO7kLRgjNq8vYh1BQpxqsok=", + "shasum": "lmkCL1vKbBcM9oIiHMkfGq1P7CATFx/fksf+kvlv+eU=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/get-entropy/src/index.ts b/packages/examples/packages/get-entropy/src/index.ts index df92a9417a..4a680d2e07 100644 --- a/packages/examples/packages/get-entropy/src/index.ts +++ b/packages/examples/packages/get-entropy/src/index.ts @@ -48,7 +48,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { }); if (!approved) { - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new UserRejectedRequestError(); } @@ -58,7 +57,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { } default: - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new MethodNotFoundError({ method: request.method }); } }; diff --git a/packages/examples/packages/get-file/.eslintrc.js b/packages/examples/packages/get-file/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/get-file/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/get-file/package.json b/packages/examples/packages/get-file/package.json index d7851edce8..589f4febe2 100644 --- a/packages/examples/packages/get-file/package.json +++ b/packages/examples/packages/get-file/package.json @@ -32,9 +32,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -49,31 +49,18 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "typescript": "~5.3.3" }, diff --git a/packages/examples/packages/get-file/snap.manifest.json b/packages/examples/packages/get-file/snap.manifest.json index df89617f07..3f007d4a12 100644 --- a/packages/examples/packages/get-file/snap.manifest.json +++ b/packages/examples/packages/get-file/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "q7z2Bb189SVMxJ8Bbv9kMf1m5IlyyyA3bvjgixFaAOY=", + "shasum": "1tHkAKMCelgdq+2vbYrgVifo/DjRzGU5h5MeJlAUbFo=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/get-file/src/index.ts b/packages/examples/packages/get-file/src/index.ts index 725ed55dd1..c405fc871d 100644 --- a/packages/examples/packages/get-file/src/index.ts +++ b/packages/examples/packages/get-file/src/index.ts @@ -47,7 +47,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { } default: - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new MethodNotFoundError({ method: request.method }); } }; diff --git a/packages/examples/packages/home-page/.eslintrc.js b/packages/examples/packages/home-page/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/home-page/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/home-page/package.json b/packages/examples/packages/home-page/package.json index 7cadb85f4c..144b3c943b 100644 --- a/packages/examples/packages/home-page/package.json +++ b/packages/examples/packages/home-page/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -48,31 +48,18 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "typescript": "~5.3.3" }, diff --git a/packages/examples/packages/home-page/snap.manifest.json b/packages/examples/packages/home-page/snap.manifest.json index 5049301eb9..ae9c9c4c18 100644 --- a/packages/examples/packages/home-page/snap.manifest.json +++ b/packages/examples/packages/home-page/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "mBj1gXYOf+nyfPsVNFuLtS1A7yhurnnElRbSplJx0Cg=", + "shasum": "FHDhOOgjgRBFcJ2JGv1C1kgVXduMCGLOfFRXo0XA2cg=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/images/.eslintrc.js b/packages/examples/packages/images/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/images/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/images/package.json b/packages/examples/packages/images/package.json index a650a1a427..3a633db724 100644 --- a/packages/examples/packages/images/package.json +++ b/packages/examples/packages/images/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -49,31 +49,18 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "typescript": "~5.3.3" }, diff --git a/packages/examples/packages/images/snap.manifest.json b/packages/examples/packages/images/snap.manifest.json index c561464416..eed53d8c43 100644 --- a/packages/examples/packages/images/snap.manifest.json +++ b/packages/examples/packages/images/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "WMw+nOGMyMQok+d39rvaZegi/g6x9Nwllbz7L04nPl4=", + "shasum": "CfLAZ5yE8Fpk5YX6CDSTVNHO6E6QikompdWug6768Oo=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/images/src/index.ts b/packages/examples/packages/images/src/index.ts index 8909c0123e..42e71a7f17 100644 --- a/packages/examples/packages/images/src/index.ts +++ b/packages/examples/packages/images/src/index.ts @@ -104,7 +104,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { } default: - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new MethodNotFoundError({ method: request.method }); } }; diff --git a/packages/examples/packages/interactive-ui/.eslintrc.js b/packages/examples/packages/interactive-ui/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/interactive-ui/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/interactive-ui/package.json b/packages/examples/packages/interactive-ui/package.json index 1ea5b01a5d..920fd7bcea 100644 --- a/packages/examples/packages/interactive-ui/package.json +++ b/packages/examples/packages/interactive-ui/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -49,31 +49,18 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "rimraf": "^4.1.2", "ts-node": "^10.9.1", "typescript": "~5.3.3" diff --git a/packages/examples/packages/interactive-ui/snap.manifest.json b/packages/examples/packages/interactive-ui/snap.manifest.json index f958bdcbb9..43154a0b3c 100644 --- a/packages/examples/packages/interactive-ui/snap.manifest.json +++ b/packages/examples/packages/interactive-ui/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "4XcUGHHRCu9oa2MUCclVAqyBqYXuawZ24VgTJ6gsR6I=", + "shasum": "eRxSAwJBUtY+nrWxh58ffuYqNh8kuJ6Vy+mQH6nMw+I=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/interactive-ui/src/index.tsx b/packages/examples/packages/interactive-ui/src/index.tsx index 3ae16c6e8a..ca6adb02f5 100644 --- a/packages/examples/packages/interactive-ui/src/index.tsx +++ b/packages/examples/packages/interactive-ui/src/index.tsx @@ -42,7 +42,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { } default: - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new MethodNotFoundError({ method: request.method, }); diff --git a/packages/examples/packages/invoke-snap/.eslintrc.js b/packages/examples/packages/invoke-snap/.eslintrc.js deleted file mode 100644 index 59e575e707..0000000000 --- a/packages/examples/packages/invoke-snap/.eslintrc.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, - - ignorePatterns: [ - '!.prettierrc.js', - '**/!.eslintrc.js', - '**/dist*/', - 'packages/**', - ], -}; diff --git a/packages/examples/packages/invoke-snap/package.json b/packages/examples/packages/invoke-snap/package.json index a4a670c16a..75467a8620 100644 --- a/packages/examples/packages/invoke-snap/package.json +++ b/packages/examples/packages/invoke-snap/package.json @@ -27,9 +27,9 @@ "lint": "yarn workspaces foreach --worktree --parallel --verbose --interlaced run lint && yarn lint:dependencies", "lint:ci": "yarn lint:eslint && yarn lint:misc --check", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" \"!packages/**\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" \"!packages/**\" --ignore-path ../../../../.gitignore", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "yarn workspaces foreach --worktree --parallel --verbose --interlaced --jobs unlimited run start", "test": "jest --reporters=jest-silent-reporter", @@ -40,25 +40,12 @@ }, "devDependencies": { "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@metamask/auto-changelog": "^4.1.0", + "@types/node": "18.14.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "typescript": "~5.3.3" }, diff --git a/packages/examples/packages/invoke-snap/packages/consumer-signer/.eslintrc.js b/packages/examples/packages/invoke-snap/packages/consumer-signer/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/invoke-snap/packages/consumer-signer/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/invoke-snap/packages/consumer-signer/package.json b/packages/examples/packages/invoke-snap/packages/consumer-signer/package.json index d954713ce0..711beca387 100644 --- a/packages/examples/packages/invoke-snap/packages/consumer-signer/package.json +++ b/packages/examples/packages/invoke-snap/packages/consumer-signer/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -51,31 +51,18 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "typescript": "~5.3.3" }, diff --git a/packages/examples/packages/invoke-snap/packages/consumer-signer/snap.manifest.json b/packages/examples/packages/invoke-snap/packages/consumer-signer/snap.manifest.json index 09fb55c0fa..347042d63b 100644 --- a/packages/examples/packages/invoke-snap/packages/consumer-signer/snap.manifest.json +++ b/packages/examples/packages/invoke-snap/packages/consumer-signer/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "8jd3ghACZEn83R2dlVB6CgVi/WixAws3anik+8JebsU=", + "shasum": "UV0RampM+KLXI/nMYomvmEqoZZPw8HlzeQ5ggSMov8Q=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/invoke-snap/packages/consumer-signer/src/index.ts b/packages/examples/packages/invoke-snap/packages/consumer-signer/src/index.ts index 54700277ba..29d803a100 100644 --- a/packages/examples/packages/invoke-snap/packages/consumer-signer/src/index.ts +++ b/packages/examples/packages/invoke-snap/packages/consumer-signer/src/index.ts @@ -77,7 +77,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { } default: - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new MethodNotFoundError({ method: request.method }); } }; diff --git a/packages/examples/packages/invoke-snap/packages/core-signer/.eslintrc.js b/packages/examples/packages/invoke-snap/packages/core-signer/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/invoke-snap/packages/core-signer/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/invoke-snap/packages/core-signer/package.json b/packages/examples/packages/invoke-snap/packages/core-signer/package.json index 9e03889f44..9a6fe3ba06 100644 --- a/packages/examples/packages/invoke-snap/packages/core-signer/package.json +++ b/packages/examples/packages/invoke-snap/packages/core-signer/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -52,32 +52,19 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@noble/hashes": "^1.3.1", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "typescript": "~5.3.3" }, diff --git a/packages/examples/packages/invoke-snap/packages/core-signer/snap.manifest.json b/packages/examples/packages/invoke-snap/packages/core-signer/snap.manifest.json index 656121d565..0a953ad546 100644 --- a/packages/examples/packages/invoke-snap/packages/core-signer/snap.manifest.json +++ b/packages/examples/packages/invoke-snap/packages/core-signer/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "701liTaxYdYwZseEdnud6p+vLzhm0UUUmKOtShl16d8=", + "shasum": "7/M6NL4m5ofiZWsPt9mXf095lXBwq81rEugAAiDMHiY=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/invoke-snap/packages/core-signer/src/index.ts b/packages/examples/packages/invoke-snap/packages/core-signer/src/index.ts index 053784a928..135bffc426 100644 --- a/packages/examples/packages/invoke-snap/packages/core-signer/src/index.ts +++ b/packages/examples/packages/invoke-snap/packages/core-signer/src/index.ts @@ -71,7 +71,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { }); if (!approved) { - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new UserRejectedRequestError(); } @@ -84,7 +83,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { } default: - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new MethodNotFoundError({ method: request.method }); } }; diff --git a/packages/examples/packages/invoke-snap/packages/core-signer/src/utils.ts b/packages/examples/packages/invoke-snap/packages/core-signer/src/utils.ts index 119405f85d..edbd18b6c2 100644 --- a/packages/examples/packages/invoke-snap/packages/core-signer/src/utils.ts +++ b/packages/examples/packages/invoke-snap/packages/core-signer/src/utils.ts @@ -37,6 +37,7 @@ export async function getEntropy(): Promise { } // Otherwise, generate some entropy and store it in state. + // eslint-disable-next-line no-restricted-globals const entropy = crypto.getRandomValues(new Uint8Array(32)); await snap.request({ method: 'snap_manageState', diff --git a/packages/examples/packages/invoke-snap/tsconfig.json b/packages/examples/packages/invoke-snap/tsconfig.json index db2f8bd154..3efa0728f5 100644 --- a/packages/examples/packages/invoke-snap/tsconfig.json +++ b/packages/examples/packages/invoke-snap/tsconfig.json @@ -2,6 +2,25 @@ "extends": "../../tsconfig.json", "compilerOptions": { "baseUrl": "./", - "composite": false + "composite": false, + "module": "CommonJS", + "moduleResolution": "Node10", + "paths": { + "@metamask/snaps-sdk/jsx-dev-runtime": [ + "../../../../../snaps-sdk/src/jsx/jsx-dev-runtime.ts", + "../../../snaps-sdk/src/jsx/jsx-dev-runtime.ts", + "../snaps-sdk/src/jsx/jsx-dev-runtime.ts" + ], + "@metamask/snaps-sdk/jsx": [ + "../../../../../snaps-sdk/src/jsx", + "../../../snaps-sdk/src/jsx", + "../snaps-sdk/src/jsx" + ], + "@metamask/snaps-sdk": [ + "../../../../../snaps-sdk/src", + "../../../snaps-sdk/src", + "../snaps-sdk/src" + ] + } } } diff --git a/packages/examples/packages/json-rpc/.eslintrc.js b/packages/examples/packages/json-rpc/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/json-rpc/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/json-rpc/package.json b/packages/examples/packages/json-rpc/package.json index 77155de7a5..cafd4ef279 100644 --- a/packages/examples/packages/json-rpc/package.json +++ b/packages/examples/packages/json-rpc/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -48,31 +48,18 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "typescript": "~5.3.3" }, diff --git a/packages/examples/packages/json-rpc/snap.manifest.json b/packages/examples/packages/json-rpc/snap.manifest.json index b380e98a49..fd620c8a1b 100644 --- a/packages/examples/packages/json-rpc/snap.manifest.json +++ b/packages/examples/packages/json-rpc/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "WQzUHavvtLuX11w/FlG3equ4Ub8mkIx+Lkbgmba6t3Y=", + "shasum": "CJTyeyYE3sceXoGld6lVDPF4thDKaiDLT9rr7NM9nuA=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/json-rpc/src/index.ts b/packages/examples/packages/json-rpc/src/index.ts index 3493394e80..cae6a1033c 100644 --- a/packages/examples/packages/json-rpc/src/index.ts +++ b/packages/examples/packages/json-rpc/src/index.ts @@ -61,7 +61,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { } default: - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new MethodNotFoundError({ method: request.method }); } }; diff --git a/packages/examples/packages/jsx/.eslintrc.js b/packages/examples/packages/jsx/.eslintrc.js deleted file mode 100644 index 2d3d56ab04..0000000000 --- a/packages/examples/packages/jsx/.eslintrc.js +++ /dev/null @@ -1,21 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, - - overrides: [ - { - files: ['*.ts', '*.tsx'], - rules: { - '@typescript-eslint/no-shadow': [ - 'error', - { - allow: ['Text'], - }, - ], - }, - }, - ], -}; diff --git a/packages/examples/packages/jsx/package.json b/packages/examples/packages/jsx/package.json index 52054b6274..fc35bbd2f7 100644 --- a/packages/examples/packages/jsx/package.json +++ b/packages/examples/packages/jsx/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -49,32 +49,19 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@metamask/utils": "^11.2.0", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "typescript": "~5.3.3" }, diff --git a/packages/examples/packages/jsx/snap.manifest.json b/packages/examples/packages/jsx/snap.manifest.json index fdab9a6ea3..685b9f75d5 100644 --- a/packages/examples/packages/jsx/snap.manifest.json +++ b/packages/examples/packages/jsx/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "q+wJEObuQ0sOAz6kV17j5SmW23IrVzCVISH1V4FrV2Q=", + "shasum": "hgK4DwBr1dBcqK5AICvYErCUvc4Khv2eshcn8+WKmig=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/lifecycle-hooks/.eslintrc.js b/packages/examples/packages/lifecycle-hooks/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/lifecycle-hooks/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/lifecycle-hooks/package.json b/packages/examples/packages/lifecycle-hooks/package.json index a8e5a80902..cd91032f73 100644 --- a/packages/examples/packages/lifecycle-hooks/package.json +++ b/packages/examples/packages/lifecycle-hooks/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -48,31 +48,18 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "typescript": "~5.3.3" }, diff --git a/packages/examples/packages/localization/.eslintrc.js b/packages/examples/packages/localization/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/localization/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/localization/package.json b/packages/examples/packages/localization/package.json index 933e82a004..51d39aa2fe 100644 --- a/packages/examples/packages/localization/package.json +++ b/packages/examples/packages/localization/package.json @@ -32,9 +32,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -49,31 +49,18 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "typescript": "~5.3.3" }, diff --git a/packages/examples/packages/localization/snap.manifest.json b/packages/examples/packages/localization/snap.manifest.json index 09700e130d..83f6e57e7c 100644 --- a/packages/examples/packages/localization/snap.manifest.json +++ b/packages/examples/packages/localization/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "Jgx+1PhSxYoKv8iSQtZ9QRrG36qJvwJBTkTuW5HlAIM=", + "shasum": "oJLUV4Yl4BRg0mETW3w6tbAYGdluCQkye9j8fEX14Zw=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/localization/src/index.ts b/packages/examples/packages/localization/src/index.ts index 092ede4388..d8d2e3c574 100644 --- a/packages/examples/packages/localization/src/index.ts +++ b/packages/examples/packages/localization/src/index.ts @@ -23,7 +23,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { return await getMessage('hello'); default: - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new MethodNotFoundError({ method: request.method }); } }; diff --git a/packages/examples/packages/manage-state/.eslintrc.js b/packages/examples/packages/manage-state/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/manage-state/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/manage-state/package.json b/packages/examples/packages/manage-state/package.json index e7fe0b9e95..a2170adc04 100644 --- a/packages/examples/packages/manage-state/package.json +++ b/packages/examples/packages/manage-state/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -49,31 +49,18 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "typescript": "~5.3.3" }, diff --git a/packages/examples/packages/manage-state/snap.manifest.json b/packages/examples/packages/manage-state/snap.manifest.json index 0579fca5d0..ee20e9e9c8 100644 --- a/packages/examples/packages/manage-state/snap.manifest.json +++ b/packages/examples/packages/manage-state/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "WtNt65ZHFJ4cAPgP87t62BXasKjKF0AGNXwIu7EMjjY=", + "shasum": "V6SVqebOW350y2Rg7bb0LXAes/nsPH48Steclh4UCvA=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/manage-state/src/index.ts b/packages/examples/packages/manage-state/src/index.ts index 6b3fec410c..ee7fceb56e 100644 --- a/packages/examples/packages/manage-state/src/index.ts +++ b/packages/examples/packages/manage-state/src/index.ts @@ -92,7 +92,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { } default: - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new MethodNotFoundError({ method: request.method }); } }; diff --git a/packages/examples/packages/name-lookup/.eslintrc.js b/packages/examples/packages/name-lookup/.eslintrc.js deleted file mode 100644 index dc028fb7ec..0000000000 --- a/packages/examples/packages/name-lookup/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - root: true, - - extends: ['../../.eslintrc.js'], - - ignorePatterns: ['!.eslintrc.js', 'dist/', 'build/'], -}; diff --git a/packages/examples/packages/name-lookup/package.json b/packages/examples/packages/name-lookup/package.json index 521203033c..43ee49655c 100644 --- a/packages/examples/packages/name-lookup/package.json +++ b/packages/examples/packages/name-lookup/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -48,31 +48,18 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "typescript": "~5.3.3" }, diff --git a/packages/examples/packages/network-access/.eslintrc.js b/packages/examples/packages/network-access/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/network-access/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/network-access/package.json b/packages/examples/packages/network-access/package.json index ca92852e30..8dd6d3788a 100644 --- a/packages/examples/packages/network-access/package.json +++ b/packages/examples/packages/network-access/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -49,32 +49,18 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", - "@metamask/snaps-controllers": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "typescript": "~5.3.3" }, diff --git a/packages/examples/packages/network-access/snap.manifest.json b/packages/examples/packages/network-access/snap.manifest.json index 465c9eaf94..16cbc51bc8 100644 --- a/packages/examples/packages/network-access/snap.manifest.json +++ b/packages/examples/packages/network-access/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "GkmKOK7VX+F+VOQX9MsQRqOeeikwQvs9ZAUB3FRG/zU=", + "shasum": "ZcRFAirI1cibW/49kGf8UjJqxn+9SJTiU2LKd7jYPjM=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/network-access/src/index.test.ts b/packages/examples/packages/network-access/src/index.test.ts index 1ae621160c..4f0b66b73b 100644 --- a/packages/examples/packages/network-access/src/index.test.ts +++ b/packages/examples/packages/network-access/src/index.test.ts @@ -1,14 +1,9 @@ import { expect } from '@jest/globals'; -import { NodeProcessExecutionService } from '@metamask/snaps-controllers/node'; import { installSnap } from '@metamask/snaps-jest'; describe('onRpcRequest', () => { - // This test is disabled as it does not currently work - // TODO(ritave): Fix this test it('throws an error if the requested method does not exist', async () => { - const { request } = await installSnap({ - executionService: NodeProcessExecutionService, - }); + const { request } = await installSnap(); const response = await request({ method: 'foo', @@ -27,10 +22,9 @@ describe('onRpcRequest', () => { describe('fetch', () => { // This test is disabled as it is flaky. + // eslint-disable-next-line jest/no-disabled-tests it.skip('fetches a URL and returns the JSON response', async () => { - const { request } = await installSnap({ - executionService: NodeProcessExecutionService, - }); + const { request } = await installSnap(); const url = 'https://dummyjson.com/http/200'; const response = await request({ diff --git a/packages/examples/packages/network-access/src/index.ts b/packages/examples/packages/network-access/src/index.ts index ee0041aeff..44b5ea9a3e 100644 --- a/packages/examples/packages/network-access/src/index.ts +++ b/packages/examples/packages/network-access/src/index.ts @@ -48,7 +48,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { } default: - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new MethodNotFoundError({ method: request.method }); } }; diff --git a/packages/examples/packages/notifications/.eslintrc.js b/packages/examples/packages/notifications/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/notifications/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/notifications/package.json b/packages/examples/packages/notifications/package.json index 674b346f1b..872a84f516 100644 --- a/packages/examples/packages/notifications/package.json +++ b/packages/examples/packages/notifications/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -48,31 +48,18 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "typescript": "~5.3.3" }, diff --git a/packages/examples/packages/notifications/snap.manifest.json b/packages/examples/packages/notifications/snap.manifest.json index bb07819a0a..4d4b9e2765 100644 --- a/packages/examples/packages/notifications/snap.manifest.json +++ b/packages/examples/packages/notifications/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "Z2ogjFudo0pSywLF1Ou4otLWwBXINjYZxLsTM0laqFM=", + "shasum": "5mNQFXq3H6WzvOmAAeE+J1FoxNqgwzUeyzUP1qydXD0=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/notifications/src/index.tsx b/packages/examples/packages/notifications/src/index.tsx index 2a54940c6d..60e73228b2 100644 --- a/packages/examples/packages/notifications/src/index.tsx +++ b/packages/examples/packages/notifications/src/index.tsx @@ -64,7 +64,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { }); default: - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new MethodNotFoundError({ method: request.method }); } }; diff --git a/packages/examples/packages/preinstalled/.eslintrc.js b/packages/examples/packages/preinstalled/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/preinstalled/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/preinstalled/package.json b/packages/examples/packages/preinstalled/package.json index 1f33ed7f0c..afbdcb0799 100644 --- a/packages/examples/packages/preinstalled/package.json +++ b/packages/examples/packages/preinstalled/package.json @@ -32,9 +32,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -49,33 +49,20 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-controllers": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@metamask/utils": "^11.2.0", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "tsx": "^4.19.1", "typescript": "~5.3.3", diff --git a/packages/examples/packages/preinstalled/scripts/generate-json.mts b/packages/examples/packages/preinstalled/scripts/generate-json.mts index 4beb8e2fee..83f1b8e26a 100644 --- a/packages/examples/packages/preinstalled/scripts/generate-json.mts +++ b/packages/examples/packages/preinstalled/scripts/generate-json.mts @@ -6,8 +6,6 @@ import { dirname, join } from 'path'; import { fileURLToPath } from 'url'; import createSpinner from 'yocto-spinner'; -// ESLint doesn't understand the JSON import type. -// eslint-disable-next-line import packageFile from '../package.json' with { type: 'json' }; const CURRENT_PATH = dirname(fileURLToPath(import.meta.url)); @@ -44,14 +42,16 @@ async function fileExists(filePath: string) { */ async function getSnapFiles() { if (!(await fileExists(SNAP_BUNDLE_PATH))) { - throw new Error('Bundle file not found. Make sure to build the project first.'); + throw new Error( + 'Bundle file not found. Make sure to build the project first.', + ); } const files: { path: string; value: string }[] = [ { path: 'dist/bundle.js', value: await readFile(SNAP_BUNDLE_PATH, 'utf-8'), - } + }, ]; if (await fileExists(SNAP_ICON_PATH)) { diff --git a/packages/examples/packages/preinstalled/snap.manifest.json b/packages/examples/packages/preinstalled/snap.manifest.json index 5cfc579231..29a8213a7d 100644 --- a/packages/examples/packages/preinstalled/snap.manifest.json +++ b/packages/examples/packages/preinstalled/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "PrqZGCzgr8vXTV1nhO3wkcfyUhmRP5+caGLB+61YfiI=", + "shasum": "FUJ42ZKdm6v+FEofeXZ84Yc0+8EJEJfsjUssKyOFjcg=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/preinstalled/src/index.tsx b/packages/examples/packages/preinstalled/src/index.tsx index 3132be492c..ac0cdf0fd0 100644 --- a/packages/examples/packages/preinstalled/src/index.tsx +++ b/packages/examples/packages/preinstalled/src/index.tsx @@ -48,7 +48,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { }); default: - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new MethodNotFoundError({ method: request.method }); } }; @@ -109,6 +108,9 @@ export const onUserInput: OnUserInputHandler = async ({ method: 'snap_resolveInterface', params: { id, + // TODO: Either fix this lint violation or explain why it's necessary + // to ignore. + // eslint-disable-next-line @typescript-eslint/no-base-to-string value: String(context?.value), }, }); @@ -117,6 +119,9 @@ export const onUserInput: OnUserInputHandler = async ({ if (event.type === UserInputEventType.FormSubmitEvent) { if (event.name === 'form') { + // TODO: Either fix this lint violation or explain why it's necessary + // to ignore. + // eslint-disable-next-line @typescript-eslint/no-base-to-string const value = String(event.value['custom-input']); await snap.request({ method: 'snap_updateInterface', diff --git a/packages/examples/packages/protocol/.eslintrc.js b/packages/examples/packages/protocol/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/protocol/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/protocol/package.json b/packages/examples/packages/protocol/package.json index b28ec89967..fe83942ba2 100644 --- a/packages/examples/packages/protocol/package.json +++ b/packages/examples/packages/protocol/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -48,31 +48,18 @@ }, "devDependencies": { "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "rimraf": "^4.1.2", "ts-node": "^10.9.1", "typescript": "~5.3.3" diff --git a/packages/examples/packages/protocol/snap.manifest.json b/packages/examples/packages/protocol/snap.manifest.json index abce672478..70016c43b0 100644 --- a/packages/examples/packages/protocol/snap.manifest.json +++ b/packages/examples/packages/protocol/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "5mGoGgmZ7RhyLQ+aNzd/H2qhQTkiirztWm399vqxPUw=", + "shasum": "YPhx24LcxilLojXYKl4IPlqlLJsmIQ9mXyw25KbDflA=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/protocol/src/index.ts b/packages/examples/packages/protocol/src/index.ts index a47d0f7e47..533c135f15 100644 --- a/packages/examples/packages/protocol/src/index.ts +++ b/packages/examples/packages/protocol/src/index.ts @@ -57,7 +57,6 @@ export const onProtocolRequest: OnProtocolRequestHandler = async ({ } default: - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new MethodNotFoundError({ method: request.method }); } }; diff --git a/packages/examples/packages/rollup-plugin/.eslintrc.js b/packages/examples/packages/rollup-plugin/.eslintrc.js deleted file mode 100644 index 822260dfad..0000000000 --- a/packages/examples/packages/rollup-plugin/.eslintrc.js +++ /dev/null @@ -1,19 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, - - overrides: [ - { - files: ['rollup.config.js'], - parserOptions: { - sourceType: 'module', - }, - rules: { - 'import/no-unresolved': 'off', - }, - }, - ], -}; diff --git a/packages/examples/packages/rollup-plugin/README.md b/packages/examples/packages/rollup-plugin/README.md index 52ec81617d..8003140aaa 100644 --- a/packages/examples/packages/rollup-plugin/README.md +++ b/packages/examples/packages/rollup-plugin/README.md @@ -6,5 +6,5 @@ snap. The MetaMask Snap CLI uses Browserify to bundle snaps by default, but if you prefer to use Rollup, you can use `@metamask/snaps-rollup-plugin` to do so. -Rollup is configured in the [`rollup.config.js`](./rollup.config.js) file. It +Rollup is configured in the [`rollup.config.mjs`](./rollup.config.mjs) file. It sets up Node.js resolution, CommonJS transpilation, and a few other things. diff --git a/packages/examples/packages/rollup-plugin/package.json b/packages/examples/packages/rollup-plugin/package.json index ed24de7aac..c55b0ba2d9 100644 --- a/packages/examples/packages/rollup-plugin/package.json +++ b/packages/examples/packages/rollup-plugin/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "yarn build --watch", @@ -51,11 +51,7 @@ "@babel/preset-typescript": "^7.23.2", "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-jest": "workspace:^", "@metamask/snaps-rollup-plugin": "workspace:^", "@rollup/plugin-babel": "^6.0.3", @@ -64,22 +60,13 @@ "@rollup/plugin-terser": "^0.4.3", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "rollup": "^2.73.0", "ts-node": "^10.9.1", "typescript": "~5.3.3" diff --git a/packages/examples/packages/rollup-plugin/rollup.config.js b/packages/examples/packages/rollup-plugin/rollup.config.mjs similarity index 90% rename from packages/examples/packages/rollup-plugin/rollup.config.js rename to packages/examples/packages/rollup-plugin/rollup.config.mjs index 1c82460a71..cf968a7dc6 100644 --- a/packages/examples/packages/rollup-plugin/rollup.config.js +++ b/packages/examples/packages/rollup-plugin/rollup.config.mjs @@ -1,3 +1,4 @@ +// eslint-disable-next-line import snaps from '@metamask/snaps-rollup-plugin'; import { babel } from '@rollup/plugin-babel'; import commonjs from '@rollup/plugin-commonjs'; @@ -5,7 +6,7 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import terser from '@rollup/plugin-terser'; /** - * @type {RollupOptions} + * @type {import('rollup').RollupOptions} */ const config = { input: './src/index.ts', diff --git a/packages/examples/packages/rollup-plugin/snap.manifest.json b/packages/examples/packages/rollup-plugin/snap.manifest.json index 56db9fcab9..5066dac77a 100644 --- a/packages/examples/packages/rollup-plugin/snap.manifest.json +++ b/packages/examples/packages/rollup-plugin/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "siDYBrXjQLp8tMq4tEHzkFKrEQ2zwsP8/tV/uwPjm+E=", + "shasum": "cTiXCy1V1UkNVBiW1ibJDWSLGW7wUSJU7CAeujt77EU=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/rollup-plugin/src/index.ts b/packages/examples/packages/rollup-plugin/src/index.ts index f1074ced67..6fa78c93c7 100644 --- a/packages/examples/packages/rollup-plugin/src/index.ts +++ b/packages/examples/packages/rollup-plugin/src/index.ts @@ -23,7 +23,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { return 'Hello from Rollup!'; default: - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new MethodNotFoundError({ method: request.method }); } }; diff --git a/packages/examples/packages/rollup-plugin/tsconfig.json b/packages/examples/packages/rollup-plugin/tsconfig.json index f9b33f9c17..84af6bb2a6 100644 --- a/packages/examples/packages/rollup-plugin/tsconfig.json +++ b/packages/examples/packages/rollup-plugin/tsconfig.json @@ -4,5 +4,5 @@ "baseUrl": "./", "composite": false }, - "include": ["src", "rollup.config.js"] + "include": ["src", "rollup.config.mjs"] } diff --git a/packages/examples/packages/send-flow/.eslintrc.js b/packages/examples/packages/send-flow/.eslintrc.js deleted file mode 100644 index 2d3d56ab04..0000000000 --- a/packages/examples/packages/send-flow/.eslintrc.js +++ /dev/null @@ -1,21 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, - - overrides: [ - { - files: ['*.ts', '*.tsx'], - rules: { - '@typescript-eslint/no-shadow': [ - 'error', - { - allow: ['Text'], - }, - ], - }, - }, - ], -}; diff --git a/packages/examples/packages/send-flow/package.json b/packages/examples/packages/send-flow/package.json index 2220b228f4..1bd812f3e3 100644 --- a/packages/examples/packages/send-flow/package.json +++ b/packages/examples/packages/send-flow/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -49,31 +49,18 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "typescript": "~5.3.3" }, diff --git a/packages/examples/packages/send-flow/snap.manifest.json b/packages/examples/packages/send-flow/snap.manifest.json index 3d015250d7..72d1fd67e1 100644 --- a/packages/examples/packages/send-flow/snap.manifest.json +++ b/packages/examples/packages/send-flow/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "yYatxI2wXsrfIowWJTyvzO/wKFoW+xCO1FeqpGkVHJw=", + "shasum": "FFP7+q2qlyOMqmtm01zXewHHczyLyTsgbFYpkoSkw7s=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/send-flow/src/components/SendFlow.tsx b/packages/examples/packages/send-flow/src/components/SendFlow.tsx index cf8d6740d3..61c9254b3e 100644 --- a/packages/examples/packages/send-flow/src/components/SendFlow.tsx +++ b/packages/examples/packages/send-flow/src/components/SendFlow.tsx @@ -1,11 +1,11 @@ import type { SnapComponent } from '@metamask/snaps-sdk/jsx'; import { Box, Container } from '@metamask/snaps-sdk/jsx'; -import type { Account, Currency } from '../types'; import { SendFlowFooter } from './SendFlowFooter'; import { SendFlowHeader } from './SendFlowHeader'; import { SendForm } from './SendForm'; import { TransactionSummary } from './TransactionSummary'; +import type { Account, Currency } from '../types'; /** * The props for the {@link SendFlow} component. diff --git a/packages/examples/packages/send-flow/src/components/SendForm.tsx b/packages/examples/packages/send-flow/src/components/SendForm.tsx index c7901400f3..8a7dcf03e0 100644 --- a/packages/examples/packages/send-flow/src/components/SendForm.tsx +++ b/packages/examples/packages/send-flow/src/components/SendForm.tsx @@ -10,10 +10,10 @@ import { type SnapComponent, } from '@metamask/snaps-sdk/jsx'; +import { AccountSelector } from './AccountSelector'; import btcIcon from '../images/btc.svg'; import jazzicon3 from '../images/jazzicon3.svg'; import type { Account, SendFormErrors } from '../types'; -import { AccountSelector } from './AccountSelector'; /** * The props for the {@link SendForm} component. diff --git a/packages/examples/packages/send-flow/src/index.tsx b/packages/examples/packages/send-flow/src/index.tsx index 6334ab90a8..1323a37c28 100644 --- a/packages/examples/packages/send-flow/src/index.tsx +++ b/packages/examples/packages/send-flow/src/index.tsx @@ -2,11 +2,9 @@ import { rpcErrors } from '@metamask/rpc-errors'; import type { OnHomePageHandler, OnUserInputHandler, + OnRpcRequestHandler, } from '@metamask/snaps-sdk'; -import { - UserInputEventType, - type OnRpcRequestHandler, -} from '@metamask/snaps-sdk'; +import { UserInputEventType } from '@metamask/snaps-sdk'; import { SendFlow } from './components'; import { accountsArray, accounts } from './data'; diff --git a/packages/examples/packages/signature-insights/.eslintrc.js b/packages/examples/packages/signature-insights/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/signature-insights/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/signature-insights/package.json b/packages/examples/packages/signature-insights/package.json index d26f6d89ae..351494dd4e 100644 --- a/packages/examples/packages/signature-insights/package.json +++ b/packages/examples/packages/signature-insights/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -48,31 +48,18 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "typescript": "~5.3.3" }, diff --git a/packages/examples/packages/signature-insights/snap.manifest.json b/packages/examples/packages/signature-insights/snap.manifest.json index f7d86f4b1f..a09a0251a8 100644 --- a/packages/examples/packages/signature-insights/snap.manifest.json +++ b/packages/examples/packages/signature-insights/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "w3rxPg2xPeHs95Dk591U7DeErYRg06CUSaUmn9XMkKQ=", + "shasum": "Yv7P2vKDYmTXIHpy4TkFgUQhXAaLUSnvg6b2LZ+88OI=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/transaction-insights/.eslintrc.js b/packages/examples/packages/transaction-insights/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/transaction-insights/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/transaction-insights/package.json b/packages/examples/packages/transaction-insights/package.json index 1f7da6062e..8ef1fe19e7 100644 --- a/packages/examples/packages/transaction-insights/package.json +++ b/packages/examples/packages/transaction-insights/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "mm-snap watch", @@ -49,31 +49,18 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "typescript": "~5.3.3" }, diff --git a/packages/examples/packages/transaction-insights/snap.manifest.json b/packages/examples/packages/transaction-insights/snap.manifest.json index 3ea94ab8be..22d1455410 100644 --- a/packages/examples/packages/transaction-insights/snap.manifest.json +++ b/packages/examples/packages/transaction-insights/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "22+cEXSU1OcVTXzHq7oHN5vUzkYBc1y07UszmTDmdbA=", + "shasum": "ndVs9qXJP41bolCI4yMyQ3RNSFMGkS7s8usi9Ieph0Y=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/wasm/.eslintrc.js b/packages/examples/packages/wasm/.eslintrc.js deleted file mode 100644 index b20f0a721c..0000000000 --- a/packages/examples/packages/wasm/.eslintrc.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, - - ignorePatterns: [ - '!.prettierrc.js', - '**/!.eslintrc.js', - '**/dist*/', - 'packages/**', - 'program/**', - 'build/**', - 'assembly/**/*.ts', - ], -}; diff --git a/packages/examples/packages/wasm/package.json b/packages/examples/packages/wasm/package.json index e1c435d415..ec8f3cc4aa 100644 --- a/packages/examples/packages/wasm/package.json +++ b/packages/examples/packages/wasm/package.json @@ -32,9 +32,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "yarn build:wasm && mm-snap watch", @@ -49,32 +49,19 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", + "@types/node": "18.14.2", "assemblyscript": "^0.27.5", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "typescript": "~5.3.3" }, diff --git a/packages/examples/packages/wasm/snap.manifest.json b/packages/examples/packages/wasm/snap.manifest.json index c1006f9dcd..50f045c3e9 100644 --- a/packages/examples/packages/wasm/snap.manifest.json +++ b/packages/examples/packages/wasm/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "bfwluk7ZB8elZA11AeQudjxCx2DQm1WBgkRvO6ngzWc=", + "shasum": "5o3nRhXQH7ZQcIQyQh4fszl/8x837EtAjADPerkwlfU=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/wasm/src/index.ts b/packages/examples/packages/wasm/src/index.ts index b2184d123b..366aa1d0f8 100644 --- a/packages/examples/packages/wasm/src/index.ts +++ b/packages/examples/packages/wasm/src/index.ts @@ -4,12 +4,11 @@ import { } from '@metamask/snaps-sdk'; // This is only imported for its type. It is not used at runtime. -// eslint-disable-next-line import/order +// eslint-disable-next-line import-x/order import type { instantiate } from '../build/program'; // This is the WASM module, generated by AssemblyScript, inlined as an object // containing the functions exported by the WASM module. -// eslint-disable-next-line import/extensions import * as program from '../build/program.wasm'; /** @@ -50,6 +49,5 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { return program[method](...params); } - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new MethodNotFoundError({ method: request.method }); }; diff --git a/packages/examples/packages/wasm/src/types.d.ts b/packages/examples/packages/wasm/src/types.d.ts index 059ad7b28a..843f445c3f 100644 --- a/packages/examples/packages/wasm/src/types.d.ts +++ b/packages/examples/packages/wasm/src/types.d.ts @@ -7,7 +7,7 @@ * so we need to declare a type for them here. This allows us to import them * in our code, and have TypeScript understand that they are valid modules. */ -// eslint-disable-next-line import/unambiguous +// eslint-disable-next-line import-x/unambiguous declare module '*.wasm' { import type { instantiate } from '@metamask/wasm-example-snap/build/program'; diff --git a/packages/examples/packages/webpack-plugin/.eslintrc.js b/packages/examples/packages/webpack-plugin/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/examples/packages/webpack-plugin/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/examples/packages/webpack-plugin/package.json b/packages/examples/packages/webpack-plugin/package.json index 9a98b4d02f..a98a8dc0dc 100644 --- a/packages/examples/packages/webpack-plugin/package.json +++ b/packages/examples/packages/webpack-plugin/package.json @@ -31,9 +31,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" \"!snap.manifest.json\" --ignore-path ../../../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../../../scripts/since-latest-release.sh", "start": "webpack watch", @@ -48,37 +48,24 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-jest": "workspace:^", "@metamask/snaps-webpack-plugin": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", + "@types/node": "18.14.2", "@types/webpack-env": "^1.18.1", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "swc-loader": "^0.2.3", "terser-webpack-plugin": "^5.3.9", "ts-node": "^10.9.1", "typescript": "~5.3.3", - "webpack": "^5.88.0", + "webpack": "^5.97.1", "webpack-cli": "^5.1.4" }, "engines": { diff --git a/packages/examples/packages/webpack-plugin/snap.manifest.json b/packages/examples/packages/webpack-plugin/snap.manifest.json index e02c93c60a..eb859d4312 100644 --- a/packages/examples/packages/webpack-plugin/snap.manifest.json +++ b/packages/examples/packages/webpack-plugin/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "+5v9gpwz9BFcnS/BES7BE/Bk9ktgrYx7HY+6n2haaic=", + "shasum": "lsGxK2eVumgS7XKcZwAILJ6zaghK5Pzzs8/4aoETcNs=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/webpack-plugin/src/index.ts b/packages/examples/packages/webpack-plugin/src/index.ts index 18122f17b0..d8cf691baf 100644 --- a/packages/examples/packages/webpack-plugin/src/index.ts +++ b/packages/examples/packages/webpack-plugin/src/index.ts @@ -23,7 +23,6 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { return 'Hello from Webpack!'; default: - // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new MethodNotFoundError({ method: request.method }); } }; diff --git a/packages/examples/tsconfig.json b/packages/examples/tsconfig.json index 6f6b4541a1..783a9e5828 100644 --- a/packages/examples/tsconfig.json +++ b/packages/examples/tsconfig.json @@ -1,6 +1,20 @@ { "extends": "../../tsconfig.packages.json", "compilerOptions": { - "baseUrl": "./" + "baseUrl": "./", + "composite": false, + "module": "CommonJS", + "moduleResolution": "Node10", + "paths": { + "@metamask/snaps-sdk/jsx-dev-runtime": [ + "../../../snaps-sdk/src/jsx/jsx-dev-runtime.ts", + "../snaps-sdk/src/jsx/jsx-dev-runtime.ts" + ], + "@metamask/snaps-sdk/jsx": [ + "../../../snaps-sdk/src/jsx", + "../snaps-sdk/src/jsx" + ], + "@metamask/snaps-sdk": ["../../../snaps-sdk/src", "../snaps-sdk/src"] + } } } diff --git a/packages/snaps-browserify-plugin/.eslintrc.js b/packages/snaps-browserify-plugin/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/snaps-browserify-plugin/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/snaps-browserify-plugin/package.json b/packages/snaps-browserify-plugin/package.json index 1e1b3fc5c9..e0ec895fe2 100644 --- a/packages/snaps-browserify-plugin/package.json +++ b/packages/snaps-browserify-plugin/package.json @@ -45,9 +45,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../scripts/since-latest-release.sh", "test": "jest --reporters=jest-silent-reporter", @@ -63,37 +63,23 @@ }, "devDependencies": { "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", "@ts-bridge/cli": "^0.6.1", "@types/browserify": "^12.0.37", "@types/convert-source-map": "^1.5.2", "@types/jest": "^27.5.1", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", "browserify": "^17.0.0", "concat-stream": "^2.0.0", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-it-up": "^2.0.0", "jest-silent-reporter": "^0.6.0", "memfs": "^3.4.13", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "typescript": "~5.3.3" }, "engines": { diff --git a/packages/snaps-browserify-plugin/src/plugin.ts b/packages/snaps-browserify-plugin/src/plugin.ts index a6bc48f068..f74690df62 100644 --- a/packages/snaps-browserify-plugin/src/plugin.ts +++ b/packages/snaps-browserify-plugin/src/plugin.ts @@ -29,7 +29,9 @@ export type Options = PluginOptions & */ async function postBundle(options: Partial, code: string) { if (options.eval) { - await useTemporaryFile('snaps-bundle.js', code, (path) => evalBundle(path)); + await useTemporaryFile('snaps-bundle.js', code, async (path) => + evalBundle(path), + ); } if (options.manifestPath) { @@ -145,6 +147,9 @@ export class SnapsBrowserifyTransform extends Transform { postBundle(this.#options, result.code) .catch((error) => { + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line promise/no-callback-in-promise callback(error); }) .finally(() => { diff --git a/packages/snaps-browserify-plugin/src/types/vendor/readable-stream.d.ts b/packages/snaps-browserify-plugin/src/types/vendor/readable-stream.d.ts index e271c53f42..f254147714 100644 --- a/packages/snaps-browserify-plugin/src/types/vendor/readable-stream.d.ts +++ b/packages/snaps-browserify-plugin/src/types/vendor/readable-stream.d.ts @@ -1,10 +1,4 @@ -// eslint-disable-next-line import/unambiguous declare module 'readable-stream' { - export type { - DuplexOptions, - Readable, - Writable, - TransformCallback, - } from 'stream'; - export { Transform, Duplex, pipeline } from 'stream'; + export type { DuplexOptions, Writable, TransformCallback } from 'stream'; + export { Readable, Transform, Duplex, pipeline } from 'stream'; } diff --git a/packages/snaps-cli/.eslintrc.js b/packages/snaps-cli/.eslintrc.js deleted file mode 100644 index b9b16d71c1..0000000000 --- a/packages/snaps-cli/.eslintrc.js +++ /dev/null @@ -1,31 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, - - overrides: [ - { - files: ['**/*.ts'], - extends: ['@metamask/eslint-config-nodejs'], - globals: { - snaps: true, - }, - }, - - { - files: ['src/main.ts'], - rules: { - 'n/shebang': 'off', - }, - }, - - { - files: ['**/*.e2e.test.ts'], - rules: { - 'jest/expect-expect': 'off', - }, - }, - ], -}; diff --git a/packages/snaps-cli/jest.setup.ts b/packages/snaps-cli/jest.setup.ts index 925519a58c..29a66738e3 100644 --- a/packages/snaps-cli/jest.setup.ts +++ b/packages/snaps-cli/jest.setup.ts @@ -1,10 +1,13 @@ // Node.js v20 changes the behaviour of `process.exit`, which causes the actual // test process to exit with a non-zero exit code. To avoid CI failures, we // reset the exit code before and after each test. +// eslint-disable-next-line import-x/unambiguous beforeEach(() => { + // eslint-disable-next-line no-restricted-globals process.exitCode = 0; }); afterEach(() => { + // eslint-disable-next-line no-restricted-globals process.exitCode = 0; }); diff --git a/packages/snaps-cli/package.json b/packages/snaps-cli/package.json index 00f925bc7d..627a2b8ad9 100644 --- a/packages/snaps-cli/package.json +++ b/packages/snaps-cli/package.json @@ -52,9 +52,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../scripts/since-latest-release.sh", "test": "jest --reporters=jest-silent-reporter", @@ -111,18 +111,14 @@ "url": "^0.11.1", "util": "^0.12.5", "vm-browserify": "^1.1.2", - "webpack": "^5.88.0", + "webpack": "^5.97.1", "webpack-bundle-analyzer": "^4.10.2", "webpack-merge": "^5.9.0", "yargs": "^17.7.1" }, "devDependencies": { "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@swc/jest": "^0.2.26", "@ts-bridge/cli": "^0.6.1", "@types/browserify": "^12.0.37", @@ -130,26 +126,16 @@ "@types/node": "18.14.2", "@types/serve-handler": "^6.1.0", "@types/yargs": "^17.0.24", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", "cross-fetch": "^3.1.5", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "execa": "^5.1.1", "jest": "^29.0.2", "jest-it-up": "^2.0.0", "jest-silent-reporter": "^0.6.0", "memfs": "^3.4.13", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-node": "^10.9.1", "tsc-watch": "^4.5.0", "typescript": "~5.3.3" diff --git a/packages/snaps-cli/src/__fixtures__/configs/javascript/snap.config.js b/packages/snaps-cli/src/__fixtures__/configs/javascript/snap.config.js index 8704071aeb..5b7a94be11 100644 --- a/packages/snaps-cli/src/__fixtures__/configs/javascript/snap.config.js +++ b/packages/snaps-cli/src/__fixtures__/configs/javascript/snap.config.js @@ -1,5 +1,5 @@ /** - * @type {SnapConfig} + * @type {import('@metamask/snaps-cli').SnapConfig} */ const config = { bundler: 'webpack', diff --git a/packages/snaps-cli/src/__mocks__/fs.ts b/packages/snaps-cli/src/__mocks__/fs.ts index 47f3c10b0d..e99b4338ba 100644 --- a/packages/snaps-cli/src/__mocks__/fs.ts +++ b/packages/snaps-cli/src/__mocks__/fs.ts @@ -15,10 +15,8 @@ const BROWSERIFY_FILES = [ ]; for (const file of BROWSERIFY_FILES) { - /* eslint-disable n/no-sync */ volume.mkdirSync(dirname(file), { recursive: true }); volume.writeFileSync(file, jest.requireActual('fs').readFileSync(file)); - /* eslint-enable n/no-sync */ } export = createFsFromVolume(volume); diff --git a/packages/snaps-cli/src/cli.ts b/packages/snaps-cli/src/cli.ts index 180c37ed20..c26f5eb875 100644 --- a/packages/snaps-cli/src/cli.ts +++ b/packages/snaps-cli/src/cli.ts @@ -1,13 +1,12 @@ -// eslint-disable-next-line import/no-extraneous-dependencies -import packageJson from '@metamask/snaps-cli/package.json'; import type { SemVer } from 'semver'; -import semver from 'semver'; +import { minVersion, satisfies } from 'semver'; import yargs from 'yargs'; import { hideBin } from 'yargs/helpers'; import builders from './builders'; import { getConfigByArgv } from './config'; import { error, getYargsErrorMessage, sanitizeInputs } from './utils'; +import packageJson from '@metamask/snaps-cli/package.json'; /** * Check the Node version. If the Node version is less than the minimum required @@ -19,13 +18,12 @@ export function checkNodeVersion( nodeVersion: string = process.version.slice(1), ) { const versionRange = packageJson.engines.node; - const minimumVersion = (semver.minVersion(versionRange) as SemVer).format(); + const minimumVersion = (minVersion(versionRange) as SemVer).format(); - if (!semver.satisfies(nodeVersion, versionRange)) { + if (!satisfies(nodeVersion, versionRange)) { error( `Node version ${nodeVersion} is not supported. Please use Node ${minimumVersion} or later.`, ); - // eslint-disable-next-line n/no-process-exit process.exit(1); } } @@ -77,7 +75,6 @@ export async function cli(argv: string[], commands: any) { .fail((message, failure) => { error(getYargsErrorMessage(message, failure)); - // eslint-disable-next-line n/no-process-exit process.exit(1); }) diff --git a/packages/snaps-cli/src/commands/build/__test__/snap.js b/packages/snaps-cli/src/commands/build/__test__/snap.js index 35106303a5..42ab4ffd50 100644 --- a/packages/snaps-cli/src/commands/build/__test__/snap.js +++ b/packages/snaps-cli/src/commands/build/__test__/snap.js @@ -1,5 +1,4 @@ module.exports.onRpcRequest = ({ request }) => { - // eslint-disable-next-line no-console console.log('Hello, world!'); const { method, id } = request; diff --git a/packages/snaps-cli/src/commands/build/build.test.ts b/packages/snaps-cli/src/commands/build/build.test.ts index cb915416b4..655d4901ac 100644 --- a/packages/snaps-cli/src/commands/build/build.test.ts +++ b/packages/snaps-cli/src/commands/build/build.test.ts @@ -3,10 +3,10 @@ import fs from 'fs'; import type { Compiler } from 'webpack'; import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; -import { getMockConfig } from '../../test-utils'; -import { evaluate } from '../eval'; import { buildHandler } from './build'; import { build } from './implementation'; +import { getMockConfig } from '../../test-utils'; +import { evaluate } from '../eval'; jest.mock('fs'); jest.mock('../eval'); diff --git a/packages/snaps-cli/src/commands/build/build.ts b/packages/snaps-cli/src/commands/build/build.ts index 5e7aa28cbf..a9b26bd74f 100644 --- a/packages/snaps-cli/src/commands/build/build.ts +++ b/packages/snaps-cli/src/commands/build/build.ts @@ -2,13 +2,13 @@ import { isFile } from '@metamask/snaps-utils/node'; import { assert } from '@metamask/utils'; import { resolve as pathResolve } from 'path'; +import { build } from './implementation'; +import { getBundleAnalyzerPort } from './utils'; import type { ProcessedConfig, ProcessedWebpackConfig } from '../../config'; import { CommandError } from '../../errors'; import type { Steps } from '../../utils'; import { success, executeSteps, info } from '../../utils'; import { evaluate } from '../eval'; -import { build } from './implementation'; -import { getBundleAnalyzerPort } from './utils'; type BuildContext = { analyze: boolean; diff --git a/packages/snaps-cli/src/commands/build/implementation.test.ts b/packages/snaps-cli/src/commands/build/implementation.test.ts index c6b488c952..fcc06c5b30 100644 --- a/packages/snaps-cli/src/commands/build/implementation.test.ts +++ b/packages/snaps-cli/src/commands/build/implementation.test.ts @@ -6,16 +6,17 @@ import { getPackageJson, getSnapManifest, } from '@metamask/snaps-utils/test-utils'; +import type { SemVerVersion } from '@metamask/utils'; import normalFs from 'fs'; import { dirname, resolve } from 'path'; import type { Configuration } from 'webpack'; +import { build } from './implementation'; import { getMockConfig } from '../../test-utils'; import { getCompiler } from '../../webpack'; import type * as webpack from '../../webpack'; import type * as utils from '../../webpack/utils'; import { BROWSERSLIST_FILE } from '../../webpack/utils'; -import { build } from './implementation'; const { promises: fs } = normalFs; @@ -36,7 +37,10 @@ jest.mock('../../webpack', () => ({ .requireActual('../../webpack') .getCompiler(...args); + // @ts-expect-error: Type mismatch. compiler.inputFileSystem = normalFs; + + // @ts-expect-error: Type mismatch. compiler.outputFileSystem = normalFs; return compiler; @@ -48,6 +52,7 @@ jest.mock('../../webpack/utils', () => ({ getDefaultLoader: jest.fn< ReturnType, Parameters + // @ts-expect-error: Type mismatch. >(async (config) => { if (config.legacy) { return { @@ -66,7 +71,7 @@ describe('build', () => { beforeEach(async () => { const { manifest } = await getMockSnapFilesWithUpdatedChecksum({ manifest: getSnapManifest({ - platformVersion: getPlatformVersion(), + platformVersion: getPlatformVersion() as SemVerVersion, }), }); @@ -129,7 +134,7 @@ describe('build', () => { const output = await fs.readFile('/snap/output.js', 'utf8'); expect(output).toMatchInlineSnapshot( - `"(()=>{var r={67:r=>{r.exports.onRpcRequest=({request:r})=>{console.log("Hello, world!");const{method:e,id:o}=r;return e+o}}},e={};var o=function o(t){var s=e[t];if(void 0!==s)return s.exports;var n=e[t]={exports:{}};return r[t](n,n.exports,o),n.exports}(67);module.exports=o})();"`, + `"(()=>{var r={157:r=>{r.exports.onRpcRequest=({request:r})=>{console.log("Hello, world!");const{method:e,id:o}=r;return e+o}}},e={};var o=function o(t){var s=e[t];if(void 0!==s)return s.exports;var n=e[t]={exports:{}};return r[t](n,n.exports,o),n.exports}(157);module.exports=o})();"`, ); }); @@ -165,7 +170,7 @@ describe('build', () => { expect(output).toMatchInlineSnapshot(` "(() => { var __webpack_modules__ = { - 67: module => { + 157: module => { module.exports.onRpcRequest = ({ request }) => { @@ -190,7 +195,7 @@ describe('build', () => { __webpack_modules__[moduleId](module, module.exports, __webpack_require__); return module.exports; } - var __webpack_exports__ = __webpack_require__(67); + var __webpack_exports__ = __webpack_require__(157); module.exports = __webpack_exports__; })();" `); diff --git a/packages/snaps-cli/src/commands/build/index.ts b/packages/snaps-cli/src/commands/build/index.ts index 31fcc08b01..1f80fa35fe 100644 --- a/packages/snaps-cli/src/commands/build/index.ts +++ b/packages/snaps-cli/src/commands/build/index.ts @@ -1,8 +1,8 @@ import type yargs from 'yargs'; +import { buildHandler } from './build'; import builders from '../../builders'; import type { YargsArgs } from '../../types/yargs'; -import { buildHandler } from './build'; const command = { command: ['build', 'b'], diff --git a/packages/snaps-cli/src/commands/eval/eval.ts b/packages/snaps-cli/src/commands/eval/eval.ts index b82f7906a0..1f8c91c6c0 100644 --- a/packages/snaps-cli/src/commands/eval/eval.ts +++ b/packages/snaps-cli/src/commands/eval/eval.ts @@ -1,11 +1,11 @@ import { isFile } from '@metamask/snaps-utils/node'; import { resolve } from 'path'; +import { evaluate } from './implementation'; import type { ProcessedConfig } from '../../config'; import { CommandError } from '../../errors'; import type { Steps } from '../../utils'; import { executeSteps, getRelativePath } from '../../utils'; -import { evaluate } from './implementation'; export type EvalOptions = { input?: string; diff --git a/packages/snaps-cli/src/commands/eval/index.test.ts b/packages/snaps-cli/src/commands/eval/index.test.ts index e65cf831ba..8065dbf32f 100644 --- a/packages/snaps-cli/src/commands/eval/index.test.ts +++ b/packages/snaps-cli/src/commands/eval/index.test.ts @@ -1,7 +1,7 @@ import command from '.'; +import { evaluateHandler } from './eval'; import { getMockConfig } from '../../test-utils'; import type { YargsArgs } from '../../types/yargs'; -import { evaluateHandler } from './eval'; jest.mock('./eval'); diff --git a/packages/snaps-cli/src/commands/eval/index.ts b/packages/snaps-cli/src/commands/eval/index.ts index 700767590e..af3758131b 100644 --- a/packages/snaps-cli/src/commands/eval/index.ts +++ b/packages/snaps-cli/src/commands/eval/index.ts @@ -1,8 +1,8 @@ import type yargs from 'yargs'; +import { evaluateHandler } from './eval'; import builders from '../../builders'; import type { YargsArgs } from '../../types/yargs'; -import { evaluateHandler } from './eval'; const command = { command: ['eval', 'e'], diff --git a/packages/snaps-cli/src/commands/manifest/implementation.test.ts b/packages/snaps-cli/src/commands/manifest/implementation.test.ts index 5271ce7e4d..4b6e8abafa 100644 --- a/packages/snaps-cli/src/commands/manifest/implementation.test.ts +++ b/packages/snaps-cli/src/commands/manifest/implementation.test.ts @@ -9,8 +9,8 @@ import type { SemVerVersion } from '@metamask/utils'; import normalFs from 'fs'; import ora from 'ora'; -import type * as webpack from '../../webpack'; import { manifest } from './implementation'; +import type * as webpack from '../../webpack'; const { promises: fs } = normalFs; diff --git a/packages/snaps-cli/src/commands/manifest/index.test.ts b/packages/snaps-cli/src/commands/manifest/index.test.ts index afa77959a5..237f234201 100644 --- a/packages/snaps-cli/src/commands/manifest/index.test.ts +++ b/packages/snaps-cli/src/commands/manifest/index.test.ts @@ -1,7 +1,7 @@ import command from '.'; +import { manifestHandler } from './manifest'; import { getMockConfig } from '../../test-utils'; import type { YargsArgs } from '../../types/yargs'; -import { manifestHandler } from './manifest'; jest.mock('./manifest'); diff --git a/packages/snaps-cli/src/commands/manifest/index.ts b/packages/snaps-cli/src/commands/manifest/index.ts index b871f46cfa..bf8a1308ca 100644 --- a/packages/snaps-cli/src/commands/manifest/index.ts +++ b/packages/snaps-cli/src/commands/manifest/index.ts @@ -1,8 +1,8 @@ import type yargs from 'yargs'; +import { manifestHandler } from './manifest'; import builders from '../../builders'; import type { YargsArgs } from '../../types/yargs'; -import { manifestHandler } from './manifest'; const command = { command: ['manifest', 'm'], diff --git a/packages/snaps-cli/src/commands/manifest/manifest.ts b/packages/snaps-cli/src/commands/manifest/manifest.ts index dd9bd7ff4c..d625a4c62c 100644 --- a/packages/snaps-cli/src/commands/manifest/manifest.ts +++ b/packages/snaps-cli/src/commands/manifest/manifest.ts @@ -1,10 +1,10 @@ import { isFile } from '@metamask/snaps-utils/node'; +import { manifest } from './implementation'; import type { ProcessedConfig } from '../../config'; import { CommandError } from '../../errors'; import type { Steps } from '../../utils'; import { executeSteps } from '../../utils'; -import { manifest } from './implementation'; type ManifestOptions = { fix?: boolean; diff --git a/packages/snaps-cli/src/commands/serve/index.test.ts b/packages/snaps-cli/src/commands/serve/index.test.ts index ff2ed42dee..d5c6ef56d0 100644 --- a/packages/snaps-cli/src/commands/serve/index.test.ts +++ b/packages/snaps-cli/src/commands/serve/index.test.ts @@ -1,7 +1,7 @@ import command from '.'; +import { serveHandler } from './serve'; import { getMockConfig } from '../../test-utils'; import type { YargsArgs } from '../../types/yargs'; -import { serveHandler } from './serve'; jest.mock('./serve'); diff --git a/packages/snaps-cli/src/commands/serve/index.ts b/packages/snaps-cli/src/commands/serve/index.ts index 2f3e85e2b2..7330faf12f 100644 --- a/packages/snaps-cli/src/commands/serve/index.ts +++ b/packages/snaps-cli/src/commands/serve/index.ts @@ -1,8 +1,8 @@ import type yargs from 'yargs'; +import { serveHandler } from './serve'; import builders from '../../builders'; import type { YargsArgs } from '../../types/yargs'; -import { serveHandler } from './serve'; const command = { command: ['serve', 's'], diff --git a/packages/snaps-cli/src/commands/serve/serve.test.ts b/packages/snaps-cli/src/commands/serve/serve.test.ts index 610364641b..c7691969f7 100644 --- a/packages/snaps-cli/src/commands/serve/serve.test.ts +++ b/packages/snaps-cli/src/commands/serve/serve.test.ts @@ -1,6 +1,6 @@ +import { serveHandler } from './serve'; import { getMockConfig } from '../../test-utils'; import * as webpack from '../../webpack'; -import { serveHandler } from './serve'; jest.mock('../../webpack'); diff --git a/packages/snaps-cli/src/commands/watch/implementation.test.ts b/packages/snaps-cli/src/commands/watch/implementation.test.ts index 0a879aa786..1cfebecc43 100644 --- a/packages/snaps-cli/src/commands/watch/implementation.test.ts +++ b/packages/snaps-cli/src/commands/watch/implementation.test.ts @@ -5,10 +5,10 @@ import { } from '@metamask/snaps-utils/test-utils'; import normalFs from 'fs'; +import { watch } from './implementation'; import { getMockConfig } from '../../test-utils'; import { getCompiler } from '../../webpack'; import type * as webpack from '../../webpack'; -import { watch } from './implementation'; const { promises: fs } = normalFs; @@ -24,7 +24,10 @@ jest.mock('../../webpack', () => ({ .requireActual('../../webpack') .getCompiler(...args); + // @ts-expect-error: Type mismatch. compiler.inputFileSystem = normalFs; + + // @ts-expect-error: Type mismatch. compiler.outputFileSystem = normalFs; return compiler; @@ -57,6 +60,7 @@ describe('watch', () => { // @ts-expect-error - Partial mock. mock.mockImplementationOnce(() => ({ watch: watchMock, + watching: {}, })); await watch( @@ -78,6 +82,7 @@ describe('watch', () => { // @ts-expect-error - Partial mock. mock.mockImplementationOnce(() => ({ watch: watchMock, + watching: {}, })); await expect( diff --git a/packages/snaps-cli/src/commands/watch/implementation.ts b/packages/snaps-cli/src/commands/watch/implementation.ts index e7e540ed62..455ea8c16a 100644 --- a/packages/snaps-cli/src/commands/watch/implementation.ts +++ b/packages/snaps-cli/src/commands/watch/implementation.ts @@ -1,3 +1,4 @@ +import { assert } from '@metamask/utils'; import { basename } from 'path'; import type { Watching } from 'webpack'; @@ -39,6 +40,7 @@ export async function watch( return; } + assert(compiler.watching, 'Expected `compiler.watching` to be set.'); resolve(compiler.watching); }, ); diff --git a/packages/snaps-cli/src/commands/watch/index.test.ts b/packages/snaps-cli/src/commands/watch/index.test.ts index b4e16dd9df..6cdce57907 100644 --- a/packages/snaps-cli/src/commands/watch/index.test.ts +++ b/packages/snaps-cli/src/commands/watch/index.test.ts @@ -1,7 +1,7 @@ import command from '.'; +import { watchHandler } from './watch'; import { getMockConfig } from '../../test-utils'; import type { YargsArgs } from '../../types/yargs'; -import { watchHandler } from './watch'; jest.mock('./watch'); diff --git a/packages/snaps-cli/src/commands/watch/index.ts b/packages/snaps-cli/src/commands/watch/index.ts index 6d7d093cb3..8e1e499647 100644 --- a/packages/snaps-cli/src/commands/watch/index.ts +++ b/packages/snaps-cli/src/commands/watch/index.ts @@ -1,8 +1,8 @@ import type yargs from 'yargs'; +import { watchHandler } from './watch'; import builders from '../../builders'; import type { YargsArgs } from '../../types/yargs'; -import { watchHandler } from './watch'; const command = { command: ['watch', 'w'], diff --git a/packages/snaps-cli/src/commands/watch/watch.test.ts b/packages/snaps-cli/src/commands/watch/watch.test.ts index 22059a43e6..e6de712b56 100644 --- a/packages/snaps-cli/src/commands/watch/watch.test.ts +++ b/packages/snaps-cli/src/commands/watch/watch.test.ts @@ -2,9 +2,9 @@ import { getMockConfig } from '@metamask/snaps-cli/test-utils'; import { DEFAULT_SNAP_BUNDLE } from '@metamask/snaps-utils/test-utils'; import fs from 'fs'; -import * as webpack from '../../webpack'; import { watch } from './implementation'; import { watchHandler } from './watch'; +import * as webpack from '../../webpack'; jest.mock('fs'); jest.mock('../../webpack'); diff --git a/packages/snaps-cli/src/commands/watch/watch.ts b/packages/snaps-cli/src/commands/watch/watch.ts index 81ef64cea0..58d2b15a56 100644 --- a/packages/snaps-cli/src/commands/watch/watch.ts +++ b/packages/snaps-cli/src/commands/watch/watch.ts @@ -1,11 +1,11 @@ import { isFile } from '@metamask/snaps-utils/node'; +import { watch } from './implementation'; import type { ProcessedConfig, ProcessedWebpackConfig } from '../../config'; import { CommandError } from '../../errors'; import type { Steps } from '../../utils'; import { executeSteps, info } from '../../utils'; import { getServer } from '../../webpack'; -import { watch } from './implementation'; type WatchOptions = { /** diff --git a/packages/snaps-cli/src/main.ts b/packages/snaps-cli/src/main.ts index 044c3a9b3f..0d7c1c8f73 100755 --- a/packages/snaps-cli/src/main.ts +++ b/packages/snaps-cli/src/main.ts @@ -13,7 +13,6 @@ import commands from './commands'; * npx update-browserslist-db@latest * Why you should do it regularly: https://github.com/browserslist/update-db#readme */ -// eslint-disable-next-line n/no-process-env process.env.BROWSERSLIST_IGNORE_OLD_DATA = '1'; cli(process.argv, commands).catch((error) => { diff --git a/packages/snaps-cli/src/test-utils/webpack.ts b/packages/snaps-cli/src/test-utils/webpack.ts index 45241f97b2..5284956e23 100644 --- a/packages/snaps-cli/src/test-utils/webpack.ts +++ b/packages/snaps-cli/src/test-utils/webpack.ts @@ -5,7 +5,7 @@ import type { IFs } from 'memfs'; import { createFsFromVolume, Volume } from 'memfs'; import { promisify } from 'util'; import type { Configuration, StatsCompilation } from 'webpack'; -import webpack from 'webpack'; +import { webpack } from 'webpack'; export type CompileOptions = { code?: string; diff --git a/packages/snaps-cli/src/types/yargs.d.ts b/packages/snaps-cli/src/types/yargs.d.ts index cfcfe31003..5362dcded2 100644 --- a/packages/snaps-cli/src/types/yargs.d.ts +++ b/packages/snaps-cli/src/types/yargs.d.ts @@ -2,7 +2,7 @@ import type { Options } from 'yargs'; import type { ProcessedConfig } from '../config'; -// eslint-disable-next-line @typescript-eslint/ban-types +// eslint-disable-next-line @typescript-eslint/no-empty-object-type type OptionalArguments = Type & { /** Non-option arguments */ _?: (string | number)[]; diff --git a/packages/snaps-cli/src/utils/errors.test.ts b/packages/snaps-cli/src/utils/errors.test.ts index 887db93828..b314360d3b 100644 --- a/packages/snaps-cli/src/utils/errors.test.ts +++ b/packages/snaps-cli/src/utils/errors.test.ts @@ -1,5 +1,5 @@ -import { CommandError } from '../errors'; import { getErrorMessage, getYargsErrorMessage } from './errors'; +import { CommandError } from '../errors'; describe('getYargsErrorMessage', () => { it('returns the plain message if the error is undefined', () => { diff --git a/packages/snaps-cli/src/utils/legacy.test.ts b/packages/snaps-cli/src/utils/legacy.test.ts index 0a79e558a8..0b2fb89160 100644 --- a/packages/snaps-cli/src/utils/legacy.test.ts +++ b/packages/snaps-cli/src/utils/legacy.test.ts @@ -1,11 +1,11 @@ import { getMockConfig } from '@metamask/snaps-cli/test-utils'; -import { TranspilationModes } from '../builders'; import { getDependencyRegExp, processDependencies, sanitizeDependencyPaths, } from './legacy'; +import { TranspilationModes } from '../builders'; describe('processDependencies', () => { it('returns an empty array when `transpilationMode` is not `localAndDeps`', () => { diff --git a/packages/snaps-cli/src/utils/steps.ts b/packages/snaps-cli/src/utils/steps.ts index 67509d0af6..fa7fa2ac1d 100644 --- a/packages/snaps-cli/src/utils/steps.ts +++ b/packages/snaps-cli/src/utils/steps.ts @@ -11,9 +11,8 @@ export type Step> = { task: (context: Context & { spinner: Ora }) => Promise; }; -export type Steps> = Readonly< - Step[] ->; +export type Steps> = + readonly Step[]; /** * Execute a list of steps in series. Each step receives the context object and diff --git a/packages/snaps-cli/src/webpack/compiler.test.ts b/packages/snaps-cli/src/webpack/compiler.test.ts index c1776a8124..33af977f50 100644 --- a/packages/snaps-cli/src/webpack/compiler.test.ts +++ b/packages/snaps-cli/src/webpack/compiler.test.ts @@ -1,9 +1,9 @@ import type { Configuration } from 'webpack'; import { Compiler } from 'webpack'; -import merge from 'webpack-merge'; +import { merge } from 'webpack-merge'; -import { getMockConfig } from '../test-utils'; import { getCompiler } from './compiler'; +import { getMockConfig } from '../test-utils'; jest.dontMock('fs'); jest.mock('serve-handler', () => diff --git a/packages/snaps-cli/src/webpack/compiler.ts b/packages/snaps-cli/src/webpack/compiler.ts index 40b3ace1bc..7f51b9b2a5 100644 --- a/packages/snaps-cli/src/webpack/compiler.ts +++ b/packages/snaps-cli/src/webpack/compiler.ts @@ -1,8 +1,8 @@ import { webpack } from 'webpack'; -import type { ProcessedWebpackConfig } from '../config'; import type { WebpackOptions } from './config'; import { getDefaultConfiguration } from './config'; +import type { ProcessedWebpackConfig } from '../config'; /** * Get a Webpack compiler for the given config. diff --git a/packages/snaps-cli/src/webpack/config.test.ts b/packages/snaps-cli/src/webpack/config.test.ts index 168e4cebff..bb00da03f6 100644 --- a/packages/snaps-cli/src/webpack/config.test.ts +++ b/packages/snaps-cli/src/webpack/config.test.ts @@ -2,8 +2,8 @@ import { promises as fs } from 'fs'; import ora from 'ora'; import { dirname } from 'path'; -import { getMockConfig, normalizeConfig } from '../test-utils'; import { getDefaultConfiguration } from './config'; +import { getMockConfig, normalizeConfig } from '../test-utils'; jest.mock('fs'); jest.mock('path', () => ({ diff --git a/packages/snaps-cli/src/webpack/config.ts b/packages/snaps-cli/src/webpack/config.ts index 65fb5b00c4..2e43985cb0 100644 --- a/packages/snaps-cli/src/webpack/config.ts +++ b/packages/snaps-cli/src/webpack/config.ts @@ -7,7 +7,6 @@ import type { Configuration } from 'webpack'; import { DefinePlugin, ProgressPlugin, ProvidePlugin } from 'webpack'; import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; -import type { ProcessedWebpackConfig } from '../config'; import { getFunctionLoader, wasm } from './loaders'; import { SnapsBuiltInResolver, @@ -24,6 +23,7 @@ import { getImageSVG, getProgressHandler, } from './utils'; +import type { ProcessedWebpackConfig } from '../config'; export type WebpackOptions = { /** @@ -74,8 +74,7 @@ export async function getDefaultConfiguration( ): Promise { const spinnerText = options.spinner?.text; const builtInResolver = - config.stats.builtIns && - new SnapsBuiltInResolver(config.stats.builtIns, options.spinner); + config.stats.builtIns && new SnapsBuiltInResolver(config.stats.builtIns); return { /** diff --git a/packages/snaps-cli/src/webpack/loaders/browserify.ts b/packages/snaps-cli/src/webpack/loaders/browserify.ts index 2b461a665a..c361a4a7c2 100644 --- a/packages/snaps-cli/src/webpack/loaders/browserify.ts +++ b/packages/snaps-cli/src/webpack/loaders/browserify.ts @@ -39,7 +39,7 @@ const loader: LoaderDefinitionFunction = async function ( // We need to statically import all Browserify transforms, and all Babel // presets and plugins, and calling `require` is the sanest way to do that. - /* eslint-disable @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires, n/global-require */ + /* eslint-disable @typescript-eslint/no-require-imports, n/global-require */ bundler.transform(require('babelify'), { global: transpilationMode === TranspilationModes.LocalAndDeps, extensions: ['.js', '.jsx', '.ts', '.tsx'], @@ -63,7 +63,7 @@ const loader: LoaderDefinitionFunction = async function ( ], ...(babelifyOptions as any), }); - /* eslint-enable @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires, n/global-require */ + /* eslint-enable @typescript-eslint/no-require-imports, n/global-require */ } config.bundlerCustomizer?.(bundler); diff --git a/packages/snaps-cli/src/webpack/loaders/function.ts b/packages/snaps-cli/src/webpack/loaders/function.ts index 3350448a2c..52434bddb5 100644 --- a/packages/snaps-cli/src/webpack/loaders/function.ts +++ b/packages/snaps-cli/src/webpack/loaders/function.ts @@ -18,6 +18,8 @@ export type FunctionLoaderOptions = { * @param content - The input file contents as a `Uint8Array`. * @returns The output of the function. */ +// TODO: Either fix this lint violation or explain why it's necessary to ignore. +// eslint-disable-next-line @typescript-eslint/promise-function-async const loader: LoaderDefinitionFunction = function ( content, ) { @@ -53,7 +55,6 @@ export function getFunctionLoader( // When running as CJS, we need to export the loader as a default export, since // `tsup` exports it as `loader_default`. // istanbul ignore next 3 -// eslint-disable-next-line n/no-process-env if (typeof module !== 'undefined' && process?.env?.NODE_ENV !== 'test') { module.exports = loader; module.exports.getFunctionLoader = getFunctionLoader; diff --git a/packages/snaps-cli/src/webpack/loaders/wasm.ts b/packages/snaps-cli/src/webpack/loaders/wasm.ts index 82641fd77c..7a6d55afc0 100644 --- a/packages/snaps-cli/src/webpack/loaders/wasm.ts +++ b/packages/snaps-cli/src/webpack/loaders/wasm.ts @@ -1,5 +1,3 @@ -/* eslint-disable no-restricted-globals */ - import { assert, bytesToBase64 } from '@metamask/utils'; import { dirname, resolve } from 'path'; import type { LoaderDefinitionFunction } from 'webpack'; @@ -82,7 +80,6 @@ const loader: LoaderDefinitionFunction = async function loader( const wasmModule = await WebAssembly.compile(source); - // eslint-disable-next-line @typescript-eslint/no-shadow const exports = WebAssembly.Module.exports(wasmModule); const imports = WebAssembly.Module.imports(wasmModule).reduce< Record diff --git a/packages/snaps-cli/src/webpack/plugins.test.ts b/packages/snaps-cli/src/webpack/plugins.test.ts index 58e4e0aa59..08873f45df 100644 --- a/packages/snaps-cli/src/webpack/plugins.test.ts +++ b/packages/snaps-cli/src/webpack/plugins.test.ts @@ -4,14 +4,14 @@ import { promisify } from 'util'; import type { Compiler, Watching } from 'webpack'; import { WebpackError, ProvidePlugin } from 'webpack'; -import * as evalImplementation from '../commands/eval/implementation'; -import { compile, getCompiler } from '../test-utils'; import { SnapsBuiltInResolver, SnapsBundleWarningsPlugin, SnapsStatsPlugin, SnapsWatchPlugin, } from './plugins'; +import * as evalImplementation from '../commands/eval/implementation'; +import { compile, getCompiler } from '../test-utils'; jest.dontMock('fs'); jest.mock('../commands/eval/implementation'); @@ -170,7 +170,6 @@ describe('SnapsStatsPlugin', () => { expect(tap).toHaveBeenCalled(); const callback = tap.mock.calls[0][1]; - // eslint-disable-next-line n/callback-return await callback(); expect(log).not.toHaveBeenCalled(); }); diff --git a/packages/snaps-cli/src/webpack/plugins.ts b/packages/snaps-cli/src/webpack/plugins.ts index ca90580c7e..04e3952437 100644 --- a/packages/snaps-cli/src/webpack/plugins.ts +++ b/packages/snaps-cli/src/webpack/plugins.ts @@ -5,16 +5,15 @@ import type { Ora } from 'ora'; import type { Compiler, ProvidePlugin, - ResolvePluginInstance, Resolver, StatsError, WebpackPluginInstance, } from 'webpack'; import { WebpackError } from 'webpack'; +import { formatText, pluralize } from './utils'; import { evaluate } from '../commands/eval'; import { error, getErrorMessage, info, warn } from '../utils'; -import { formatText, pluralize } from './utils'; export type SnapsStatsPluginOptions = { /** @@ -241,13 +240,23 @@ export type SnapsBuiltInResolverOptions = { ignore?: string[]; }; +/** + * A Webpack resolve plugin. + * + * Copied from Webpack's own types, because the `ResolvePluginInstance` type is + * a union, and can't be used as a type for a class. + */ +type ResolvePlugin = { + apply: (resolver: Resolver) => void; +}; + /** * A plugin that logs a message when a built-in module is not resolved. The * MetaMask Snaps CLI does not support built-in modules by default, and this * plugin is used to warn the user when they try to import a built-in module, * when no fallback is configured. */ -export class SnapsBuiltInResolver implements ResolvePluginInstance { +export class SnapsBuiltInResolver implements ResolvePlugin { /** * The built-in modules that have been imported, but not resolved. */ @@ -263,19 +272,12 @@ export class SnapsBuiltInResolver implements ResolvePluginInstance { */ readonly options: SnapsBuiltInResolverOptions; - /** - * The spinner to use for logging. - */ - readonly #spinner?: Ora; - constructor( options: SnapsBuiltInResolverOptions = { ignore: [], }, - spinner?: Ora, ) { this.options = options; - this.#spinner = spinner; } /** diff --git a/packages/snaps-cli/src/webpack/utils.test.ts b/packages/snaps-cli/src/webpack/utils.test.ts index 26a440f697..464c2d7ef6 100644 --- a/packages/snaps-cli/src/webpack/utils.test.ts +++ b/packages/snaps-cli/src/webpack/utils.test.ts @@ -1,7 +1,5 @@ import { dim } from 'chalk'; -import type { ProcessedWebpackConfig } from '../config'; -import { getMockConfig } from '../test-utils'; import { browserify } from './loaders'; import { WEBPACK_FALLBACKS, @@ -15,6 +13,8 @@ import { formatText, getImageSVG, } from './utils'; +import type { ProcessedWebpackConfig } from '../config'; +import { getMockConfig } from '../test-utils'; describe('getDefaultLoader', () => { it('returns the Browserify loader if `legacy` is set', async () => { diff --git a/packages/snaps-cli/src/webpack/utils.ts b/packages/snaps-cli/src/webpack/utils.ts index efe2dcfed1..822d6f9a7d 100644 --- a/packages/snaps-cli/src/webpack/utils.ts +++ b/packages/snaps-cli/src/webpack/utils.ts @@ -7,14 +7,11 @@ import { dirname, resolve } from 'path'; import stripAnsi from 'strip-ansi'; import type { Configuration } from 'webpack'; -import type { ProcessedWebpackConfig } from '../config'; import { browserify, getFunctionLoader } from './loaders'; +import type { ProcessedWebpackConfig } from '../config'; export const BROWSERSLIST_FILE = resolve( - dirname( - // eslint-disable-next-line n/no-extraneous-require - require.resolve('@metamask/snaps-cli/package.json'), - ), + dirname(require.resolve('@metamask/snaps-cli/package.json')), '.browserslistrc', ); @@ -202,7 +199,7 @@ export function getDevTool( return 'inline-source-map'; } - if (sourceMap === true) { + if (sourceMap) { return 'source-map'; } diff --git a/packages/snaps-controllers/.eslintrc.js b/packages/snaps-controllers/.eslintrc.js deleted file mode 100644 index 6aff6b845e..0000000000 --- a/packages/snaps-controllers/.eslintrc.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, - - rules: { - '@typescript-eslint/consistent-type-definitions': 'off', - }, -}; diff --git a/packages/snaps-controllers/coverage.json b/packages/snaps-controllers/coverage.json index 4f40812790..c73f8baa74 100644 --- a/packages/snaps-controllers/coverage.json +++ b/packages/snaps-controllers/coverage.json @@ -1,6 +1,6 @@ { "branches": 93.31, "functions": 97.05, - "lines": 98.2, - "statements": 97.93 + "lines": 98.25, + "statements": 97.98 } diff --git a/packages/snaps-controllers/package.json b/packages/snaps-controllers/package.json index 0888b43ba6..e481b22a4a 100644 --- a/packages/snaps-controllers/package.json +++ b/packages/snaps-controllers/package.json @@ -65,9 +65,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../scripts/since-latest-release.sh", "test": "jest --reporters=jest-silent-reporter && yarn test:browser", @@ -112,12 +112,8 @@ "@esbuild-plugins/node-globals-polyfill": "^0.2.3", "@esbuild-plugins/node-modules-polyfill": "^0.2.2", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", + "@metamask/auto-changelog": "^4.1.0", "@metamask/browser-passworder": "^6.0.0", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", "@metamask/template-snap": "^0.7.0", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", @@ -132,8 +128,6 @@ "@types/readable-stream": "^4.0.15", "@types/semver": "^7.5.0", "@types/tar-stream": "^3.1.1", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", "@wdio/browser-runner": "^8.19.0", "@wdio/cli": "^8.19.0", "@wdio/globals": "^8.19.0", @@ -143,14 +137,7 @@ "deepmerge": "^4.2.2", "depcheck": "^1.4.7", "esbuild": "^0.18.10", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "expect-webdriverio": "^4.4.1", "istanbul-lib-coverage": "^3.2.0", "istanbul-lib-report": "^3.0.0", @@ -159,8 +146,7 @@ "jest-fetch-mock": "^3.0.3", "jest-silent-reporter": "^0.6.0", "mkdirp": "^1.0.4", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "rimraf": "^4.1.2", "ts-node": "^10.9.1", "typescript": "~5.3.3", diff --git a/packages/snaps-controllers/react-native.d.ts b/packages/snaps-controllers/react-native.d.ts index 7ba732f560..8dce37711c 100644 --- a/packages/snaps-controllers/react-native.d.ts +++ b/packages/snaps-controllers/react-native.d.ts @@ -1,3 +1 @@ -/* eslint-disable import/extensions */ - export * from './dist/react-native.cjs'; diff --git a/packages/snaps-controllers/react-native.js b/packages/snaps-controllers/react-native.js index 7671f8beb0..052b5578ad 100644 --- a/packages/snaps-controllers/react-native.js +++ b/packages/snaps-controllers/react-native.js @@ -1,5 +1,3 @@ -/* eslint-disable */ - // Re-exported for compatibility with build tools that don't support the // `exports` field in package.json module.exports = require('./dist/react-native.cjs'); diff --git a/packages/snaps-controllers/scripts/coverage.ts b/packages/snaps-controllers/scripts/coverage.ts index fd0e75f06d..934c0307f6 100644 --- a/packages/snaps-controllers/scripts/coverage.ts +++ b/packages/snaps-controllers/scripts/coverage.ts @@ -6,9 +6,8 @@ import { createCoverageMap } from 'istanbul-lib-coverage'; import type { ReportBase } from 'istanbul-lib-report'; import { createContext } from 'istanbul-lib-report'; import type { ReportOptions, ReportType } from 'istanbul-reports'; -import reports from 'istanbul-reports'; +import { create } from 'istanbul-reports'; import { resolve } from 'path'; -import * as process from 'process'; const COVERAGE_JSON = resolve(__dirname, '..', 'coverage.json'); const COVERAGE_PATH = resolve(__dirname, '..', 'coverage'); @@ -49,9 +48,9 @@ function generateSummaryReport( coverageMap, }); - return ( - reports.create(reportType, reportOptions) as unknown as ReportBase - ).execute(context); + return (create(reportType, reportOptions) as unknown as ReportBase).execute( + context, + ); } /** diff --git a/packages/snaps-controllers/src/cronjob/CronjobController.test.ts b/packages/snaps-controllers/src/cronjob/CronjobController.test.ts index 4d65257d6a..7953d05e49 100644 --- a/packages/snaps-controllers/src/cronjob/CronjobController.test.ts +++ b/packages/snaps-controllers/src/cronjob/CronjobController.test.ts @@ -5,12 +5,12 @@ import { MOCK_ORIGIN, MOCK_SNAP_ID } from '@metamask/snaps-utils/test-utils'; import type { SemVerVersion } from '@metamask/utils'; import { Duration, inMilliseconds } from '@metamask/utils'; +import { CronjobController } from './CronjobController'; import { getRestrictedCronjobControllerMessenger, getRootCronjobControllerMessenger, } from '../test-utils'; import { getCronjobPermission } from '../test-utils/cronjob'; -import { CronjobController } from './CronjobController'; const MOCK_VERSION = '1.0' as SemVerVersion; diff --git a/packages/snaps-controllers/src/cronjob/CronjobController.ts b/packages/snaps-controllers/src/cronjob/CronjobController.ts index 8092b9d598..e9ce1625b4 100644 --- a/packages/snaps-controllers/src/cronjob/CronjobController.ts +++ b/packages/snaps-controllers/src/cronjob/CronjobController.ts @@ -124,10 +124,10 @@ export class CronjobController extends BaseController< > { #dailyTimer!: Timer; - #timers: Map; + readonly #timers: Map; // Mapping from jobId to snapId - #snapIds: Map; + readonly #snapIds: Map; constructor({ messenger, state }: CronjobControllerArgs) { super({ @@ -213,7 +213,6 @@ export class CronjobController extends BaseController< const filteredSnaps = getRunnableSnaps(snaps); const jobs = filteredSnaps.map((snap) => this.#getSnapJobs(snap.id)); - // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion return jobs.flat().filter((job) => job !== undefined) as Cronjob[]; } @@ -566,6 +565,9 @@ export class CronjobController extends BaseController< * * @param snap - Basic Snap information. */ + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private _handleSnapRegisterEvent(snap: TruncatedSnap) { this.register(snap.id); } @@ -576,6 +578,9 @@ export class CronjobController extends BaseController< * * @param snap - Basic Snap information. */ + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private _handleSnapEnabledEvent(snap: TruncatedSnap) { const events = this.getBackgroundEvents(snap.id); this.#rescheduleBackgroundEvents(events); @@ -587,6 +592,9 @@ export class CronjobController extends BaseController< * * @param snap - Basic Snap information. */ + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private _handleSnapUnregisterEvent(snap: TruncatedSnap) { this.unregister(snap.id); } @@ -596,6 +604,9 @@ export class CronjobController extends BaseController< * * @param snap - Basic Snap information. */ + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private _handleSnapDisabledEvent(snap: TruncatedSnap) { this.unregister(snap.id, true); } @@ -605,6 +616,9 @@ export class CronjobController extends BaseController< * * @param snap - Basic Snap information. */ + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private _handleEventSnapUpdated(snap: TruncatedSnap) { this.unregister(snap.id); this.register(snap.id); diff --git a/packages/snaps-controllers/src/insights/SnapInsightsController.test.ts b/packages/snaps-controllers/src/insights/SnapInsightsController.test.ts index f377a305c7..0ba4eab48b 100644 --- a/packages/snaps-controllers/src/insights/SnapInsightsController.test.ts +++ b/packages/snaps-controllers/src/insights/SnapInsightsController.test.ts @@ -8,6 +8,7 @@ import { import { createDeferredPromise } from '@metamask/utils'; import { nanoid } from 'nanoid'; +import { SnapInsightsController } from './SnapInsightsController'; import { getRestrictedSnapInsightsControllerMessenger, getRootSnapInsightsControllerMessenger, @@ -17,7 +18,6 @@ import { TYPED_SIGNATURE_MOCK, MOCK_INSIGHTS_PERMISSIONS_NO_ORIGINS, } from '../test-utils'; -import { SnapInsightsController } from './SnapInsightsController'; describe('SnapInsightsController', () => { it('adds insight for transactions', async () => { diff --git a/packages/snaps-controllers/src/interface/SnapInterfaceController.test.tsx b/packages/snaps-controllers/src/interface/SnapInterfaceController.test.tsx index fb88438897..f8d6ffd9d0 100644 --- a/packages/snaps-controllers/src/interface/SnapInterfaceController.test.tsx +++ b/packages/snaps-controllers/src/interface/SnapInterfaceController.test.tsx @@ -24,12 +24,12 @@ import { } from '@metamask/snaps-utils'; import { MOCK_SNAP_ID } from '@metamask/snaps-utils/test-utils'; +import { SnapInterfaceController } from './SnapInterfaceController'; import { MockApprovalController, getRestrictedSnapInterfaceControllerMessenger, getRootSnapInterfaceControllerMessenger, } from '../test-utils'; -import { SnapInterfaceController } from './SnapInterfaceController'; jest.mock('@metamask/snaps-utils', () => ({ ...jest.requireActual('@metamask/snaps-utils'), @@ -1222,6 +1222,9 @@ describe('SnapInterfaceController', () => { id, }); + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line @typescript-eslint/no-floating-promises rootMessenger.call( 'SnapInterfaceController:resolveInterface', MOCK_SNAP_ID, diff --git a/packages/snaps-controllers/src/interface/SnapInterfaceController.ts b/packages/snaps-controllers/src/interface/SnapInterfaceController.ts index f06e0299c6..cd25843886 100644 --- a/packages/snaps-controllers/src/interface/SnapInterfaceController.ts +++ b/packages/snaps-controllers/src/interface/SnapInterfaceController.ts @@ -26,12 +26,12 @@ import { assert, hasProperty } from '@metamask/utils'; import { castDraft } from 'immer'; import { nanoid } from 'nanoid'; -import type { GetSnap } from '../snaps'; import { constructState, getJsxInterface, validateInterfaceContext, } from './utils'; +import type { GetSnap } from '../snaps'; const MAX_UI_CONTENT_SIZE = 10_000_000; // 10 mb diff --git a/packages/snaps-controllers/src/multichain/MultichainRouter.test.ts b/packages/snaps-controllers/src/multichain/MultichainRouter.test.ts index a17b6d0fc7..f2fb279fcf 100644 --- a/packages/snaps-controllers/src/multichain/MultichainRouter.test.ts +++ b/packages/snaps-controllers/src/multichain/MultichainRouter.test.ts @@ -1,6 +1,7 @@ import { HandlerType } from '@metamask/snaps-utils'; import { getTruncatedSnap } from '@metamask/snaps-utils/test-utils'; +import { MultichainRouter } from './MultichainRouter'; import { getRootMultichainRouterMessenger, getRestrictedMultichainRouterMessenger, @@ -13,7 +14,6 @@ import { MOCK_BTC_ACCOUNTS, getMockWithSnapKeyring, } from '../test-utils'; -import { MultichainRouter } from './MultichainRouter'; describe('MultichainRouter', () => { describe('handleRequest', () => { diff --git a/packages/snaps-controllers/src/multichain/MultichainRouter.ts b/packages/snaps-controllers/src/multichain/MultichainRouter.ts index 1af19fb850..31e71f2d94 100644 --- a/packages/snaps-controllers/src/multichain/MultichainRouter.ts +++ b/packages/snaps-controllers/src/multichain/MultichainRouter.ts @@ -119,9 +119,9 @@ export class MultichainRouter { state = null; - #messenger: MultichainRouterMessenger; + readonly #messenger: MultichainRouterMessenger; - #withSnapKeyring: WithSnapKeyringFunction; + readonly #withSnapKeyring: WithSnapKeyringFunction; constructor({ messenger, withSnapKeyring }: MultichainRouterArgs) { this.#messenger = messenger; diff --git a/packages/snaps-controllers/src/node.ts b/packages/snaps-controllers/src/node.ts index b3c6706f5d..cf687b1926 100644 --- a/packages/snaps-controllers/src/node.ts +++ b/packages/snaps-controllers/src/node.ts @@ -1,4 +1,4 @@ -/* eslint-disable import/export */ +/* eslint-disable import-x/export */ export * from '.'; export * from './services/node'; diff --git a/packages/snaps-controllers/src/react-native.ts b/packages/snaps-controllers/src/react-native.ts index 7112e72260..a3948cbb95 100644 --- a/packages/snaps-controllers/src/react-native.ts +++ b/packages/snaps-controllers/src/react-native.ts @@ -1,4 +1,4 @@ -/* eslint-disable import/export */ +/* eslint-disable import-x/export */ export * from '.'; export * from './services/react-native'; diff --git a/packages/snaps-controllers/src/services/AbstractExecutionService.test.ts b/packages/snaps-controllers/src/services/AbstractExecutionService.test.ts index 093411b3db..2f4c2638df 100644 --- a/packages/snaps-controllers/src/services/AbstractExecutionService.test.ts +++ b/packages/snaps-controllers/src/services/AbstractExecutionService.test.ts @@ -3,9 +3,9 @@ import { HandlerType } from '@metamask/snaps-utils'; import { MOCK_SNAP_ID } from '@metamask/snaps-utils/test-utils'; import { Duration, inMilliseconds } from '@metamask/utils'; -import { createService } from '../test-utils'; import type { ExecutionServiceArgs } from './AbstractExecutionService'; import { NodeThreadExecutionService } from './node'; +import { createService } from '../test-utils'; class MockExecutionService extends NodeThreadExecutionService { constructor({ messenger, setupSnapProvider, ...args }: ExecutionServiceArgs) { diff --git a/packages/snaps-controllers/src/services/AbstractExecutionService.ts b/packages/snaps-controllers/src/services/AbstractExecutionService.ts index 53b64659d0..18184ccab2 100644 --- a/packages/snaps-controllers/src/services/AbstractExecutionService.ts +++ b/packages/snaps-controllers/src/services/AbstractExecutionService.ts @@ -22,15 +22,15 @@ import { nanoid } from 'nanoid'; import { pipeline } from 'readable-stream'; import type { Duplex } from 'readable-stream'; -import { log } from '../logging'; -import { Timer } from '../snaps/Timer'; -import { hasTimedOut, withTimeout } from '../utils'; import type { ExecutionService, ExecutionServiceMessenger, SnapErrorJson, SnapExecutionData, } from './ExecutionService'; +import { log } from '../logging'; +import { Timer } from '../snaps/Timer'; +import { hasTimedOut, withTimeout } from '../utils'; const controllerName = 'ExecutionService'; @@ -68,27 +68,28 @@ export abstract class AbstractExecutionService state = null; - #snapRpcHooks: Map; + readonly #snapRpcHooks: Map; // Cannot be hash private yet because of tests. protected jobs: Map>; // Cannot be hash private yet because of tests. + // eslint-disable-next-line no-restricted-syntax private readonly setupSnapProvider: SetupSnapProvider; - #snapToJobMap: Map; + readonly #snapToJobMap: Map; - #jobToSnapMap: Map; + readonly #jobToSnapMap: Map; - #messenger: ExecutionServiceMessenger; + readonly #messenger: ExecutionServiceMessenger; - #initTimeout: number; + readonly #initTimeout: number; - #pingTimeout: number; + readonly #pingTimeout: number; - #terminationTimeout: number; + readonly #terminationTimeout: number; - #usePing: boolean; + readonly #usePing: boolean; constructor({ setupSnapProvider, @@ -116,6 +117,9 @@ export abstract class AbstractExecutionService * Constructor helper for registering the controller's messaging system * actions. */ + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private registerMessageHandlers(): void { this.#messenger.registerActionHandler( `${controllerName}:handleRpcRequest`, @@ -360,6 +364,9 @@ export abstract class AbstractExecutionService * @param snapId - The id of the Snap whose message handler to get. * @returns The RPC request handler for the snap. */ + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private getRpcRequestHandler(snapId: string) { return this.#snapRpcHooks.get(snapId); } @@ -437,6 +444,7 @@ export abstract class AbstractExecutionService } // Cannot be hash private yet because of tests. + // eslint-disable-next-line no-restricted-syntax private async command( jobId: string, message: JsonRpcRequest, @@ -447,8 +455,6 @@ export abstract class AbstractExecutionService } log('Parent: Sending Command', message); - // eslint is blocking `await` usage even though `handle` overload returns a promise. - // eslint-disable-next-line @typescript-eslint/await-thenable const response = await job.rpcEngine.handle(message); if (isJsonRpcFailure(response)) { diff --git a/packages/snaps-controllers/src/services/ExecutionService.ts b/packages/snaps-controllers/src/services/ExecutionService.ts index d9ac4fe89f..f551e78c16 100644 --- a/packages/snaps-controllers/src/services/ExecutionService.ts +++ b/packages/snaps-controllers/src/services/ExecutionService.ts @@ -11,7 +11,7 @@ type HandleRpcRequest = ( options: SnapRpcHookArgs, ) => Promise; -export interface ExecutionService { +export type ExecutionService = { // These fields are required for modular initialisation of the execution // service in the MetaMask extension. name: 'ExecutionService'; @@ -21,7 +21,7 @@ export interface ExecutionService { terminateAllSnaps: TerminateAll; executeSnap: ExecuteSnap; handleRpcRequest: HandleRpcRequest; -} +}; export type SnapExecutionData = { snapId: string; @@ -35,7 +35,7 @@ export type SnapErrorJson = { data?: Json; }; -const controllerName = 'ExecutionService'; +type ControllerName = 'ExecutionService'; export type ErrorMessageEvent = { type: 'ExecutionService:unhandledError'; @@ -61,7 +61,7 @@ export type ExecutionServiceEvents = * Handles RPC request. */ export type HandleRpcRequestAction = { - type: `${typeof controllerName}:handleRpcRequest`; + type: `${ControllerName}:handleRpcRequest`; handler: ExecutionService['handleRpcRequest']; }; @@ -69,7 +69,7 @@ export type HandleRpcRequestAction = { * Executes a given snap. */ export type ExecuteSnapAction = { - type: `${typeof controllerName}:executeSnap`; + type: `${ControllerName}:executeSnap`; handler: ExecutionService['executeSnap']; }; @@ -77,7 +77,7 @@ export type ExecuteSnapAction = { * Terminates a given snap. */ export type TerminateSnapAction = { - type: `${typeof controllerName}:terminateSnap`; + type: `${ControllerName}:terminateSnap`; handler: ExecutionService['terminateSnap']; }; @@ -85,7 +85,7 @@ export type TerminateSnapAction = { * Terminates all snaps. */ export type TerminateAllSnapsAction = { - type: `${typeof controllerName}:terminateAllSnaps`; + type: `${ControllerName}:terminateAllSnaps`; handler: ExecutionService['terminateAllSnaps']; }; diff --git a/packages/snaps-controllers/src/services/browser.ts b/packages/snaps-controllers/src/services/browser.ts index d17773a008..1b80e9e865 100644 --- a/packages/snaps-controllers/src/services/browser.ts +++ b/packages/snaps-controllers/src/services/browser.ts @@ -1,6 +1,6 @@ // Subset of exports meant for browser environments, omits Node.js services export * from './AbstractExecutionService'; -export * from './ExecutionService'; +export type * from './ExecutionService'; export * from './ProxyPostMessageStream'; export * from './iframe'; export * from './offscreen'; diff --git a/packages/snaps-controllers/src/services/iframe/IframeExecutionService.test.browser.ts b/packages/snaps-controllers/src/services/iframe/IframeExecutionService.test.browser.ts index e81f4decf0..ede30e4d95 100644 --- a/packages/snaps-controllers/src/services/iframe/IframeExecutionService.test.browser.ts +++ b/packages/snaps-controllers/src/services/iframe/IframeExecutionService.test.browser.ts @@ -7,8 +7,8 @@ import { } from '@metamask/snaps-utils/test-utils'; import { assert } from '@metamask/utils'; -import { createService, MOCK_BLOCK_NUMBER } from '../../test-utils'; import { IframeExecutionService } from './IframeExecutionService'; +import { createService, MOCK_BLOCK_NUMBER } from '../../test-utils'; const IFRAME_URL = 'http://localhost:4567'; diff --git a/packages/snaps-controllers/src/services/iframe/test/index.html b/packages/snaps-controllers/src/services/iframe/test/index.html index 810e78b57e..4bc64e9a3d 100644 --- a/packages/snaps-controllers/src/services/iframe/test/index.html +++ b/packages/snaps-controllers/src/services/iframe/test/index.html @@ -1,4 +1,4 @@ - + Sandbox test diff --git a/packages/snaps-controllers/src/services/index.ts b/packages/snaps-controllers/src/services/index.ts index 73171d1ecf..b72ca852ee 100644 --- a/packages/snaps-controllers/src/services/index.ts +++ b/packages/snaps-controllers/src/services/index.ts @@ -1,5 +1,5 @@ export * from './AbstractExecutionService'; -export * from './ExecutionService'; +export type * from './ExecutionService'; export * from './ProxyPostMessageStream'; export * from './iframe'; export * from './offscreen'; diff --git a/packages/snaps-controllers/src/services/node-js/NodeProcessExecutionService.test.ts b/packages/snaps-controllers/src/services/node-js/NodeProcessExecutionService.test.ts index fe5f756c4e..290a385bd2 100644 --- a/packages/snaps-controllers/src/services/node-js/NodeProcessExecutionService.test.ts +++ b/packages/snaps-controllers/src/services/node-js/NodeProcessExecutionService.test.ts @@ -1,10 +1,10 @@ import { JsonRpcError } from '@metamask/rpc-errors'; import { HandlerType } from '@metamask/snaps-utils'; +import { NodeProcessExecutionService } from './NodeProcessExecutionService'; import { createService, MOCK_BLOCK_NUMBER } from '../../test-utils'; import { delay } from '../../utils'; import type { SnapErrorJson } from '../ExecutionService'; -import { NodeProcessExecutionService } from './NodeProcessExecutionService'; const ON_RPC_REQUEST = HandlerType.OnRpcRequest; diff --git a/packages/snaps-controllers/src/services/node-js/NodeThreadExecutionService.test.ts b/packages/snaps-controllers/src/services/node-js/NodeThreadExecutionService.test.ts index c390b1ee47..73bbdfc9fb 100644 --- a/packages/snaps-controllers/src/services/node-js/NodeThreadExecutionService.test.ts +++ b/packages/snaps-controllers/src/services/node-js/NodeThreadExecutionService.test.ts @@ -1,10 +1,10 @@ import { JsonRpcError } from '@metamask/rpc-errors'; import { HandlerType } from '@metamask/snaps-utils'; +import { NodeThreadExecutionService } from './NodeThreadExecutionService'; import { createService, MOCK_BLOCK_NUMBER } from '../../test-utils'; import { delay } from '../../utils'; import type { SnapErrorJson } from '../ExecutionService'; -import { NodeThreadExecutionService } from './NodeThreadExecutionService'; const ON_RPC_REQUEST = HandlerType.OnRpcRequest; diff --git a/packages/snaps-controllers/src/services/node-js/NodeThreadExecutionService.ts b/packages/snaps-controllers/src/services/node-js/NodeThreadExecutionService.ts index a7912a561c..f6bfeaf2d9 100644 --- a/packages/snaps-controllers/src/services/node-js/NodeThreadExecutionService.ts +++ b/packages/snaps-controllers/src/services/node-js/NodeThreadExecutionService.ts @@ -1,6 +1,5 @@ import type { BasePostMessageStream } from '@metamask/post-message-stream'; import { ThreadParentMessageStream } from '@metamask/post-message-stream'; -// eslint-disable-next-line @typescript-eslint/no-shadow import { Worker } from 'worker_threads'; import type { TerminateJobArgs } from '..'; @@ -37,6 +36,9 @@ export class NodeThreadExecutionService extends AbstractExecutionService return Promise.resolve({ worker, stream }); } + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line @typescript-eslint/no-misused-promises protected async terminateJob( jobWrapper: TerminateJobArgs, ): Promise { diff --git a/packages/snaps-controllers/src/services/offscreen/OffscreenExecutionService.test.ts b/packages/snaps-controllers/src/services/offscreen/OffscreenExecutionService.test.ts index 7554f97197..42cf616f1a 100644 --- a/packages/snaps-controllers/src/services/offscreen/OffscreenExecutionService.test.ts +++ b/packages/snaps-controllers/src/services/offscreen/OffscreenExecutionService.test.ts @@ -9,9 +9,9 @@ import { isPlainObject, } from '@metamask/utils'; +import { OffscreenExecutionService } from './OffscreenExecutionService'; import { createService } from '../../test-utils'; import { getMockedFunction } from '../../test-utils/mock'; -import { OffscreenExecutionService } from './OffscreenExecutionService'; const OFFSCREEN_PROMISE = Promise.resolve(); diff --git a/packages/snaps-controllers/src/services/proxy/ProxyExecutionService.ts b/packages/snaps-controllers/src/services/proxy/ProxyExecutionService.ts index 47aa82ab6a..41cea32fff 100644 --- a/packages/snaps-controllers/src/services/proxy/ProxyExecutionService.ts +++ b/packages/snaps-controllers/src/services/proxy/ProxyExecutionService.ts @@ -47,6 +47,9 @@ export class ProxyExecutionService extends AbstractExecutionService { * * @param job - The job to terminate. */ + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line @typescript-eslint/no-misused-promises protected async terminateJob(job: TerminateJobArgs) { // The `AbstractExecutionService` will have already closed the job stream, // so we write to the runtime stream directly. diff --git a/packages/snaps-controllers/src/services/webview/WebViewExecutionService.test.ts b/packages/snaps-controllers/src/services/webview/WebViewExecutionService.test.ts index c67bf41aaf..95c177ceb4 100644 --- a/packages/snaps-controllers/src/services/webview/WebViewExecutionService.test.ts +++ b/packages/snaps-controllers/src/services/webview/WebViewExecutionService.test.ts @@ -5,10 +5,10 @@ import { import type { Json, JsonRpcRequest } from '@metamask/utils'; import { isJsonRpcRequest, isPlainObject } from '@metamask/utils'; -import { createService } from '../../test-utils'; -import { parseInjectedJS } from '../../test-utils/webview'; import { WebViewExecutionService } from './WebViewExecutionService'; import type { WebViewInterface } from './WebViewMessageStream'; +import { createService } from '../../test-utils'; +import { parseInjectedJS } from '../../test-utils/webview'; /** * Create a response message for the given request. This function assumes that diff --git a/packages/snaps-controllers/src/services/webview/WebViewExecutionService.ts b/packages/snaps-controllers/src/services/webview/WebViewExecutionService.ts index 95c5b53628..35de69eb0b 100644 --- a/packages/snaps-controllers/src/services/webview/WebViewExecutionService.ts +++ b/packages/snaps-controllers/src/services/webview/WebViewExecutionService.ts @@ -1,10 +1,10 @@ -import type { TerminateJobArgs } from '../AbstractExecutionService'; -import { - AbstractExecutionService, - type ExecutionServiceArgs, -} from '../AbstractExecutionService'; import type { WebViewInterface } from './WebViewMessageStream'; import { WebViewMessageStream } from './WebViewMessageStream'; +import { AbstractExecutionService } from '../AbstractExecutionService'; +import type { + ExecutionServiceArgs, + TerminateJobArgs, +} from '../AbstractExecutionService'; export type WebViewExecutionServiceArgs = ExecutionServiceArgs & { createWebView: (jobId: string) => Promise; diff --git a/packages/snaps-controllers/src/services/webview/WebViewMessageStream.ts b/packages/snaps-controllers/src/services/webview/WebViewMessageStream.ts index 6fb6a9e254..8d6f390a91 100644 --- a/packages/snaps-controllers/src/services/webview/WebViewMessageStream.ts +++ b/packages/snaps-controllers/src/services/webview/WebViewMessageStream.ts @@ -19,11 +19,11 @@ export type WebViewStreamArgs = { * A special postMessage stream used to interface with a WebView. */ export class WebViewMessageStream extends BasePostMessageStream { - #name; + readonly #name; - #target; + readonly #target; - #webView: WebViewInterface | undefined; + readonly #webView: WebViewInterface | undefined; /** * Creates a stream for communicating with other streams inside a WebView. @@ -63,6 +63,9 @@ export class WebViewMessageStream extends BasePostMessageStream { this.#webView.injectJavaScript(`window.postMessage([${bytes.toString()}])`); } + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private _onMessage(event: PostMessageEvent): void { if (typeof event.data !== 'string') { return; diff --git a/packages/snaps-controllers/src/services/webworker/WebWorkerExecutionService.test.browser.ts b/packages/snaps-controllers/src/services/webworker/WebWorkerExecutionService.test.browser.ts index a9eb5e5c71..5e663d4d1a 100644 --- a/packages/snaps-controllers/src/services/webworker/WebWorkerExecutionService.test.browser.ts +++ b/packages/snaps-controllers/src/services/webworker/WebWorkerExecutionService.test.browser.ts @@ -7,11 +7,11 @@ import { spy, } from '@metamask/snaps-utils/test-utils'; -import { createService, MOCK_BLOCK_NUMBER } from '../../test-utils'; import { WebWorkerExecutionService, WORKER_POOL_ID, } from './WebWorkerExecutionService'; +import { createService, MOCK_BLOCK_NUMBER } from '../../test-utils'; const WORKER_POOL_URL = 'http://localhost:4567/worker/pool'; diff --git a/packages/snaps-controllers/src/services/webworker/WebWorkerExecutionService.ts b/packages/snaps-controllers/src/services/webworker/WebWorkerExecutionService.ts index 01c2c94db6..bd586543f2 100644 --- a/packages/snaps-controllers/src/services/webworker/WebWorkerExecutionService.ts +++ b/packages/snaps-controllers/src/services/webworker/WebWorkerExecutionService.ts @@ -18,7 +18,7 @@ type WebWorkerExecutionEnvironmentServiceArgs = { export const WORKER_POOL_ID = 'snaps-worker-pool'; export class WebWorkerExecutionService extends AbstractExecutionService { - #documentUrl: URL; + readonly #documentUrl: URL; #runtimeStream?: BasePostMessageStream; @@ -53,6 +53,9 @@ export class WebWorkerExecutionService extends AbstractExecutionService * * @param job - The job to terminate. */ + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line @typescript-eslint/no-misused-promises protected async terminateJob(job: TerminateJobArgs) { // The `AbstractExecutionService` will have already closed the job stream, // so we write to the runtime stream directly. @@ -94,6 +97,9 @@ export class WebWorkerExecutionService extends AbstractExecutionService * * If the document already exists, this does nothing. */ + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private async createDocument() { // We only want to create a single pool. if (document.getElementById(WORKER_POOL_ID)) { diff --git a/packages/snaps-controllers/src/snaps/RequestQueue.ts b/packages/snaps-controllers/src/snaps/RequestQueue.ts index d1c2563b51..38443edeaf 100644 --- a/packages/snaps-controllers/src/snaps/RequestQueue.ts +++ b/packages/snaps-controllers/src/snaps/RequestQueue.ts @@ -1,6 +1,9 @@ export class RequestQueue { public readonly maxQueueSize: number; + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private readonly queueSizes: Map; constructor(maxQueueSize: number) { diff --git a/packages/snaps-controllers/src/snaps/SnapController.test.tsx b/packages/snaps-controllers/src/snaps/SnapController.test.tsx index ac4011d3a5..233b0054d8 100644 --- a/packages/snaps-controllers/src/snaps/SnapController.test.tsx +++ b/packages/snaps-controllers/src/snaps/SnapController.test.tsx @@ -5,13 +5,13 @@ import { JsonRpcEngine, } from '@metamask/json-rpc-engine'; import { createEngineStream } from '@metamask/json-rpc-middleware-stream'; -import type { PermissionConstraint } from '@metamask/permission-controller'; -import { - SubjectType, - type Caveat, - type SubjectPermissions, - type ValidPermission, +import type { + PermissionConstraint, + Caveat, + SubjectPermissions, + ValidPermission, } from '@metamask/permission-controller'; +import { SubjectType } from '@metamask/permission-controller'; import { providerErrors, rpcErrors } from '@metamask/rpc-errors'; import { WALLET_SNAP_PERMISSION_KEY, @@ -68,8 +68,16 @@ import { webcrypto } from 'crypto'; import fetchMock from 'jest-fetch-mock'; import { pipeline } from 'readable-stream'; import type { Duplex } from 'readable-stream'; -import semver from 'semver'; +import { inc } from 'semver'; +import { LEGACY_ENCRYPTION_KEY_DERIVATION_OPTIONS } from './constants'; +import { SnapsRegistryStatus } from './registry'; +import type { SnapControllerState } from './SnapController'; +import { + SNAP_APPROVAL_INSTALL, + SNAP_APPROVAL_RESULT, + SNAP_APPROVAL_UPDATE, +} from './SnapController'; import { setupMultiplex } from '../services'; import type { NodeThreadExecutionService } from '../services/node'; import { @@ -103,14 +111,6 @@ import { waitForStateChange, } from '../test-utils'; import { delay } from '../utils'; -import { LEGACY_ENCRYPTION_KEY_DERIVATION_OPTIONS } from './constants'; -import { SnapsRegistryStatus } from './registry'; -import type { SnapControllerState } from './SnapController'; -import { - SNAP_APPROVAL_INSTALL, - SNAP_APPROVAL_RESULT, - SNAP_APPROVAL_UPDATE, -} from './SnapController'; if (!('CryptoKey' in globalThis)) { // We can remove this once we drop Node 18 @@ -142,7 +142,6 @@ const OTHER_ENCRYPTION_KEY = describe('SnapController', () => { beforeEach(() => { - // eslint-disable-next-line @typescript-eslint/require-await fetchMock.mockImplementation(async () => { throw new AssertionError({ message: 'Unmocked access to internet.' }); }); @@ -1842,6 +1841,7 @@ describe('SnapController', () => { }); // This isn't stable in CI unfortunately + // eslint-disable-next-line jest/no-disabled-tests it.skip('throws if the Snap is terminated while executing', async () => { const { manifest, sourceCode, svgIcon } = await getMockSnapFilesWithUpdatedChecksum({ @@ -2111,7 +2111,6 @@ describe('SnapController', () => { expect(snapController.state.snaps[snap.id]).toBeUndefined(); - // eslint-disable-next-line @typescript-eslint/unbound-method expect(messenger.publish).toHaveBeenCalledWith( 'SnapController:snapUninstalled', getTruncatedSnap(), @@ -4483,8 +4482,8 @@ describe('SnapController', () => { ); let resolveExecutePromise: any; - const deferredExecutePromise = new Promise((res) => { - resolveExecutePromise = res; + const deferredExecutePromise = new Promise((resolve) => { + resolveExecutePromise = resolve; }); rootMessenger.registerActionHandler( @@ -4571,7 +4570,7 @@ describe('SnapController', () => { // we need an rpc message handler function to be returned jest .spyOn(messenger, 'call') - .mockImplementation((method, ..._args: unknown[]) => { + .mockImplementation(async (method, ..._args: unknown[]) => { if (method === 'ExecutionService:executeSnap') { return deferredExecutePromise; } else if (method === 'ExecutionService:handleRpcRequest') { @@ -6050,7 +6049,6 @@ describe('SnapController', () => { snaps: false, dapps: true, }, - // eslint-disable-next-line @typescript-eslint/naming-convention 'endowment:webassembly': {}, }; @@ -6067,7 +6065,6 @@ describe('SnapController', () => { detectSnapLocation: loopbackDetect({ manifest: manifest.result, }), - // eslint-disable-next-line @typescript-eslint/naming-convention excludedPermissions: { 'endowment:webassembly': 'foobar' }, }), ); @@ -6143,10 +6140,7 @@ describe('SnapController', () => { }); it('throws an error if the specified platform version is newer than the supported platform version', async () => { - const newerVersion = semver.inc( - getPlatformVersion(), - 'minor', - ) as SemVerVersion; + const newerVersion = inc(getPlatformVersion(), 'minor') as SemVerVersion; const { manifest } = await getMockSnapFilesWithUpdatedChecksum({ manifest: getSnapManifest({ @@ -6178,10 +6172,7 @@ describe('SnapController', () => { it('logs a warning if the specified platform version is newer than the supported platform version and `rejectInvalidPlatformVersion` is disabled', async () => { const log = jest.spyOn(console, 'warn').mockImplementation(); - const newerVersion = semver.inc( - getPlatformVersion(), - 'minor', - ) as SemVerVersion; + const newerVersion = inc(getPlatformVersion(), 'minor') as SemVerVersion; const { manifest } = await getMockSnapFilesWithUpdatedChecksum({ manifest: getSnapManifest({ @@ -6218,7 +6209,6 @@ describe('SnapController', () => { it('maps permission caveats to the proper format', async () => { const initialPermissions = { - // eslint-disable-next-line @typescript-eslint/naming-convention 'endowment:rpc': { snaps: false, dapps: true }, // eslint-disable-next-line @typescript-eslint/naming-convention snap_getBip32Entropy: [ @@ -6976,13 +6966,11 @@ describe('SnapController', () => { expect(controller.get(snapId1)?.status).toBe('stopped'); expect(controller.get(snapId2)?.status).toBe('stopped'); - // eslint-disable-next-line @typescript-eslint/unbound-method expect(messenger.publish).not.toHaveBeenCalledWith( 'SnapController:snapInstalled', expect.anything(), ); - // eslint-disable-next-line @typescript-eslint/unbound-method expect(messenger.publish).not.toHaveBeenCalledWith( 'SnapController:snapUpdated', expect.anything(), @@ -8302,7 +8290,6 @@ describe('SnapController', () => { rootMessenger.registerActionHandler( 'ApprovalController:addRequest', async (request) => { - // eslint-disable-next-line jest/no-conditional-expect expect(request.id).toBe( (request.requestData?.metadata as { id: string })?.id, ); @@ -9864,6 +9851,9 @@ describe('SnapController', () => { throw errorValue; }); + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line @typescript-eslint/await-thenable await messenger.call('SnapController:clearSnapState', MOCK_SNAP_ID, true); await promise; @@ -9986,6 +9976,9 @@ describe('SnapController', () => { }), ); + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line @typescript-eslint/await-thenable const result = await messenger.call( 'SnapController:getPermitted', mockSnap.origin, diff --git a/packages/snaps-controllers/src/snaps/SnapController.ts b/packages/snaps-controllers/src/snaps/SnapController.ts index af95aaec06..80ea54e4a0 100644 --- a/packages/snaps-controllers/src/snaps/SnapController.ts +++ b/packages/snaps-controllers/src/snaps/SnapController.ts @@ -129,31 +129,8 @@ import { createMachine, interpret } from '@xstate/fsm'; import { Mutex } from 'async-mutex'; import type { Patch } from 'immer'; import { nanoid } from 'nanoid'; -import semver from 'semver'; +import { gt } from 'semver'; -import { forceStrict, validateMachine } from '../fsm'; -import type { CreateInterface, GetInterface } from '../interface'; -import { log } from '../logging'; -import type { - ExecuteSnapAction, - ExecutionServiceEvents, - HandleRpcRequestAction, - SnapErrorJson, - TerminateAllSnapsAction, - TerminateSnapAction, -} from '../services'; -import type { EncryptionResult } from '../types'; -import { - type ExportableKeyEncryptor, - type KeyDerivationOptions, -} from '../types'; -import { - fetchSnap, - hasTimedOut, - permissionsDiff, - setDiff, - withTimeout, -} from '../utils'; import { ALLOWED_PERMISSIONS, LEGACY_ENCRYPTION_KEY_DERIVATION_OPTIONS, @@ -173,6 +150,29 @@ import { SnapsRegistryStatus } from './registry'; import { RequestQueue } from './RequestQueue'; import { getRunnableSnaps } from './selectors'; import { Timer } from './Timer'; +import { forceStrict, validateMachine } from '../fsm'; +import type { CreateInterface, GetInterface } from '../interface'; +import { log } from '../logging'; +import type { + ExecuteSnapAction, + ExecutionServiceEvents, + HandleRpcRequestAction, + SnapErrorJson, + TerminateAllSnapsAction, + TerminateSnapAction, +} from '../services'; +import type { + EncryptionResult, + ExportableKeyEncryptor, + KeyDerivationOptions, +} from '../types'; +import { + fetchSnap, + hasTimedOut, + permissionsDiff, + setDiff, + withTimeout, +} from '../utils'; export const controllerName = 'SnapController'; @@ -194,19 +194,19 @@ export type PendingRequest = { timer: Timer; }; -export interface PreinstalledSnapFile { +export type PreinstalledSnapFile = { path: string; value: string | Uint8Array; -} +}; -export interface PreinstalledSnap { +export type PreinstalledSnap = { snapId: SnapId; manifest: SnapManifest; files: PreinstalledSnapFile[]; removable?: boolean; hidden?: boolean; hideSnapBranding?: boolean; -} +}; type SnapRpcHandler = ( options: SnapRpcHookArgs & { timeout: number }, @@ -217,7 +217,7 @@ type SnapRpcHandler = ( * It is not persisted in state as it contains non-serializable data and is only relevant for the * current session. */ -export interface SnapRuntimeData { +export type SnapRuntimeData = { /** * A promise that resolves when the Snap has finished installing */ @@ -286,7 +286,7 @@ export interface SnapRuntimeData { * A mutex to prevent concurrent state updates. */ stateMutex: Mutex; -} +}; export type SnapError = { message: string; @@ -811,7 +811,6 @@ function truncateSnap(snap: Snap): TruncatedSnap { {}, ); - // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion return truncatedSnap as TruncatedSnap; } @@ -827,38 +826,39 @@ export class SnapController extends BaseController< SnapControllerState, SnapControllerMessenger > { - #closeAllConnections?: CloseAllConnectionsFunction; + readonly #closeAllConnections?: CloseAllConnectionsFunction; - #dynamicPermissions: string[]; + readonly #dynamicPermissions: string[]; - #environmentEndowmentPermissions: string[]; + readonly #environmentEndowmentPermissions: string[]; - #excludedPermissions: Record; + readonly #excludedPermissions: Record; - #featureFlags: FeatureFlags; + readonly #featureFlags: FeatureFlags; - #fetchFunction: typeof fetch; + readonly #fetchFunction: typeof fetch; - #idleTimeCheckInterval: number; + readonly #idleTimeCheckInterval: number; - #maxIdleTime: number; + readonly #maxIdleTime: number; // This property cannot be hash private yet because of tests. + // eslint-disable-next-line no-restricted-syntax private readonly maxRequestTime: number; - #encryptor: ExportableKeyEncryptor; + readonly #encryptor: ExportableKeyEncryptor; - #getMnemonic: () => Promise; + readonly #getMnemonic: () => Promise; - #getFeatureFlags: () => DynamicFeatureFlags; + readonly #getFeatureFlags: () => DynamicFeatureFlags; - #clientCryptography: CryptographicFunctions | undefined; + readonly #clientCryptography: CryptographicFunctions | undefined; - #detectSnapLocation: typeof detectSnapLocation; + readonly #detectSnapLocation: typeof detectSnapLocation; - #snapsRuntimeData: Map; + readonly #snapsRuntimeData: Map; - #rollbackSnapshots: Map; + readonly #rollbackSnapshots: Map; #timeoutForLastRequestStatus?: number; @@ -868,7 +868,7 @@ export class SnapController extends BaseController< StatusStates >; - #preinstalledSnaps: PreinstalledSnap[] | null; + readonly #preinstalledSnaps: PreinstalledSnap[] | null; constructor({ closeAllConnections, @@ -1251,7 +1251,7 @@ export class SnapController extends BaseController< ) ?? []; const validatedLocalizationFiles = getValidatedLocalizationFiles( - localizationFiles.filter(Boolean) as VirtualFile[], + localizationFiles.filter(Boolean) as VirtualFile[], ); assert( @@ -1566,7 +1566,7 @@ export class SnapController extends BaseController< this.#assertCanUsePlatform(); const snap = this.state.snaps[snapId]; - if (snap.enabled === false) { + if (!snap.enabled) { throw new Error(`Snap "${snapId}" is disabled.`); } @@ -2557,6 +2557,9 @@ export class SnapController extends BaseController< * @param versionRange - The semver range of the snap to install. * @returns The resulting snap object, or an error if something went wrong. */ + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private async processRequestedSnap( origin: string, snapId: SnapId, @@ -3067,8 +3070,6 @@ export class SnapController extends BaseController< if ( dedupedEndowments.length < - // This is a bug in TypeScript: https://github.com/microsoft/TypeScript/issues/48313 - // eslint-disable-next-line @typescript-eslint/restrict-plus-operands DEFAULT_ENDOWMENTS.length + allEndowments.length ) { logError( @@ -3260,7 +3261,7 @@ export class SnapController extends BaseController< return; } - if (semver.gt(platformVersion, getPlatformVersion())) { + if (gt(platformVersion, getPlatformVersion())) { const message = `The Snap "${snapId}" requires platform version "${platformVersion}" which is greater than the current platform version "${getPlatformVersion()}".`; if (this.#featureFlags.rejectInvalidPlatformVersion) { @@ -3281,6 +3282,7 @@ export class SnapController extends BaseController< * @param pendingApproval - Pending approval to update. * @returns The snap's approvedPermissions. */ + // eslint-disable-next-line no-restricted-syntax private async authorize( snapId: SnapId, pendingApproval: PendingApproval, @@ -3487,7 +3489,7 @@ export class SnapController extends BaseController< request, timeout, }: SnapRpcHookArgs & { timeout: number }) => { - if (this.state.snaps[snapId].enabled === false) { + if (!this.state.snaps[snapId].enabled) { throw new Error(`Snap "${snapId}" is disabled.`); } diff --git a/packages/snaps-controllers/src/snaps/Timer.ts b/packages/snaps-controllers/src/snaps/Timer.ts index 3c50853ca4..9d40d24d5e 100644 --- a/packages/snaps-controllers/src/snaps/Timer.ts +++ b/packages/snaps-controllers/src/snaps/Timer.ts @@ -3,6 +3,9 @@ import { assert } from '@metamask/utils'; export type TimerStatus = 'stopped' | 'paused' | 'running' | 'finished'; export class Timer { + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private state: | { value: 'stopped'; remaining: number } | { @@ -129,6 +132,9 @@ export class Timer { this.state = { value: 'running', callback, remaining, start, timeout }; } + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private onFinish(shouldCall: boolean) { assert(this.state.value === 'running' || this.state.value === 'paused'); diff --git a/packages/snaps-controllers/src/snaps/location/http.test.ts b/packages/snaps-controllers/src/snaps/location/http.test.ts index e17310ec68..f3e4cf35a8 100644 --- a/packages/snaps-controllers/src/snaps/location/http.test.ts +++ b/packages/snaps-controllers/src/snaps/location/http.test.ts @@ -151,7 +151,7 @@ describe('HttpLocation', () => { expect( // @ts-expect-error Accessing via prototype - // eslint-disable-next-line no-proto, @typescript-eslint/naming-convention + // eslint-disable-next-line no-proto manifestFile.result.initialPermissions.__proto__.foo, ).toBeUndefined(); }); diff --git a/packages/snaps-controllers/src/snaps/location/http.ts b/packages/snaps-controllers/src/snaps/location/http.ts index f5607b5839..0f1bd6b199 100644 --- a/packages/snaps-controllers/src/snaps/location/http.ts +++ b/packages/snaps-controllers/src/snaps/location/http.ts @@ -11,23 +11,38 @@ import { assert, assertStruct } from '@metamask/utils'; import type { SnapLocation } from './location'; -export interface HttpOptions { +export type HttpOptions = { /** * @default fetch */ fetch?: typeof fetch; fetchOptions?: RequestInit; -} +}; export class HttpLocation implements SnapLocation { + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private readonly cache = new Map(); + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private validatedManifest?: VirtualFile; + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private readonly url: URL; + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private readonly fetchFn: typeof fetch; + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private readonly fetchOptions?: RequestInit; constructor(url: URL, opts: HttpOptions = {}) { @@ -100,6 +115,9 @@ export class HttpLocation implements SnapLocation { return new URL(this.url); } + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private toCanonical(path: string): URL { assert(!path.startsWith('/'), 'Tried to parse absolute path.'); return new URL(path, this.url); diff --git a/packages/snaps-controllers/src/snaps/location/location.ts b/packages/snaps-controllers/src/snaps/location/location.ts index d9d452f43e..b0d311def3 100644 --- a/packages/snaps-controllers/src/snaps/location/location.ts +++ b/packages/snaps-controllers/src/snaps/location/location.ts @@ -8,6 +8,8 @@ import type { NpmOptions } from './npm'; import { NpmLocation } from './npm'; declare module '@metamask/snaps-utils' { + // This needs to be an interface in order to allow for declaration merging. + // eslint-disable-next-line @typescript-eslint/consistent-type-definitions interface DataMap { /** * Fully qualified, canonical path for the file in {@link https://github.com/MetaMask/SIPs/blob/main/SIPS/sip-8.md SIP-8 } URI format. @@ -16,7 +18,7 @@ declare module '@metamask/snaps-utils' { } } -export interface SnapLocation { +export type SnapLocation = { /** * All files are relative to the manifest, except the manifest itself. */ @@ -24,7 +26,7 @@ export interface SnapLocation { fetch(path: string): Promise; readonly shouldAlwaysReload?: boolean; -} +}; export type DetectSnapLocationOptions = NpmOptions & { /** diff --git a/packages/snaps-controllers/src/snaps/location/npm.test.ts b/packages/snaps-controllers/src/snaps/location/npm.test.ts index dd38d3a38b..445c447bf5 100644 --- a/packages/snaps-controllers/src/snaps/location/npm.test.ts +++ b/packages/snaps-controllers/src/snaps/location/npm.test.ts @@ -35,7 +35,6 @@ describe('NpmLocation', () => { .mockResolvedValueOnce({ ok: true, json: async () => ({ - // eslint-disable-next-line @typescript-eslint/naming-convention 'dist-tags': { latest: templateSnapVersion, }, @@ -50,9 +49,9 @@ describe('NpmLocation', () => { }), } as any) .mockResolvedValue({ - ok: true, - // eslint-disable-next-line @typescript-eslint/naming-convention + // eslint-disable-next-line no-restricted-globals headers: new Headers({ 'content-length': '5477' }), + ok: true, body: Readable.toWeb( createReadStream( path.resolve( @@ -133,7 +132,7 @@ describe('NpmLocation', () => { customFetchMock.mockResolvedValue({ ok: true, - // eslint-disable-next-line @typescript-eslint/naming-convention + // eslint-disable-next-line no-restricted-globals headers: new Headers({ 'content-length': '5477' }), body: Readable.toWeb( createReadStream( @@ -203,7 +202,7 @@ describe('NpmLocation', () => { customFetchMock.mockResolvedValue({ ok: true, - // eslint-disable-next-line @typescript-eslint/naming-convention + // eslint-disable-next-line no-restricted-globals headers: new Headers({ 'content-length': '5477' }), body: Readable.toWeb( createReadStream( @@ -283,7 +282,6 @@ describe('NpmLocation', () => { .mockResolvedValueOnce({ ok: true, json: async () => ({ - // eslint-disable-next-line @typescript-eslint/naming-convention 'dist-tags': { latest: templateSnapVersion, }, @@ -324,7 +322,6 @@ describe('NpmLocation', () => { customFetchMock.mockResolvedValueOnce({ ok: true, json: async () => ({ - // eslint-disable-next-line @typescript-eslint/naming-convention 'dist-tags': { latest: templateSnapVersion, }, diff --git a/packages/snaps-controllers/src/snaps/location/npm.ts b/packages/snaps-controllers/src/snaps/location/npm.ts index b3472e1442..3f3648b581 100644 --- a/packages/snaps-controllers/src/snaps/location/npm.ts +++ b/packages/snaps-controllers/src/snaps/location/npm.ts @@ -29,15 +29,16 @@ import type { DetectSnapLocationOptions, SnapLocation } from './location'; export const DEFAULT_NPM_REGISTRY = new URL('https://registry.npmjs.org'); -interface NpmMeta { +type NpmMeta = { registry: URL; packageName: string; requestedRange: SemVerRange; version?: string; fetch: typeof fetch; resolveVersion: (range: SemVerRange) => Promise; -} -export interface NpmOptions { +}; + +export type NpmOptions = { /** * @default DEFAULT_REQUESTED_SNAP_VERSION */ @@ -48,7 +49,7 @@ export interface NpmOptions { * @default false */ allowCustomRegistries?: boolean; -} +}; // Base class for NPM implementation, useful for extending with custom NPM fetching logic export abstract class BaseNpmLocation implements SnapLocation { @@ -217,9 +218,7 @@ export class NpmLocation extends BaseNpmLocation { * @returns A the files for the package tarball. * @throws If fetching the tarball fails. */ - async fetchNpmTarball( - tarballUrl: URL, - ): Promise>> { + async fetchNpmTarball(tarballUrl: URL): Promise> { // Perform a raw fetch because we want the Response object itself. const tarballResponse = await this.meta.fetch(tarballUrl.toString()); if (!tarballResponse.ok || !tarballResponse.body) { @@ -423,6 +422,7 @@ const NPM_TARBALL_PATH_PREFIX = /^package\//u; * @param stream - The stream to convert. * @returns The given stream as a Node.js Readable stream. */ +// eslint-disable-next-line no-restricted-globals function getNodeStream(stream: ReadableStream): Readable { if (typeof stream.getReader !== 'function') { return stream as unknown as Readable; diff --git a/packages/snaps-controllers/src/snaps/registry/json.test.ts b/packages/snaps-controllers/src/snaps/registry/json.test.ts index eed626f789..c2adc34c69 100644 --- a/packages/snaps-controllers/src/snaps/registry/json.test.ts +++ b/packages/snaps-controllers/src/snaps/registry/json.test.ts @@ -6,10 +6,10 @@ import { import type { SemVerRange, SemVerVersion } from '@metamask/utils'; import fetchMock from 'jest-fetch-mock'; -import { getRestrictedSnapsRegistryControllerMessenger } from '../../test-utils'; import type { JsonSnapsRegistryArgs } from './json'; import { JsonSnapsRegistry } from './json'; import { SnapsRegistryStatus } from './registry'; +import { getRestrictedSnapsRegistryControllerMessenger } from '../../test-utils'; // Public key for the private key: // `0x541c6759fd86c69eceb8d792d7174623db139d81a5b560aa026afcb2dd1bb21c`. @@ -36,7 +36,6 @@ const MOCK_DATABASE: SnapsRegistryDatabase = { name: 'Mock Snap', }, versions: { - // eslint-disable-next-line @typescript-eslint/naming-convention ['1.0.0' as SemVerVersion]: { checksum: DEFAULT_SNAP_SHASUM, }, @@ -200,7 +199,6 @@ describe('JsonSnapsRegistry', () => { const { messenger } = getRegistry(); const result = await messenger.call('SnapsRegistry:get', { - // eslint-disable-next-line @typescript-eslint/naming-convention 'npm:@consensys/starknet-snap': { version: '0.1.10' as SemVerVersion, checksum: DEFAULT_SNAP_SHASUM, @@ -208,7 +206,6 @@ describe('JsonSnapsRegistry', () => { }); expect(result).toStrictEqual({ - // eslint-disable-next-line @typescript-eslint/naming-convention 'npm:@consensys/starknet-snap': { status: SnapsRegistryStatus.Blocked, reason: { explanation: 'vuln' }, @@ -446,7 +443,6 @@ describe('JsonSnapsRegistry', () => { name: 'Mock Snap', }, versions: { - // eslint-disable-next-line @typescript-eslint/naming-convention ['0.0.1' as SemVerVersion]: { checksum: DEFAULT_SNAP_SHASUM, }, diff --git a/packages/snaps-controllers/src/snaps/registry/json.ts b/packages/snaps-controllers/src/snaps/registry/json.ts index ef0151d8f0..1ec2baf62c 100644 --- a/packages/snaps-controllers/src/snaps/registry/json.ts +++ b/packages/snaps-controllers/src/snaps/registry/json.ts @@ -115,15 +115,15 @@ export class JsonSnapsRegistry extends BaseController< SnapsRegistryState, SnapsRegistryMessenger > { - #url: JsonSnapsRegistryUrl; + readonly #url: JsonSnapsRegistryUrl; - #publicKey: Hex; + readonly #publicKey: Hex; - #fetchFunction: typeof fetch; + readonly #fetchFunction: typeof fetch; - #recentFetchThreshold: number; + readonly #recentFetchThreshold: number; - #refetchOnAllowlistMiss: boolean; + readonly #refetchOnAllowlistMiss: boolean; #currentUpdate: Promise | null; diff --git a/packages/snaps-controllers/src/snaps/registry/registry.ts b/packages/snaps-controllers/src/snaps/registry/registry.ts index 68e6f9f5ca..21e50dd98b 100644 --- a/packages/snaps-controllers/src/snaps/registry/registry.ts +++ b/packages/snaps-controllers/src/snaps/registry/registry.ts @@ -34,7 +34,6 @@ export type SnapsRegistry = { * * @param snapId - The ID of the snap we are trying to resolve a version for. * @param versionRange - The version range. - * @param refetch - An optional flag used to determine if we are refetching the registry. * @returns An allowlisted version within the specified version range. * @throws If an allowlisted version does not exist within the version range. */ diff --git a/packages/snaps-controllers/src/test-utils/controller.ts b/packages/snaps-controllers/src/test-utils/controller.ts index 69900fcf88..628c710267 100644 --- a/packages/snaps-controllers/src/test-utils/controller.ts +++ b/packages/snaps-controllers/src/test-utils/controller.ts @@ -35,6 +35,9 @@ import { } from '@metamask/snaps-utils/test-utils'; import type { Json } from '@metamask/utils'; +import { MOCK_CRONJOB_PERMISSION } from './cronjob'; +import { getNodeEES, getNodeEESMessenger } from './execution-environment'; +import { MockSnapsRegistry } from './registry'; import type { CronjobControllerActions, CronjobControllerEvents, @@ -66,9 +69,6 @@ import type { SnapsRegistryEvents, } from '../snaps'; import type { KeyDerivationOptions } from '../types'; -import { MOCK_CRONJOB_PERMISSION } from './cronjob'; -import { getNodeEES, getNodeEESMessenger } from './execution-environment'; -import { MockSnapsRegistry } from './registry'; const asyncNoOp = async () => Promise.resolve(); @@ -883,8 +883,7 @@ export const getRestrictedMultichainRouterMessenger = ( ) => { const controllerMessenger = messenger.getRestricted< 'MultichainRouter', - MultichainRouterAllowedActions['type'], - never + MultichainRouterAllowedActions['type'] >({ name: 'MultichainRouter', allowedEvents: [], diff --git a/packages/snaps-controllers/src/test-utils/execution-environment.ts b/packages/snaps-controllers/src/test-utils/execution-environment.ts index a3778da6c6..53fc44aa2c 100644 --- a/packages/snaps-controllers/src/test-utils/execution-environment.ts +++ b/packages/snaps-controllers/src/test-utils/execution-environment.ts @@ -97,7 +97,7 @@ export class ExecutionEnvironmentStub implements ExecutionService { getRpcRequestHandler(_snapId: string) { return async ({ request }: SnapRpcHookArgs) => { return new Promise((resolve) => { - const results = `${request.method}${request.id}`; + const results = `${String(request.method)}${String(request.id)}`; resolve(results); }); }; diff --git a/packages/snaps-controllers/src/test-utils/location.ts b/packages/snaps-controllers/src/test-utils/location.ts index 28fac69cca..a623799eed 100644 --- a/packages/snaps-controllers/src/test-utils/location.ts +++ b/packages/snaps-controllers/src/test-utils/location.ts @@ -45,15 +45,15 @@ const coerceManifest = (manifest: VirtualFile) => { }; export class LoopbackLocation implements SnapLocation { - #manifest: VirtualFile; + readonly #manifest: VirtualFile; - #files: VirtualFile[]; + readonly #files: VirtualFile[]; - #shouldAlwaysReload: boolean; + readonly #shouldAlwaysReload: boolean; - #requestedRange: SemVerRange; + readonly #requestedRange: SemVerRange; - #resolveVersion: (range: SemVerRange) => Promise; + readonly #resolveVersion: (range: SemVerRange) => Promise; constructor(opts: LoopbackOptions = {}) { this.#requestedRange = opts.versionRange ?? DEFAULT_REQUESTED_SNAP_VERSION; @@ -124,7 +124,6 @@ export class LoopbackLocation implements SnapLocation { this.#files = files; } - /* eslint-disable @typescript-eslint/require-await */ manifest = jest.fn(async () => this.#manifest); fetch = jest.fn(async (path: string) => { @@ -146,7 +145,6 @@ export class LoopbackLocation implements SnapLocation { ); return file; }); - /* eslint-enable @typescript-eslint/require-await */ get shouldAlwaysReload() { return this._shouldAlwaysReload(); diff --git a/packages/snaps-controllers/src/test-utils/service.ts b/packages/snaps-controllers/src/test-utils/service.ts index 75aab9f599..6eaf0de974 100644 --- a/packages/snaps-controllers/src/test-utils/service.ts +++ b/packages/snaps-controllers/src/test-utils/service.ts @@ -5,14 +5,13 @@ import { logError } from '@metamask/snaps-utils'; import { pipeline } from 'readable-stream'; import type { Duplex } from 'readable-stream'; +import { MOCK_BLOCK_NUMBER } from './execution-environment'; import type { ErrorMessageEvent } from '../services'; import { setupMultiplex } from '../services'; -import { MOCK_BLOCK_NUMBER } from './execution-environment'; export const createService = < Service extends new (...args: any[]) => InstanceType, >( - // eslint-disable-next-line @typescript-eslint/naming-convention ServiceClass: Service, options?: Omit< ConstructorParameters[0], diff --git a/packages/snaps-controllers/src/types/controllers.ts b/packages/snaps-controllers/src/types/controllers.ts index dd3df674ce..f160671025 100644 --- a/packages/snaps-controllers/src/types/controllers.ts +++ b/packages/snaps-controllers/src/types/controllers.ts @@ -155,9 +155,7 @@ export type SignatureControllerState = { unapprovedTypedMessagesCount: number; }; -const signatureControllerName = 'SignatureController'; - export type SignatureStateChange = ControllerStateChangeEvent< - typeof signatureControllerName, + 'SignatureController', SignatureControllerState >; diff --git a/packages/snaps-controllers/src/types/index.ts b/packages/snaps-controllers/src/types/index.ts index a84e64a5c4..8dc2bb338f 100644 --- a/packages/snaps-controllers/src/types/index.ts +++ b/packages/snaps-controllers/src/types/index.ts @@ -1,2 +1,2 @@ -export * from './controllers'; -export * from './encryptor'; +export type * from './controllers'; +export type * from './encryptor'; diff --git a/packages/snaps-controllers/src/types/vendor/zlib.d.ts b/packages/snaps-controllers/src/types/vendor/zlib.d.ts index 4204288596..a076411286 100644 --- a/packages/snaps-controllers/src/types/vendor/zlib.d.ts +++ b/packages/snaps-controllers/src/types/vendor/zlib.d.ts @@ -1,4 +1,4 @@ -// eslint-disable-next-line import/unambiguous +// eslint-disable-next-line import-x/unambiguous declare module 'browserify-zlib' { import type { Transform } from 'readable-stream'; diff --git a/packages/snaps-controllers/src/utils.test.ts b/packages/snaps-controllers/src/utils.test.ts index 2abc7b8974..26e1a802cf 100644 --- a/packages/snaps-controllers/src/utils.test.ts +++ b/packages/snaps-controllers/src/utils.test.ts @@ -5,7 +5,6 @@ import { } from '@metamask/snaps-utils/test-utils'; import { assert } from '@metamask/utils'; -import { SnapEndowments } from '../../snaps-rpc-methods/src/endowments'; import { LoopbackLocation, MOCK_ALLOWED_RPC_ORIGINS_PERMISSION, @@ -15,6 +14,7 @@ import { MOCK_SNAP_DIALOG_PERMISSION, } from './test-utils'; import { getSnapFiles, permissionsDiff, setDiff } from './utils'; +import { SnapEndowments } from '../../snaps-rpc-methods/src/endowments'; describe('setDiff', () => { it('does nothing on empty type {}-B', () => { diff --git a/packages/snaps-controllers/wdio.config.js b/packages/snaps-controllers/wdio.config.js index 3f159c6f0e..f08a811943 100644 --- a/packages/snaps-controllers/wdio.config.js +++ b/packages/snaps-controllers/wdio.config.js @@ -1,4 +1,4 @@ -/* eslint-disable import/unambiguous, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires, n/no-process-env */ +/* eslint-disable n/no-process-env */ const { NodeGlobalsPolyfillPlugin, diff --git a/packages/snaps-execution-environments/.eslintrc.js b/packages/snaps-execution-environments/.eslintrc.js deleted file mode 100644 index 57fa38648e..0000000000 --- a/packages/snaps-execution-environments/.eslintrc.js +++ /dev/null @@ -1,30 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, - - overrides: [ - { - files: ['*.test.ts'], - rules: { - 'jsdoc/check-tag-names': [ - 'error', - { - definedTags: ['jest-environment'], - }, - ], - }, - }, - { - files: ['scripts/**/*.js'], - extends: ['@metamask/eslint-config-nodejs'], - parserOptions: { - ecmaVersion: 2021, - }, - }, - ], - - ignorePatterns: ['src/openrpc.json', 'webpack.config.js', '__test__'], -}; diff --git a/packages/snaps-execution-environments/jest.environment.js b/packages/snaps-execution-environments/jest.environment.js index a9cc5ce6af..fd672802a5 100644 --- a/packages/snaps-execution-environments/jest.environment.js +++ b/packages/snaps-execution-environments/jest.environment.js @@ -1,4 +1,3 @@ -/* eslint-disable */ const { TestEnvironment } = require('jest-environment-node'); // Custom test environment copied from https://github.com/jsdom/jsdom/issues/2524 diff --git a/packages/snaps-execution-environments/lavamoat/build-system/policy.json b/packages/snaps-execution-environments/lavamoat/build-system/policy.json index f9ca500bbc..f4e78ca309 100644 --- a/packages/snaps-execution-environments/lavamoat/build-system/policy.json +++ b/packages/snaps-execution-environments/lavamoat/build-system/policy.json @@ -157,6 +157,7 @@ "path.basename": true, "path.dirname": true, "path.join": true, + "path.relative": true, "path.resolve": true }, "globals": { @@ -511,10 +512,10 @@ "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-annotate-as-pure": true, "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-optimise-call-expression": true, "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-replace-supers": true, + "@babel/preset-env>@babel/plugin-transform-classes>globals": true, "depcheck>@babel/traverse>@babel/helper-environment-visitor": true, "depcheck>@babel/traverse>@babel/helper-function-name": true, - "depcheck>@babel/traverse>@babel/helper-split-export-declaration": true, - "depcheck>@babel/traverse>globals": true + "depcheck>@babel/traverse>@babel/helper-split-export-declaration": true } }, "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-annotate-as-pure": { @@ -1010,10 +1011,10 @@ "packages": { "@lavamoat/lavapack>combine-source-map": true, "@lavamoat/lavapack>convert-source-map": true, + "@lavamoat/lavapack>espree": true, "@lavamoat/lavapack>through2": true, "@lavamoat/lavapack>umd": true, "browserify>JSONStream": true, - "eslint>espree": true, "lavamoat>json-stable-stringify": true, "lavamoat>lavamoat-core": true, "readable-stream": true @@ -1059,6 +1060,13 @@ "value": true } }, + "@lavamoat/lavapack>espree": { + "packages": { + "@lavamoat/lavapack>espree>eslint-visitor-keys": true, + "eslint>espree>acorn-jsx": true, + "terser>acorn": true + } + }, "@lavamoat/lavapack>through2": { "packages": { "readable-stream": true @@ -1118,7 +1126,7 @@ }, "packages": { "babel-plugin-tsconfig-paths-module-resolver>babel-plugin-module-resolver": true, - "eslint-plugin-import>tsconfig-paths": true + "babel-plugin-tsconfig-paths-module-resolver>tsconfig-paths": true } }, "babel-plugin-tsconfig-paths-module-resolver>babel-plugin-module-resolver": { @@ -1199,6 +1207,38 @@ "fs.accessSync": true } }, + "babel-plugin-tsconfig-paths-module-resolver>tsconfig-paths": { + "builtin": { + "fs.existsSync": true, + "fs.lstatSync": true, + "fs.readFile": true, + "fs.readFileSync": true, + "fs.stat": true, + "fs.statSync": true, + "module._resolveFilename": true, + "module.builtinModules": true, + "path.dirname": true, + "path.isAbsolute": true, + "path.join": true, + "path.resolve": true + }, + "globals": { + "console.warn": true, + "process.argv.slice": true, + "process.cwd": true, + "process.env": true + }, + "packages": { + "babel-plugin-tsconfig-paths-module-resolver>tsconfig-paths>json5": true, + "babel-plugin-tsconfig-paths-module-resolver>tsconfig-paths>strip-bom": true, + "browserify>subarg>minimist": true + } + }, + "babel-plugin-tsconfig-paths-module-resolver>tsconfig-paths>json5": { + "globals": { + "console.warn": true + } + }, "babelify": { "builtin": { "path.extname": true, @@ -1867,9 +1907,16 @@ "browserify>through2>readable-stream>safe-buffer": true } }, - "browserify>util>is-typed-array>gopd": { + "browserify>util>is-generator-function>get-proto": { "packages": { - "eslint-plugin-import>array-includes>get-intrinsic": true + "browserify>util>is-generator-function>get-proto>dunder-proto": true, + "lavamoat>json-stable-stringify>call-bind>get-intrinsic>es-object-atoms": true + } + }, + "browserify>util>is-generator-function>get-proto>dunder-proto": { + "packages": { + "browserify>util>which-typed-array>gopd": true, + "lavamoat>json-stable-stringify>call-bind>call-bind-apply-helpers": true } }, "depcheck>@babel/traverse": { @@ -1910,7 +1957,12 @@ "process.versions": true }, "packages": { - "browserify>has": true + "depcheck>is-core-module>hasown": true + } + }, + "depcheck>is-core-module>hasown": { + "packages": { + "browserify>has>function-bind": true } }, "depcheck>json5": { @@ -1963,62 +2015,6 @@ "process": true } }, - "eslint-plugin-import>array-includes>get-intrinsic": { - "globals": { - "AggregateError": true, - "FinalizationRegistry": true, - "WeakRef": true - }, - "packages": { - "browserify>has>function-bind": true, - "eslint-plugin-import>array-includes>get-intrinsic>has-proto": true, - "eslint-plugin-import>array-includes>get-intrinsic>hasown": true, - "eslint-plugin-import>object.values>es-abstract>has-symbols": true, - "lavamoat>json-stable-stringify>call-bind>es-errors": true - } - }, - "eslint-plugin-import>array-includes>get-intrinsic>hasown": { - "packages": { - "browserify>has>function-bind": true - } - }, - "eslint-plugin-import>object.values>es-abstract>has-property-descriptors": { - "packages": { - "lavamoat>json-stable-stringify>call-bind>es-define-property": true - } - }, - "eslint-plugin-import>tsconfig-paths": { - "builtin": { - "fs.existsSync": true, - "fs.lstatSync": true, - "fs.readFile": true, - "fs.readFileSync": true, - "fs.stat": true, - "fs.statSync": true, - "module._resolveFilename": true, - "module.builtinModules": true, - "path.dirname": true, - "path.isAbsolute": true, - "path.join": true, - "path.resolve": true - }, - "globals": { - "console.warn": true, - "process.argv.slice": true, - "process.cwd": true, - "process.env": true - }, - "packages": { - "browserify>subarg>minimist": true, - "eslint-plugin-import>tsconfig-paths>json5": true, - "eslint-plugin-import>tsconfig-paths>strip-bom": true - } - }, - "eslint-plugin-import>tsconfig-paths>json5": { - "globals": { - "console.warn": true - } - }, "eslint>chalk>ansi-styles": { "packages": { "eslint>chalk>ansi-styles>color-convert": true @@ -2048,13 +2044,6 @@ "eslint>debug>ms": true } }, - "eslint>espree": { - "packages": { - "eslint>eslint-visitor-keys": true, - "eslint>espree>acorn-jsx": true, - "terser>acorn": true - } - }, "eslint>espree>acorn-jsx": { "packages": { "terser>acorn": true @@ -2067,16 +2056,16 @@ "util.promisify": true } }, - "eslint>strip-ansi": { - "packages": { - "eslint>strip-ansi>ansi-regex": true - } - }, "istanbul-lib-report>supports-color>has-flag": { "globals": { "process.argv": true } }, + "jest>@jest/core>strip-ansi": { + "packages": { + "@types/jest>pretty-format>ansi-regex": true + } + }, "lavamoat-browserify": { "builtin": { "fs.existsSync": true, @@ -2153,7 +2142,41 @@ "node:path.relative": true }, "packages": { - "depcheck>resolve": true + "lavamoat>@lavamoat/aa>resolve": true + } + }, + "lavamoat>@lavamoat/aa>resolve": { + "builtin": { + "fs.readFile": true, + "fs.readFileSync": true, + "fs.realpath": true, + "fs.realpathSync": true, + "fs.stat": true, + "fs.statSync": true, + "os.homedir": true, + "path.dirname": true, + "path.join": true, + "path.parse": true, + "path.relative": true, + "path.resolve": true + }, + "globals": { + "process.env.HOME": true, + "process.env.HOMEDRIVE": true, + "process.env.HOMEPATH": true, + "process.env.LNAME": true, + "process.env.LOGNAME": true, + "process.env.USER": true, + "process.env.USERNAME": true, + "process.env.USERPROFILE": true, + "process.getuid": true, + "process.nextTick": true, + "process.platform": true, + "process.versions.pnp": true + }, + "packages": { + "depcheck>is-core-module": true, + "depcheck>resolve>path-parse": true } }, "lavamoat>json-stable-stringify": { @@ -2166,32 +2189,56 @@ }, "lavamoat>json-stable-stringify>call-bind": { "packages": { - "browserify>has>function-bind": true, - "eslint-plugin-import>array-includes>get-intrinsic": true, + "lavamoat>json-stable-stringify>call-bind>call-bind-apply-helpers": true, "lavamoat>json-stable-stringify>call-bind>es-define-property": true, - "lavamoat>json-stable-stringify>call-bind>es-errors": true, + "lavamoat>json-stable-stringify>call-bind>get-intrinsic": true, "lavamoat>json-stable-stringify>call-bind>set-function-length": true } }, - "lavamoat>json-stable-stringify>call-bind>es-define-property": { + "lavamoat>json-stable-stringify>call-bind>call-bind-apply-helpers": { + "packages": { + "browserify>has>function-bind": true, + "lavamoat>json-stable-stringify>call-bind>get-intrinsic>es-errors": true + } + }, + "lavamoat>json-stable-stringify>call-bind>get-intrinsic": { + "globals": { + "AggregateError": true, + "FinalizationRegistry": true, + "WeakRef": true + }, "packages": { - "eslint-plugin-import>array-includes>get-intrinsic": true + "browserify>has>function-bind": true, + "browserify>util>is-generator-function>get-proto": true, + "browserify>util>which-typed-array>gopd": true, + "depcheck>is-core-module>hasown": true, + "lavamoat>json-stable-stringify>call-bind>call-bind-apply-helpers": true, + "lavamoat>json-stable-stringify>call-bind>es-define-property": true, + "lavamoat>json-stable-stringify>call-bind>get-intrinsic>es-errors": true, + "lavamoat>json-stable-stringify>call-bind>get-intrinsic>es-object-atoms": true, + "lavamoat>json-stable-stringify>call-bind>get-intrinsic>has-symbols": true, + "lavamoat>json-stable-stringify>call-bind>get-intrinsic>math-intrinsics": true } }, "lavamoat>json-stable-stringify>call-bind>set-function-length": { "packages": { - "browserify>util>is-typed-array>gopd": true, - "eslint-plugin-import>array-includes>get-intrinsic": true, - "eslint-plugin-import>object.values>es-abstract>has-property-descriptors": true, - "lavamoat>json-stable-stringify>call-bind>es-errors": true, - "lavamoat>json-stable-stringify>call-bind>set-function-length>define-data-property": true + "browserify>util>which-typed-array>gopd": true, + "lavamoat>json-stable-stringify>call-bind>get-intrinsic": true, + "lavamoat>json-stable-stringify>call-bind>get-intrinsic>es-errors": true, + "lavamoat>json-stable-stringify>call-bind>set-function-length>define-data-property": true, + "lavamoat>json-stable-stringify>call-bind>set-function-length>has-property-descriptors": true } }, "lavamoat>json-stable-stringify>call-bind>set-function-length>define-data-property": { "packages": { - "browserify>util>is-typed-array>gopd": true, + "browserify>util>which-typed-array>gopd": true, "lavamoat>json-stable-stringify>call-bind>es-define-property": true, - "lavamoat>json-stable-stringify>call-bind>es-errors": true + "lavamoat>json-stable-stringify>call-bind>get-intrinsic>es-errors": true + } + }, + "lavamoat>json-stable-stringify>call-bind>set-function-length>has-property-descriptors": { + "packages": { + "lavamoat>json-stable-stringify>call-bind>es-define-property": true } }, "lavamoat>lavamoat-core": { @@ -2369,8 +2416,8 @@ "define": true }, "packages": { - "terser>@jridgewell/source-map>@jridgewell/trace-mapping>@jridgewell/resolve-uri": true, - "terser>@jridgewell/source-map>@jridgewell/trace-mapping>@jridgewell/sourcemap-codec": true + "terser>@jridgewell/source-map>@jridgewell/gen-mapping>@jridgewell/sourcemap-codec": true, + "terser>@jridgewell/source-map>@jridgewell/trace-mapping>@jridgewell/resolve-uri": true } }, "terser>@jridgewell/source-map>@jridgewell/trace-mapping>@jridgewell/resolve-uri": { @@ -2378,13 +2425,6 @@ "define": true } }, - "terser>@jridgewell/source-map>@jridgewell/trace-mapping>@jridgewell/sourcemap-codec": { - "globals": { - "Buffer": true, - "TextDecoder": true, - "define": true - } - }, "terser>acorn": { "globals": { "console": true, @@ -2397,13 +2437,8 @@ } }, "vite>postcss>picocolors": { - "builtin": { - "tty.isatty": true - }, "globals": { - "process.argv.includes": true, - "process.env": true, - "process.platform": true + "process": true } }, "yargs": { @@ -2436,7 +2471,7 @@ "process": true }, "packages": { - "eslint>strip-ansi": true, + "jest>@jest/core>strip-ansi": true, "yargs>cliui>wrap-ansi": true, "yargs>string-width": true } @@ -2444,7 +2479,7 @@ "yargs>cliui>wrap-ansi": { "packages": { "eslint>chalk>ansi-styles": true, - "eslint>strip-ansi": true, + "jest>@jest/core>strip-ansi": true, "yargs>string-width": true } }, @@ -2467,7 +2502,7 @@ }, "yargs>string-width": { "packages": { - "eslint>strip-ansi": true, + "jest>@jest/core>strip-ansi": true, "yargs>string-width>emoji-regex": true, "yargs>string-width>is-fullwidth-code-point": true } diff --git a/packages/snaps-execution-environments/package.json b/packages/snaps-execution-environments/package.json index 9f4a0a59ff..17fcc2c3fb 100644 --- a/packages/snaps-execution-environments/package.json +++ b/packages/snaps-execution-environments/package.json @@ -50,9 +50,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ./.prettierignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ./.prettierignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../scripts/since-latest-release.sh", "start": "node scripts/start.js", @@ -85,19 +85,13 @@ "@lavamoat/allow-scripts": "^3.0.4", "@lavamoat/lavapack": "^6.1.1", "@lavamoat/lavatube": "^1.0.0", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", "@ts-bridge/cli": "^0.6.1", "@types/express": "^4.17.17", "@types/jest": "^27.5.1", "@types/node": "18.14.2", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", "@wdio/browser-runner": "^8.19.0", "@wdio/cli": "^8.19.0", "@wdio/globals": "^8.19.0", @@ -110,14 +104,7 @@ "deepmerge": "^4.2.2", "depcheck": "^1.4.7", "esbuild": "^0.18.10", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "expect-webdriverio": "^4.4.1", "istanbul-lib-coverage": "^3.2.0", "istanbul-lib-report": "^3.0.0", @@ -128,8 +115,7 @@ "jest-silent-reporter": "^0.6.0", "lavamoat": "^8.0.4", "lavamoat-browserify": "^17.0.5", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "rimraf": "^4.1.2", "serve-handler": "^6.1.5", "ses": "^1.1.0", diff --git a/packages/snaps-execution-environments/scripts/build.js b/packages/snaps-execution-environments/scripts/build.js index 93a88b05ac..46df779151 100644 --- a/packages/snaps-execution-environments/scripts/build.js +++ b/packages/snaps-execution-environments/scripts/build.js @@ -1,4 +1,4 @@ -/* eslint-disable no-console, n/global-require */ +/* eslint-disable n/global-require */ const { stringToBytes } = require('@metamask/utils'); const { createResolvePath, diff --git a/packages/snaps-execution-environments/scripts/coverage.ts b/packages/snaps-execution-environments/scripts/coverage.ts index fd0e75f06d..934c0307f6 100644 --- a/packages/snaps-execution-environments/scripts/coverage.ts +++ b/packages/snaps-execution-environments/scripts/coverage.ts @@ -6,9 +6,8 @@ import { createCoverageMap } from 'istanbul-lib-coverage'; import type { ReportBase } from 'istanbul-lib-report'; import { createContext } from 'istanbul-lib-report'; import type { ReportOptions, ReportType } from 'istanbul-reports'; -import reports from 'istanbul-reports'; +import { create } from 'istanbul-reports'; import { resolve } from 'path'; -import * as process from 'process'; const COVERAGE_JSON = resolve(__dirname, '..', 'coverage.json'); const COVERAGE_PATH = resolve(__dirname, '..', 'coverage'); @@ -49,9 +48,9 @@ function generateSummaryReport( coverageMap, }); - return ( - reports.create(reportType, reportOptions) as unknown as ReportBase - ).execute(context); + return (create(reportType, reportOptions) as unknown as ReportBase).execute( + context, + ); } /** diff --git a/packages/snaps-execution-environments/scripts/start.js b/packages/snaps-execution-environments/scripts/start.js index 308ea665bd..1c6cefef28 100644 --- a/packages/snaps-execution-environments/scripts/start.js +++ b/packages/snaps-execution-environments/scripts/start.js @@ -1,4 +1,3 @@ -/* eslint-disable no-console */ const http = require('http'); const path = require('path'); const serveHandler = require('serve-handler'); diff --git a/packages/snaps-execution-environments/src/common/BaseSnapExecutor.test.browser.ts b/packages/snaps-execution-environments/src/common/BaseSnapExecutor.test.browser.ts index 1fb0576804..efd0935491 100644 --- a/packages/snaps-execution-environments/src/common/BaseSnapExecutor.test.browser.ts +++ b/packages/snaps-execution-environments/src/common/BaseSnapExecutor.test.browser.ts @@ -1,4 +1,4 @@ -/* eslint-disable @typescript-eslint/restrict-template-expressions, @typescript-eslint/no-shadow, import/no-unassigned-import */ +/* eslint-disable @typescript-eslint/restrict-template-expressions, import-x/no-unassigned-import */ import { UserInputEventType } from '@metamask/snaps-sdk'; import { HandlerType } from '@metamask/snaps-utils'; @@ -458,7 +458,6 @@ describe('BaseSnapExecutor', () => { const mockSnapsResult = { snaps: { - // eslint-disable-next-line @typescript-eslint/naming-convention 'npm:@metamask/example-snap': { version: '1.0.0', }, @@ -1729,7 +1728,6 @@ describe('BaseSnapExecutor', () => { const LIFECYCLE_HOOKS = [HandlerType.OnInstall, HandlerType.OnUpdate]; for (const handler of LIFECYCLE_HOOKS) { - // eslint-disable-next-line no-loop-func it(`supports \`${handler}\` export`, async () => { const CODE = ` module.exports.${handler} = ({ origin }) => origin; @@ -1763,7 +1761,6 @@ describe('BaseSnapExecutor', () => { }); }); - // eslint-disable-next-line no-loop-func it(`does not throw if \`${handler}\` is called, but the snap does not export it`, async () => { const CODE = ` module.exports.onRpcRequest = () => 'foo'; @@ -2264,7 +2261,7 @@ describe('BaseSnapExecutor', () => { params: [MOCK_SNAP_ID, HandlerType.OnRpcRequest, MOCK_ORIGIN, {}], }); - expect(consoleSpy.calls[0]?.args[0]).toStrictEqual( + expect(consoleSpy.calls[0]?.args[0]).toBe( 'Command stream received a non-JSON-RPC request, and was unable to respond.', ); }); diff --git a/packages/snaps-execution-environments/src/common/BaseSnapExecutor.ts b/packages/snaps-execution-environments/src/common/BaseSnapExecutor.ts index 1fe420be1e..fd12eb2dbc 100644 --- a/packages/snaps-execution-environments/src/common/BaseSnapExecutor.ts +++ b/packages/snaps-execution-environments/src/common/BaseSnapExecutor.ts @@ -36,7 +36,6 @@ import { import type { Duplex } from 'readable-stream'; import { pipeline } from 'readable-stream'; -import { log } from '../logging'; import type { CommandMethodsMapping } from './commands'; import { getCommandMethodImplementations } from './commands'; import { createEndowments } from './endowments'; @@ -56,6 +55,7 @@ import { SnapRpcRequestArgumentsStruct, TerminateRequestArgumentsStruct, } from './validation'; +import { log } from '../logging'; type EvaluationData = { stop: () => void; @@ -117,18 +117,39 @@ export type NotifyFunction = ( ) => Promise; export class BaseSnapExecutor { + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private readonly snapData: Map; + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private readonly commandStream: Duplex; + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private readonly rpcStream: Duplex; + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private readonly methods: CommandMethodsMapping; + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private snapErrorHandler?: (event: ErrorEvent) => void; + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private snapPromiseErrorHandler?: (event: PromiseRejectionEvent) => void; + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private lastTeardown = 0; protected constructor(commandStream: Duplex, rpcStream: Duplex) { @@ -163,7 +184,7 @@ export class BaseSnapExecutor { return null; } - let result = await this.executeInSnapContext(target, () => + let result = await this.executeInSnapContext(target, async () => // TODO: fix handler args type cast handler(args as any), ); @@ -189,6 +210,9 @@ export class BaseSnapExecutor { ); } + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private errorHandler(error: unknown, data: Record) { const serializedError = serializeError(error, { fallbackError: unhandledError, @@ -198,6 +222,9 @@ export class BaseSnapExecutor { const errorData = getErrorData(serializedError); + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line promise/no-promise-in-callback this.#notify({ method: 'UnhandledError', params: { @@ -214,6 +241,9 @@ export class BaseSnapExecutor { }); } + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private async onCommandRequest(message: JsonRpcRequest) { if (!isJsonRpcRequest(message)) { if ( @@ -458,6 +488,9 @@ export class BaseSnapExecutor { this.snapData.clear(); } + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private async registerSnapExports(snapId: string, snapModule: any) { const data = this.snapData.get(snapId); // Somebody deleted the snap before we could register. @@ -486,6 +519,9 @@ export class BaseSnapExecutor { * @param provider - A StreamProvider connected to MetaMask. * @returns The snap provider object. */ + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private createSnapGlobal(provider: StreamProvider): SnapsProvider { const originalRequest = provider.request.bind(provider); @@ -523,6 +559,9 @@ export class BaseSnapExecutor { * @param provider - A StreamProvider connected to MetaMask. * @returns The EIP-1193 Ethereum provider object. */ + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private createEIP1193Provider( provider: StreamProvider, ): SnapsEthereumProvider { @@ -561,6 +600,9 @@ export class BaseSnapExecutor { * * @param snapId - The id of the snap to remove. */ + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private removeSnap(snapId: string): void { this.snapData.delete(snapId); } @@ -576,6 +618,9 @@ export class BaseSnapExecutor { * @returns The executor's return value. * @template Result - The return value of the executor. */ + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private async executeInSnapContext( snapId: string, executor: () => Promise | Result, @@ -589,7 +634,7 @@ export class BaseSnapExecutor { let stop: () => void; const stopPromise = new Promise( - (_, reject) => + (_resolve, reject) => (stop = () => reject( // TODO(rekmarks): Specify / standardize error code for this case. diff --git a/packages/snaps-execution-environments/src/common/endowments/commonEndowmentFactory.ts b/packages/snaps-execution-environments/src/common/endowments/commonEndowmentFactory.ts index 7736d5080b..c69d555081 100644 --- a/packages/snaps-execution-environments/src/common/endowments/commonEndowmentFactory.ts +++ b/packages/snaps-execution-environments/src/common/endowments/commonEndowmentFactory.ts @@ -1,5 +1,3 @@ -import type { NotifyFunction } from '../BaseSnapExecutor'; -import { rootRealmGlobal } from '../globalObject'; import consoleEndowment from './console'; import crypto from './crypto'; import date from './date'; @@ -9,6 +7,8 @@ import network from './network'; import textDecoder from './textDecoder'; import textEncoder from './textEncoder'; import timeout from './timeout'; +import type { NotifyFunction } from '../BaseSnapExecutor'; +import { rootRealmGlobal } from '../globalObject'; export type EndowmentFactoryOptions = { snapId?: string; diff --git a/packages/snaps-execution-environments/src/common/endowments/console.test.ts b/packages/snaps-execution-environments/src/common/endowments/console.test.ts index d4c242d95c..61f628dcac 100644 --- a/packages/snaps-execution-environments/src/common/endowments/console.test.ts +++ b/packages/snaps-execution-environments/src/common/endowments/console.test.ts @@ -1,10 +1,10 @@ import { MOCK_SNAP_ID } from '@metamask/snaps-utils/test-utils'; -import { rootRealmGlobal } from '../globalObject'; import consoleEndowment, { consoleAttenuatedMethods, consoleMethods, } from './console'; +import { rootRealmGlobal } from '../globalObject'; describe('Console endowment', () => { it('has expected properties', () => { diff --git a/packages/snaps-execution-environments/src/common/endowments/console.ts b/packages/snaps-execution-environments/src/common/endowments/console.ts index 49f3ac294f..dd3c394bda 100644 --- a/packages/snaps-execution-environments/src/common/endowments/console.ts +++ b/packages/snaps-execution-environments/src/common/endowments/console.ts @@ -1,7 +1,7 @@ import { assert } from '@metamask/utils'; -import { rootRealmGlobal } from '../globalObject'; import type { EndowmentFactoryOptions } from './commonEndowmentFactory'; +import { rootRealmGlobal } from '../globalObject'; export const consoleAttenuatedMethods = new Set([ 'log', diff --git a/packages/snaps-execution-environments/src/common/endowments/crypto.ts b/packages/snaps-execution-environments/src/common/endowments/crypto.ts index 44cbda57f3..0bc2b13eef 100644 --- a/packages/snaps-execution-environments/src/common/endowments/crypto.ts +++ b/packages/snaps-execution-environments/src/common/endowments/crypto.ts @@ -14,7 +14,7 @@ export const createCrypto = () => { } // For now, we expose the experimental webcrypto API for Node.js execution environments // TODO: Figure out if this is enough long-term or if we should use a polyfill. - /* eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires, n/global-require */ + /* eslint-disable-next-line @typescript-eslint/no-require-imports, import-x/no-nodejs-modules, no-restricted-globals */ const crypto = require('crypto').webcrypto; return { crypto: harden(crypto), diff --git a/packages/snaps-execution-environments/src/common/endowments/date.test.ts b/packages/snaps-execution-environments/src/common/endowments/date.test.ts index ecb4778a44..4b23773853 100644 --- a/packages/snaps-execution-environments/src/common/endowments/date.test.ts +++ b/packages/snaps-execution-environments/src/common/endowments/date.test.ts @@ -1,5 +1,5 @@ -import { rootRealmGlobal } from '../globalObject'; import date from './date'; +import { rootRealmGlobal } from '../globalObject'; describe('Date endowment', () => { beforeEach(() => { diff --git a/packages/snaps-execution-environments/src/common/endowments/endowments.test.browser.ts b/packages/snaps-execution-environments/src/common/endowments/endowments.test.browser.ts index 39a7d84f08..b4104593ba 100644 --- a/packages/snaps-execution-environments/src/common/endowments/endowments.test.browser.ts +++ b/packages/snaps-execution-environments/src/common/endowments/endowments.test.browser.ts @@ -1,11 +1,9 @@ -/* eslint-disable import/no-unassigned-import, @typescript-eslint/restrict-template-expressions */ +/* eslint-disable import-x/no-unassigned-import, @typescript-eslint/restrict-template-expressions */ import 'ses'; import { MOCK_SNAP_ID } from '@metamask/snaps-utils/test-utils'; -import { walkAndSearch } from '../test-utils/endowments'; -import { testEndowmentHardening } from '../test-utils/hardening'; import buildCommonEndowments from './commonEndowmentFactory'; import consoleEndowment from './console'; import CryptoEndowment from './crypto'; @@ -14,6 +12,8 @@ import interval from './interval'; import math from './math'; import network, { ResponseWrapper } from './network'; import timeout from './timeout'; +import { walkAndSearch } from '../test-utils/endowments'; +import { testEndowmentHardening } from '../test-utils/hardening'; // @ts-expect-error - `globalThis.process` is not optional. delete globalThis.process; diff --git a/packages/snaps-execution-environments/src/common/endowments/index.ts b/packages/snaps-execution-environments/src/common/endowments/index.ts index a4030ccfb4..30ebfa209a 100644 --- a/packages/snaps-execution-environments/src/common/endowments/index.ts +++ b/packages/snaps-execution-environments/src/common/endowments/index.ts @@ -3,10 +3,10 @@ import type { SnapsEthereumProvider, SnapsProvider } from '@metamask/snaps-sdk'; import { logWarning } from '@metamask/snaps-utils'; import { hasProperty } from '@metamask/utils'; -import type { NotifyFunction } from '../BaseSnapExecutor'; -import { rootRealmGlobal } from '../globalObject'; import type { EndowmentFactoryOptions } from './commonEndowmentFactory'; import buildCommonEndowments from './commonEndowmentFactory'; +import type { NotifyFunction } from '../BaseSnapExecutor'; +import { rootRealmGlobal } from '../globalObject'; type EndowmentFactoryResult = { /** @@ -122,7 +122,7 @@ export function createEndowments({ const teardown = async () => { await Promise.all( - result.teardowns.map((teardownFunction) => teardownFunction()), + result.teardowns.map(async (teardownFunction) => teardownFunction()), ); }; return { endowments: result.allEndowments, teardown }; diff --git a/packages/snaps-execution-environments/src/common/endowments/math.test.ts b/packages/snaps-execution-environments/src/common/endowments/math.test.ts index f454d10ba2..8a06fb5761 100644 --- a/packages/snaps-execution-environments/src/common/endowments/math.test.ts +++ b/packages/snaps-execution-environments/src/common/endowments/math.test.ts @@ -1,5 +1,5 @@ -import { rootRealmGlobal } from '../globalObject'; import math from './math'; +import { rootRealmGlobal } from '../globalObject'; describe('Math endowment', () => { it('has expected properties', () => { diff --git a/packages/snaps-execution-environments/src/common/endowments/math.ts b/packages/snaps-execution-environments/src/common/endowments/math.ts index 794b251127..06f8d3970f 100644 --- a/packages/snaps-execution-environments/src/common/endowments/math.ts +++ b/packages/snaps-execution-environments/src/common/endowments/math.ts @@ -1,5 +1,5 @@ -import { rootRealmGlobal } from '../globalObject'; import { createCrypto } from './crypto'; +import { rootRealmGlobal } from '../globalObject'; /** * Create a {@link Math} object, with the same properties as the global diff --git a/packages/snaps-execution-environments/src/common/endowments/network.test.ts b/packages/snaps-execution-environments/src/common/endowments/network.test.ts index 2dca0b215a..4085356c63 100644 --- a/packages/snaps-execution-environments/src/common/endowments/network.test.ts +++ b/packages/snaps-execution-environments/src/common/endowments/network.test.ts @@ -86,7 +86,6 @@ describe('Network endowments', () => { .fn() .mockImplementation((reason) => Error(reason)); - // eslint-disable-next-line jest/valid-expect-in-promise fetch('foo.com') .then(() => { throw new ErrorProxy('SHOULD_NOT_BE_REACHED'); @@ -109,7 +108,6 @@ describe('Network endowments', () => { const { fetch, teardownFunction } = network.factory(factoryOptions); - // eslint-disable-next-line jest/valid-expect-in-promise fetch('foo.com').catch(() => { console.log('Jailbreak'); }); diff --git a/packages/snaps-execution-environments/src/common/endowments/network.ts b/packages/snaps-execution-environments/src/common/endowments/network.ts index c39fc51272..b631bd18f8 100644 --- a/packages/snaps-execution-environments/src/common/endowments/network.ts +++ b/packages/snaps-execution-environments/src/common/endowments/network.ts @@ -1,7 +1,7 @@ import { assert } from '@metamask/utils'; -import { withTeardown } from '../utils'; import type { EndowmentFactoryOptions } from './commonEndowmentFactory'; +import { withTeardown } from '../utils'; /** * This class wraps a Response object. @@ -10,11 +10,11 @@ import type { EndowmentFactoryOptions } from './commonEndowmentFactory'; export class ResponseWrapper implements Response { readonly #teardownRef: { lastTeardown: number }; - #ogResponse: Response; + readonly #ogResponse: Response; - #onStart: () => Promise; + readonly #onStart: () => Promise; - #onFinish: () => Promise; + readonly #onFinish: () => Promise; constructor( ogResponse: Response, diff --git a/packages/snaps-execution-environments/src/common/globalObject.ts b/packages/snaps-execution-environments/src/common/globalObject.ts index 2252a61cb1..b1e429eee6 100644 --- a/packages/snaps-execution-environments/src/common/globalObject.ts +++ b/packages/snaps-execution-environments/src/common/globalObject.ts @@ -2,7 +2,6 @@ enum GlobalObjectNames { // The globalThis entry is incorrectly identified as shadowing the global // globalThis. /* eslint-disable @typescript-eslint/naming-convention */ - // eslint-disable-next-line @typescript-eslint/no-shadow globalThis = 'globalThis', global = 'global', self = 'self', @@ -24,7 +23,9 @@ if (typeof globalThis !== 'undefined') { } else if (typeof window !== 'undefined') { _rootRealmGlobal = window; _rootRealmGlobalName = GlobalObjectNames.window; + // eslint-disable-next-line no-restricted-globals } else if (typeof global !== 'undefined') { + // eslint-disable-next-line no-restricted-globals _rootRealmGlobal = global; _rootRealmGlobalName = GlobalObjectNames.global; } else { diff --git a/packages/snaps-execution-environments/src/common/lockdown/lockdown-events.test.browser.ts b/packages/snaps-execution-environments/src/common/lockdown/lockdown-events.test.browser.ts index b94bcbfe5c..9b67be5feb 100644 --- a/packages/snaps-execution-environments/src/common/lockdown/lockdown-events.test.browser.ts +++ b/packages/snaps-execution-environments/src/common/lockdown/lockdown-events.test.browser.ts @@ -1,4 +1,3 @@ -// eslint-disable-next-line import/unambiguous import { expect } from '@wdio/globals'; import { executeLockdownEvents } from './lockdown-events'; @@ -11,7 +10,6 @@ describe('lockdown events security', () => { const promise = new Promise((resolve) => { eventTarget.addEventListener('just-test-event', (eventObject) => { - // eslint-disable-next-line @typescript-eslint/unbound-method resolve(eventObject.composedPath); }); }); diff --git a/packages/snaps-execution-environments/src/common/test-utils/endowments.ts b/packages/snaps-execution-environments/src/common/test-utils/endowments.ts index ba26f2433b..e886fcf04f 100644 --- a/packages/snaps-execution-environments/src/common/test-utils/endowments.ts +++ b/packages/snaps-execution-environments/src/common/test-utils/endowments.ts @@ -7,8 +7,8 @@ import { StreamProvider } from '@metamask/providers/stream-provider'; import type { SnapsEthereumProvider } from '@metamask/snaps-sdk'; import { SNAP_STREAM_NAMES } from '@metamask/snaps-utils'; -import { assertEthereumOutboundRequest, withTeardown } from '../utils'; import { SILENT_LOGGER } from './logger'; +import { assertEthereumOutboundRequest, withTeardown } from '../utils'; /** * Object walker test utility function. diff --git a/packages/snaps-execution-environments/src/common/test-utils/executor.ts b/packages/snaps-execution-environments/src/common/test-utils/executor.ts index 26ffb011af..d6cd84763d 100644 --- a/packages/snaps-execution-environments/src/common/test-utils/executor.ts +++ b/packages/snaps-execution-environments/src/common/test-utils/executor.ts @@ -22,12 +22,12 @@ export class TwoWayPassThrough { readonly right: Duplex; - #leftToRight: TwoWayPassThroughBuffer = { + readonly #leftToRight: TwoWayPassThroughBuffer = { buffer: [], canPush: false, }; - #rightToLeft: TwoWayPassThroughBuffer = { + readonly #rightToLeft: TwoWayPassThroughBuffer = { buffer: [], canPush: false, }; diff --git a/packages/snaps-execution-environments/src/common/validation.ts b/packages/snaps-execution-environments/src/common/validation.ts index fa5697bbf6..1e772c558f 100644 --- a/packages/snaps-execution-environments/src/common/validation.ts +++ b/packages/snaps-execution-environments/src/common/validation.ts @@ -343,6 +343,8 @@ export function assertIsOnProtocolRequestArguments( ); } +// TODO: Either fix this lint violation or explain why it's necessary to ignore. +// eslint-disable-next-line @typescript-eslint/no-unused-vars const OkResponseStruct = object({ id: JsonRpcIdStruct, jsonrpc: JsonRpcVersionStruct, diff --git a/packages/snaps-execution-environments/src/iframe/IFrameSnapExecutor.test.browser.ts b/packages/snaps-execution-environments/src/iframe/IFrameSnapExecutor.test.browser.ts index 12ec2b7c9c..56c30e4270 100644 --- a/packages/snaps-execution-environments/src/iframe/IFrameSnapExecutor.test.browser.ts +++ b/packages/snaps-execution-environments/src/iframe/IFrameSnapExecutor.test.browser.ts @@ -1,4 +1,4 @@ -// eslint-disable-next-line import/no-unassigned-import +// eslint-disable-next-line import-x/no-unassigned-import import 'ses'; import { HandlerType } from '@metamask/snaps-utils'; import { diff --git a/packages/snaps-execution-environments/src/iframe/index.ts b/packages/snaps-execution-environments/src/iframe/index.ts index 83416afbfe..5193f76bd1 100644 --- a/packages/snaps-execution-environments/src/iframe/index.ts +++ b/packages/snaps-execution-environments/src/iframe/index.ts @@ -1,6 +1,6 @@ +import { IFrameSnapExecutor } from './IFrameSnapExecutor'; import { executeLockdownEvents } from '../common/lockdown/lockdown-events'; import { executeLockdownMore } from '../common/lockdown/lockdown-more'; -import { IFrameSnapExecutor } from './IFrameSnapExecutor'; // Lockdown is already applied in LavaMoat executeLockdownMore(); diff --git a/packages/snaps-execution-environments/src/node-process/ChildProcessSnapExecutor.test.ts b/packages/snaps-execution-environments/src/node-process/ChildProcessSnapExecutor.test.ts index ea4ab0dd7d..4d71c204d4 100644 --- a/packages/snaps-execution-environments/src/node-process/ChildProcessSnapExecutor.test.ts +++ b/packages/snaps-execution-environments/src/node-process/ChildProcessSnapExecutor.test.ts @@ -1,4 +1,4 @@ -// eslint-disable-next-line import/no-unassigned-import +// eslint-disable-next-line import-x/no-unassigned-import import 'ses'; import { HandlerType, SNAP_STREAM_NAMES } from '@metamask/snaps-utils'; import { MOCK_ORIGIN, MOCK_SNAP_ID } from '@metamask/snaps-utils/test-utils'; diff --git a/packages/snaps-execution-environments/src/node-process/index.ts b/packages/snaps-execution-environments/src/node-process/index.ts index 171c6e5bef..1ec3edf37d 100644 --- a/packages/snaps-execution-environments/src/node-process/index.ts +++ b/packages/snaps-execution-environments/src/node-process/index.ts @@ -1,5 +1,5 @@ -import { executeLockdownMore } from '../common/lockdown/lockdown-more'; import { ChildProcessSnapExecutor } from './ChildProcessSnapExecutor'; +import { executeLockdownMore } from '../common/lockdown/lockdown-more'; // Lockdown is already applied in LavaMoat executeLockdownMore(); diff --git a/packages/snaps-execution-environments/src/node-thread/ThreadSnapExecutor.test.ts b/packages/snaps-execution-environments/src/node-thread/ThreadSnapExecutor.test.ts index e6e585ac38..c0908d7ba2 100644 --- a/packages/snaps-execution-environments/src/node-thread/ThreadSnapExecutor.test.ts +++ b/packages/snaps-execution-environments/src/node-thread/ThreadSnapExecutor.test.ts @@ -1,4 +1,4 @@ -// eslint-disable-next-line import/no-unassigned-import +// eslint-disable-next-line import-x/no-unassigned-import import 'ses'; import { SNAP_STREAM_NAMES, HandlerType } from '@metamask/snaps-utils'; import type { Json, JsonRpcSuccess } from '@metamask/utils'; diff --git a/packages/snaps-execution-environments/src/node-thread/index.ts b/packages/snaps-execution-environments/src/node-thread/index.ts index 377292dfb1..b1ef1da26c 100644 --- a/packages/snaps-execution-environments/src/node-thread/index.ts +++ b/packages/snaps-execution-environments/src/node-thread/index.ts @@ -1,5 +1,5 @@ -import { executeLockdownMore } from '../common/lockdown/lockdown-more'; import { ThreadSnapExecutor } from './ThreadSnapExecutor'; +import { executeLockdownMore } from '../common/lockdown/lockdown-more'; // Lockdown is already applied in LavaMoat executeLockdownMore(); diff --git a/packages/snaps-execution-environments/src/proxy/ProxySnapExecutor.ts b/packages/snaps-execution-environments/src/proxy/ProxySnapExecutor.ts index 5f77370912..ca95d25147 100644 --- a/packages/snaps-execution-environments/src/proxy/ProxySnapExecutor.ts +++ b/packages/snaps-execution-environments/src/proxy/ProxySnapExecutor.ts @@ -1,11 +1,11 @@ import type { BasePostMessageStream } from '@metamask/post-message-stream'; import { WindowPostMessageStream } from '@metamask/post-message-stream'; -// eslint-disable-next-line import/no-extraneous-dependencies -import packageJson from '@metamask/snaps-execution-environments/package.json'; import { createWindow, logError } from '@metamask/snaps-utils'; import type { JsonRpcRequest } from '@metamask/utils'; import { assert } from '@metamask/utils'; +import packageJson from '@metamask/snaps-execution-environments/package.json'; + type ExecutorJob = { id: string; window: Window; diff --git a/packages/snaps-execution-environments/src/types/vendor/providers.d.ts b/packages/snaps-execution-environments/src/types/vendor/providers.d.ts index 6321c07f2a..4789aa7ce5 100644 --- a/packages/snaps-execution-environments/src/types/vendor/providers.d.ts +++ b/packages/snaps-execution-environments/src/types/vendor/providers.d.ts @@ -1,6 +1,6 @@ // TODO: Remove this file once we switch to `Node16` module resolution in // `tsconfig.json`. -// eslint-disable-next-line import/unambiguous +// eslint-disable-next-line import-x/unambiguous declare module '@metamask/providers/stream-provider' { import { StreamProvider } from '@metamask/providers'; diff --git a/packages/snaps-execution-environments/src/types/vendor/readable-stream.d.ts b/packages/snaps-execution-environments/src/types/vendor/readable-stream.d.ts index 21bd861889..591d6d1e4c 100644 --- a/packages/snaps-execution-environments/src/types/vendor/readable-stream.d.ts +++ b/packages/snaps-execution-environments/src/types/vendor/readable-stream.d.ts @@ -1,4 +1,4 @@ -// eslint-disable-next-line import/unambiguous +/* eslint-disable import-x/unambiguous, import-x/no-nodejs-modules */ declare module 'readable-stream' { export type { DuplexOptions, diff --git a/packages/snaps-execution-environments/src/webview/WebViewExecutorStream.test.ts b/packages/snaps-execution-environments/src/webview/WebViewExecutorStream.test.ts index 604b409912..378303d5f6 100644 --- a/packages/snaps-execution-environments/src/webview/WebViewExecutorStream.test.ts +++ b/packages/snaps-execution-environments/src/webview/WebViewExecutorStream.test.ts @@ -18,6 +18,7 @@ describe('WebViewExecutorStream', () => { removeEventListener: jest.fn(), }; + // eslint-disable-next-line no-restricted-globals global.window = mockWindow as any; }); diff --git a/packages/snaps-execution-environments/src/webview/WebViewExecutorStream.ts b/packages/snaps-execution-environments/src/webview/WebViewExecutorStream.ts index fd156b3f6a..c3bb7f20da 100644 --- a/packages/snaps-execution-environments/src/webview/WebViewExecutorStream.ts +++ b/packages/snaps-execution-environments/src/webview/WebViewExecutorStream.ts @@ -10,11 +10,11 @@ type WebViewExecutorStreamArgs = { }; export class WebViewExecutorStream extends BasePostMessageStream { - #name; + readonly #name; - #target; + readonly #target; - #targetWindow; + readonly #targetWindow; /** * A special post-message-stream to be used by the WebView executor. @@ -61,6 +61,9 @@ export class WebViewExecutorStream extends BasePostMessageStream { ); } + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax private _onMessage(event: PostMessageEvent): void { if (!Array.isArray(event.data)) { return; diff --git a/packages/snaps-execution-environments/src/webview/index.ts b/packages/snaps-execution-environments/src/webview/index.ts index 8583a9910e..f6eb0c1818 100644 --- a/packages/snaps-execution-environments/src/webview/index.ts +++ b/packages/snaps-execution-environments/src/webview/index.ts @@ -1,7 +1,7 @@ +import { WebViewExecutorStream } from './WebViewExecutorStream'; import { executeLockdownEvents } from '../common/lockdown/lockdown-events'; import { executeLockdownMore } from '../common/lockdown/lockdown-more'; import { IFrameSnapExecutor } from '../iframe/IFrameSnapExecutor'; -import { WebViewExecutorStream } from './WebViewExecutorStream'; // Lockdown is already applied in LavaMoat executeLockdownMore(); diff --git a/packages/snaps-execution-environments/src/webworker/executor/WebWorkerSnapExecutor.test.browser.ts b/packages/snaps-execution-environments/src/webworker/executor/WebWorkerSnapExecutor.test.browser.ts index 9a240a4a80..114bbc627f 100644 --- a/packages/snaps-execution-environments/src/webworker/executor/WebWorkerSnapExecutor.test.browser.ts +++ b/packages/snaps-execution-environments/src/webworker/executor/WebWorkerSnapExecutor.test.browser.ts @@ -1,4 +1,4 @@ -// eslint-disable-next-line import/no-unassigned-import +// eslint-disable-next-line import-x/no-unassigned-import import 'ses'; import { HandlerType } from '@metamask/snaps-utils'; import type { SpyFunction } from '@metamask/snaps-utils/test-utils'; @@ -128,6 +128,7 @@ describe('WebWorkerSnapExecutor', () => { }); // TODO: Re-enable this test after investigating error handling further. + // eslint-disable-next-line jest/no-disabled-tests it.skip('handles closing the stream', async () => { const mockStream = new MockWindowPostMessageStream(); @@ -141,12 +142,13 @@ describe('WebWorkerSnapExecutor', () => { await new Promise((resolve) => setTimeout(resolve, 1)); - expect(closeSpy.calls.length).toBe(1); + expect(closeSpy.calls).toHaveLength(1); closeSpy.reset(); }); // TODO: Re-enable this test after investigating error handling further. + // eslint-disable-next-line jest/no-disabled-tests it.skip('handles stream errors', async () => { const mockStream = new MockWindowPostMessageStream(); @@ -158,8 +160,8 @@ describe('WebWorkerSnapExecutor', () => { WebWorkerSnapExecutor.initialize(mockStream); mockStream.emit('error', new Error('test error')); - expect(closeSpy.calls.length).toBe(1); - expect(consoleSpy.calls.length).toBe(3); + expect(closeSpy.calls).toHaveLength(1); + expect(consoleSpy.calls).toHaveLength(3); expect(consoleSpy.calls[0].args[0]).toBe( 'Parent stream failure, closing worker.', ); diff --git a/packages/snaps-execution-environments/src/webworker/executor/index.ts b/packages/snaps-execution-environments/src/webworker/executor/index.ts index fed53265c6..ec8f55ee81 100644 --- a/packages/snaps-execution-environments/src/webworker/executor/index.ts +++ b/packages/snaps-execution-environments/src/webworker/executor/index.ts @@ -1,6 +1,6 @@ +import { WebWorkerSnapExecutor } from './WebWorkerSnapExecutor'; import { executeLockdownEvents } from '../../common/lockdown/lockdown-events'; import { executeLockdownMore } from '../../common/lockdown/lockdown-more'; -import { WebWorkerSnapExecutor } from './WebWorkerSnapExecutor'; // Lockdown is already applied in LavaMoat executeLockdownMore(); diff --git a/packages/snaps-execution-environments/src/webworker/pool/WebWorkerPool.test.browser.ts b/packages/snaps-execution-environments/src/webworker/pool/WebWorkerPool.test.browser.ts index b383b8add5..90baf40125 100644 --- a/packages/snaps-execution-environments/src/webworker/pool/WebWorkerPool.test.browser.ts +++ b/packages/snaps-execution-environments/src/webworker/pool/WebWorkerPool.test.browser.ts @@ -109,14 +109,14 @@ describe('WebWorkerPool', () => { await terminateJob(mockStream); expect(executor.jobs.get(MOCK_JOB_ID)).toBeUndefined(); - expect(terminateSpy.calls.length).toBe(1); + expect(terminateSpy.calls).toHaveLength(1); }); it('creates a worker pool', async () => { const mockStream = new MockPostMessageStream(); const executor = WebWorkerPool.initialize(mockStream, WORKER_URL); - expect(executor.pool.length).toBe(0); + expect(executor.pool).toHaveLength(0); // Send ping to ensure that the worker is created. writeMessage(mockStream, { @@ -131,7 +131,7 @@ describe('WebWorkerPool', () => { // Wait for the response, so that we know the worker is created. await getResponse(mockStream); - expect(executor.pool.length).toBe(3); + expect(executor.pool).toHaveLength(3); const nextWorker = executor.pool[0]; writeMessage( @@ -150,7 +150,7 @@ describe('WebWorkerPool', () => { // Wait for the response, so that we know the worker is created. await getResponse(mockStream); - expect(executor.pool.length).toBe(3); + expect(executor.pool).toHaveLength(3); expect(executor.pool[0]).not.toBe(nextWorker); }); @@ -183,6 +183,6 @@ describe('WebWorkerPool', () => { }, }); - expect(fetchSpy.calls.length).toBe(1); + expect(fetchSpy.calls).toHaveLength(1); }); }); diff --git a/packages/snaps-execution-environments/src/webworker/pool/index.ts b/packages/snaps-execution-environments/src/webworker/pool/index.ts index 78e21d384e..7d85d1c642 100644 --- a/packages/snaps-execution-environments/src/webworker/pool/index.ts +++ b/packages/snaps-execution-environments/src/webworker/pool/index.ts @@ -1,6 +1,6 @@ +import { WebWorkerPool } from './WebWorkerPool'; import { executeLockdownEvents } from '../../common/lockdown/lockdown-events'; import { executeLockdownMore } from '../../common/lockdown/lockdown-more'; -import { WebWorkerPool } from './WebWorkerPool'; // Lockdown is already applied in LavaMoat executeLockdownMore(); diff --git a/packages/snaps-execution-environments/wdio.config.js b/packages/snaps-execution-environments/wdio.config.js index 00ad65ccf7..b4146ca435 100644 --- a/packages/snaps-execution-environments/wdio.config.js +++ b/packages/snaps-execution-environments/wdio.config.js @@ -1,4 +1,4 @@ -/* eslint-disable import/unambiguous, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires, n/no-process-env */ +/* eslint-disable n/no-process-env */ const { NodeGlobalsPolyfillPlugin, diff --git a/packages/snaps-jest/.eslintrc.js b/packages/snaps-jest/.eslintrc.js deleted file mode 100644 index d515a7cde2..0000000000 --- a/packages/snaps-jest/.eslintrc.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, - - ignorePatterns: ['public/'], -}; diff --git a/packages/snaps-jest/jest-preset.js b/packages/snaps-jest/jest-preset.js index d20d8bb708..0fc1d4a860 100644 --- a/packages/snaps-jest/jest-preset.js +++ b/packages/snaps-jest/jest-preset.js @@ -1,5 +1,3 @@ -/* eslint-disable jsdoc/valid-types */ - const { resolve } = require('path'); /** diff --git a/packages/snaps-jest/package.json b/packages/snaps-jest/package.json index 83bd7765f0..0a25c0fdef 100644 --- a/packages/snaps-jest/package.json +++ b/packages/snaps-jest/package.json @@ -45,9 +45,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../scripts/since-latest-release.sh", "test": "jest --reporters=jest-silent-reporter", @@ -73,34 +73,20 @@ "devDependencies": { "@jest/types": "^29.6.3", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/snaps-utils": "workspace:^", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", "@ts-bridge/cli": "^0.6.1", "@types/jest": "^27.5.1", "@types/semver": "^7.5.0", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-it-up": "^2.0.0", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "typescript": "~5.3.3" }, "engines": { diff --git a/packages/snaps-jest/src/environment.ts b/packages/snaps-jest/src/environment.ts index 4a9bcda8ec..130a433c16 100644 --- a/packages/snaps-jest/src/environment.ts +++ b/packages/snaps-jest/src/environment.ts @@ -19,16 +19,14 @@ import { rootLogger, startServer } from './internals'; import type { SnapsEnvironmentOptions } from './options'; import { getOptions } from './options'; -/* eslint-disable */ declare global { const snapsEnvironment: SnapsEnvironment; } -/* eslint-enable */ const log = createModuleLogger(rootLogger, 'environment'); export class SnapsEnvironment extends NodeEnvironment { - #options: SnapsEnvironmentOptions; + readonly #options: SnapsEnvironmentOptions; #server: Server | undefined; @@ -85,9 +83,9 @@ export class SnapsEnvironment extends NodeEnvironment { * @returns The installed Snap. */ async installSnap< - Service extends new (...args: any[]) => InstanceType< - typeof AbstractExecutionService - >, + Service extends new ( + ...args: any[] + ) => InstanceType, >( snapId: string = this.snapId, options: Partial> = {}, diff --git a/packages/snaps-jest/src/global.ts b/packages/snaps-jest/src/global.ts index 979a164471..d3075187d7 100644 --- a/packages/snaps-jest/src/global.ts +++ b/packages/snaps-jest/src/global.ts @@ -1,4 +1,4 @@ -/* eslint-disable @typescript-eslint/consistent-type-definitions, @typescript-eslint/naming-convention, @typescript-eslint/no-empty-interface, @typescript-eslint/no-unused-vars, @typescript-eslint/no-namespace */ +/* eslint-disable @typescript-eslint/consistent-type-definitions, @typescript-eslint/naming-convention, @typescript-eslint/no-empty-object-type, @typescript-eslint/no-unused-vars, @typescript-eslint/no-namespace */ import type { EnumToUnion, @@ -47,6 +47,8 @@ interface SnapsMatchers { * @param title - The title of an expanded notification. * @param content - The content of an expanded notification. * @param footerLink - The footer link of an expanded notification (if it exists). + * @param footerLink.text - The text of the footer link. + * @param footerLink.href - The href of the footer link. * @throws If the snap did not send a notification with the expected message. * @example * const response = await request({ method: 'foo' }); diff --git a/packages/snaps-jest/src/helpers.test.tsx b/packages/snaps-jest/src/helpers.test.tsx index 44a514cddf..e68b2065b8 100644 --- a/packages/snaps-jest/src/helpers.test.tsx +++ b/packages/snaps-jest/src/helpers.test.tsx @@ -939,7 +939,6 @@ describe('installSnap', () => { `, manifest: getSnapManifest({ initialPermissions: { - // eslint-disable-next-line @typescript-eslint/naming-convention 'endowment:ethereum-provider': {}, }, }), diff --git a/packages/snaps-jest/src/helpers.ts b/packages/snaps-jest/src/helpers.ts index d6f51cab11..ae270e514b 100644 --- a/packages/snaps-jest/src/helpers.ts +++ b/packages/snaps-jest/src/helpers.ts @@ -16,9 +16,9 @@ const log = createModuleLogger(rootLogger, 'helpers'); * @returns The options. */ function getOptions< - Service extends new (...args: any[]) => InstanceType< - typeof AbstractExecutionService - >, + Service extends new ( + ...args: any[] + ) => InstanceType, >( snapId: SnapId | Partial> | undefined, options: Partial>, @@ -83,9 +83,9 @@ export async function installSnap(): Promise; * @throws If the built-in server is not running, and no snap ID is provided. */ export async function installSnap< - Service extends new (...args: any[]) => InstanceType< - typeof AbstractExecutionService - >, + Service extends new ( + ...args: any[] + ) => InstanceType, >(options: Partial>): Promise; /** @@ -121,9 +121,9 @@ export async function installSnap< * @throws If the built-in server is not running, and no snap ID is provided. */ export async function installSnap< - Service extends new (...args: any[]) => InstanceType< - typeof AbstractExecutionService - >, + Service extends new ( + ...args: any[] + ) => InstanceType, >( snapId: SnapId, options?: Partial>, @@ -162,14 +162,18 @@ export async function installSnap< * @throws If the built-in server is not running, and no snap ID is provided. */ export async function installSnap< - Service extends new (...args: any[]) => InstanceType< - typeof AbstractExecutionService - >, + Service extends new ( + ...args: any[] + ) => InstanceType, >( snapId?: SnapId | Partial>, options: Partial> = {}, ): Promise { const resolvedOptions = getOptions(snapId, options); + + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + /* eslint-disable @typescript-eslint/unbound-method */ const { request, onTransaction, @@ -187,6 +191,7 @@ export async function installSnap< mockJsonRpc, close, } = await getEnvironment().installSnap(...resolvedOptions); + /* eslint-enable @typescript-eslint/unbound-method */ return { request, diff --git a/packages/snaps-jest/src/index.ts b/packages/snaps-jest/src/index.ts index d3f9d13f6e..00d8ab36a7 100644 --- a/packages/snaps-jest/src/index.ts +++ b/packages/snaps-jest/src/index.ts @@ -1,4 +1,4 @@ -// eslint-disable-next-line import/no-unassigned-import +// eslint-disable-next-line import-x/no-unassigned-import import './global'; export { default, default as TestEnvironment } from './environment'; diff --git a/packages/snaps-jest/src/internals/server.test.ts b/packages/snaps-jest/src/internals/server.test.ts index a4ab5156fc..d366fb26ac 100644 --- a/packages/snaps-jest/src/internals/server.test.ts +++ b/packages/snaps-jest/src/internals/server.test.ts @@ -30,7 +30,7 @@ describe('startServer', () => { "registry": "https://registry.npmjs.org", }, }, - "shasum": "uaLwMO39qzKbshqPM6W2Ju7gkO/czuwgNKpjzXRXJj0=", + "shasum": "zp08CpwhlXWqh4cq0kjRownzH8Ujte70VVoiqikNKQs=", }, "version": "1.0.0", } diff --git a/packages/snaps-jest/src/internals/server.ts b/packages/snaps-jest/src/internals/server.ts index 5ce77d2104..21f204acbb 100644 --- a/packages/snaps-jest/src/internals/server.ts +++ b/packages/snaps-jest/src/internals/server.ts @@ -5,14 +5,14 @@ import { isFile, } from '@metamask/snaps-utils/node'; import { createModuleLogger } from '@metamask/utils'; -import express from 'express'; +import express, { static as expressStatic } from 'express'; import { promises as fs } from 'fs'; import type { Server } from 'http'; import { createServer } from 'http'; import { resolve as pathResolve } from 'path'; -import type { SnapsEnvironmentOptions } from '../options'; import { rootLogger } from './logger'; +import type { SnapsEnvironmentOptions } from '../options'; export type ServerOptions = Required< // We need a double `Required` for the type to be inferred correctly. @@ -77,7 +77,7 @@ export async function startServer(options: ServerOptions) { next(); }); - app.use(express.static(pathResolve(process.cwd(), options.root))); + app.use(expressStatic(pathResolve(process.cwd(), options.root))); const server = createServer(app); return await new Promise((resolve, reject) => { diff --git a/packages/snaps-jest/src/matchers.ts b/packages/snaps-jest/src/matchers.ts index 659ab48b14..4507d76cb1 100644 --- a/packages/snaps-jest/src/matchers.ts +++ b/packages/snaps-jest/src/matchers.ts @@ -1,5 +1,3 @@ -/* eslint-disable no-invalid-this */ - // Note: Because this file imports from `@jest/globals`, it can only be used in // a Jest environment. This is why it's not exported from the index file. @@ -335,6 +333,8 @@ const toRenderLegacy: MatcherFunction<[expected: Component]> = function ( }; export const toRender: MatcherFunction<[expected: ComponentOrElement]> = + // This should not return a promise. + // eslint-disable-next-line @typescript-eslint/promise-function-async function (actual, expected) { assertHasInterface(actual, 'toRender'); diff --git a/packages/snaps-jest/src/setup.ts b/packages/snaps-jest/src/setup.ts index 950a3a43b0..3ae92a8578 100644 --- a/packages/snaps-jest/src/setup.ts +++ b/packages/snaps-jest/src/setup.ts @@ -1,5 +1,5 @@ // Setup file for Jest. This file is used in the Jest preset configuration, and // not intended to be exported or used directly. -// eslint-disable-next-line import/no-unassigned-import +// eslint-disable-next-line import-x/no-unassigned-import import './matchers'; diff --git a/packages/snaps-jest/src/test-utils/controller.ts b/packages/snaps-jest/src/test-utils/controller.ts index 7dc0f08e4e..e2e1e7fec7 100644 --- a/packages/snaps-jest/src/test-utils/controller.ts +++ b/packages/snaps-jest/src/test-utils/controller.ts @@ -46,8 +46,7 @@ export const getRestrictedSnapInterfaceControllerMessenger = ( ) => { const snapInterfaceControllerMessenger = messenger.getRestricted< 'SnapInterfaceController', - SnapInterfaceControllerAllowedActions['type'], - never + SnapInterfaceControllerAllowedActions['type'] >({ name: 'SnapInterfaceController', allowedActions: [ diff --git a/packages/snaps-jest/src/test-utils/response.ts b/packages/snaps-jest/src/test-utils/response.ts index d525f9d48a..b316de1f40 100644 --- a/packages/snaps-jest/src/test-utils/response.ts +++ b/packages/snaps-jest/src/test-utils/response.ts @@ -48,5 +48,6 @@ export function getMockInterfaceResponse( selectFromRadioGroup: jest.fn(), selectFromSelector: jest.fn(), uploadFile: jest.fn(), + waitForUpdate: jest.fn(), }; } diff --git a/packages/snaps-jest/src/test-utils/snap/snap.js b/packages/snaps-jest/src/test-utils/snap/snap.js index a033fc24c7..8a5e7848e1 100644 --- a/packages/snaps-jest/src/test-utils/snap/snap.js +++ b/packages/snaps-jest/src/test-utils/snap/snap.js @@ -1,4 +1,3 @@ -// eslint-disable-next-line no-console console.log('Hello, world!'); module.exports.onRpcRequest = () => null; diff --git a/packages/snaps-jest/src/test-utils/snap/snap.manifest.json b/packages/snaps-jest/src/test-utils/snap/snap.manifest.json index e2dc9f902b..a239147c61 100644 --- a/packages/snaps-jest/src/test-utils/snap/snap.manifest.json +++ b/packages/snaps-jest/src/test-utils/snap/snap.manifest.json @@ -3,7 +3,7 @@ "description": "baz", "version": "1.0.0", "source": { - "shasum": "uaLwMO39qzKbshqPM6W2Ju7gkO/czuwgNKpjzXRXJj0=", + "shasum": "zp08CpwhlXWqh4cq0kjRownzH8Ujte70VVoiqikNKQs=", "location": { "npm": { "filePath": "snap.js", diff --git a/packages/snaps-rollup-plugin/.eslintrc.js b/packages/snaps-rollup-plugin/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/snaps-rollup-plugin/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/snaps-rollup-plugin/package.json b/packages/snaps-rollup-plugin/package.json index 4622d129da..676d514eb0 100644 --- a/packages/snaps-rollup-plugin/package.json +++ b/packages/snaps-rollup-plugin/package.json @@ -45,9 +45,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../scripts/since-latest-release.sh", "test": "jest --reporters=jest-silent-reporter", @@ -61,34 +61,20 @@ }, "devDependencies": { "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@rollup/plugin-virtual": "^2.1.0", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", "@ts-bridge/cli": "^0.6.1", "@types/jest": "^27.5.1", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-it-up": "^2.0.0", "jest-silent-reporter": "^0.6.0", "memfs": "^3.4.13", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "rollup": "^2.73.0", "typescript": "~5.3.3" }, diff --git a/packages/snaps-rollup-plugin/src/__fixtures__/source-map.ts b/packages/snaps-rollup-plugin/src/__fixtures__/source-map.ts index ac7732b9d0..e1aed3d176 100644 --- a/packages/snaps-rollup-plugin/src/__fixtures__/source-map.ts +++ b/packages/snaps-rollup-plugin/src/__fixtures__/source-map.ts @@ -1,6 +1,5 @@ // This file is only used for testing source map generation. -// eslint-disable-next-line import/unambiguous const foo = 'bar'; // eslint-disable-next-line no-console console.log(foo); diff --git a/packages/snaps-rollup-plugin/src/plugin.ts b/packages/snaps-rollup-plugin/src/plugin.ts index c9e3893092..2e932dd8a0 100644 --- a/packages/snaps-rollup-plugin/src/plugin.ts +++ b/packages/snaps-rollup-plugin/src/plugin.ts @@ -6,7 +6,6 @@ import { } from '@metamask/snaps-utils/node'; import { promises as fs } from 'fs'; import pathUtils from 'path'; -// eslint-disable-next-line @typescript-eslint/no-shadow import type { Plugin, SourceMapInput } from 'rollup'; type PluginOptions = { diff --git a/packages/snaps-rpc-methods/.eslintrc.js b/packages/snaps-rpc-methods/.eslintrc.js deleted file mode 100644 index 380729339c..0000000000 --- a/packages/snaps-rpc-methods/.eslintrc.js +++ /dev/null @@ -1,21 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - overrides: [ - { - files: ['**/*test.ts'], - rules: { - 'jest/expect-expect': [ - 'error', - { - assertFunctionNames: ['expect', 'expectTypeOf'], - }, - ], - }, - }, - ], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/snaps-rpc-methods/package.json b/packages/snaps-rpc-methods/package.json index f0d36a6332..b3ba076c3c 100644 --- a/packages/snaps-rpc-methods/package.json +++ b/packages/snaps-rpc-methods/package.json @@ -43,9 +43,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../scripts/since-latest-release.sh", "test": "jest --reporters=jest-silent-reporter", @@ -67,34 +67,20 @@ }, "devDependencies": { "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/json-rpc-engine": "^10.0.2", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", "@ts-bridge/cli": "^0.6.1", "@types/luxon": "^3", "@types/node": "18.14.2", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-it-up": "^2.0.0", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "typescript": "~5.3.3" }, "engines": { diff --git a/packages/snaps-rpc-methods/src/endowments/caveats/requestTime.test.ts b/packages/snaps-rpc-methods/src/endowments/caveats/requestTime.test.ts index e8fd769680..9e5d28a39e 100644 --- a/packages/snaps-rpc-methods/src/endowments/caveats/requestTime.test.ts +++ b/packages/snaps-rpc-methods/src/endowments/caveats/requestTime.test.ts @@ -1,13 +1,13 @@ import type { PermissionConstraint } from '@metamask/permission-controller'; import { SnapCaveatType } from '@metamask/snaps-utils'; -import { getCronjobCaveatMapper } from '../cronjob'; import { createMaxRequestTimeMapper, getMaxRequestTimeCaveat, getMaxRequestTimeCaveatMapper, maxRequestTimeCaveatSpecifications, } from './requestTime'; +import { getCronjobCaveatMapper } from '../cronjob'; describe('maxRequestTimeCaveatSpecifications', () => { describe('validator', () => { diff --git a/packages/snaps-rpc-methods/src/endowments/caveats/requestTime.ts b/packages/snaps-rpc-methods/src/endowments/caveats/requestTime.ts index 7a3e10c536..35efdba3db 100644 --- a/packages/snaps-rpc-methods/src/endowments/caveats/requestTime.ts +++ b/packages/snaps-rpc-methods/src/endowments/caveats/requestTime.ts @@ -19,7 +19,7 @@ import type { CaveatMapperFunction, CaveatMapperReturnValue } from './generic'; * @throws If the value is not a valid `maxRequestTime` value. */ function assertIsMaxRequestTime( - value: unknown, // eslint-disable-next-line @typescript-eslint/naming-convention + value: unknown, ErrorWrapper?: AssertionErrorConstructor, ): asserts value is number { assertStruct( diff --git a/packages/snaps-rpc-methods/src/endowments/rpc.ts b/packages/snaps-rpc-methods/src/endowments/rpc.ts index 3628c2f30b..93c820c652 100644 --- a/packages/snaps-rpc-methods/src/endowments/rpc.ts +++ b/packages/snaps-rpc-methods/src/endowments/rpc.ts @@ -28,6 +28,9 @@ type RpcSpecification = ValidPermissionSpecification<{ subjectTypes: readonly SubjectType[]; }>; +// TODO: Either fix this lint violation or explain why it's necessary to +// ignore. +// eslint-disable-next-line @typescript-eslint/no-empty-object-type type RpcSpecificationBuilderOptions = { // Empty for now. }; diff --git a/packages/snaps-rpc-methods/src/permitted/experimentalProviderRequest.test.ts b/packages/snaps-rpc-methods/src/permitted/experimentalProviderRequest.test.ts index 3d152c4372..6f35c00e38 100644 --- a/packages/snaps-rpc-methods/src/permitted/experimentalProviderRequest.test.ts +++ b/packages/snaps-rpc-methods/src/permitted/experimentalProviderRequest.test.ts @@ -1,12 +1,7 @@ import { JsonRpcEngine } from '@metamask/json-rpc-engine'; import { rpcErrors, serializeError } from '@metamask/rpc-errors'; import type { ProviderRequestParams } from '@metamask/snaps-sdk'; -import { type ProviderRequestResult } from '@metamask/snaps-sdk'; -import type { - JsonRpcFailure, - JsonRpcRequest, - PendingJsonRpcResponse, -} from '@metamask/utils'; +import type { JsonRpcFailure, JsonRpcRequest } from '@metamask/utils'; import { providerRequestHandler } from './experimentalProviderRequest'; @@ -36,7 +31,7 @@ describe('snap_experimentalProviderRequest', () => { getNetworkClientById: jest.fn().mockImplementation(() => ({ provider: { request: jest.fn().mockResolvedValue('0x1') }, })), - } as any); + }) as any; it('returns the result from the network client', async () => { const { implementation } = providerRequestHandler; @@ -48,7 +43,7 @@ describe('snap_experimentalProviderRequest', () => { engine.push((request, response, next, end) => { const result = implementation( request as JsonRpcRequest, - response as PendingJsonRpcResponse, + response, next, end, hooks, @@ -83,7 +78,7 @@ describe('snap_experimentalProviderRequest', () => { engine.push((request, response, next, end) => { const result = implementation( request as JsonRpcRequest, - response as PendingJsonRpcResponse, + response, next, end, hooks, @@ -120,7 +115,7 @@ describe('snap_experimentalProviderRequest', () => { engine.push((request, response, next, end) => { const result = implementation( request as JsonRpcRequest, - response as PendingJsonRpcResponse, + response, next, end, hooks, @@ -163,7 +158,7 @@ describe('snap_experimentalProviderRequest', () => { engine.push((request, response, next, end) => { const result = implementation( request as JsonRpcRequest, - response as PendingJsonRpcResponse, + response, next, end, hooks, @@ -208,7 +203,7 @@ describe('snap_experimentalProviderRequest', () => { engine.push((request, response, next, end) => { const result = implementation( request as JsonRpcRequest, - response as PendingJsonRpcResponse, + response, next, end, hooks, @@ -247,7 +242,7 @@ describe('snap_experimentalProviderRequest', () => { engine.push((request, response, next, end) => { const result = implementation( request as JsonRpcRequest, - response as PendingJsonRpcResponse, + response, next, end, hooks, @@ -289,7 +284,7 @@ describe('snap_experimentalProviderRequest', () => { engine.push((request, response, next, end) => { const result = implementation( request as JsonRpcRequest, - response as PendingJsonRpcResponse, + response, next, end, hooks, diff --git a/packages/snaps-rpc-methods/src/permitted/getFile.test.ts b/packages/snaps-rpc-methods/src/permitted/getFile.test.ts index b52bd2e9bd..bb880634c5 100644 --- a/packages/snaps-rpc-methods/src/permitted/getFile.test.ts +++ b/packages/snaps-rpc-methods/src/permitted/getFile.test.ts @@ -30,7 +30,7 @@ describe('snap_getFile', () => { const getMockHooks = () => ({ getSnapFile: jest.fn(), - } as GetFileHooks); + }) as GetFileHooks; it('returns the result received from the getSnapFile hook', async () => { const { implementation } = getFileHandler; diff --git a/packages/snaps-rpc-methods/src/permitted/getState.test.ts b/packages/snaps-rpc-methods/src/permitted/getState.test.ts index 7be63e258f..11cb3f01be 100644 --- a/packages/snaps-rpc-methods/src/permitted/getState.test.ts +++ b/packages/snaps-rpc-methods/src/permitted/getState.test.ts @@ -1,7 +1,6 @@ import { JsonRpcEngine } from '@metamask/json-rpc-engine'; import { errorCodes } from '@metamask/rpc-errors'; -import type { GetStateResult } from '@metamask/snaps-sdk'; -import type { JsonRpcRequest, PendingJsonRpcResponse } from '@metamask/utils'; +import type { JsonRpcRequest } from '@metamask/utils'; import type { GetStateParameters } from './getState'; import { get, getStateHandler } from './getState'; @@ -42,7 +41,7 @@ describe('snap_getState', () => { engine.push((request, response, next, end) => { const result = implementation( request as JsonRpcRequest, - response as PendingJsonRpcResponse, + response, next, end, hooks, @@ -89,7 +88,7 @@ describe('snap_getState', () => { engine.push((request, response, next, end) => { const result = implementation( request as JsonRpcRequest, - response as PendingJsonRpcResponse, + response, next, end, hooks, @@ -136,7 +135,7 @@ describe('snap_getState', () => { engine.push((request, response, next, end) => { const result = implementation( request as JsonRpcRequest, - response as PendingJsonRpcResponse, + response, next, end, hooks, @@ -184,7 +183,7 @@ describe('snap_getState', () => { engine.push((request, response, next, end) => { const result = implementation( request as JsonRpcRequest, - response as PendingJsonRpcResponse, + response, next, end, hooks, @@ -234,7 +233,7 @@ describe('snap_getState', () => { engine.push((request, response, next, end) => { const result = implementation( request as JsonRpcRequest, - response as PendingJsonRpcResponse, + response, next, end, hooks, diff --git a/packages/snaps-rpc-methods/src/permitted/getState.ts b/packages/snaps-rpc-methods/src/permitted/getState.ts index 92603d0232..d1c98fe467 100644 --- a/packages/snaps-rpc-methods/src/permitted/getState.ts +++ b/packages/snaps-rpc-methods/src/permitted/getState.ts @@ -10,8 +10,12 @@ import { optional, StructError, } from '@metamask/superstruct'; -import type { PendingJsonRpcResponse, JsonRpcRequest } from '@metamask/utils'; -import { hasProperty, isObject, type Json } from '@metamask/utils'; +import type { + PendingJsonRpcResponse, + Json, + JsonRpcRequest, +} from '@metamask/utils'; +import { hasProperty, isObject } from '@metamask/utils'; import { manageStateBuilder } from '../restricted/manageState'; import type { MethodHooksObject } from '../utils'; diff --git a/packages/snaps-rpc-methods/src/permitted/invokeKeyring.test.ts b/packages/snaps-rpc-methods/src/permitted/invokeKeyring.test.ts index bb4905708b..45b6b89a71 100644 --- a/packages/snaps-rpc-methods/src/permitted/invokeKeyring.test.ts +++ b/packages/snaps-rpc-methods/src/permitted/invokeKeyring.test.ts @@ -40,7 +40,7 @@ describe('wallet_invokeKeyring', () => { hasPermission: jest.fn(), handleSnapRpcRequest: jest.fn(), getAllowedKeyringMethods: jest.fn(), - } as any); + }) as any; it('invokes the snap and returns the result', async () => { const { implementation } = invokeKeyringHandler; diff --git a/packages/snaps-rpc-methods/src/permitted/invokeKeyring.ts b/packages/snaps-rpc-methods/src/permitted/invokeKeyring.ts index c81443943c..4af044a891 100644 --- a/packages/snaps-rpc-methods/src/permitted/invokeKeyring.ts +++ b/packages/snaps-rpc-methods/src/permitted/invokeKeyring.ts @@ -8,11 +8,15 @@ import type { } from '@metamask/snaps-sdk'; import type { Snap, SnapRpcHookArgs } from '@metamask/snaps-utils'; import { HandlerType, WALLET_SNAP_PERMISSION_KEY } from '@metamask/snaps-utils'; -import type { PendingJsonRpcResponse, JsonRpcRequest } from '@metamask/utils'; -import { hasProperty, type Json } from '@metamask/utils'; +import type { + PendingJsonRpcResponse, + Json, + JsonRpcRequest, +} from '@metamask/utils'; +import { hasProperty } from '@metamask/utils'; -import type { MethodHooksObject } from '../utils'; import { getValidatedParams } from './invokeSnapSugar'; +import type { MethodHooksObject } from '../utils'; const hookNames: MethodHooksObject = { hasPermission: true, diff --git a/packages/snaps-rpc-methods/src/permitted/invokeSnapSugar.test.ts b/packages/snaps-rpc-methods/src/permitted/invokeSnapSugar.test.ts index e43f209cb7..32df53a53b 100644 --- a/packages/snaps-rpc-methods/src/permitted/invokeSnapSugar.test.ts +++ b/packages/snaps-rpc-methods/src/permitted/invokeSnapSugar.test.ts @@ -21,7 +21,7 @@ describe('wallet_invokeSnap', () => { ({ id: 'some-id', jsonrpc: jsonrpc2, - } as PendingJsonRpcResponse); + }) as PendingJsonRpcResponse; it('invokes snap using hook', async () => { const params = { diff --git a/packages/snaps-rpc-methods/src/permitted/middleware.ts b/packages/snaps-rpc-methods/src/permitted/middleware.ts index 303eba08eb..89d2664db4 100644 --- a/packages/snaps-rpc-methods/src/permitted/middleware.ts +++ b/packages/snaps-rpc-methods/src/permitted/middleware.ts @@ -3,8 +3,8 @@ import { rpcErrors } from '@metamask/rpc-errors'; import { logError } from '@metamask/snaps-utils'; import type { Json, JsonRpcParams } from '@metamask/utils'; -import { selectHooks } from '../utils'; import { methodHandlers } from './handlers'; +import { selectHooks } from '../utils'; /** * Creates a middleware that handles permitted snap RPC methods. diff --git a/packages/snaps-rpc-methods/src/permitted/requestSnaps.test.ts b/packages/snaps-rpc-methods/src/permitted/requestSnaps.test.ts index 9f823e98e0..af9860da12 100644 --- a/packages/snaps-rpc-methods/src/permitted/requestSnaps.test.ts +++ b/packages/snaps-rpc-methods/src/permitted/requestSnaps.test.ts @@ -20,12 +20,12 @@ import type { PendingJsonRpcResponse, } from '@metamask/utils'; -import { WALLET_SNAP_PERMISSION_KEY } from '../restricted/invokeSnap'; import { requestSnapsHandler, hasRequestedSnaps, getSnapPermissionsRequest, } from './requestSnaps'; +import { WALLET_SNAP_PERMISSION_KEY } from '../restricted/invokeSnap'; describe('requestSnapsHandler', () => { it('has the expected shape', () => { @@ -178,7 +178,7 @@ describe('implementation', () => { installSnaps: jest.fn(), requestPermissions: jest.fn(), getPermissions: jest.fn(), - } as any); + }) as any; it('requests permissions if needed', async () => { const { implementation } = requestSnapsHandler; diff --git a/packages/snaps-rpc-methods/src/permitted/resolveInterface.ts b/packages/snaps-rpc-methods/src/permitted/resolveInterface.ts index 3401f30129..93c518c6e2 100644 --- a/packages/snaps-rpc-methods/src/permitted/resolveInterface.ts +++ b/packages/snaps-rpc-methods/src/permitted/resolveInterface.ts @@ -8,8 +8,8 @@ import type { } from '@metamask/snaps-sdk'; import type { InferMatching } from '@metamask/snaps-utils'; import { StructError, create, object, string } from '@metamask/superstruct'; -import type { PendingJsonRpcResponse } from '@metamask/utils'; -import { JsonStruct, type Json } from '@metamask/utils'; +import type { Json, PendingJsonRpcResponse } from '@metamask/utils'; +import { JsonStruct } from '@metamask/utils'; import type { MethodHooksObject } from '../utils'; diff --git a/packages/snaps-rpc-methods/src/permitted/scheduleBackgroundEvent.ts b/packages/snaps-rpc-methods/src/permitted/scheduleBackgroundEvent.ts index acdfeebde1..6f96e8ac1b 100644 --- a/packages/snaps-rpc-methods/src/permitted/scheduleBackgroundEvent.ts +++ b/packages/snaps-rpc-methods/src/permitted/scheduleBackgroundEvent.ts @@ -7,11 +7,8 @@ import { type ScheduleBackgroundEventParams, type ScheduleBackgroundEventResult, } from '@metamask/snaps-sdk'; -import type { CronjobRpcRequest } from '@metamask/snaps-utils'; -import { - CronjobRpcRequestStruct, - type InferMatching, -} from '@metamask/snaps-utils'; +import type { CronjobRpcRequest, InferMatching } from '@metamask/snaps-utils'; +import { CronjobRpcRequestStruct } from '@metamask/snaps-utils'; import { StructError, create, diff --git a/packages/snaps-rpc-methods/src/permitted/setState.ts b/packages/snaps-rpc-methods/src/permitted/setState.ts index 55317a57b3..dca7addc09 100644 --- a/packages/snaps-rpc-methods/src/permitted/setState.ts +++ b/packages/snaps-rpc-methods/src/permitted/setState.ts @@ -11,14 +11,17 @@ import { optional, StructError, } from '@metamask/superstruct'; -import type { PendingJsonRpcResponse, JsonRpcRequest } from '@metamask/utils'; +import type { + PendingJsonRpcResponse, + Json, + JsonRpcRequest, +} from '@metamask/utils'; import { getJsonSize, hasProperty, isObject, assert, JsonStruct, - type Json, } from '@metamask/utils'; import { @@ -232,7 +235,6 @@ async function getNewState( * @returns The new object with the key set to the value. */ export function set( - // eslint-disable-next-line @typescript-eslint/default-param-last object: Record | null, key: string, value: Json, diff --git a/packages/snaps-rpc-methods/src/permitted/updateInterface.test.tsx b/packages/snaps-rpc-methods/src/permitted/updateInterface.test.tsx index 7b7af42081..27d1846679 100644 --- a/packages/snaps-rpc-methods/src/permitted/updateInterface.test.tsx +++ b/packages/snaps-rpc-methods/src/permitted/updateInterface.test.tsx @@ -1,6 +1,9 @@ import { JsonRpcEngine } from '@metamask/json-rpc-engine'; -import type { UpdateInterfaceParams } from '@metamask/snaps-sdk'; -import { text, type UpdateInterfaceResult } from '@metamask/snaps-sdk'; +import type { + UpdateInterfaceParams, + UpdateInterfaceResult, +} from '@metamask/snaps-sdk'; +import { text } from '@metamask/snaps-sdk'; import { Box, type JSXElement, Text } from '@metamask/snaps-sdk/jsx'; import type { JsonRpcRequest, PendingJsonRpcResponse } from '@metamask/utils'; diff --git a/packages/snaps-rpc-methods/src/restricted/caveats/index.ts b/packages/snaps-rpc-methods/src/restricted/caveats/index.ts index 5ef90283e3..55107579eb 100644 --- a/packages/snaps-rpc-methods/src/restricted/caveats/index.ts +++ b/packages/snaps-rpc-methods/src/restricted/caveats/index.ts @@ -1,10 +1,6 @@ import type { PermissionConstraint } from '@metamask/permission-controller'; import type { Json } from '@metamask/utils'; -import { getBip32EntropyBuilder } from '../getBip32Entropy'; -import { getBip32PublicKeyBuilder } from '../getBip32PublicKey'; -import { getBip44EntropyBuilder } from '../getBip44Entropy'; -import { invokeSnapBuilder } from '../invokeSnap'; import { permittedCoinTypesCaveatMapper, PermittedCoinTypesCaveatSpecification, @@ -14,6 +10,10 @@ import { PermittedDerivationPathsCaveatSpecification, } from './permittedDerivationPaths'; import { snapIdsCaveatMapper, SnapIdsCaveatSpecification } from './snapIds'; +import { getBip32EntropyBuilder } from '../getBip32Entropy'; +import { getBip32PublicKeyBuilder } from '../getBip32PublicKey'; +import { getBip44EntropyBuilder } from '../getBip44Entropy'; +import { invokeSnapBuilder } from '../invokeSnap'; export const caveatSpecifications = { ...PermittedDerivationPathsCaveatSpecification, diff --git a/packages/snaps-rpc-methods/src/restricted/dialog.test.tsx b/packages/snaps-rpc-methods/src/restricted/dialog.test.tsx index dd5d3c7fec..671d9aae76 100644 --- a/packages/snaps-rpc-methods/src/restricted/dialog.test.tsx +++ b/packages/snaps-rpc-methods/src/restricted/dialog.test.tsx @@ -50,7 +50,7 @@ describe('implementation', () => { getInterface: jest .fn() .mockReturnValue({ content: text('foo'), state: {}, snapId: 'foo' }), - } as DialogMethodHooks); + }) as DialogMethodHooks; it('accepts string dialog types', async () => { const hooks = getMockDialogHooks(); diff --git a/packages/snaps-rpc-methods/src/restricted/invokeSnap.test.ts b/packages/snaps-rpc-methods/src/restricted/invokeSnap.test.ts index 95f9a5fc51..9df38a2f37 100644 --- a/packages/snaps-rpc-methods/src/restricted/invokeSnap.test.ts +++ b/packages/snaps-rpc-methods/src/restricted/invokeSnap.test.ts @@ -87,7 +87,7 @@ describe('implementation', () => { ({ getSnap: jest.fn(), handleSnapRpcRequest: jest.fn(), - } as any); + }) as any; it('calls handleSnapRpcRequest', async () => { const hooks = getMockHooks(); hooks.getSnap.mockImplementation(getTruncatedSnap); diff --git a/packages/snaps-rpc-methods/src/restricted/manageState.test.ts b/packages/snaps-rpc-methods/src/restricted/manageState.test.ts index d1b6a0bf4d..2e9945e3c9 100644 --- a/packages/snaps-rpc-methods/src/restricted/manageState.test.ts +++ b/packages/snaps-rpc-methods/src/restricted/manageState.test.ts @@ -327,7 +327,6 @@ describe('snap_manageState', () => { method: 'snap_manageState', params: { operation: ManageStateOperation.UpdateState, - // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-expect-error - invalid type for testing purposes newState, }, @@ -369,7 +368,6 @@ describe('snap_manageState', () => { method: 'snap_manageState', params: { operation: ManageStateOperation.UpdateState, - // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-expect-error - invalid type for testing purposes newState, }, diff --git a/packages/snaps-rpc-methods/src/restricted/notify.ts b/packages/snaps-rpc-methods/src/restricted/notify.ts index 82e46a3033..4b5c184f27 100644 --- a/packages/snaps-rpc-methods/src/restricted/notify.ts +++ b/packages/snaps-rpc-methods/src/restricted/notify.ts @@ -23,9 +23,8 @@ import { createUnion, validateLink, validateTextLinks, - type Snap, } from '@metamask/snaps-utils'; -import type { InferMatching } from '@metamask/snaps-utils'; +import type { InferMatching, Snap } from '@metamask/snaps-utils'; import { object, string, optional } from '@metamask/superstruct'; import type { NonEmptyArray } from '@metamask/utils'; import { hasProperty, isObject } from '@metamask/utils'; diff --git a/packages/snaps-sdk/.eslintrc.js b/packages/snaps-sdk/.eslintrc.js deleted file mode 100644 index c3b7e0a34a..0000000000 --- a/packages/snaps-sdk/.eslintrc.js +++ /dev/null @@ -1,21 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, - - overrides: [ - { - files: ['*.test.ts'], - rules: { - 'jest/expect-expect': [ - 'error', - { - assertFunctionNames: ['expect', 'expectTypeOf'], - }, - ], - }, - }, - ], -}; diff --git a/packages/snaps-sdk/jsx-dev-runtime.d.ts b/packages/snaps-sdk/jsx-dev-runtime.d.ts index ae34cba2ae..fe65566c0e 100644 --- a/packages/snaps-sdk/jsx-dev-runtime.d.ts +++ b/packages/snaps-sdk/jsx-dev-runtime.d.ts @@ -1,3 +1 @@ -/* eslint-disable import/extensions */ - export * from './dist/jsx/jsx-dev-runtime.cjs'; diff --git a/packages/snaps-sdk/jsx-dev-runtime.js b/packages/snaps-sdk/jsx-dev-runtime.js index d9bb40763c..6763d8babf 100644 --- a/packages/snaps-sdk/jsx-dev-runtime.js +++ b/packages/snaps-sdk/jsx-dev-runtime.js @@ -1,5 +1,3 @@ -/* eslint-disable */ - // Re-exported for compatibility with build tools that don't support the // `exports` field in package.json module.exports = require('./dist/jsx/jsx-dev-runtime.cjs'); diff --git a/packages/snaps-sdk/jsx-runtime.d.ts b/packages/snaps-sdk/jsx-runtime.d.ts index e16a60d095..3e1e2c1563 100644 --- a/packages/snaps-sdk/jsx-runtime.d.ts +++ b/packages/snaps-sdk/jsx-runtime.d.ts @@ -1,3 +1 @@ -/* eslint-disable import/extensions */ - export * from './dist/jsx/jsx-runtime.cjs'; diff --git a/packages/snaps-sdk/jsx-runtime.js b/packages/snaps-sdk/jsx-runtime.js index 1a87fed683..853813692e 100644 --- a/packages/snaps-sdk/jsx-runtime.js +++ b/packages/snaps-sdk/jsx-runtime.js @@ -1,5 +1,3 @@ -/* eslint-disable */ - // Re-exported for compatibility with build tools that don't support the // `exports` field in package.json module.exports = require('./dist/jsx/jsx-runtime.cjs'); diff --git a/packages/snaps-sdk/jsx.d.ts b/packages/snaps-sdk/jsx.d.ts index 064e9a0b4f..d2eb8719d7 100644 --- a/packages/snaps-sdk/jsx.d.ts +++ b/packages/snaps-sdk/jsx.d.ts @@ -1,3 +1,3 @@ -/* eslint-disable import/extensions */ +/* eslint-disable import-x/no-useless-path-segments */ export * from './dist/jsx/index.cjs'; diff --git a/packages/snaps-sdk/jsx.js b/packages/snaps-sdk/jsx.js index 6646b6a6d1..44bab0b6eb 100644 --- a/packages/snaps-sdk/jsx.js +++ b/packages/snaps-sdk/jsx.js @@ -1,5 +1,3 @@ -/* eslint-disable */ - // Re-exported for compatibility with build tools that don't support the // `exports` field in package.json module.exports = require('./dist/jsx/index.cjs'); diff --git a/packages/snaps-sdk/package.json b/packages/snaps-sdk/package.json index 5ce78a9abb..28da643318 100644 --- a/packages/snaps-sdk/package.json +++ b/packages/snaps-sdk/package.json @@ -79,9 +79,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../scripts/since-latest-release.sh", "test": "jest --reporters=jest-silent-reporter", @@ -99,32 +99,18 @@ }, "devDependencies": { "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@ts-bridge/cli": "^0.6.1", "@types/jest": "^27.5.1", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "expect-type": "^0.17.3", "jest": "^29.0.2", "jest-fetch-mock": "^3.0.3", "jest-it-up": "^2.0.0", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-jest": "^29.1.1", "typescript": "~5.3.3" }, diff --git a/packages/snaps-sdk/src/index.test.ts b/packages/snaps-sdk/src/index.test.ts index 3d70429a56..90944bc361 100644 --- a/packages/snaps-sdk/src/index.test.ts +++ b/packages/snaps-sdk/src/index.test.ts @@ -1,5 +1,4 @@ // TODO: Add tests, and remove these comments. -// eslint-disable-next-line import/unambiguous describe('index', () => { it.todo('should be tested'); }); diff --git a/packages/snaps-sdk/src/internals/error-wrappers.test.ts b/packages/snaps-sdk/src/internals/error-wrappers.test.ts index 26fcb0637e..ddd27df5a3 100644 --- a/packages/snaps-sdk/src/internals/error-wrappers.test.ts +++ b/packages/snaps-sdk/src/internals/error-wrappers.test.ts @@ -1,7 +1,7 @@ import { rpcErrors } from '@metamask/rpc-errors'; -import { SnapError } from '../errors'; import { createSnapError } from './error-wrappers'; +import { SnapError } from '../errors'; describe('createSnapError', () => { it('creates a SnapError from an rpc-errors function', () => { diff --git a/packages/snaps-sdk/src/internals/index.ts b/packages/snaps-sdk/src/internals/index.ts index d90734145a..bba5a526d7 100644 --- a/packages/snaps-sdk/src/internals/index.ts +++ b/packages/snaps-sdk/src/internals/index.ts @@ -1,6 +1,6 @@ export * from './error-wrappers'; export * from './errors'; -export * from './helpers'; +export type * from './helpers'; export * from './structs'; export * from './jsx'; export * from './svg'; diff --git a/packages/snaps-sdk/src/internals/jsx.ts b/packages/snaps-sdk/src/internals/jsx.ts index cf8ae331c2..18d8a09fab 100644 --- a/packages/snaps-sdk/src/internals/jsx.ts +++ b/packages/snaps-sdk/src/internals/jsx.ts @@ -11,8 +11,8 @@ import type { UnionToIntersection, } from '@metamask/superstruct'; -import type { EmptyObject } from '../types'; import { union } from './structs'; +import type { EmptyObject } from '../types'; /** * Check if a type is a union. Infers `true` if it is a union, otherwise @@ -26,55 +26,56 @@ type IsUnion = [Type] extends [UnionToIntersection] ? false : true; * This is copied from `superstruct` but fixes some issues with the original * implementation. */ -type StructSchema = IsUnion extends true - ? null - : [Type] extends [EmptyObject] - ? EmptyObject - : [Type] extends [string | undefined | null] - ? [Type] extends [`0x${string}`] - ? null - : [Type] extends [IsMatch] - ? null - : [Type] extends [IsUnion] - ? EnumSchema - : Type - : [Type] extends [number | undefined | null] - ? [Type] extends [IsMatch] - ? null - : [Type] extends [IsUnion] - ? EnumSchema - : Type - : [Type] extends [boolean] - ? [Type] extends [IsExactMatch] - ? null - : Type - : Type extends - | bigint - | symbol - | undefined - | null - // eslint-disable-next-line @typescript-eslint/ban-types - | Function - | Date - | Error - | RegExp - | Map - | WeakMap - | Set - | WeakSet - | Promise - ? null - : Type extends (infer E)[] - ? Type extends IsTuple - ? null - : Struct - : Type extends object - ? Type extends IsRecord +type StructSchema = + IsUnion extends true ? null - : { - [InnerKey in keyof Type]: Describe; - } - : null; + : [Type] extends [EmptyObject] + ? EmptyObject + : [Type] extends [string | undefined | null] + ? [Type] extends [`0x${string}`] + ? null + : [Type] extends [IsMatch] + ? null + : [Type] extends [IsUnion] + ? EnumSchema + : Type + : [Type] extends [number | undefined | null] + ? [Type] extends [IsMatch] + ? null + : [Type] extends [IsUnion] + ? EnumSchema + : Type + : [Type] extends [boolean] + ? [Type] extends [IsExactMatch] + ? null + : Type + : Type extends + | bigint + | symbol + | undefined + | null + // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type + | Function + | Date + | Error + | RegExp + | Map + | WeakMap + | Set + | WeakSet + | Promise + ? null + : Type extends (infer E)[] + ? Type extends IsTuple + ? null + : Struct + : Type extends object + ? Type extends IsRecord + ? null + : { + [InnerKey in keyof Type]: Describe; + } + : null; /** * Describe a struct type. diff --git a/packages/snaps-sdk/src/internals/structs.test.ts b/packages/snaps-sdk/src/internals/structs.test.ts index 0c20e92ce6..64e310cf6c 100644 --- a/packages/snaps-sdk/src/internals/structs.test.ts +++ b/packages/snaps-sdk/src/internals/structs.test.ts @@ -7,6 +7,7 @@ import { validate, } from '@metamask/superstruct'; +import { enumValue, literal, typedUnion, union } from './structs'; import type { BoxElement } from '../jsx'; import { Footer, Icon, Text, Button, Box } from '../jsx'; import { @@ -15,7 +16,6 @@ import { FooterStruct, TextStruct, } from '../jsx/validation'; -import { enumValue, literal, typedUnion, union } from './structs'; describe('enumValue', () => { it('validates an enum value', () => { diff --git a/packages/snaps-sdk/src/jsx/components/Banner.ts b/packages/snaps-sdk/src/jsx/components/Banner.ts index 91cbe9cf66..2be70444d0 100644 --- a/packages/snaps-sdk/src/jsx/components/Banner.ts +++ b/packages/snaps-sdk/src/jsx/components/Banner.ts @@ -1,10 +1,10 @@ -import { createSnapComponent, type SnapsChildren } from '../component'; import type { ButtonElement } from './form/Button'; import type { StandardFormattingElement } from './formatting'; import type { IconElement } from './Icon'; import type { LinkElement } from './Link'; import type { SkeletonElement } from './Skeleton'; import type { TextElement } from './Text'; +import { createSnapComponent, type SnapsChildren } from '../component'; /** * Types of children components that can be used with Banner. diff --git a/packages/snaps-sdk/src/jsx/components/Box.test.tsx b/packages/snaps-sdk/src/jsx/components/Box.test.tsx index 0274345788..b1fff8fa67 100644 --- a/packages/snaps-sdk/src/jsx/components/Box.test.tsx +++ b/packages/snaps-sdk/src/jsx/components/Box.test.tsx @@ -98,6 +98,7 @@ describe('Box', () => { it('renders a box with a conditional', () => { const result = ( + {/* eslint-disable-next-line no-constant-binary-expression */} {false && Hello} ); diff --git a/packages/snaps-sdk/src/jsx/components/Card.ts b/packages/snaps-sdk/src/jsx/components/Card.ts index a78a77e138..811f65df5d 100644 --- a/packages/snaps-sdk/src/jsx/components/Card.ts +++ b/packages/snaps-sdk/src/jsx/components/Card.ts @@ -1,5 +1,5 @@ -import { createSnapComponent } from '../component'; import type { AddressElement } from './Address'; +import { createSnapComponent } from '../component'; /** * The props of the {@link Card} component. diff --git a/packages/snaps-sdk/src/jsx/components/Container.ts b/packages/snaps-sdk/src/jsx/components/Container.ts index 6b2500663a..2f1c4b1b25 100644 --- a/packages/snaps-sdk/src/jsx/components/Container.ts +++ b/packages/snaps-sdk/src/jsx/components/Container.ts @@ -1,6 +1,6 @@ +import type { FooterElement } from './Footer'; import type { GenericSnapElement } from '../component'; import { createSnapComponent } from '../component'; -import type { FooterElement } from './Footer'; /** * Definition of container background colors. diff --git a/packages/snaps-sdk/src/jsx/components/Footer.ts b/packages/snaps-sdk/src/jsx/components/Footer.ts index 937ce4a147..5fd9ac2652 100644 --- a/packages/snaps-sdk/src/jsx/components/Footer.ts +++ b/packages/snaps-sdk/src/jsx/components/Footer.ts @@ -1,5 +1,5 @@ -import { createSnapComponent } from '../component'; import type { ButtonElement } from './form'; +import { createSnapComponent } from '../component'; /** * The props of the {@link Footer} component. diff --git a/packages/snaps-sdk/src/jsx/components/Heading.test.tsx b/packages/snaps-sdk/src/jsx/components/Heading.test.tsx index 6ead885b8c..2097f1b6cf 100644 --- a/packages/snaps-sdk/src/jsx/components/Heading.test.tsx +++ b/packages/snaps-sdk/src/jsx/components/Heading.test.tsx @@ -29,6 +29,7 @@ describe('Heading', () => { const result = ( Hello + {/* eslint-disable-next-line no-constant-binary-expression */} {false && 'world'} ); diff --git a/packages/snaps-sdk/src/jsx/components/Image.ts b/packages/snaps-sdk/src/jsx/components/Image.ts index ae4e2fcf36..a097f6d6f2 100644 --- a/packages/snaps-sdk/src/jsx/components/Image.ts +++ b/packages/snaps-sdk/src/jsx/components/Image.ts @@ -1,5 +1,5 @@ -import { createSnapComponent } from '../component'; import type { BorderRadius } from './utils'; +import { createSnapComponent } from '../component'; /** * The props of the {@link Image} component. diff --git a/packages/snaps-sdk/src/jsx/components/Link.test.tsx b/packages/snaps-sdk/src/jsx/components/Link.test.tsx index dcb2839a9f..d4194f5150 100644 --- a/packages/snaps-sdk/src/jsx/components/Link.test.tsx +++ b/packages/snaps-sdk/src/jsx/components/Link.test.tsx @@ -75,6 +75,7 @@ describe('Link', () => { const result = ( Hello + {/* eslint-disable-next-line no-constant-binary-expression */} {false && 'world'} ); diff --git a/packages/snaps-sdk/src/jsx/components/Link.ts b/packages/snaps-sdk/src/jsx/components/Link.ts index 9618a8236e..5b6262e2dc 100644 --- a/packages/snaps-sdk/src/jsx/components/Link.ts +++ b/packages/snaps-sdk/src/jsx/components/Link.ts @@ -1,9 +1,9 @@ -import type { SnapsChildren } from '../component'; -import { createSnapComponent } from '../component'; import type { AddressElement } from './Address'; import type { StandardFormattingElement } from './formatting'; import { type IconElement } from './Icon'; import { type ImageElement } from './Image'; +import { createSnapComponent } from '../component'; +import type { SnapsChildren } from '../component'; /** * The children of the {@link Link} component. diff --git a/packages/snaps-sdk/src/jsx/components/Row.ts b/packages/snaps-sdk/src/jsx/components/Row.ts index 44dc409f24..7989f14036 100644 --- a/packages/snaps-sdk/src/jsx/components/Row.ts +++ b/packages/snaps-sdk/src/jsx/components/Row.ts @@ -1,10 +1,10 @@ -import { createSnapComponent } from '../component'; import type { AddressElement } from './Address'; import type { ImageElement } from './Image'; import type { LinkElement } from './Link'; import type { SkeletonElement } from './Skeleton'; import type { TextElement } from './Text'; import type { ValueElement } from './Value'; +import { createSnapComponent } from '../component'; /** * The children of a {@link Row} component. diff --git a/packages/snaps-sdk/src/jsx/components/Skeleton.ts b/packages/snaps-sdk/src/jsx/components/Skeleton.ts index 17510f5f15..adf72774b7 100644 --- a/packages/snaps-sdk/src/jsx/components/Skeleton.ts +++ b/packages/snaps-sdk/src/jsx/components/Skeleton.ts @@ -1,5 +1,5 @@ -import { createSnapComponent } from '../component'; import type { BorderRadius } from './utils'; +import { createSnapComponent } from '../component'; /** * The props of the {@link Skeleton} component. diff --git a/packages/snaps-sdk/src/jsx/components/Text.ts b/packages/snaps-sdk/src/jsx/components/Text.ts index b7a6b81d79..a5f94962e2 100644 --- a/packages/snaps-sdk/src/jsx/components/Text.ts +++ b/packages/snaps-sdk/src/jsx/components/Text.ts @@ -1,9 +1,9 @@ -import type { SnapsChildren } from '../component'; -import { createSnapComponent } from '../component'; import type { StandardFormattingElement } from './formatting'; import type { IconElement } from './Icon'; import type { LinkElement } from './Link'; import type { SkeletonElement } from './Skeleton'; +import { createSnapComponent } from '../component'; +import type { SnapsChildren } from '../component'; /** * The children of the {@link Text} component. diff --git a/packages/snaps-sdk/src/jsx/components/Tooltip.test.tsx b/packages/snaps-sdk/src/jsx/components/Tooltip.test.tsx index 3a63cb541b..9438e6e7f5 100644 --- a/packages/snaps-sdk/src/jsx/components/Tooltip.test.tsx +++ b/packages/snaps-sdk/src/jsx/components/Tooltip.test.tsx @@ -87,7 +87,10 @@ describe('Tooltip', () => { it('renders a tooltip with a conditional value', () => { const result = ( - {false && World} + + {/* eslint-disable-next-line no-constant-binary-expression */} + {false && World} + ); expect(result).toStrictEqual({ diff --git a/packages/snaps-sdk/src/jsx/components/Tooltip.ts b/packages/snaps-sdk/src/jsx/components/Tooltip.ts index c5439a2da1..ca59d33373 100644 --- a/packages/snaps-sdk/src/jsx/components/Tooltip.ts +++ b/packages/snaps-sdk/src/jsx/components/Tooltip.ts @@ -1,9 +1,9 @@ -import { createSnapComponent } from '../component'; import type { StandardFormattingElement } from './formatting'; import type { IconElement } from './Icon'; import type { ImageElement } from './Image'; import type { LinkElement } from './Link'; import type { TextElement } from './Text'; +import { createSnapComponent } from '../component'; export type TooltipChildren = | TextElement diff --git a/packages/snaps-sdk/src/jsx/components/Value.ts b/packages/snaps-sdk/src/jsx/components/Value.ts index 91d7964ee7..026ef54401 100644 --- a/packages/snaps-sdk/src/jsx/components/Value.ts +++ b/packages/snaps-sdk/src/jsx/components/Value.ts @@ -1,5 +1,5 @@ -import { createSnapComponent } from '../component'; import type { TextElement } from './Text'; +import { createSnapComponent } from '../component'; /** * The props of the {@link Value} component. diff --git a/packages/snaps-sdk/src/jsx/components/form/Dropdown.test.tsx b/packages/snaps-sdk/src/jsx/components/form/Dropdown.test.tsx index de8618ab83..c5d1550c74 100644 --- a/packages/snaps-sdk/src/jsx/components/form/Dropdown.test.tsx +++ b/packages/snaps-sdk/src/jsx/components/form/Dropdown.test.tsx @@ -42,6 +42,7 @@ describe('Dropdown', () => { const result = ( + {/* eslint-disable-next-line no-constant-binary-expression */} {false && } ); diff --git a/packages/snaps-sdk/src/jsx/components/form/Dropdown.ts b/packages/snaps-sdk/src/jsx/components/form/Dropdown.ts index f5f6877188..22e556523c 100644 --- a/packages/snaps-sdk/src/jsx/components/form/Dropdown.ts +++ b/packages/snaps-sdk/src/jsx/components/form/Dropdown.ts @@ -1,6 +1,6 @@ +import type { OptionElement } from './Option'; import type { SnapsChildren } from '../../component'; import { createSnapComponent } from '../../component'; -import type { OptionElement } from './Option'; /** * The props of the {@link Dropdown} component. diff --git a/packages/snaps-sdk/src/jsx/components/form/Field.test.tsx b/packages/snaps-sdk/src/jsx/components/form/Field.test.tsx index 9098b07035..1daf74e1f7 100644 --- a/packages/snaps-sdk/src/jsx/components/form/Field.test.tsx +++ b/packages/snaps-sdk/src/jsx/components/form/Field.test.tsx @@ -1,5 +1,3 @@ -import { Box } from '../Box'; -import { Text } from '../Text'; import { Button } from './Button'; import { Dropdown } from './Dropdown'; import { Field } from './Field'; @@ -7,6 +5,8 @@ import { Input } from './Input'; import { Option } from './Option'; import { Radio } from './Radio'; import { RadioGroup } from './RadioGroup'; +import { Box } from '../Box'; +import { Text } from '../Text'; describe('Field', () => { it('renders a field element', () => { @@ -327,6 +327,7 @@ describe('Field', () => { const result = ( + {/* eslint-disable-next-line no-constant-binary-expression */} {false && } ); diff --git a/packages/snaps-sdk/src/jsx/components/form/Field.ts b/packages/snaps-sdk/src/jsx/components/form/Field.ts index 0493311842..9c4ccf9c7b 100644 --- a/packages/snaps-sdk/src/jsx/components/form/Field.ts +++ b/packages/snaps-sdk/src/jsx/components/form/Field.ts @@ -1,11 +1,11 @@ -import type { GenericSnapChildren } from '../../component'; -import { createSnapComponent } from '../../component'; import type { CheckboxElement } from './Checkbox'; import type { DropdownElement } from './Dropdown'; import type { FileInputElement } from './FileInput'; import type { InputElement } from './Input'; import type { RadioGroupElement } from './RadioGroup'; import type { SelectorElement } from './Selector'; +import { createSnapComponent } from '../../component'; +import type { GenericSnapChildren } from '../../component'; /** * The props of the {@link Field} component. diff --git a/packages/snaps-sdk/src/jsx/components/form/Option.ts b/packages/snaps-sdk/src/jsx/components/form/Option.ts index d83ad56a92..631f9e74cf 100644 --- a/packages/snaps-sdk/src/jsx/components/form/Option.ts +++ b/packages/snaps-sdk/src/jsx/components/form/Option.ts @@ -1,6 +1,8 @@ -import { createSnapComponent } from '../../component'; +// TODO: Either fix this lint violation or explain why it's necessary to +// ignore. // eslint-disable-next-line @typescript-eslint/no-unused-vars -import { Dropdown } from './Dropdown'; +import type { Dropdown } from './Dropdown'; +import { createSnapComponent } from '../../component'; /** * The props of the {@link Option} component. diff --git a/packages/snaps-sdk/src/jsx/components/form/RadioGroup.ts b/packages/snaps-sdk/src/jsx/components/form/RadioGroup.ts index da1b31330d..88fe599bd9 100644 --- a/packages/snaps-sdk/src/jsx/components/form/RadioGroup.ts +++ b/packages/snaps-sdk/src/jsx/components/form/RadioGroup.ts @@ -1,6 +1,6 @@ +import type { RadioElement } from './Radio'; import type { SnapsChildren } from '../../component'; import { createSnapComponent } from '../../component'; -import type { RadioElement } from './Radio'; const TYPE = 'RadioGroup'; diff --git a/packages/snaps-sdk/src/jsx/components/form/Selector.test.tsx b/packages/snaps-sdk/src/jsx/components/form/Selector.test.tsx index 127c4c217c..57dcc5f04d 100644 --- a/packages/snaps-sdk/src/jsx/components/form/Selector.test.tsx +++ b/packages/snaps-sdk/src/jsx/components/form/Selector.test.tsx @@ -1,6 +1,6 @@ -import { Card } from '../Card'; import { Selector } from './Selector'; import { SelectorOption } from './SelectorOption'; +import { Card } from '../Card'; describe('Selector', () => { it('renders a selector with options', () => { @@ -64,6 +64,7 @@ describe('Selector', () => { + {/* eslint-disable-next-line no-constant-binary-expression */} {false && ( diff --git a/packages/snaps-sdk/src/jsx/components/form/Selector.ts b/packages/snaps-sdk/src/jsx/components/form/Selector.ts index 503ac0e5f8..908d765a25 100644 --- a/packages/snaps-sdk/src/jsx/components/form/Selector.ts +++ b/packages/snaps-sdk/src/jsx/components/form/Selector.ts @@ -1,6 +1,6 @@ +import type { SelectorOptionElement } from './SelectorOption'; import type { SnapsChildren } from '../../component'; import { createSnapComponent } from '../../component'; -import type { SelectorOptionElement } from './SelectorOption'; /** * The props of the {@link Selector} component. diff --git a/packages/snaps-sdk/src/jsx/components/form/SelectorOption.test.tsx b/packages/snaps-sdk/src/jsx/components/form/SelectorOption.test.tsx index 7ea5451270..d2285274c9 100644 --- a/packages/snaps-sdk/src/jsx/components/form/SelectorOption.test.tsx +++ b/packages/snaps-sdk/src/jsx/components/form/SelectorOption.test.tsx @@ -1,5 +1,5 @@ -import { Card } from '../Card'; import { SelectorOption } from './SelectorOption'; +import { Card } from '../Card'; describe('Option', () => { it('renders a selector option', () => { diff --git a/packages/snaps-sdk/src/jsx/components/formatting/Bold.test.tsx b/packages/snaps-sdk/src/jsx/components/formatting/Bold.test.tsx index dcd8dc95a2..ae09f4c0fc 100644 --- a/packages/snaps-sdk/src/jsx/components/formatting/Bold.test.tsx +++ b/packages/snaps-sdk/src/jsx/components/formatting/Bold.test.tsx @@ -29,6 +29,7 @@ describe('Bold', () => { const result = ( Hello + {/* eslint-disable-next-line no-constant-binary-expression */} {false && 'world'} ); diff --git a/packages/snaps-sdk/src/jsx/components/formatting/Italic.test.tsx b/packages/snaps-sdk/src/jsx/components/formatting/Italic.test.tsx index cb0113352e..fe76b64f9c 100644 --- a/packages/snaps-sdk/src/jsx/components/formatting/Italic.test.tsx +++ b/packages/snaps-sdk/src/jsx/components/formatting/Italic.test.tsx @@ -29,6 +29,7 @@ describe('Italic', () => { const result = ( Hello + {/* eslint-disable-next-line no-constant-binary-expression */} {false && 'world'} ); diff --git a/packages/snaps-sdk/src/jsx/components/index.ts b/packages/snaps-sdk/src/jsx/components/index.ts index 2f4d9521ba..23d336570e 100644 --- a/packages/snaps-sdk/src/jsx/components/index.ts +++ b/packages/snaps-sdk/src/jsx/components/index.ts @@ -43,7 +43,7 @@ export * from './Container'; export * from './Section'; export * from './Banner'; export * from './Skeleton'; -export * from './utils'; +export type * from './utils'; /** * A built-in JSX element, which can be used in a Snap user interface. diff --git a/packages/snaps-sdk/src/jsx/validation.test.tsx b/packages/snaps-sdk/src/jsx/validation.test.tsx index d4d3089e75..f6154bb1ce 100644 --- a/packages/snaps-sdk/src/jsx/validation.test.tsx +++ b/packages/snaps-sdk/src/jsx/validation.test.tsx @@ -658,6 +658,7 @@ describe('FooterStruct', () => { ,
+ {/* eslint-disable-next-line no-constant-binary-expression */}
, ])('validates a footer element', (value) => { diff --git a/packages/snaps-sdk/src/jsx/validation.ts b/packages/snaps-sdk/src/jsx/validation.ts index 994a622c25..2cbdaac2d3 100644 --- a/packages/snaps-sdk/src/jsx/validation.ts +++ b/packages/snaps-sdk/src/jsx/validation.ts @@ -29,15 +29,6 @@ import { JsonStruct, } from '@metamask/utils'; -import type { Describe } from '../internals'; -import { - literal, - nullUnion, - selectiveUnion, - svg, - typedUnion, -} from '../internals'; -import type { EmptyObject } from '../types'; import type { GenericSnapChildren, GenericSnapElement, @@ -48,44 +39,54 @@ import type { SnapsChildren, StringElement, } from './component'; -import type { AvatarElement, SkeletonElement } from './components'; -import { - type AddressElement, - type BoldElement, - type BoxElement, - type ButtonElement, - type CheckboxElement, - type CardElement, - type CopyableElement, - type DividerElement, - type DropdownElement, - type OptionElement, - type RadioElement, - type RadioGroupElement, - type FieldElement, - type FormElement, - type HeadingElement, - type ImageElement, - type InputElement, - type ItalicElement, - type JSXElement, - type LinkElement, - type RowElement, - type SpinnerElement, - type StandardFormattingElement, - type TextElement, - type TooltipElement, - type ValueElement, - type FileInputElement, - type ContainerElement, - type FooterElement, - type IconElement, - type SectionElement, - type SelectorElement, - type SelectorOptionElement, - type BannerElement, - IconName, +import type { + AvatarElement, + SkeletonElement, + AddressElement, + BoldElement, + BoxElement, + ButtonElement, + CheckboxElement, + CardElement, + CopyableElement, + DividerElement, + DropdownElement, + OptionElement, + RadioElement, + RadioGroupElement, + FieldElement, + FormElement, + HeadingElement, + ImageElement, + InputElement, + ItalicElement, + JSXElement, + LinkElement, + RowElement, + SpinnerElement, + StandardFormattingElement, + TextElement, + TooltipElement, + ValueElement, + FileInputElement, + ContainerElement, + FooterElement, + IconElement, + SectionElement, + SelectorElement, + SelectorOptionElement, + BannerElement, } from './components'; +import { IconName } from './components'; +import type { Describe } from '../internals'; +import { + literal, + nullUnion, + selectiveUnion, + svg, + typedUnion, +} from '../internals'; +import type { EmptyObject } from '../types'; /** * A struct for the {@link Key} type. @@ -557,7 +558,6 @@ export const BoldStruct: Describe = element('Bold', { export const ItalicStruct: Describe = element('Italic', { children: children([ string(), - // eslint-disable-next-line @typescript-eslint/no-use-before-define lazy(() => BoldStruct) as unknown as Struct< SnapElement >, diff --git a/packages/snaps-sdk/src/types/handlers/index.ts b/packages/snaps-sdk/src/types/handlers/index.ts index 5961304c08..d9b44d6913 100644 --- a/packages/snaps-sdk/src/types/handlers/index.ts +++ b/packages/snaps-sdk/src/types/handlers/index.ts @@ -1,13 +1,13 @@ export * from './assets-conversion'; export * from './assets-lookup'; -export * from './cronjob'; -export * from './home-page'; -export * from './keyring'; -export * from './lifecycle'; -export * from './name-lookup'; -export * from './protocol'; -export * from './rpc-request'; +export type * from './cronjob'; +export type * from './home-page'; +export type * from './keyring'; +export type * from './lifecycle'; +export type * from './name-lookup'; +export type * from './protocol'; +export type * from './rpc-request'; export * from './transaction'; -export * from './signature'; +export type * from './signature'; export * from './user-input'; -export * from './settings-page'; +export type * from './settings-page'; diff --git a/packages/snaps-sdk/src/types/handlers/signature.ts b/packages/snaps-sdk/src/types/handlers/signature.ts index 3e74d41559..14a0f58d3b 100644 --- a/packages/snaps-sdk/src/types/handlers/signature.ts +++ b/packages/snaps-sdk/src/types/handlers/signature.ts @@ -1,6 +1,6 @@ +import type { SeverityLevel } from './transaction'; import type { EnumToUnion } from '../../internals'; import type { Component } from '../../ui'; -import type { SeverityLevel } from './transaction'; /** * A personal_sign signature object. diff --git a/packages/snaps-sdk/src/types/images.ts b/packages/snaps-sdk/src/types/images.ts index 777b9f2e2d..476e7d01e1 100644 --- a/packages/snaps-sdk/src/types/images.ts +++ b/packages/snaps-sdk/src/types/images.ts @@ -1,4 +1,4 @@ -// eslint-disable-next-line import/unambiguous +// eslint-disable-next-line import-x/unambiguous declare module '*.svg' { const content: string; // eslint-disable-next-line @typescript-eslint/ban-ts-comment diff --git a/packages/snaps-sdk/src/types/index.ts b/packages/snaps-sdk/src/types/index.ts index fafc24fe65..bab24b6e09 100644 --- a/packages/snaps-sdk/src/types/index.ts +++ b/packages/snaps-sdk/src/types/index.ts @@ -1,13 +1,13 @@ // This is intentionally imported, rather than re-exported. -/* eslint-disable import/no-unassigned-import */ +/* eslint-disable import-x/no-unassigned-import */ import './global'; import './images'; -/* eslint-enable import/no-unassigned-import */ +/* eslint-enable import-x/no-unassigned-import */ -export * from './caip'; +export type * from './caip'; export * from './handlers'; export * from './methods'; -export * from './permissions'; -export * from './provider'; -export * from './snap'; +export type * from './permissions'; +export type * from './provider'; +export type * from './snap'; export * from './interface'; diff --git a/packages/snaps-sdk/src/types/interface.test.ts b/packages/snaps-sdk/src/types/interface.test.ts index 5f1c2ac14a..8af6fe6c83 100644 --- a/packages/snaps-sdk/src/types/interface.test.ts +++ b/packages/snaps-sdk/src/types/interface.test.ts @@ -1,12 +1,12 @@ import { assert } from '@metamask/superstruct'; -import { Text } from '../jsx'; -import { text } from '../ui'; import { ComponentOrElementStruct, FormStateStruct, InterfaceStateStruct, } from './interface'; +import { Text } from '../jsx'; +import { text } from '../ui'; describe('FormStateStruct', () => { it('passes for a valid form state', () => { diff --git a/packages/snaps-sdk/src/types/interface.ts b/packages/snaps-sdk/src/types/interface.ts index a587a0283c..c11a36601a 100644 --- a/packages/snaps-sdk/src/types/interface.ts +++ b/packages/snaps-sdk/src/types/interface.ts @@ -8,12 +8,12 @@ import { } from '@metamask/superstruct'; import { JsonStruct, hasProperty, isObject } from '@metamask/utils'; +import { FileStruct } from './handlers'; import { selectiveUnion } from '../internals'; import type { JSXElement } from '../jsx'; import { RootJSXElementStruct } from '../jsx'; import type { Component } from '../ui'; import { ComponentStruct } from '../ui'; -import { FileStruct } from './handlers'; /** * To avoid typing problems with the interface state when manipulating it we diff --git a/packages/snaps-sdk/src/types/methods/dialog.test.ts b/packages/snaps-sdk/src/types/methods/dialog.test.ts index 11483951d8..3181f42027 100644 --- a/packages/snaps-sdk/src/types/methods/dialog.test.ts +++ b/packages/snaps-sdk/src/types/methods/dialog.test.ts @@ -1,6 +1,5 @@ import { expectTypeOf } from 'expect-type'; -import type { text } from '../../ui'; import type { ConfirmationDialog, PromptDialog, @@ -8,6 +7,7 @@ import type { DialogParams, } from './dialog'; import { DialogType } from './dialog'; +import type { text } from '../../ui'; describe('DialogType', () => { it('has the correct values', () => { diff --git a/packages/snaps-sdk/src/types/methods/index.ts b/packages/snaps-sdk/src/types/methods/index.ts index c8a637038f..43d5aa2b40 100644 --- a/packages/snaps-sdk/src/types/methods/index.ts +++ b/packages/snaps-sdk/src/types/methods/index.ts @@ -1,30 +1,30 @@ -export * from './clear-state'; -export * from './create-interface'; +export type * from './clear-state'; +export type * from './create-interface'; export * from './dialog'; -export * from './get-bip32-entropy'; -export * from './get-bip32-public-key'; -export * from './get-bip44-entropy'; -export * from './get-client-status'; -export * from './get-currency-rate'; -export * from './get-entropy'; +export type * from './get-bip32-entropy'; +export type * from './get-bip32-public-key'; +export type * from './get-bip44-entropy'; +export type * from './get-client-status'; +export type * from './get-currency-rate'; +export type * from './get-entropy'; export * from './get-file'; -export * from './get-interface-context'; -export * from './get-interface-state'; -export * from './get-locale'; -export * from './get-preferences'; -export * from './get-snaps'; -export * from './get-state'; -export * from './invoke-keyring'; -export * from './invoke-snap'; -export * from './manage-accounts'; +export type * from './get-interface-context'; +export type * from './get-interface-state'; +export type * from './get-locale'; +export type * from './get-preferences'; +export type * from './get-snaps'; +export type * from './get-state'; +export type * from './invoke-keyring'; +export type * from './invoke-snap'; +export type * from './manage-accounts'; export * from './manage-state'; -export * from './methods'; +export type * from './methods'; export * from './notify'; -export * from './provider-request'; -export * from './request-snaps'; -export * from './update-interface'; -export * from './resolve-interface'; -export * from './schedule-background-event'; -export * from './cancel-background-event'; -export * from './get-background-events'; -export * from './set-state'; +export type * from './provider-request'; +export type * from './request-snaps'; +export type * from './update-interface'; +export type * from './resolve-interface'; +export type * from './schedule-background-event'; +export type * from './cancel-background-event'; +export type * from './get-background-events'; +export type * from './set-state'; diff --git a/packages/snaps-sdk/src/types/methods/methods.ts b/packages/snaps-sdk/src/types/methods/methods.ts index f73cb07090..b1203fc975 100644 --- a/packages/snaps-sdk/src/types/methods/methods.ts +++ b/packages/snaps-sdk/src/types/methods/methods.ts @@ -1,4 +1,3 @@ -import type { Method } from '../../internals'; import type { CancelBackgroundEventParams, CancelBackgroundEventResult, @@ -75,6 +74,7 @@ import type { UpdateInterfaceParams, UpdateInterfaceResult, } from './update-interface'; +import type { Method } from '../../internals'; /** * The methods that are available to the Snap. Each method is a tuple of the diff --git a/packages/snaps-sdk/src/types/snap.ts b/packages/snaps-sdk/src/types/snap.ts index b8379a6a4d..d183bd01b1 100644 --- a/packages/snaps-sdk/src/types/snap.ts +++ b/packages/snaps-sdk/src/types/snap.ts @@ -3,6 +3,10 @@ import type { SemVerVersion, Opaque } from '@metamask/utils'; import type { InitialPermissions } from './permissions'; export type SnapId = Opaque; + +// TODO: Either fix this lint violation or explain why it's necessary to +// ignore. +// eslint-disable-next-line @typescript-eslint/no-unused-vars declare const snapIdSymbol: unique symbol; export type Snap = { diff --git a/packages/snaps-sdk/src/ui/builder.ts b/packages/snaps-sdk/src/ui/builder.ts index 03514b2533..0bd6af7072 100644 --- a/packages/snaps-sdk/src/ui/builder.ts +++ b/packages/snaps-sdk/src/ui/builder.ts @@ -10,12 +10,10 @@ import type { NodeType } from './nodes'; * * @internal */ -type NodeBuilder = Omit< - Node, - 'type' -> extends Record - ? (...args: []) => Node - : (...args: [Omit] | NodeArrayType) => Node; +type NodeBuilder = + Omit extends Record + ? (...args: []) => Node + : (...args: [Omit] | NodeArrayType) => Node; /** * Map from an array of node keys to the corresponding array type. diff --git a/packages/snaps-sdk/src/ui/component.test.ts b/packages/snaps-sdk/src/ui/component.test.ts index a13de382c6..a9823d9ab1 100644 --- a/packages/snaps-sdk/src/ui/component.test.ts +++ b/packages/snaps-sdk/src/ui/component.test.ts @@ -1,17 +1,16 @@ import { assertIsComponent, isComponent } from './component'; -import type { Input, Form } from './components'; -import { - ButtonVariant, - type Button, - type Divider, - type Heading, - type Image, - type Panel, - type Spinner, - type Text, - ButtonType, - InputType, +import type { + Input, + Form, + Button, + Divider, + Heading, + Image, + Panel, + Spinner, + Text, } from './components'; +import { ButtonVariant, ButtonType, InputType } from './components'; import { NodeType } from './nodes'; describe('isComponent', () => { diff --git a/packages/snaps-sdk/src/ui/components/address.test.ts b/packages/snaps-sdk/src/ui/components/address.test.ts index 4e1a5e4de3..b44db058fb 100644 --- a/packages/snaps-sdk/src/ui/components/address.test.ts +++ b/packages/snaps-sdk/src/ui/components/address.test.ts @@ -1,5 +1,5 @@ -import { NodeType } from '../nodes'; import { address } from './address'; +import { NodeType } from '../nodes'; describe('address', () => { const MOCK_ADDRESS = '0x4bbeEB066eD09B7AEd07bF39EEe0460DFa261520'; diff --git a/packages/snaps-sdk/src/ui/components/button.test.ts b/packages/snaps-sdk/src/ui/components/button.test.ts index 70ee5e5be5..ab26fae879 100644 --- a/packages/snaps-sdk/src/ui/components/button.test.ts +++ b/packages/snaps-sdk/src/ui/components/button.test.ts @@ -1,5 +1,5 @@ -import { NodeType } from '../nodes'; import { ButtonType, ButtonVariant, button } from './button'; +import { NodeType } from '../nodes'; describe('button', () => { it('creates a button component', () => { diff --git a/packages/snaps-sdk/src/ui/components/copyable.test.ts b/packages/snaps-sdk/src/ui/components/copyable.test.ts index 75c01df185..e5bb0f8eb8 100644 --- a/packages/snaps-sdk/src/ui/components/copyable.test.ts +++ b/packages/snaps-sdk/src/ui/components/copyable.test.ts @@ -1,5 +1,5 @@ -import { NodeType } from '../nodes'; import { copyable } from './copyable'; +import { NodeType } from '../nodes'; describe('copyable', () => { it('creates a copyable component', () => { diff --git a/packages/snaps-sdk/src/ui/components/divider.test.ts b/packages/snaps-sdk/src/ui/components/divider.test.ts index 9ea1b9a5c0..806bc794f1 100644 --- a/packages/snaps-sdk/src/ui/components/divider.test.ts +++ b/packages/snaps-sdk/src/ui/components/divider.test.ts @@ -1,5 +1,5 @@ -import { NodeType } from '../nodes'; import { divider } from './divider'; +import { NodeType } from '../nodes'; describe('divider', () => { it('creates a divider component', () => { diff --git a/packages/snaps-sdk/src/ui/components/form.test.ts b/packages/snaps-sdk/src/ui/components/form.test.ts index 4ec9a11850..89334df6a6 100644 --- a/packages/snaps-sdk/src/ui/components/form.test.ts +++ b/packages/snaps-sdk/src/ui/components/form.test.ts @@ -1,6 +1,6 @@ -import { NodeType } from '../nodes'; import { form } from './form'; import { input } from './input'; +import { NodeType } from '../nodes'; describe('Form', () => { it('creates a form component', () => { diff --git a/packages/snaps-sdk/src/ui/components/form.ts b/packages/snaps-sdk/src/ui/components/form.ts index 5d9381a4e4..6aaed3c0ab 100644 --- a/packages/snaps-sdk/src/ui/components/form.ts +++ b/packages/snaps-sdk/src/ui/components/form.ts @@ -8,10 +8,10 @@ import { union, } from '@metamask/superstruct'; -import { createBuilder } from '../builder'; -import { NodeStruct, NodeType } from '../nodes'; import { ButtonStruct } from './button'; import { InputStruct } from './input'; +import { createBuilder } from '../builder'; +import { NodeStruct, NodeType } from '../nodes'; export const FormComponentStruct = union([InputStruct, ButtonStruct]); diff --git a/packages/snaps-sdk/src/ui/components/heading.test.ts b/packages/snaps-sdk/src/ui/components/heading.test.ts index d4bca3e616..5fdae38561 100644 --- a/packages/snaps-sdk/src/ui/components/heading.test.ts +++ b/packages/snaps-sdk/src/ui/components/heading.test.ts @@ -1,5 +1,5 @@ -import { NodeType } from '../nodes'; import { heading } from './heading'; +import { NodeType } from '../nodes'; describe('heading', () => { it('creates a heading component', () => { diff --git a/packages/snaps-sdk/src/ui/components/image.test.ts b/packages/snaps-sdk/src/ui/components/image.test.ts index 76619ec467..b27343bafc 100644 --- a/packages/snaps-sdk/src/ui/components/image.test.ts +++ b/packages/snaps-sdk/src/ui/components/image.test.ts @@ -1,5 +1,5 @@ -import { NodeType } from '../nodes'; import { image } from './image'; +import { NodeType } from '../nodes'; const MOCK_SVG = ''; diff --git a/packages/snaps-sdk/src/ui/components/input.test.ts b/packages/snaps-sdk/src/ui/components/input.test.ts index 87a0bfc0c3..629b9c7fdd 100644 --- a/packages/snaps-sdk/src/ui/components/input.test.ts +++ b/packages/snaps-sdk/src/ui/components/input.test.ts @@ -1,5 +1,5 @@ -import { NodeType } from '../nodes'; import { input, InputType } from './input'; +import { NodeType } from '../nodes'; describe('Input', () => { it('creates an input component', () => { diff --git a/packages/snaps-sdk/src/ui/components/input.ts b/packages/snaps-sdk/src/ui/components/input.ts index 1cc3d181a5..d58c98cd14 100644 --- a/packages/snaps-sdk/src/ui/components/input.ts +++ b/packages/snaps-sdk/src/ui/components/input.ts @@ -17,10 +17,8 @@ import { LiteralStruct, NodeType } from '../nodes'; * https://github.com/MetaMask/metamask-extension/main/ui/components/component-library/input/input.constants.js */ export enum InputType { - /* eslint-disable @typescript-eslint/no-shadow */ Text = 'text', Number = 'number', - /* eslint-enable @typescript-eslint/no-shadow */ Password = 'password', } diff --git a/packages/snaps-sdk/src/ui/components/panel.test.ts b/packages/snaps-sdk/src/ui/components/panel.test.ts index 2ce14fec68..7301b59a97 100644 --- a/packages/snaps-sdk/src/ui/components/panel.test.ts +++ b/packages/snaps-sdk/src/ui/components/panel.test.ts @@ -1,8 +1,8 @@ import { is } from '@metamask/superstruct'; -import { NodeType } from '../nodes'; import { heading } from './heading'; import { panel, PanelStruct, ParentStruct } from './panel'; +import { NodeType } from '../nodes'; describe('ParentStruct', () => { it('validates that a value is a node with children', () => { diff --git a/packages/snaps-sdk/src/ui/components/panel.ts b/packages/snaps-sdk/src/ui/components/panel.ts index 90b8d71ae5..7832039d78 100644 --- a/packages/snaps-sdk/src/ui/components/panel.ts +++ b/packages/snaps-sdk/src/ui/components/panel.ts @@ -1,9 +1,6 @@ import type { Infer, Struct } from '@metamask/superstruct'; import { array, assign, lazy, literal, object } from '@metamask/superstruct'; -import { typedUnion } from '../../internals'; -import { createBuilder } from '../builder'; -import { NodeStruct, NodeType } from '../nodes'; import { AddressStruct } from './address'; import { ButtonStruct } from './button'; import { CopyableStruct } from './copyable'; @@ -15,6 +12,9 @@ import { InputStruct } from './input'; import { RowStruct } from './row'; import { SpinnerStruct } from './spinner'; import { TextStruct } from './text'; +import { typedUnion } from '../../internals'; +import { createBuilder } from '../builder'; +import { NodeStruct, NodeType } from '../nodes'; /** * @internal diff --git a/packages/snaps-sdk/src/ui/components/row.test.ts b/packages/snaps-sdk/src/ui/components/row.test.ts index ac928c805b..5bcf4a52ce 100644 --- a/packages/snaps-sdk/src/ui/components/row.test.ts +++ b/packages/snaps-sdk/src/ui/components/row.test.ts @@ -1,6 +1,6 @@ -import { NodeType } from '../nodes'; import { RowVariant, row } from './row'; import { text } from './text'; +import { NodeType } from '../nodes'; describe('row', () => { it('creates a row component', () => { diff --git a/packages/snaps-sdk/src/ui/components/row.ts b/packages/snaps-sdk/src/ui/components/row.ts index 80a886fca8..4d2c665edd 100644 --- a/packages/snaps-sdk/src/ui/components/row.ts +++ b/packages/snaps-sdk/src/ui/components/row.ts @@ -8,12 +8,12 @@ import { union, } from '@metamask/superstruct'; -import { enumValue } from '../../internals'; -import { createBuilder } from '../builder'; -import { LiteralStruct, NodeType } from '../nodes'; import { AddressStruct } from './address'; import { ImageStruct } from './image'; import { TextStruct } from './text'; +import { enumValue } from '../../internals'; +import { createBuilder } from '../builder'; +import { LiteralStruct, NodeType } from '../nodes'; export enum RowVariant { Default = 'default', diff --git a/packages/snaps-sdk/src/ui/components/spinner.test.ts b/packages/snaps-sdk/src/ui/components/spinner.test.ts index 4111f2bd8f..8d8e53344d 100644 --- a/packages/snaps-sdk/src/ui/components/spinner.test.ts +++ b/packages/snaps-sdk/src/ui/components/spinner.test.ts @@ -1,5 +1,5 @@ -import { NodeType } from '../nodes'; import { spinner } from './spinner'; +import { NodeType } from '../nodes'; describe('spinner', () => { it('creates a spinner component', () => { diff --git a/packages/snaps-sdk/src/ui/components/text.test.ts b/packages/snaps-sdk/src/ui/components/text.test.ts index 53618e299f..765512dd9e 100644 --- a/packages/snaps-sdk/src/ui/components/text.test.ts +++ b/packages/snaps-sdk/src/ui/components/text.test.ts @@ -1,5 +1,5 @@ -import { NodeType } from '../nodes'; import { text } from './text'; +import { NodeType } from '../nodes'; describe('text', () => { it('creates a text component', () => { diff --git a/packages/snaps-sdk/src/ui/nodes.ts b/packages/snaps-sdk/src/ui/nodes.ts index 74e40a232d..97e37abe3b 100644 --- a/packages/snaps-sdk/src/ui/nodes.ts +++ b/packages/snaps-sdk/src/ui/nodes.ts @@ -12,7 +12,6 @@ export enum NodeType { Heading = 'heading', Panel = 'panel', Spinner = 'spinner', - // eslint-disable-next-line @typescript-eslint/no-shadow Text = 'text', Image = 'image', Row = 'row', diff --git a/packages/snaps-simulation/.eslintrc.js b/packages/snaps-simulation/.eslintrc.js deleted file mode 100644 index c3b7e0a34a..0000000000 --- a/packages/snaps-simulation/.eslintrc.js +++ /dev/null @@ -1,21 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, - - overrides: [ - { - files: ['*.test.ts'], - rules: { - 'jest/expect-expect': [ - 'error', - { - assertFunctionNames: ['expect', 'expectTypeOf'], - }, - ], - }, - }, - ], -}; diff --git a/packages/snaps-simulation/package.json b/packages/snaps-simulation/package.json index 94eb39fcaf..a3d8dfd1b0 100644 --- a/packages/snaps-simulation/package.json +++ b/packages/snaps-simulation/package.json @@ -43,9 +43,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../scripts/since-latest-release.sh", "test": "jest --reporters=jest-silent-reporter", @@ -77,34 +77,20 @@ }, "devDependencies": { "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@ts-bridge/cli": "^0.6.1", "@types/express": "^4.17.17", "@types/jest": "^27.5.1", "@types/mime": "^3.0.0", "@types/readable-stream": "^4.0.15", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "express": "^4.18.2", "jest": "^29.0.2", "jest-it-up": "^2.0.0", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "ts-jest": "^29.1.1", "typescript": "~5.3.3" }, diff --git a/packages/snaps-simulation/src/files.test.ts b/packages/snaps-simulation/src/files.test.ts index 1b7fefc852..82a41d1890 100644 --- a/packages/snaps-simulation/src/files.test.ts +++ b/packages/snaps-simulation/src/files.test.ts @@ -57,7 +57,7 @@ describe('getFileSize', () => { it('returns the file size for a file path', async () => { expect( await getFileSize(resolve(__dirname, './test-utils/snap/snap.js')), - ).toBe(112); + ).toBe(73); }); }); @@ -73,9 +73,9 @@ describe('getFileToUpload', () => { expect(file).toStrictEqual({ name: 'bar.js', contentType: 'application/foo', - size: 112, + size: 73, contents: - 'Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUKY29uc29sZS5sb2coJ0hlbGxvLCB3b3JsZCEnKTsKCm1vZHVsZS5leHBvcnRzLm9uUnBjUmVxdWVzdCA9ICgpID0+IG51bGw7Cg==', + 'Y29uc29sZS5sb2coJ0hlbGxvLCB3b3JsZCEnKTsKCm1vZHVsZS5leHBvcnRzLm9uUnBjUmVxdWVzdCA9ICgpID0+IG51bGw7Cg==', }); }); @@ -87,9 +87,9 @@ describe('getFileToUpload', () => { expect(file).toStrictEqual({ name: 'bar.js', contentType: 'application/javascript', - size: 112, + size: 73, contents: - 'Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUKY29uc29sZS5sb2coJ0hlbGxvLCB3b3JsZCEnKTsKCm1vZHVsZS5leHBvcnRzLm9uUnBjUmVxdWVzdCA9ICgpID0+IG51bGw7Cg==', + 'Y29uc29sZS5sb2coJ0hlbGxvLCB3b3JsZCEnKTsKCm1vZHVsZS5leHBvcnRzLm9uUnBjUmVxdWVzdCA9ICgpID0+IG51bGw7Cg==', }); }); @@ -99,9 +99,9 @@ describe('getFileToUpload', () => { expect(file).toStrictEqual({ name: 'snap.js', contentType: 'application/javascript', - size: 112, + size: 73, contents: - 'Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUKY29uc29sZS5sb2coJ0hlbGxvLCB3b3JsZCEnKTsKCm1vZHVsZS5leHBvcnRzLm9uUnBjUmVxdWVzdCA9ICgpID0+IG51bGw7Cg==', + 'Y29uc29sZS5sb2coJ0hlbGxvLCB3b3JsZCEnKTsKCm1vZHVsZS5leHBvcnRzLm9uUnBjUmVxdWVzdCA9ICgpID0+IG51bGw7Cg==', }); }); diff --git a/packages/snaps-simulation/src/helpers.test.tsx b/packages/snaps-simulation/src/helpers.test.tsx index adc96d41d4..7bbefbc643 100644 --- a/packages/snaps-simulation/src/helpers.test.tsx +++ b/packages/snaps-simulation/src/helpers.test.tsx @@ -712,7 +712,6 @@ describe('helpers', () => { `, manifest: getSnapManifest({ initialPermissions: { - // eslint-disable-next-line @typescript-eslint/naming-convention 'endowment:ethereum-provider': {}, }, }), diff --git a/packages/snaps-simulation/src/helpers.ts b/packages/snaps-simulation/src/helpers.ts index 2422ea8ccc..485bc9ad29 100644 --- a/packages/snaps-simulation/src/helpers.ts +++ b/packages/snaps-simulation/src/helpers.ts @@ -254,6 +254,8 @@ export function getHelpers({ return response; }; + // This can't be async because it returns a `SnapRequest`. + // eslint-disable-next-line @typescript-eslint/promise-function-async const onCronjob = (request: CronjobOptions) => { log('Running cronjob %o.', options); @@ -268,6 +270,8 @@ export function getHelpers({ }); }; + // This can't be async because it returns a `SnapRequest`. + // eslint-disable-next-line @typescript-eslint/promise-function-async const onKeyringRequest = (request: KeyringOptions) => { log('Sending keyring request %o.', request); @@ -283,6 +287,8 @@ export function getHelpers({ }; return { + // This can't be async because it returns a `SnapRequest`. + // eslint-disable-next-line @typescript-eslint/promise-function-async request: (request) => { log('Sending request %o.', request); @@ -302,6 +308,8 @@ export function getHelpers({ onKeyringRequest, + // This can't be async because it returns a `SnapRequest`. + // eslint-disable-next-line @typescript-eslint/promise-function-async onInstall: (request?: Pick) => { log('Running onInstall handler.'); @@ -319,6 +327,8 @@ export function getHelpers({ }); }, + // This can't be async because it returns a `SnapRequest`. + // eslint-disable-next-line @typescript-eslint/promise-function-async onUpdate: (request?: Pick) => { log('Running onUpdate handler.'); diff --git a/packages/snaps-simulation/src/index.ts b/packages/snaps-simulation/src/index.ts index f30f971e70..93ee0d0443 100644 --- a/packages/snaps-simulation/src/index.ts +++ b/packages/snaps-simulation/src/index.ts @@ -7,5 +7,5 @@ export * from './request'; export * from './simulation'; export * from './store'; export * from './structs'; -export * from './types'; +export type * from './types'; export * from './validation'; diff --git a/packages/snaps-simulation/src/interface.ts b/packages/snaps-simulation/src/interface.ts index d3c4872f56..c5d2766275 100644 --- a/packages/snaps-simulation/src/interface.ts +++ b/packages/snaps-simulation/src/interface.ts @@ -10,8 +10,11 @@ import type { File, } from '@metamask/snaps-sdk'; import { DialogType, UserInputEventType, assert } from '@metamask/snaps-sdk'; -import type { FooterElement } from '@metamask/snaps-sdk/jsx'; -import { type FormElement, type JSXElement } from '@metamask/snaps-sdk/jsx'; +import type { + FooterElement, + FormElement, + JSXElement, +} from '@metamask/snaps-sdk/jsx'; import { HandlerType, getJsxChildren, diff --git a/packages/snaps-simulation/src/methods/hooks/get-preferences.test.ts b/packages/snaps-simulation/src/methods/hooks/get-preferences.test.ts index 0993566c01..727c0b0751 100644 --- a/packages/snaps-simulation/src/methods/hooks/get-preferences.test.ts +++ b/packages/snaps-simulation/src/methods/hooks/get-preferences.test.ts @@ -1,5 +1,5 @@ -import { getMockOptions } from '../../test-utils/options'; import { getGetPreferencesMethodImplementation } from './get-preferences'; +import { getMockOptions } from '../../test-utils/options'; describe('getGetPreferencesMethodImplementation', () => { it('returns the implementation of the `getPreferences` hook', async () => { diff --git a/packages/snaps-simulation/src/methods/hooks/interface.test.ts b/packages/snaps-simulation/src/methods/hooks/interface.test.ts index 59bbe419d7..143c15de96 100644 --- a/packages/snaps-simulation/src/methods/hooks/interface.test.ts +++ b/packages/snaps-simulation/src/methods/hooks/interface.test.ts @@ -3,14 +3,14 @@ import { text } from '@metamask/snaps-sdk'; import { getJsxElementFromComponent } from '@metamask/snaps-utils'; import { MOCK_SNAP_ID } from '@metamask/snaps-utils/test-utils'; -import { - getRestrictedSnapInterfaceControllerMessenger, - getRootControllerMessenger, -} from '../../test-utils'; import { getCreateInterfaceImplementation, getGetInterfaceImplementation, } from './interface'; +import { + getRestrictedSnapInterfaceControllerMessenger, + getRootControllerMessenger, +} from '../../test-utils'; describe('getCreateInterfaceImplementation', () => { it('returns the implementation of the `createInterface` hook', async () => { diff --git a/packages/snaps-simulation/src/methods/hooks/notifications.test.ts b/packages/snaps-simulation/src/methods/hooks/notifications.test.ts index 0288eb90dd..7b5cdd2359 100644 --- a/packages/snaps-simulation/src/methods/hooks/notifications.test.ts +++ b/packages/snaps-simulation/src/methods/hooks/notifications.test.ts @@ -1,11 +1,11 @@ import { NotificationType } from '@metamask/snaps-sdk'; -import { createStore } from '../../store'; -import { getMockOptions } from '../../test-utils'; import { getShowInAppNotificationImplementation, getShowNativeNotificationImplementation, } from './notifications'; +import { createStore } from '../../store'; +import { getMockOptions } from '../../test-utils'; describe('getShowNativeNotificationImplementation', () => { it('returns the implementation of the `showNativeNotification` hook', async () => { diff --git a/packages/snaps-simulation/src/methods/hooks/permitted/state.test.ts b/packages/snaps-simulation/src/methods/hooks/permitted/state.test.ts index c92fdf0a8a..7173387c66 100644 --- a/packages/snaps-simulation/src/methods/hooks/permitted/state.test.ts +++ b/packages/snaps-simulation/src/methods/hooks/permitted/state.test.ts @@ -1,10 +1,10 @@ -import { createStore, getState, setState } from '../../../store'; -import { getMockOptions } from '../../../test-utils'; import { getPermittedClearSnapStateMethodImplementation, getPermittedGetSnapStateMethodImplementation, getPermittedUpdateSnapStateMethodImplementation, } from './state'; +import { createStore, getState, setState } from '../../../store'; +import { getMockOptions } from '../../../test-utils'; describe('getPermittedGetSnapStateMethodImplementation', () => { it('returns the implementation of the `getSnapState` hook', async () => { diff --git a/packages/snaps-simulation/src/methods/hooks/request-user-approval.test.ts b/packages/snaps-simulation/src/methods/hooks/request-user-approval.test.ts index 2623b08c3c..b1b8c3a37e 100644 --- a/packages/snaps-simulation/src/methods/hooks/request-user-approval.test.ts +++ b/packages/snaps-simulation/src/methods/hooks/request-user-approval.test.ts @@ -1,9 +1,9 @@ import { DIALOG_APPROVAL_TYPES } from '@metamask/snaps-rpc-methods'; import { DialogType } from '@metamask/snaps-sdk'; +import { getRequestUserApprovalImplementation } from './request-user-approval'; import { createStore, resolveInterface } from '../../store'; import { getMockOptions } from '../../test-utils'; -import { getRequestUserApprovalImplementation } from './request-user-approval'; describe('getShowUserApprovalImplementation', () => { it('returns the implementation of the `requestUserApproval` hook', async () => { diff --git a/packages/snaps-simulation/src/methods/hooks/state.test.ts b/packages/snaps-simulation/src/methods/hooks/state.test.ts index a469de577c..b7a00f44cb 100644 --- a/packages/snaps-simulation/src/methods/hooks/state.test.ts +++ b/packages/snaps-simulation/src/methods/hooks/state.test.ts @@ -1,12 +1,12 @@ import { MOCK_SNAP_ID } from '@metamask/snaps-utils/test-utils'; -import { createStore, getState, setState } from '../../store'; -import { getMockOptions } from '../../test-utils'; import { getClearSnapStateMethodImplementation, getGetSnapStateMethodImplementation, getUpdateSnapStateMethodImplementation, } from './state'; +import { createStore, getState, setState } from '../../store'; +import { getMockOptions } from '../../test-utils'; describe('getGetSnapStateMethodImplementation', () => { it('returns the implementation of the `getSnapState` hook', async () => { diff --git a/packages/snaps-simulation/src/methods/specifications.test.ts b/packages/snaps-simulation/src/methods/specifications.test.ts index d50248d96f..e04839afe9 100644 --- a/packages/snaps-simulation/src/methods/specifications.test.ts +++ b/packages/snaps-simulation/src/methods/specifications.test.ts @@ -4,15 +4,15 @@ import { MOCK_SNAP_ID, } from '@metamask/snaps-utils/test-utils'; -import { getControllers, registerSnap } from '../controllers'; -import type { RestrictedMiddlewareHooks } from '../simulation'; -import { getMockOptions } from '../test-utils/options'; import { asyncResolve, getEndowments, getPermissionSpecifications, resolve, } from './specifications'; +import { getControllers, registerSnap } from '../controllers'; +import type { RestrictedMiddlewareHooks } from '../simulation'; +import { getMockOptions } from '../test-utils/options'; const MOCK_HOOKS: RestrictedMiddlewareHooks = { getMnemonic: jest.fn(), @@ -334,7 +334,6 @@ describe('getEndowments', () => { MOCK_SNAP_ID, getSnapManifest({ initialPermissions: { - // eslint-disable-next-line @typescript-eslint/naming-convention 'endowment:network-access': {}, }, }), diff --git a/packages/snaps-simulation/src/methods/specifications.ts b/packages/snaps-simulation/src/methods/specifications.ts index ed08afeada..38c6346779 100644 --- a/packages/snaps-simulation/src/methods/specifications.ts +++ b/packages/snaps-simulation/src/methods/specifications.ts @@ -7,9 +7,6 @@ import { import type { SnapId } from '@metamask/snaps-sdk'; import { DEFAULT_ENDOWMENTS } from '@metamask/snaps-utils'; -import type { RootControllerMessenger } from '../controllers'; -import type { SimulationOptions } from '../options'; -import type { RunSagaFunction } from '../store'; import { EXCLUDED_SNAP_ENDOWMENTS, EXCLUDED_SNAP_PERMISSIONS, @@ -25,6 +22,9 @@ import { getGetInterfaceImplementation, getRequestUserApprovalImplementation, } from './hooks'; +import type { RootControllerMessenger } from '../controllers'; +import type { SimulationOptions } from '../options'; +import type { RunSagaFunction } from '../store'; export type PermissionSpecificationsHooks = { /** diff --git a/packages/snaps-simulation/src/middleware/engine.test.ts b/packages/snaps-simulation/src/middleware/engine.test.ts index b506475125..86f96fcba7 100644 --- a/packages/snaps-simulation/src/middleware/engine.test.ts +++ b/packages/snaps-simulation/src/middleware/engine.test.ts @@ -1,6 +1,6 @@ +import { createJsonRpcEngine } from './engine'; import { createStore } from '../store'; import { getMockOptions } from '../test-utils'; -import { createJsonRpcEngine } from './engine'; describe('createJsonRpcEngine', () => { it('creates a JSON-RPC engine', async () => { diff --git a/packages/snaps-simulation/src/middleware/engine.ts b/packages/snaps-simulation/src/middleware/engine.ts index 20a39c3480..ab3639d747 100644 --- a/packages/snaps-simulation/src/middleware/engine.ts +++ b/packages/snaps-simulation/src/middleware/engine.ts @@ -5,14 +5,14 @@ import type { RestrictedMethodParameters } from '@metamask/permission-controller import { createSnapsMethodMiddleware } from '@metamask/snaps-rpc-methods'; import type { Json } from '@metamask/utils'; +import { createInternalMethodsMiddleware } from './internal-methods'; +import { createMockMiddleware } from './mock'; import { DEFAULT_JSON_RPC_ENDPOINT } from '../constants'; import type { PermittedMiddlewareHooks, RestrictedMiddlewareHooks, } from '../simulation'; import type { Store } from '../store'; -import { createInternalMethodsMiddleware } from './internal-methods'; -import { createMockMiddleware } from './mock'; export type CreateJsonRpcEngineOptions = { store: Store; diff --git a/packages/snaps-simulation/src/middleware/internal-methods/account.test.ts b/packages/snaps-simulation/src/middleware/internal-methods/account.test.ts index f6101a1727..0f719e68d4 100644 --- a/packages/snaps-simulation/src/middleware/internal-methods/account.test.ts +++ b/packages/snaps-simulation/src/middleware/internal-methods/account.test.ts @@ -1,8 +1,8 @@ import { mnemonicPhraseToBytes } from '@metamask/key-tree'; import type { PendingJsonRpcResponse } from '@metamask/utils'; -import { DEFAULT_SRP } from '../../constants'; import { getAccountsHandler } from './accounts'; +import { DEFAULT_SRP } from '../../constants'; describe('getAccountsHandler', () => { it('returns the first address for the selected secret recovery phrase', async () => { diff --git a/packages/snaps-simulation/src/middleware/mock.test.ts b/packages/snaps-simulation/src/middleware/mock.test.ts index f9e675f60b..6c5c37f1af 100644 --- a/packages/snaps-simulation/src/middleware/mock.test.ts +++ b/packages/snaps-simulation/src/middleware/mock.test.ts @@ -1,9 +1,9 @@ import { JsonRpcEngine } from '@metamask/json-rpc-engine'; +import { createMockMiddleware } from './mock'; import { createStore } from '../store'; import { addJsonRpcMock } from '../store/mocks'; import { getMockOptions } from '../test-utils'; -import { createMockMiddleware } from './mock'; describe('createMockMiddleware', () => { it('mocks a JSON-RPC method', async () => { diff --git a/packages/snaps-simulation/src/simulation.test.ts b/packages/snaps-simulation/src/simulation.test.ts index f6d0f186d6..d40a9291a4 100644 --- a/packages/snaps-simulation/src/simulation.test.ts +++ b/packages/snaps-simulation/src/simulation.test.ts @@ -584,7 +584,6 @@ describe('getPermittedHooks', () => { }); it('returns the `resolveInterface` hook', async () => { - // eslint-disable-next-line no-new const snapInterfaceController = new SnapInterfaceController({ messenger: getRestrictedSnapInterfaceControllerMessenger(controllerMessenger), diff --git a/packages/snaps-simulation/src/simulation.ts b/packages/snaps-simulation/src/simulation.ts index 6abbadede3..48275c6bb7 100644 --- a/packages/snaps-simulation/src/simulation.ts +++ b/packages/snaps-simulation/src/simulation.ts @@ -75,20 +75,21 @@ export type ExecutionServiceOptions< * @template Service - The type of the execution service. */ export type InstallSnapOptions< - Service extends new (...args: any[]) => InstanceType< - typeof AbstractExecutionService - >, -> = ExecutionServiceOptions extends Record - ? { - executionService: Service; - executionServiceOptions?: ExecutionServiceOptions; - options?: SimulationUserOptions; - } - : { - executionService: Service; - executionServiceOptions: ExecutionServiceOptions; - options?: SimulationUserOptions; - }; + Service extends new ( + ...args: any[] + ) => InstanceType>, +> = + ExecutionServiceOptions extends Record + ? { + executionService: Service; + executionServiceOptions?: ExecutionServiceOptions; + options?: SimulationUserOptions; + } + : { + executionService: Service; + executionServiceOptions: ExecutionServiceOptions; + options?: SimulationUserOptions; + }; export type InstalledSnap = { snapId: SnapId; @@ -253,9 +254,9 @@ export type PermittedMiddlewareHooks = { * @template Service - The type of the execution service. */ export async function installSnap< - Service extends new (...args: any[]) => InstanceType< - typeof AbstractExecutionService - >, + Service extends new ( + ...args: any[] + ) => InstanceType, >( snapId: SnapId, { diff --git a/packages/snaps-simulation/src/store/store.test.ts b/packages/snaps-simulation/src/store/store.test.ts index 76b4f5484e..70e13ba0a2 100644 --- a/packages/snaps-simulation/src/store/store.test.ts +++ b/packages/snaps-simulation/src/store/store.test.ts @@ -1,5 +1,5 @@ -import { getMockOptions } from '../test-utils'; import { createStore } from './store'; +import { getMockOptions } from '../test-utils'; describe('createStore', () => { it('creates a Redux store', () => { diff --git a/packages/snaps-simulation/src/store/store.ts b/packages/snaps-simulation/src/store/store.ts index 20d3780d9a..b2f6f49af4 100644 --- a/packages/snaps-simulation/src/store/store.ts +++ b/packages/snaps-simulation/src/store/store.ts @@ -1,11 +1,11 @@ import { configureStore } from '@reduxjs/toolkit'; import createSagaMiddleware from 'redux-saga'; -import type { SimulationOptions } from '../options'; import { mocksSlice } from './mocks'; import { notificationsSlice } from './notifications'; import { setState, stateSlice } from './state'; import { uiSlice } from './ui'; +import type { SimulationOptions } from '../options'; /** * Create a Redux store. diff --git a/packages/snaps-simulation/src/structs.test.tsx b/packages/snaps-simulation/src/structs.test.tsx index 702170a925..d19c8ba61a 100644 --- a/packages/snaps-simulation/src/structs.test.tsx +++ b/packages/snaps-simulation/src/structs.test.tsx @@ -29,9 +29,9 @@ const INVALID_VALUES = [ 'a', '0', '1', - // eslint-disable-next-line @typescript-eslint/no-empty-function + // eslint-disable-next-line no-empty-function () => {}, - // eslint-disable-next-line @typescript-eslint/no-empty-function + // eslint-disable-next-line no-empty-function function () {}, Symbol('a'), ]; diff --git a/packages/snaps-simulation/src/test-utils/snap/snap.js b/packages/snaps-simulation/src/test-utils/snap/snap.js index a033fc24c7..8a5e7848e1 100644 --- a/packages/snaps-simulation/src/test-utils/snap/snap.js +++ b/packages/snaps-simulation/src/test-utils/snap/snap.js @@ -1,4 +1,3 @@ -// eslint-disable-next-line no-console console.log('Hello, world!'); module.exports.onRpcRequest = () => null; diff --git a/packages/snaps-simulator/.eslintrc.js b/packages/snaps-simulator/.eslintrc.js deleted file mode 100644 index 1f32326e77..0000000000 --- a/packages/snaps-simulator/.eslintrc.js +++ /dev/null @@ -1,79 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, - - rules: { - // TODO: Investigate why this is needed. - 'node/no-unpublished-import': 'off', - 'node/no-unpublished-require': 'off', - }, - - overrides: [ - { - files: ['**/*.ts', '**/*.tsx'], - extends: [ - 'plugin:react/recommended', - 'plugin:react/jsx-runtime', - 'plugin:react-hooks/recommended', - ], - rules: { - '@typescript-eslint/no-shadow': [ - 'error', - { - allow: ['Text'], - }, - ], - - 'react/display-name': 'off', - 'react/prop-types': 'off', - }, - settings: { - react: { - version: 'detect', - }, - }, - }, - - { - files: ['**/*.test.ts', '**/*.test.tsx', '**/*.test.js'], - extends: [ - '@metamask/eslint-config-jest', - '@metamask/eslint-config-nodejs', - ], - rules: { - 'no-restricted-globals': 'off', - 'jest/expect-expect': [ - 'error', - { - assertFunctionNames: ['expect', 'expectSaga'], - }, - ], - - // TODO: Investigate why this is needed. - 'node/no-unpublished-import': 'off', - 'node/no-unpublished-require': 'off', - }, - }, - - { - files: ['webpack.config.ts'], - extends: ['@metamask/eslint-config-nodejs'], - rules: { - // TODO: Investigate why this is needed. - 'node/no-unpublished-import': 'off', - 'node/no-unpublished-require': 'off', - }, - }, - ], - - ignorePatterns: [ - '!.eslintrc.js', - '!.prettierrc.js', - 'dist/', - '.yarn/', - 'vendor/', - ], -}; diff --git a/packages/snaps-simulator/package.json b/packages/snaps-simulator/package.json index afc0d6bbae..e530d61a90 100644 --- a/packages/snaps-simulator/package.json +++ b/packages/snaps-simulator/package.json @@ -28,9 +28,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:constraints --fix && yarn lint:misc --write && yarn changelog:validate", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ../../.gitignore", "since-latest-release": "../../scripts/since-latest-release.sh", "start": "webpack serve --config-name main --mode development", "start:e2e": "webpack serve --config-name test --mode development", @@ -70,6 +70,7 @@ "lodash.memoize": "^4.1.2", "lodash.throttle": "^4.1.1", "monaco-editor": "^0.38.0", + "prettier-2": "npm:prettier@^2.8.8", "react": "^18.2.0", "react-dnd": "^16.0.1", "react-dom": "^18.2.0", @@ -81,12 +82,7 @@ "redux-saga": "^1.2.3" }, "devDependencies": { - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-browser": "^11.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.10", "@redux-saga/is": "^1.1.3", "@redux-saga/symbols": "^1.1.3", @@ -102,23 +98,12 @@ "@types/react": "^18.2.5", "@types/react-dom": "^18.2.3", "@types/webpack-env": "^1.18.1", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", "assert": "^2.0.0", "copy-webpack-plugin": "^11.0.0", "css-loader": "^6.7.3", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-react": "^7.32.2", - "eslint-plugin-react-hooks": "^4.6.0", + "eslint": "^9.11.0", "express": "^4.18.2", "favicons": "^7.1.2", "favicons-webpack-plugin": "^6.0.0", @@ -129,8 +114,7 @@ "jest-it-up": "^2.0.0", "jest-silent-reporter": "^0.6.0", "monaco-editor-webpack-plugin": "^7.0.1", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "process": "^0.11.10", "react-refresh": "^0.14.0", "readable-stream": "^3.6.2", @@ -142,7 +126,7 @@ "ts-node": "^10.9.1", "tsconfig-paths-webpack-plugin": "^4.0.1", "typescript": "~5.3.3", - "webpack": "^5.88.0", + "webpack": "^5.97.1", "webpack-cli": "^5.1.4", "webpack-dev-server": "^4.15.1", "webpack-merge": "^5.9.0" diff --git a/packages/snaps-simulator/src/components/Author.test.tsx b/packages/snaps-simulator/src/components/Author.test.tsx index 1d993673a6..add0e148f6 100644 --- a/packages/snaps-simulator/src/components/Author.test.tsx +++ b/packages/snaps-simulator/src/components/Author.test.tsx @@ -1,5 +1,5 @@ -import { render } from '../utils'; import { Author } from './Author'; +import { render } from '../utils'; describe('Author', () => { it('renders', () => { diff --git a/packages/snaps-simulator/src/components/Editor.tsx b/packages/snaps-simulator/src/components/Editor.tsx index c1a91bfbc4..6d94ea859a 100644 --- a/packages/snaps-simulator/src/components/Editor.tsx +++ b/packages/snaps-simulator/src/components/Editor.tsx @@ -33,7 +33,6 @@ export const Editor: FunctionComponent = ({ inherit: true, rules: [], colors: { - // eslint-disable-next-line @typescript-eslint/naming-convention 'editor.background': '#24272A', }, }); diff --git a/packages/snaps-simulator/src/components/Icon.test.tsx b/packages/snaps-simulator/src/components/Icon.test.tsx index 3bf6f3055a..ffe8044867 100644 --- a/packages/snaps-simulator/src/components/Icon.test.tsx +++ b/packages/snaps-simulator/src/components/Icon.test.tsx @@ -1,5 +1,5 @@ -import { render } from '../utils'; import { Icon } from './Icon'; +import { render } from '../utils'; describe('Icon', () => { it('renders', () => { diff --git a/packages/snaps-simulator/src/components/Link.test.tsx b/packages/snaps-simulator/src/components/Link.test.tsx index 8c3e2ada82..1bd0890388 100644 --- a/packages/snaps-simulator/src/components/Link.test.tsx +++ b/packages/snaps-simulator/src/components/Link.test.tsx @@ -1,5 +1,5 @@ -import { render } from '../utils'; import { Link } from './Link'; +import { render } from '../utils'; describe('Link', () => { it('renders', () => { diff --git a/packages/snaps-simulator/src/components/Logo.test.tsx b/packages/snaps-simulator/src/components/Logo.test.tsx index 4fccc9ea7c..fe0947593d 100644 --- a/packages/snaps-simulator/src/components/Logo.test.tsx +++ b/packages/snaps-simulator/src/components/Logo.test.tsx @@ -1,5 +1,5 @@ -import { render } from '../utils'; import { Logo } from './Logo'; +import { render } from '../utils'; describe('Logo', () => { it('renders', () => { diff --git a/packages/snaps-simulator/src/components/Prefill.test.tsx b/packages/snaps-simulator/src/components/Prefill.test.tsx index 5a18da88a4..cea5a5b316 100644 --- a/packages/snaps-simulator/src/components/Prefill.test.tsx +++ b/packages/snaps-simulator/src/components/Prefill.test.tsx @@ -1,5 +1,5 @@ -import { render } from '../utils'; import { Prefill } from './Prefill'; +import { render } from '../utils'; describe('Prefill', () => { it('renders', () => { diff --git a/packages/snaps-simulator/src/components/SnapIcon.test.tsx b/packages/snaps-simulator/src/components/SnapIcon.test.tsx index 4b6e93455c..c8bb2615b0 100644 --- a/packages/snaps-simulator/src/components/SnapIcon.test.tsx +++ b/packages/snaps-simulator/src/components/SnapIcon.test.tsx @@ -1,5 +1,5 @@ -import { render } from '../utils'; import { SnapIcon } from './SnapIcon'; +import { render } from '../utils'; describe('SnapIcon', () => { it('renders', () => { diff --git a/packages/snaps-simulator/src/components/SnapIcon.tsx b/packages/snaps-simulator/src/components/SnapIcon.tsx index f81a86e0ec..f986b75171 100644 --- a/packages/snaps-simulator/src/components/SnapIcon.tsx +++ b/packages/snaps-simulator/src/components/SnapIcon.tsx @@ -1,9 +1,9 @@ import { Avatar, Box } from '@chakra-ui/react'; import type { FunctionComponent } from 'react'; +import { Icon } from './Icon'; import { getIcon } from '../features'; import { useSelector } from '../hooks'; -import { Icon } from './Icon'; export type SnapIconProps = { snapName: string; diff --git a/packages/snaps-simulator/src/components/Window.test.tsx b/packages/snaps-simulator/src/components/Window.test.tsx index 5285dedbf1..2861bf361f 100644 --- a/packages/snaps-simulator/src/components/Window.test.tsx +++ b/packages/snaps-simulator/src/components/Window.test.tsx @@ -1,5 +1,5 @@ -import { render } from '../utils'; import { Window } from './Window'; +import { render } from '../utils'; describe('Window', () => { it('renders', () => { diff --git a/packages/snaps-simulator/src/components/dialogs/AlertDialog.test.tsx b/packages/snaps-simulator/src/components/dialogs/AlertDialog.test.tsx index a22e2a56ff..791ac581eb 100644 --- a/packages/snaps-simulator/src/components/dialogs/AlertDialog.test.tsx +++ b/packages/snaps-simulator/src/components/dialogs/AlertDialog.test.tsx @@ -1,7 +1,7 @@ import { Box } from '@metamask/snaps-sdk/jsx'; -import { render } from '../../utils'; import { AlertDialog } from './AlertDialog'; +import { render } from '../../utils'; describe('AlertDialog', () => { it('renders', () => { diff --git a/packages/snaps-simulator/src/components/dialogs/ConfirmationDialog.test.tsx b/packages/snaps-simulator/src/components/dialogs/ConfirmationDialog.test.tsx index ed5dd0a580..63c7f2b621 100644 --- a/packages/snaps-simulator/src/components/dialogs/ConfirmationDialog.test.tsx +++ b/packages/snaps-simulator/src/components/dialogs/ConfirmationDialog.test.tsx @@ -1,7 +1,7 @@ import { Box } from '@metamask/snaps-sdk/jsx'; -import { render } from '../../utils'; import { ConfirmationDialog } from './ConfirmationDialog'; +import { render } from '../../utils'; describe('ConfirmationDialog', () => { it('renders', () => { diff --git a/packages/snaps-simulator/src/components/dialogs/PromptDialog.test.tsx b/packages/snaps-simulator/src/components/dialogs/PromptDialog.test.tsx index b5b3fd4232..aa3d072840 100644 --- a/packages/snaps-simulator/src/components/dialogs/PromptDialog.test.tsx +++ b/packages/snaps-simulator/src/components/dialogs/PromptDialog.test.tsx @@ -1,7 +1,7 @@ import { Box } from '@metamask/snaps-sdk/jsx'; -import { render } from '../../utils'; import { PromptDialog } from './PromptDialog'; +import { render } from '../../utils'; describe('PromptDialog', () => { it('renders', () => { diff --git a/packages/snaps-simulator/src/components/dialogs/PromptDialog.tsx b/packages/snaps-simulator/src/components/dialogs/PromptDialog.tsx index 98d34cac58..46c7c9007f 100644 --- a/packages/snaps-simulator/src/components/dialogs/PromptDialog.tsx +++ b/packages/snaps-simulator/src/components/dialogs/PromptDialog.tsx @@ -65,7 +65,6 @@ export const PromptDialog: FunctionComponent = ({ diff --git a/packages/snaps-simulator/src/contexts/SnapInterface.tsx b/packages/snaps-simulator/src/contexts/SnapInterface.tsx index da21d7dbed..04f00d1668 100644 --- a/packages/snaps-simulator/src/contexts/SnapInterface.tsx +++ b/packages/snaps-simulator/src/contexts/SnapInterface.tsx @@ -6,6 +6,7 @@ import throttle from 'lodash.throttle'; import type { FunctionComponent, ReactNode } from 'react'; import { createContext, useContext } from 'react'; +import { mergeValue } from './utils'; import { getSnapInterfaceController, getSnapInterface, @@ -13,7 +14,6 @@ import { setSnapInterfaceState, } from '../features'; import { useDispatch, useSelector } from '../hooks'; -import { mergeValue } from './utils'; /** * A no-op function. @@ -143,7 +143,7 @@ export const SnapInterfaceContextProvider: FunctionComponent< const handleEvent: HandleEvent = ({ event, name, - value = name ? (state as FormState)[name] ?? undefined : undefined, + value = name ? ((state as FormState)[name] ?? undefined) : undefined, }) => { const fn = THROTTLED_EVENTS.includes(event) ? snapRequestThrottled diff --git a/packages/snaps-simulator/src/entry.tsx b/packages/snaps-simulator/src/entry.tsx index 82f0db240e..fb004b6277 100644 --- a/packages/snaps-simulator/src/entry.tsx +++ b/packages/snaps-simulator/src/entry.tsx @@ -7,7 +7,7 @@ import { Root } from './components'; import { createStore } from './store'; import { IS_TEST_BUILD } from './utils'; -// eslint-disable-next-line import/no-unassigned-import +// eslint-disable-next-line import-x/no-unassigned-import import './assets/fonts/fonts.css'; const rootElement = document.getElementById('root'); diff --git a/packages/snaps-simulator/src/features/builder/Builder.tsx b/packages/snaps-simulator/src/features/builder/Builder.tsx index bc7d2e33c2..8f4b7e4ffb 100644 --- a/packages/snaps-simulator/src/features/builder/Builder.tsx +++ b/packages/snaps-simulator/src/features/builder/Builder.tsx @@ -12,9 +12,9 @@ import type { NodeModel } from '@minoru/react-dnd-treeview'; import type { FunctionComponent } from 'react'; import { useState } from 'react'; -import { Editor } from '../../components'; import { TemplateComponentList, NodeTree, NodeRenderer } from './components'; import { boxToCode, nodeModelsToComponent } from './utils'; +import { Editor } from '../../components'; export const Builder: FunctionComponent = () => { const [id, setId] = useState(2); diff --git a/packages/snaps-simulator/src/features/builder/components/EditableNodeInput.tsx b/packages/snaps-simulator/src/features/builder/components/EditableNodeInput.tsx index 4533e12b7c..15388985bc 100644 --- a/packages/snaps-simulator/src/features/builder/components/EditableNodeInput.tsx +++ b/packages/snaps-simulator/src/features/builder/components/EditableNodeInput.tsx @@ -1,6 +1,6 @@ import { Input as ChakraInput } from '@chakra-ui/react'; -import type { ChangeEvent } from 'react'; -import { useState, type FunctionComponent } from 'react'; +import type { ChangeEvent, FunctionComponent } from 'react'; +import { useState } from 'react'; type EditableNodeInputProps = { placeholder: string; diff --git a/packages/snaps-simulator/src/features/builder/components/ErrorBoundary.tsx b/packages/snaps-simulator/src/features/builder/components/ErrorBoundary.tsx index faffac9ecb..84fb5df3a2 100644 --- a/packages/snaps-simulator/src/features/builder/components/ErrorBoundary.tsx +++ b/packages/snaps-simulator/src/features/builder/components/ErrorBoundary.tsx @@ -1,15 +1,16 @@ -import React from 'react'; +import type { ReactNode } from 'react'; +import { Component } from 'react'; type ErrorBoundaryProps = { - fallback: React.ReactNode; - children: React.ReactNode; + fallback: ReactNode; + children: ReactNode; }; type ErrorBoundaryState = { hasError: boolean; }; -export class ErrorBoundary extends React.Component< +export class ErrorBoundary extends Component< ErrorBoundaryProps, ErrorBoundaryState > { diff --git a/packages/snaps-simulator/src/features/builder/components/MultiEditableNode.tsx b/packages/snaps-simulator/src/features/builder/components/MultiEditableNode.tsx index 22578c946d..70cd20853f 100644 --- a/packages/snaps-simulator/src/features/builder/components/MultiEditableNode.tsx +++ b/packages/snaps-simulator/src/features/builder/components/MultiEditableNode.tsx @@ -8,10 +8,10 @@ import type { } from '@metamask/snaps-sdk/jsx'; import type { FunctionComponent } from 'react'; -import type { EditableNodeProps } from '../../../types'; import { BaseNode } from './BaseNode'; import { EditableNodeInput } from './EditableNodeInput'; import { EditableNodeSelect } from './EditableNodeSelect'; +import type { EditableNodeProps } from '../../../types'; export type MultiEditableComponent = | ButtonElement diff --git a/packages/snaps-simulator/src/features/builder/components/NodeRenderer.tsx b/packages/snaps-simulator/src/features/builder/components/NodeRenderer.tsx index c4e476d8fc..b741c4c1f1 100644 --- a/packages/snaps-simulator/src/features/builder/components/NodeRenderer.tsx +++ b/packages/snaps-simulator/src/features/builder/components/NodeRenderer.tsx @@ -5,6 +5,7 @@ import type { FunctionComponent } from 'react'; import { useMemo } from 'react'; import { useSelector } from 'react-redux'; +import { ErrorBoundary } from './ErrorBoundary'; import { Delineator, DelineatorType, @@ -15,7 +16,6 @@ import { getSnapId } from '../../configuration'; import { Renderer } from '../../renderer'; import { getSnapName } from '../../simulation'; import { nodeModelsToComponent } from '../utils'; -import { ErrorBoundary } from './ErrorBoundary'; export type NodeRendererProps = { items: NodeModel[]; diff --git a/packages/snaps-simulator/src/features/builder/components/NodeTree.tsx b/packages/snaps-simulator/src/features/builder/components/NodeTree.tsx index ddb51b2825..a6bd72f454 100644 --- a/packages/snaps-simulator/src/features/builder/components/NodeTree.tsx +++ b/packages/snaps-simulator/src/features/builder/components/NodeTree.tsx @@ -10,9 +10,9 @@ import { Tree } from '@minoru/react-dnd-treeview'; import type { FunctionComponent } from 'react'; import { useEffect, useRef } from 'react'; -import { canDropElement } from '../utils'; import { Node } from './Node'; import { Start } from './Start'; +import { canDropElement } from '../utils'; export type NodeTreeProps = { items: NodeModel[]; @@ -44,7 +44,7 @@ export const NodeTree: FunctionComponent = ({ return { ...item, data: { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion, @typescript-eslint/no-unnecessary-type-assertion + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion type: item.data!.type, ...item.data, props: { @@ -133,13 +133,11 @@ export const NodeTree: FunctionComponent = ({ borderRadius="lg" flex="1" sx={{ - // eslint-disable-next-line @typescript-eslint/naming-convention '& > ul': { display: 'flex', flexDirection: 'column', flex: 1, marginY: '4', - // eslint-disable-next-line @typescript-eslint/naming-convention '& > li': { display: 'flex', flexDirection: 'column', @@ -148,7 +146,6 @@ export const NodeTree: FunctionComponent = ({ }, }, ul: { listStyleType: 'none' }, - // eslint-disable-next-line @typescript-eslint/naming-convention li: { marginTop: '2' }, }} > diff --git a/packages/snaps-simulator/src/features/builder/components/TemplateComponentList.tsx b/packages/snaps-simulator/src/features/builder/components/TemplateComponentList.tsx index ffd5dccf4f..b89b749f69 100644 --- a/packages/snaps-simulator/src/features/builder/components/TemplateComponentList.tsx +++ b/packages/snaps-simulator/src/features/builder/components/TemplateComponentList.tsx @@ -20,8 +20,8 @@ import { } from '@metamask/snaps-sdk/jsx'; import type { FunctionComponent } from 'react'; -import type { IconName } from '../../../components'; import { TemplateComponent } from './TemplateComponent'; +import type { IconName } from '../../../components'; type TemplateComponent = { icon: IconName; diff --git a/packages/snaps-simulator/src/features/builder/components/TextEditableNode.tsx b/packages/snaps-simulator/src/features/builder/components/TextEditableNode.tsx index 0cd39286e4..89add7e05d 100644 --- a/packages/snaps-simulator/src/features/builder/components/TextEditableNode.tsx +++ b/packages/snaps-simulator/src/features/builder/components/TextEditableNode.tsx @@ -8,9 +8,9 @@ import { assert, hasProperty } from '@metamask/utils'; import type { ChangeEvent, FunctionComponent } from 'react'; import { useState } from 'react'; +import { BaseNode } from './BaseNode'; import type { EditableNodeProps } from '../../../types'; import { getNodeText } from '../utils'; -import { BaseNode } from './BaseNode'; export type TextEditableComponent = | TextElement diff --git a/packages/snaps-simulator/src/features/builder/utils.ts b/packages/snaps-simulator/src/features/builder/utils.ts index a27d11a1e0..0b05250e81 100644 --- a/packages/snaps-simulator/src/features/builder/utils.ts +++ b/packages/snaps-simulator/src/features/builder/utils.ts @@ -1,11 +1,14 @@ -import type { FieldElement, FormElement } from '@metamask/snaps-sdk/jsx'; +import type { + BoxElement, + FieldElement, + FormElement, + JSXElement, +} from '@metamask/snaps-sdk/jsx'; import { BoxChildStruct, FieldChildUnionStruct, FormChildStruct, Input, - type BoxElement, - type JSXElement, } from '@metamask/snaps-sdk/jsx'; import { deepClone, @@ -16,8 +19,8 @@ import { import { is } from '@metamask/superstruct'; import { assert, hasProperty } from '@metamask/utils'; import type { NodeModel } from '@minoru/react-dnd-treeview'; -import typescript from 'prettier/parser-typescript'; -import prettier from 'prettier/standalone'; +import typescript from 'prettier-2/parser-typescript'; +import { format } from 'prettier-2/standalone'; /** * Get the text of a node model. @@ -187,7 +190,7 @@ function getComponentTypes(component: JSXElement): string[] { export function boxToCode(component: BoxElement): string { const types = getComponentTypes(component).join(', '); - return prettier.format( + return format( ` import { ${types} } from '@metamask/snaps-sdk/jsx'; diff --git a/packages/snaps-simulator/src/features/configuration/Configuration.test.tsx b/packages/snaps-simulator/src/features/configuration/Configuration.test.tsx index 535e728ee6..c890ced8a9 100644 --- a/packages/snaps-simulator/src/features/configuration/Configuration.test.tsx +++ b/packages/snaps-simulator/src/features/configuration/Configuration.test.tsx @@ -1,5 +1,5 @@ -import { render } from '../../utils'; import { Configuration } from './Configuration'; +import { render } from '../../utils'; describe('Configuration', () => { it('renders', () => { diff --git a/packages/snaps-simulator/src/features/configuration/Configuration.tsx b/packages/snaps-simulator/src/features/configuration/Configuration.tsx index 7b5a9d12d5..54a9dbeca2 100644 --- a/packages/snaps-simulator/src/features/configuration/Configuration.tsx +++ b/packages/snaps-simulator/src/features/configuration/Configuration.tsx @@ -32,7 +32,6 @@ import { import type { FormEvent } from 'react'; import { useEffect, useState } from 'react'; -import { useDispatch, useSelector } from '../../hooks'; import { getOpen, getSesEnabled, @@ -43,6 +42,7 @@ import { setSnapId, setSnapVersion, } from './slice'; +import { useDispatch, useSelector } from '../../hooks'; export const Configuration = () => { const dispatch = useDispatch(); diff --git a/packages/snaps-simulator/src/features/console/Console.tsx b/packages/snaps-simulator/src/features/console/Console.tsx index 8273712665..0444150aad 100644 --- a/packages/snaps-simulator/src/features/console/Console.tsx +++ b/packages/snaps-simulator/src/features/console/Console.tsx @@ -9,10 +9,10 @@ import { import type { FunctionComponent } from 'react'; import { useEffect, useRef, useState } from 'react'; -import { Icon } from '../../components'; -import { useSelector } from '../../hooks'; import { ConsoleContent } from './ConsoleContent'; import { getConsoleEntries } from './slice'; +import { Icon } from '../../components'; +import { useSelector } from '../../hooks'; /** * Console component. diff --git a/packages/snaps-simulator/src/features/console/ConsoleContent.tsx b/packages/snaps-simulator/src/features/console/ConsoleContent.tsx index b36e4a1800..c8ecce21a0 100644 --- a/packages/snaps-simulator/src/features/console/ConsoleContent.tsx +++ b/packages/snaps-simulator/src/features/console/ConsoleContent.tsx @@ -1,7 +1,7 @@ import { Text } from '@chakra-ui/react'; -import { useSelector } from '../../hooks'; import { ConsoleEntryType, getConsoleEntries } from './slice'; +import { useSelector } from '../../hooks'; export const ConsoleContent = () => { const entries = useSelector(getConsoleEntries); diff --git a/packages/snaps-simulator/src/features/handlers/components/Handler.test.tsx b/packages/snaps-simulator/src/features/handlers/components/Handler.test.tsx index 41ba0ac471..f242a33956 100644 --- a/packages/snaps-simulator/src/features/handlers/components/Handler.test.tsx +++ b/packages/snaps-simulator/src/features/handlers/components/Handler.test.tsx @@ -1,5 +1,5 @@ -import { render } from '../../../utils'; import { Handler } from './Handler'; +import { render } from '../../../utils'; describe('Handler', () => { it('renders', () => { diff --git a/packages/snaps-simulator/src/features/handlers/components/Handler.tsx b/packages/snaps-simulator/src/features/handlers/components/Handler.tsx index 38c0261b44..a3b2cc7c7a 100644 --- a/packages/snaps-simulator/src/features/handlers/components/Handler.tsx +++ b/packages/snaps-simulator/src/features/handlers/components/Handler.tsx @@ -11,16 +11,16 @@ import type { FunctionComponent } from 'react'; import { useState } from 'react'; import { Outlet } from 'react-router-dom'; -import { TestConditional } from '../../../components'; -import { useSelector } from '../../../hooks'; -import { IS_TEST_BUILD } from '../../../utils'; -import { getUserInterface } from '../../simulation'; import { History } from './History'; import { PlayButton } from './PlayButton'; import { ResetTab } from './ResetTab'; import { ResetUserInterfaceTab } from './ResetUserInterfaceTab'; import { Response } from './Response'; import { UserInterface } from './UserInterface'; +import { TestConditional } from '../../../components'; +import { useSelector } from '../../../hooks'; +import { IS_TEST_BUILD } from '../../../utils'; +import { getUserInterface } from '../../simulation'; export const Handler: FunctionComponent = () => { const [tab, setTab] = useState(0); diff --git a/packages/snaps-simulator/src/features/handlers/components/History.test.tsx b/packages/snaps-simulator/src/features/handlers/components/History.test.tsx index eda35acc66..fd2ec3d87d 100644 --- a/packages/snaps-simulator/src/features/handlers/components/History.test.tsx +++ b/packages/snaps-simulator/src/features/handlers/components/History.test.tsx @@ -1,5 +1,5 @@ -import { render } from '../../../utils'; import { History } from './History'; +import { render } from '../../../utils'; describe('History', () => { it('renders', () => { diff --git a/packages/snaps-simulator/src/features/handlers/components/History.tsx b/packages/snaps-simulator/src/features/handlers/components/History.tsx index c228999c68..3bc6caac7f 100644 --- a/packages/snaps-simulator/src/features/handlers/components/History.tsx +++ b/packages/snaps-simulator/src/features/handlers/components/History.tsx @@ -1,9 +1,9 @@ import { Center, Heading, List, Text } from '@chakra-ui/react'; import type { FunctionComponent } from 'react'; +import { HistoryItem } from './HistoryItem'; import { Icon } from '../../../components'; import { useHandler, useSelector } from '../../../hooks'; -import { HistoryItem } from './HistoryItem'; export const History: FunctionComponent = () => { const handler = useHandler(); diff --git a/packages/snaps-simulator/src/features/handlers/components/HistoryItem.test.tsx b/packages/snaps-simulator/src/features/handlers/components/HistoryItem.test.tsx index 7395945f48..676691a8f6 100644 --- a/packages/snaps-simulator/src/features/handlers/components/HistoryItem.test.tsx +++ b/packages/snaps-simulator/src/features/handlers/components/HistoryItem.test.tsx @@ -1,7 +1,7 @@ import { List, Tabs } from '@chakra-ui/react'; -import { render } from '../../../utils'; import { HistoryItem } from './HistoryItem'; +import { render } from '../../../utils'; describe('HistoryItem', () => { it('renders', () => { diff --git a/packages/snaps-simulator/src/features/handlers/components/Response.test.tsx b/packages/snaps-simulator/src/features/handlers/components/Response.test.tsx index 906eee4beb..2c7ad69311 100644 --- a/packages/snaps-simulator/src/features/handlers/components/Response.test.tsx +++ b/packages/snaps-simulator/src/features/handlers/components/Response.test.tsx @@ -1,5 +1,5 @@ -import { render } from '../../../utils'; import { Response } from './Response'; +import { render } from '../../../utils'; describe('Response', () => { it('renders', () => { diff --git a/packages/snaps-simulator/src/features/handlers/components/UserInterface.test.tsx b/packages/snaps-simulator/src/features/handlers/components/UserInterface.test.tsx index d790d27a2e..4963f0301b 100644 --- a/packages/snaps-simulator/src/features/handlers/components/UserInterface.test.tsx +++ b/packages/snaps-simulator/src/features/handlers/components/UserInterface.test.tsx @@ -1,7 +1,7 @@ import { Tabs } from '@chakra-ui/react'; -import { render } from '../../../utils'; import { UserInterface } from './UserInterface'; +import { render } from '../../../utils'; describe('UserInterface', () => { it('renders', () => { diff --git a/packages/snaps-simulator/src/features/handlers/cronjobs/components/CronjobPrefill.test.tsx b/packages/snaps-simulator/src/features/handlers/cronjobs/components/CronjobPrefill.test.tsx index 95332c1bba..e7c82113ca 100644 --- a/packages/snaps-simulator/src/features/handlers/cronjobs/components/CronjobPrefill.test.tsx +++ b/packages/snaps-simulator/src/features/handlers/cronjobs/components/CronjobPrefill.test.tsx @@ -1,5 +1,5 @@ -import { render } from '../../../../utils'; import { CronjobPrefill } from './CronjobPrefill'; +import { render } from '../../../../utils'; describe('CronjobPrefill', () => { it('renders', () => { diff --git a/packages/snaps-simulator/src/features/handlers/cronjobs/components/CronjobPrefills.test.tsx b/packages/snaps-simulator/src/features/handlers/cronjobs/components/CronjobPrefills.test.tsx index 99dc8007eb..bc5551d100 100644 --- a/packages/snaps-simulator/src/features/handlers/cronjobs/components/CronjobPrefills.test.tsx +++ b/packages/snaps-simulator/src/features/handlers/cronjobs/components/CronjobPrefills.test.tsx @@ -1,5 +1,5 @@ -import { render } from '../../../../utils'; import { CronjobPrefills } from './CronjobPrefills'; +import { render } from '../../../../utils'; describe('CronjobPrefills', () => { it('renders', () => { diff --git a/packages/snaps-simulator/src/features/handlers/cronjobs/components/CronjobPrefills.tsx b/packages/snaps-simulator/src/features/handlers/cronjobs/components/CronjobPrefills.tsx index e045ed44d6..7947e284e9 100644 --- a/packages/snaps-simulator/src/features/handlers/cronjobs/components/CronjobPrefills.tsx +++ b/packages/snaps-simulator/src/features/handlers/cronjobs/components/CronjobPrefills.tsx @@ -1,10 +1,10 @@ import { Box, Flex, Text } from '@chakra-ui/react'; import type { FunctionComponent } from 'react'; -import { useSelector } from '../../../../hooks'; -import { getSnapManifest } from '../../../simulation'; import type { CronjobData } from './CronjobPrefill'; import { CronjobPrefill } from './CronjobPrefill'; +import { useSelector } from '../../../../hooks'; +import { getSnapManifest } from '../../../simulation'; export type CronjobPrefillsProps = { onClick: (prefill: CronjobData) => void; diff --git a/packages/snaps-simulator/src/features/handlers/cronjobs/components/Request.test.tsx b/packages/snaps-simulator/src/features/handlers/cronjobs/components/Request.test.tsx index 4fdaff05a0..ca2b1865f3 100644 --- a/packages/snaps-simulator/src/features/handlers/cronjobs/components/Request.test.tsx +++ b/packages/snaps-simulator/src/features/handlers/cronjobs/components/Request.test.tsx @@ -1,5 +1,5 @@ -import { render } from '../../../../utils'; import { Request } from './Request'; +import { render } from '../../../../utils'; jest.mock('react-monaco-editor'); diff --git a/packages/snaps-simulator/src/features/handlers/cronjobs/components/Request.tsx b/packages/snaps-simulator/src/features/handlers/cronjobs/components/Request.tsx index a24c68c783..417b37d271 100644 --- a/packages/snaps-simulator/src/features/handlers/cronjobs/components/Request.tsx +++ b/packages/snaps-simulator/src/features/handlers/cronjobs/components/Request.tsx @@ -9,13 +9,13 @@ import { HandlerType } from '@metamask/snaps-utils'; import type { FunctionComponent } from 'react'; import { Controller, useForm } from 'react-hook-form'; +import type { CronjobData } from './CronjobPrefill'; +import { CronjobPrefills } from './CronjobPrefills'; import { Editor } from '../../../../components'; import { useDispatch, useSelector } from '../../../../hooks'; import { sendRequest } from '../../../simulation'; import { SAMPLE_JSON_RPC_REQUEST } from '../../json-rpc/schema'; import { getCronjobRequest } from '../slice'; -import type { CronjobData } from './CronjobPrefill'; -import { CronjobPrefills } from './CronjobPrefills'; type CronjobFormData = { origin: string; diff --git a/packages/snaps-simulator/src/features/handlers/transactions/components/Request.tsx b/packages/snaps-simulator/src/features/handlers/transactions/components/Request.tsx index 848dc70c4d..298317aa4e 100644 --- a/packages/snaps-simulator/src/features/handlers/transactions/components/Request.tsx +++ b/packages/snaps-simulator/src/features/handlers/transactions/components/Request.tsx @@ -1,4 +1,3 @@ -/* eslint-disable react/no-children-prop */ import { Flex, FormControl, @@ -13,12 +12,12 @@ import { HandlerType } from '@metamask/snaps-utils'; import type { FunctionComponent } from 'react'; import { useForm } from 'react-hook-form'; +import { TransactionPrefills } from './TransactionPrefills'; import { useDispatch, useSelector } from '../../../../hooks'; import { sendRequest } from '../../../simulation'; import { getTransactionRequest } from '../slice'; import type { TransactionFormData } from '../utils'; import { hexlifyTransactionData } from '../utils'; -import { TransactionPrefills } from './TransactionPrefills'; const PLACEHOLDERS = { chainId: 'eip155:1', diff --git a/packages/snaps-simulator/src/features/handlers/transactions/components/TransactionPrefill.test.tsx b/packages/snaps-simulator/src/features/handlers/transactions/components/TransactionPrefill.test.tsx index d34d31a0d6..7ba9531805 100644 --- a/packages/snaps-simulator/src/features/handlers/transactions/components/TransactionPrefill.test.tsx +++ b/packages/snaps-simulator/src/features/handlers/transactions/components/TransactionPrefill.test.tsx @@ -1,6 +1,6 @@ +import { TransactionPrefill } from './TransactionPrefill'; import { render } from '../../../../utils'; import { TRANSACTION_PRESETS } from '../presets'; -import { TransactionPrefill } from './TransactionPrefill'; describe('TransactionPrefill', () => { it('renders', () => { @@ -8,8 +8,7 @@ describe('TransactionPrefill', () => { render( , ), diff --git a/packages/snaps-simulator/src/features/handlers/transactions/components/TransactionPrefills.test.tsx b/packages/snaps-simulator/src/features/handlers/transactions/components/TransactionPrefills.test.tsx index 3a40c25ce6..96a3099a27 100644 --- a/packages/snaps-simulator/src/features/handlers/transactions/components/TransactionPrefills.test.tsx +++ b/packages/snaps-simulator/src/features/handlers/transactions/components/TransactionPrefills.test.tsx @@ -1,5 +1,5 @@ -import { render } from '../../../../utils'; import { TransactionPrefills } from './TransactionPrefills'; +import { render } from '../../../../utils'; describe('TransactionPrefills', () => { it('renders', () => { diff --git a/packages/snaps-simulator/src/features/handlers/transactions/components/TransactionPrefills.tsx b/packages/snaps-simulator/src/features/handlers/transactions/components/TransactionPrefills.tsx index b163814858..869a2cb07f 100644 --- a/packages/snaps-simulator/src/features/handlers/transactions/components/TransactionPrefills.tsx +++ b/packages/snaps-simulator/src/features/handlers/transactions/components/TransactionPrefills.tsx @@ -1,9 +1,9 @@ import { Box, Flex, Text } from '@chakra-ui/react'; import type { FunctionComponent } from 'react'; +import { TransactionPrefill } from './TransactionPrefill'; import { TRANSACTION_PRESETS } from '../presets'; import type { TransactionFormData } from '../utils'; -import { TransactionPrefill } from './TransactionPrefill'; export type TransactionPrefillsProps = { onClick: (prefill: TransactionFormData) => void; diff --git a/packages/snaps-simulator/src/features/layout/Layout.tsx b/packages/snaps-simulator/src/features/layout/Layout.tsx index 34c9d58651..4575440770 100644 --- a/packages/snaps-simulator/src/features/layout/Layout.tsx +++ b/packages/snaps-simulator/src/features/layout/Layout.tsx @@ -2,8 +2,8 @@ import { Flex } from '@chakra-ui/react'; import type { FunctionComponent, ReactNode } from 'react'; import { Outlet } from 'react-router-dom'; -import { Console } from '../console'; import { Header, Sidebar } from './components'; +import { Console } from '../console'; type LayoutProps = { children?: ReactNode; diff --git a/packages/snaps-simulator/src/features/layout/components/Header.test.tsx b/packages/snaps-simulator/src/features/layout/components/Header.test.tsx index 2d192d9eed..a4a68d076e 100644 --- a/packages/snaps-simulator/src/features/layout/components/Header.test.tsx +++ b/packages/snaps-simulator/src/features/layout/components/Header.test.tsx @@ -1,5 +1,5 @@ -import { render } from '../../../utils'; import { Header } from './Header'; +import { render } from '../../../utils'; describe('Header', () => { it('renders', () => { diff --git a/packages/snaps-simulator/src/features/layout/components/Sidebar.test.tsx b/packages/snaps-simulator/src/features/layout/components/Sidebar.test.tsx index a81a4d3fc0..a8f59b59f1 100644 --- a/packages/snaps-simulator/src/features/layout/components/Sidebar.test.tsx +++ b/packages/snaps-simulator/src/features/layout/components/Sidebar.test.tsx @@ -1,5 +1,5 @@ -import { render } from '../../../utils'; import { Sidebar } from './Sidebar'; +import { render } from '../../../utils'; describe('Sidebar', () => { it('renders', () => { diff --git a/packages/snaps-simulator/src/features/manifest/Manifest.test.tsx b/packages/snaps-simulator/src/features/manifest/Manifest.test.tsx index 4ce69cd61d..634759f71f 100644 --- a/packages/snaps-simulator/src/features/manifest/Manifest.test.tsx +++ b/packages/snaps-simulator/src/features/manifest/Manifest.test.tsx @@ -1,5 +1,5 @@ -import { render } from '../../utils'; import { Manifest } from './Manifest'; +import { render } from '../../utils'; jest.mock('react-monaco-editor'); diff --git a/packages/snaps-simulator/src/features/manifest/Manifest.tsx b/packages/snaps-simulator/src/features/manifest/Manifest.tsx index a486354642..5bd47d8b5a 100644 --- a/packages/snaps-simulator/src/features/manifest/Manifest.tsx +++ b/packages/snaps-simulator/src/features/manifest/Manifest.tsx @@ -9,10 +9,10 @@ import { } from '@chakra-ui/react'; import type { FunctionComponent } from 'react'; +import { Validation } from './components'; import { Editor } from '../../components'; import { useSelector } from '../../hooks'; import { getLocalizedSnapManifest } from '../simulation'; -import { Validation } from './components'; /** * Manifest page, which displays the manifest of a snap, and any errors that diff --git a/packages/snaps-simulator/src/features/manifest/components/Item.test.tsx b/packages/snaps-simulator/src/features/manifest/components/Item.test.tsx index 1dba1e5f5d..22ca61eb21 100644 --- a/packages/snaps-simulator/src/features/manifest/components/Item.test.tsx +++ b/packages/snaps-simulator/src/features/manifest/components/Item.test.tsx @@ -1,7 +1,7 @@ import { List } from '@chakra-ui/react'; -import { render } from '../../../utils'; import { Item } from './Item'; +import { render } from '../../../utils'; describe('Item', () => { it('renders', () => { diff --git a/packages/snaps-simulator/src/features/manifest/components/Validation.test.tsx b/packages/snaps-simulator/src/features/manifest/components/Validation.test.tsx index 2dfb10a1d2..d90707ef2c 100644 --- a/packages/snaps-simulator/src/features/manifest/components/Validation.test.tsx +++ b/packages/snaps-simulator/src/features/manifest/components/Validation.test.tsx @@ -1,5 +1,5 @@ -import { render } from '../../../utils'; import { Validation } from './Validation'; +import { render } from '../../../utils'; describe('Validation', () => { it('renders', () => { diff --git a/packages/snaps-simulator/src/features/manifest/components/Validation.tsx b/packages/snaps-simulator/src/features/manifest/components/Validation.tsx index ee3977ef85..ac1918ac4c 100644 --- a/packages/snaps-simulator/src/features/manifest/components/Validation.tsx +++ b/packages/snaps-simulator/src/features/manifest/components/Validation.tsx @@ -1,11 +1,11 @@ import { Center, Heading, List, Text } from '@chakra-ui/react'; import type { FunctionComponent } from 'react'; +import { Item } from './Item'; import { Icon } from '../../../components'; import { useSelector } from '../../../hooks'; import { getSnapManifest } from '../../simulation'; import { getManifestResults } from '../slice'; -import { Item } from './Item'; export const Validation: FunctionComponent = () => { const manifest = useSelector(getSnapManifest); diff --git a/packages/snaps-simulator/src/features/manifest/sagas.test.ts b/packages/snaps-simulator/src/features/manifest/sagas.test.ts index 108ba8a9dc..c4aa47ca2d 100644 --- a/packages/snaps-simulator/src/features/manifest/sagas.test.ts +++ b/packages/snaps-simulator/src/features/manifest/sagas.test.ts @@ -1,10 +1,5 @@ import { expectSaga } from 'redux-saga-test-plan'; -import { MOCK_MANIFEST_FILE } from '../simulation/test/mockManifest'; -import { - MOCK_SNAP_ICON_FILE, - MOCK_SNAP_SOURCE_FILE, -} from '../simulation/test/mockSnap'; import { validationSaga } from './sagas'; import { ManifestStatus, @@ -12,6 +7,11 @@ import { setValid, validateManifest, } from './slice'; +import { MOCK_MANIFEST_FILE } from '../simulation/test/mockManifest'; +import { + MOCK_SNAP_ICON_FILE, + MOCK_SNAP_SOURCE_FILE, +} from '../simulation/test/mockSnap'; describe('validationSaga', () => { it('validates the manifest', async () => { diff --git a/packages/snaps-simulator/src/features/manifest/sagas.ts b/packages/snaps-simulator/src/features/manifest/sagas.ts index 8c796de2ff..796f9afef1 100644 --- a/packages/snaps-simulator/src/features/manifest/sagas.ts +++ b/packages/snaps-simulator/src/features/manifest/sagas.ts @@ -7,7 +7,6 @@ import type { PayloadAction } from '@reduxjs/toolkit'; import type { SagaIterator } from 'redux-saga'; import { all, call, put, select, takeLatest } from 'redux-saga/effects'; -import { getAuxiliaryFiles, getIcon, getSourceCode } from '../simulation'; import type { ValidationResult } from './slice'; import { ManifestStatus, @@ -16,6 +15,7 @@ import { validateManifest, } from './slice'; import { validators } from './validators'; +import { getAuxiliaryFiles, getIcon, getSourceCode } from '../simulation'; /** * Validate the snap manifest. diff --git a/packages/snaps-simulator/src/features/navigation/Navigation.test.tsx b/packages/snaps-simulator/src/features/navigation/Navigation.test.tsx index 1901c3e47e..dc62ed2ce4 100644 --- a/packages/snaps-simulator/src/features/navigation/Navigation.test.tsx +++ b/packages/snaps-simulator/src/features/navigation/Navigation.test.tsx @@ -1,5 +1,5 @@ -import { render } from '../../utils'; import { Navigation } from './Navigation'; +import { render } from '../../utils'; describe('Navigation', () => { it('renders', () => { diff --git a/packages/snaps-simulator/src/features/navigation/Navigation.tsx b/packages/snaps-simulator/src/features/navigation/Navigation.tsx index caf955931b..c898d0ddab 100644 --- a/packages/snaps-simulator/src/features/navigation/Navigation.tsx +++ b/packages/snaps-simulator/src/features/navigation/Navigation.tsx @@ -1,11 +1,11 @@ import { Box, Container, List, Stack, Text } from '@chakra-ui/react'; import type { FunctionComponent } from 'react'; -import { Icon } from '../../components'; -import { useSelector } from '../../hooks'; import { Item, ManifestStatusIndicator } from './components'; import { NavigationTag } from './components/NavigationTag'; import { NAVIGATION_ITEMS } from './items'; +import { Icon } from '../../components'; +import { useSelector } from '../../hooks'; /** * The navigation component, which holds the navigation buttons. diff --git a/packages/snaps-simulator/src/features/navigation/components/Bottom.test.tsx b/packages/snaps-simulator/src/features/navigation/components/Bottom.test.tsx index 5987fe341e..8a40f87b78 100644 --- a/packages/snaps-simulator/src/features/navigation/components/Bottom.test.tsx +++ b/packages/snaps-simulator/src/features/navigation/components/Bottom.test.tsx @@ -1,5 +1,5 @@ -import { render } from '../../../utils'; import { Bottom } from './Bottom'; +import { render } from '../../../utils'; describe('Bottom', () => { it('renders', () => { diff --git a/packages/snaps-simulator/src/features/navigation/components/Bottom.tsx b/packages/snaps-simulator/src/features/navigation/components/Bottom.tsx index 1118b27a6c..2b06a89568 100644 --- a/packages/snaps-simulator/src/features/navigation/components/Bottom.tsx +++ b/packages/snaps-simulator/src/features/navigation/components/Bottom.tsx @@ -1,10 +1,10 @@ import { Box, List, Text } from '@chakra-ui/react'; import type { FunctionComponent } from 'react'; +import { Item } from './Item'; import { Icon } from '../../../components'; import { useDispatch } from '../../../hooks'; import { openConfigurationModal } from '../../configuration'; -import { Item } from './Item'; export const Bottom: FunctionComponent = () => { const dispatch = useDispatch(); diff --git a/packages/snaps-simulator/src/features/navigation/components/Item.test.tsx b/packages/snaps-simulator/src/features/navigation/components/Item.test.tsx index 61567d8906..ca36f27fe8 100644 --- a/packages/snaps-simulator/src/features/navigation/components/Item.test.tsx +++ b/packages/snaps-simulator/src/features/navigation/components/Item.test.tsx @@ -1,7 +1,7 @@ import { List } from '@chakra-ui/react'; -import { render } from '../../../utils'; import { Item } from './Item'; +import { render } from '../../../utils'; describe('Item', () => { it('renders', () => { diff --git a/packages/snaps-simulator/src/features/notifications/Notifications.test.tsx b/packages/snaps-simulator/src/features/notifications/Notifications.test.tsx index 5dd5c0db98..92115ac678 100644 --- a/packages/snaps-simulator/src/features/notifications/Notifications.test.tsx +++ b/packages/snaps-simulator/src/features/notifications/Notifications.test.tsx @@ -1,5 +1,5 @@ -import { render } from '../../utils'; import { Notifications } from './Notifications'; +import { render } from '../../utils'; describe('Notifications', () => { it('renders', () => { diff --git a/packages/snaps-simulator/src/features/notifications/Notifications.tsx b/packages/snaps-simulator/src/features/notifications/Notifications.tsx index 484f5a91e0..a988ca8a4f 100644 --- a/packages/snaps-simulator/src/features/notifications/Notifications.tsx +++ b/packages/snaps-simulator/src/features/notifications/Notifications.tsx @@ -2,8 +2,8 @@ import { useToast } from '@chakra-ui/react'; import type { FunctionComponent } from 'react'; import { useEffect } from 'react'; -import { useDispatch, useSelector } from '../../hooks'; import { getNotifications, removeNotification } from './slice'; +import { useDispatch, useSelector } from '../../hooks'; export const Notifications: FunctionComponent = () => { const dispatch = useDispatch(); diff --git a/packages/snaps-simulator/src/features/polling/sagas.test.ts b/packages/snaps-simulator/src/features/polling/sagas.test.ts index 05feb5b03a..6e839fe0fb 100644 --- a/packages/snaps-simulator/src/features/polling/sagas.test.ts +++ b/packages/snaps-simulator/src/features/polling/sagas.test.ts @@ -9,6 +9,7 @@ import { stringToBytes } from '@metamask/utils'; import fetchMock from 'jest-fetch-mock'; import { expectSaga } from 'redux-saga-test-plan'; +import { fetchingSaga, pollingSaga } from './sagas'; import { setAuxiliaryFiles, setIcon, @@ -26,7 +27,6 @@ import { MOCK_SNAP_SOURCE, MOCK_SNAP_SOURCE_FILE, } from '../simulation/test/mockSnap'; -import { fetchingSaga, pollingSaga } from './sagas'; fetchMock.enableMocks(); diff --git a/packages/snaps-simulator/src/features/renderer/Renderer.tsx b/packages/snaps-simulator/src/features/renderer/Renderer.tsx index 5500bafd22..db39f89e89 100644 --- a/packages/snaps-simulator/src/features/renderer/Renderer.tsx +++ b/packages/snaps-simulator/src/features/renderer/Renderer.tsx @@ -1,9 +1,9 @@ import type { JSXElement } from '@metamask/snaps-sdk/jsx'; import type { FunctionComponent } from 'react'; +import { SnapComponent } from './SnapComponent'; import { SnapInterfaceContextProvider } from '../../contexts'; import { generateKey } from '../../utils'; -import { SnapComponent } from './SnapComponent'; type RendererProps = { content: JSXElement; diff --git a/packages/snaps-simulator/src/features/renderer/SnapComponent.tsx b/packages/snaps-simulator/src/features/renderer/SnapComponent.tsx index b5e441ffa9..103f4950f2 100644 --- a/packages/snaps-simulator/src/features/renderer/SnapComponent.tsx +++ b/packages/snaps-simulator/src/features/renderer/SnapComponent.tsx @@ -1,7 +1,6 @@ import type { JSXElement } from '@metamask/snaps-sdk/jsx'; import type { FunctionComponent } from 'react'; -import { generateKey } from '../../utils'; import { Bold, Copyable, @@ -18,6 +17,7 @@ import { Italic, Link, } from './components'; +import { generateKey } from '../../utils'; export const components: Partial< Record< diff --git a/packages/snaps-simulator/src/features/simulation/hooks.test.ts b/packages/snaps-simulator/src/features/simulation/hooks.test.ts index a7afbe0434..04b9511508 100644 --- a/packages/snaps-simulator/src/features/simulation/hooks.test.ts +++ b/packages/snaps-simulator/src/features/simulation/hooks.test.ts @@ -6,7 +6,6 @@ import { base64ToBytes, stringToBytes } from '@metamask/utils'; import { File } from 'buffer'; import { expectSaga } from 'redux-saga-test-plan'; -import { addNotification } from '../notifications'; import { createInterface, getInterface, @@ -34,6 +33,7 @@ import { } from './slice'; import { getSnapInterfaceController as getTestSnapInterfaceController } from './test/controllers'; import { MOCK_MANIFEST_FILE } from './test/mockManifest'; +import { addNotification } from '../notifications'; Object.defineProperty(globalThis, 'Notification', { value: class Notification { @@ -68,6 +68,9 @@ describe('showDialog', () => { Box({ children: null }), ); + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line @typescript-eslint/await-thenable const snapInterface = await snapInterfaceController.getInterface( snapId as SnapId, interfaceId, @@ -351,6 +354,9 @@ describe('getInterfaceState', () => { Box({ children: Input({ name: 'foo', value: 'bar' }) }), ); + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line @typescript-eslint/await-thenable const snapInterface = await snapInterfaceController.getInterface( snapId as SnapId, interfaceId, diff --git a/packages/snaps-simulator/src/features/simulation/hooks.ts b/packages/snaps-simulator/src/features/simulation/hooks.ts index a3d2b7c613..6e9f825824 100644 --- a/packages/snaps-simulator/src/features/simulation/hooks.ts +++ b/packages/snaps-simulator/src/features/simulation/hooks.ts @@ -20,7 +20,6 @@ import { nanoid } from '@reduxjs/toolkit'; import type { SagaIterator } from 'redux-saga'; import { call, put, select, take } from 'redux-saga/effects'; -import { addNativeNotification, addNotification } from '../notifications'; import { closeUserInterface, getAuxiliaryFiles, @@ -35,6 +34,7 @@ import { setSnapInterface, showUserInterface, } from './slice'; +import { addNativeNotification, addNotification } from '../notifications'; /** * Show a dialog to the user. diff --git a/packages/snaps-simulator/src/features/simulation/middleware.test.ts b/packages/snaps-simulator/src/features/simulation/middleware.test.ts index 4f7230ccd7..d4f6e5c41e 100644 --- a/packages/snaps-simulator/src/features/simulation/middleware.test.ts +++ b/packages/snaps-simulator/src/features/simulation/middleware.test.ts @@ -1,8 +1,8 @@ import { JsonRpcEngine } from '@metamask/json-rpc-engine'; import { mnemonicPhraseToBytes } from '@metamask/key-tree'; -import { DEFAULT_SRP } from '../configuration'; import { createMiscMethodMiddleware } from './middleware'; +import { DEFAULT_SRP } from '../configuration'; const hooks = { getMnemonic: async () => mnemonicPhraseToBytes(DEFAULT_SRP) }; diff --git a/packages/snaps-simulator/src/features/simulation/sagas.test.ts b/packages/snaps-simulator/src/features/simulation/sagas.test.ts index b724f349ab..be275adfeb 100644 --- a/packages/snaps-simulator/src/features/simulation/sagas.test.ts +++ b/packages/snaps-simulator/src/features/simulation/sagas.test.ts @@ -11,7 +11,6 @@ import { import { expectSaga } from 'redux-saga-test-plan'; import { call } from 'redux-saga-test-plan/matchers'; -import { DEFAULT_SRP, setSnapId } from '../configuration'; import { createInterface, getInterface } from './hooks'; import { initSaga, permissionsSaga, rebootSaga, requestSaga } from './sagas'; import { @@ -27,6 +26,7 @@ import { getSnapInterfaceController } from './test/controllers'; import { MockExecutionService } from './test/mockExecutionService'; import { MOCK_MANIFEST, MOCK_MANIFEST_FILE } from './test/mockManifest'; import { MOCK_SNAP_SOURCE, MOCK_SNAP_SOURCE_FILE } from './test/mockSnap'; +import { DEFAULT_SRP, setSnapId } from '../configuration'; const snapId = 'local:http://localhost:8080'; diff --git a/packages/snaps-simulator/src/features/simulation/sagas.ts b/packages/snaps-simulator/src/features/simulation/sagas.ts index a81e95b95b..2ea6963501 100644 --- a/packages/snaps-simulator/src/features/simulation/sagas.ts +++ b/packages/snaps-simulator/src/features/simulation/sagas.ts @@ -24,8 +24,11 @@ import { buildSnapEndowmentSpecifications, buildSnapRestrictedMethodSpecifications, } from '@metamask/snaps-rpc-methods'; -import type { SnapId } from '@metamask/snaps-sdk'; -import { type Component, type ComponentOrElement } from '@metamask/snaps-sdk'; +import type { + Component, + ComponentOrElement, + SnapId, +} from '@metamask/snaps-sdk'; import type { SnapManifest, SnapRpcHookArgs, @@ -45,10 +48,6 @@ import { takeLatest, } from 'redux-saga/effects'; -import { runSaga } from '../../store/middleware'; -import { getSnapId, getSrp, setSnapId } from '../configuration'; -import { addError } from '../console'; -import { ManifestStatus, setValid } from '../manifest'; import { JSON_RPC_ENDPOINT } from './constants'; import { createInterface, @@ -83,6 +82,10 @@ import { getEndowments, unrestrictedMethods, } from './snap-permissions'; +import { runSaga } from '../../store/middleware'; +import { getSnapId, getSrp, setSnapId } from '../configuration'; +import { addError } from '../console'; +import { ManifestStatus, setValid } from '../manifest'; const DEFAULT_ENVIRONMENT_URL = `https://execution.metamask.io/iframe/${packageJson.version}/index.html`; @@ -281,9 +284,8 @@ export function* initSaga({ payload }: PayloadAction) { */ export function* rebootSaga({ payload }: PayloadAction>) { const snapId: string = yield select(getSnapId); - const executionService: IframeExecutionService = yield select( - getExecutionService, - ); + const executionService: IframeExecutionService = + yield select(getExecutionService); const permissionController: GenericPermissionController = yield select( getPermissionController, ); @@ -321,9 +323,8 @@ export function* requestSaga({ payload }: PayloadAction) { yield put({ type: `${payload.handler}/setRequest`, payload }); const snapId: string = yield select(getSnapId); - const executionService: IframeExecutionService = yield select( - getExecutionService, - ); + const executionService: IframeExecutionService = + yield select(getExecutionService); try { const result: unknown = yield call( diff --git a/packages/snaps-simulator/src/features/status/StatusIndicator.test.tsx b/packages/snaps-simulator/src/features/status/StatusIndicator.test.tsx index 4a1aa7f467..e5be159eea 100644 --- a/packages/snaps-simulator/src/features/status/StatusIndicator.test.tsx +++ b/packages/snaps-simulator/src/features/status/StatusIndicator.test.tsx @@ -1,5 +1,5 @@ -import { render } from '../../utils'; import { StatusIndicator } from './StatusIndicator'; +import { render } from '../../utils'; describe('StatusIndicator', () => { it('renders', () => { diff --git a/packages/snaps-simulator/src/features/status/StatusIndicator.tsx b/packages/snaps-simulator/src/features/status/StatusIndicator.tsx index a9d3ff4e45..283e7457c0 100644 --- a/packages/snaps-simulator/src/features/status/StatusIndicator.tsx +++ b/packages/snaps-simulator/src/features/status/StatusIndicator.tsx @@ -40,8 +40,8 @@ export const StatusIndicator = () => { status === SnapStatus.Ok ? 'text.success' : status === SnapStatus.Error - ? 'text.error' - : 'info.default'; + ? 'text.error' + : 'info.default'; const handleClick = () => { dispatch(openConfigurationModal()); diff --git a/packages/snaps-simulator/src/index.html b/packages/snaps-simulator/src/index.html index f6f3eac1c6..c61cf9db37 100644 --- a/packages/snaps-simulator/src/index.html +++ b/packages/snaps-simulator/src/index.html @@ -1,4 +1,4 @@ - + diff --git a/packages/snaps-simulator/src/index.ts b/packages/snaps-simulator/src/index.ts index 19c6c8dbac..0689f4566c 100644 --- a/packages/snaps-simulator/src/index.ts +++ b/packages/snaps-simulator/src/index.ts @@ -1,2 +1,2 @@ export * from './features/index.library'; -export * from './store/index.library'; +export type * from './store/index.library'; diff --git a/packages/snaps-simulator/src/theme.ts b/packages/snaps-simulator/src/theme.ts index af678502a8..12b7c65dc6 100644 --- a/packages/snaps-simulator/src/theme.ts +++ b/packages/snaps-simulator/src/theme.ts @@ -367,7 +367,6 @@ export const theme = extendTheme({ styles: { global: { - // eslint-disable-next-line @typescript-eslint/naming-convention '#root': { display: 'flex', flexDirection: 'column', diff --git a/packages/snaps-simulator/src/types/index.ts b/packages/snaps-simulator/src/types/index.ts index d0dddb69c0..57fde6ffa2 100644 --- a/packages/snaps-simulator/src/types/index.ts +++ b/packages/snaps-simulator/src/types/index.ts @@ -1 +1 @@ -export * from './node'; +export type * from './node'; diff --git a/packages/snaps-simulator/src/types/vendor/offscreen.d.ts b/packages/snaps-simulator/src/types/vendor/offscreen.d.ts index 58fd829b6c..912fab282a 100644 --- a/packages/snaps-simulator/src/types/vendor/offscreen.d.ts +++ b/packages/snaps-simulator/src/types/vendor/offscreen.d.ts @@ -1,4 +1,4 @@ -// eslint-disable-next-line import/unambiguous +// eslint-disable-next-line import-x/unambiguous declare namespace chrome.offscreen { export type Reason = | 'TESTING' diff --git a/packages/snaps-simulator/src/types/vendor/readable-stream.d.ts b/packages/snaps-simulator/src/types/vendor/readable-stream.d.ts index e271c53f42..591d6d1e4c 100644 --- a/packages/snaps-simulator/src/types/vendor/readable-stream.d.ts +++ b/packages/snaps-simulator/src/types/vendor/readable-stream.d.ts @@ -1,4 +1,4 @@ -// eslint-disable-next-line import/unambiguous +/* eslint-disable import-x/unambiguous, import-x/no-nodejs-modules */ declare module 'readable-stream' { export type { DuplexOptions, @@ -6,5 +6,5 @@ declare module 'readable-stream' { Writable, TransformCallback, } from 'stream'; - export { Transform, Duplex, pipeline } from 'stream'; + export { Duplex, pipeline } from 'stream'; } diff --git a/packages/snaps-simulator/src/utils/environment.ts b/packages/snaps-simulator/src/utils/environment.ts index 810aa9d81e..45dad6abbf 100644 --- a/packages/snaps-simulator/src/utils/environment.ts +++ b/packages/snaps-simulator/src/utils/environment.ts @@ -5,4 +5,5 @@ export const IS_TEST_BUILD = // @ts-expect-error - Webpack replaces the value of SNAPS_TEST with a boolean // at build time, but TypeScript doesn't know that. + // eslint-disable-next-line no-restricted-globals process.env.SNAPS_TEST === true || process.env.SNAPS_TEST === 'true'; diff --git a/packages/snaps-simulator/src/utils/render.test.tsx b/packages/snaps-simulator/src/utils/render.test.tsx index cdd27ef250..6751b7280b 100644 --- a/packages/snaps-simulator/src/utils/render.test.tsx +++ b/packages/snaps-simulator/src/utils/render.test.tsx @@ -1,8 +1,8 @@ import { Bold, Text } from '@metamask/snaps-sdk/jsx'; import { getJsxChildren } from '@metamask/snaps-utils'; -import { SnapComponent } from '../features/renderer'; import { renderTextChildren } from './render'; +import { SnapComponent } from '../features/renderer'; describe('renderTextChildren', () => { it('returns a sting child', () => { diff --git a/packages/snaps-simulator/webpack.config.ts b/packages/snaps-simulator/webpack.config.ts index 504ae8fa10..36c635c995 100644 --- a/packages/snaps-simulator/webpack.config.ts +++ b/packages/snaps-simulator/webpack.config.ts @@ -1,7 +1,6 @@ import ReactRefreshPlugin from '@pmmmwh/react-refresh-webpack-plugin'; -// eslint-disable-next-line import/default import CopyPlugin from 'copy-webpack-plugin'; -import express from 'express'; +import { static as expressStatic } from 'express'; import FaviconsWebpackPlugin from 'favicons-webpack-plugin'; import HtmlWebpackPlugin from 'html-webpack-plugin'; import MonacoEditorWebpackPlugin from 'monaco-editor-webpack-plugin'; @@ -187,7 +186,7 @@ const baseAppConfig = merge( port: 8000, historyApiFallback: true, setupMiddlewares: (middlewares, { app }) => { - app?.use('/vendor', express.static(VENDOR_PATH)); + app?.use('/vendor', expressStatic(VENDOR_PATH)); return middlewares; }, diff --git a/packages/snaps-utils/.eslintrc.js b/packages/snaps-utils/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/snaps-utils/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/snaps-utils/package.json b/packages/snaps-utils/package.json index 990ce1afb2..c70b45e15a 100644 --- a/packages/snaps-utils/package.json +++ b/packages/snaps-utils/package.json @@ -64,9 +64,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../scripts/since-latest-release.sh", "test": "jest --reporters=jest-silent-reporter && yarn test:browser", @@ -105,11 +105,7 @@ "@esbuild-plugins/node-globals-polyfill": "^0.2.3", "@esbuild-plugins/node-modules-polyfill": "^0.2.2", "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/post-message-stream": "^9.0.0", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", @@ -119,8 +115,6 @@ "@types/node": "18.14.2", "@types/semver": "^7.5.0", "@types/validate-npm-package-name": "^4.0.0", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", "@wdio/browser-runner": "^8.19.0", "@wdio/cli": "^8.19.0", "@wdio/globals": "^8.19.0", @@ -131,14 +125,7 @@ "deepmerge": "^4.2.2", "depcheck": "^1.4.7", "esbuild": "^0.18.10", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "expect-webdriverio": "^4.4.1", "istanbul-lib-coverage": "^3.2.0", "istanbul-lib-report": "^3.0.0", @@ -146,8 +133,7 @@ "jest": "^29.0.2", "jest-silent-reporter": "^0.6.0", "memfs": "^3.4.13", - "prettier": "^2.8.8", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "rimraf": "^4.1.2", "ts-node": "^10.9.1", "typescript": "~5.3.3", diff --git a/packages/snaps-utils/scripts/coverage.ts b/packages/snaps-utils/scripts/coverage.ts index fd0e75f06d..934c0307f6 100644 --- a/packages/snaps-utils/scripts/coverage.ts +++ b/packages/snaps-utils/scripts/coverage.ts @@ -6,9 +6,8 @@ import { createCoverageMap } from 'istanbul-lib-coverage'; import type { ReportBase } from 'istanbul-lib-report'; import { createContext } from 'istanbul-lib-report'; import type { ReportOptions, ReportType } from 'istanbul-reports'; -import reports from 'istanbul-reports'; +import { create } from 'istanbul-reports'; import { resolve } from 'path'; -import * as process from 'process'; const COVERAGE_JSON = resolve(__dirname, '..', 'coverage.json'); const COVERAGE_PATH = resolve(__dirname, '..', 'coverage'); @@ -49,9 +48,9 @@ function generateSummaryReport( coverageMap, }); - return ( - reports.create(reportType, reportOptions) as unknown as ReportBase - ).execute(context); + return (create(reportType, reportOptions) as unknown as ReportBase).execute( + context, + ); } /** diff --git a/packages/snaps-utils/src/eval-worker.ts b/packages/snaps-utils/src/eval-worker.ts index a462050700..3da16f88e9 100644 --- a/packages/snaps-utils/src/eval-worker.ts +++ b/packages/snaps-utils/src/eval-worker.ts @@ -1,7 +1,7 @@ // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore - TypeScript complains about this being ESM in a CJS file, but // `ses/lockdown` has a CommonJS entry point. -// eslint-disable-next-line import/no-unassigned-import +// eslint-disable-next-line import-x/no-unassigned-import import 'ses/lockdown'; import { readFileSync } from 'fs'; diff --git a/packages/snaps-utils/src/fs.ts b/packages/snaps-utils/src/fs.ts index fedd52c4b7..0465c0c7e3 100644 --- a/packages/snaps-utils/src/fs.ts +++ b/packages/snaps-utils/src/fs.ts @@ -46,7 +46,7 @@ export async function isFile(pathString: string): Promise { try { const stats = await fs.stat(pathString); return stats.isFile(); - } catch (error) { + } catch { return false; } } diff --git a/packages/snaps-utils/src/iframe.ts b/packages/snaps-utils/src/iframe.ts index dcd3dff7aa..d1662b3b85 100644 --- a/packages/snaps-utils/src/iframe.ts +++ b/packages/snaps-utils/src/iframe.ts @@ -3,7 +3,6 @@ * forever if the iframe never loads, but the promise should be wrapped in * an initialization timeout in the SnapController. * - * * @param options - The options for createWindow. * @param options.uri - The iframe URI. * @param options.id - The ID to assign to the iframe. diff --git a/packages/snaps-utils/src/index.ts b/packages/snaps-utils/src/index.ts index b6f15aba7a..b7e9726780 100644 --- a/packages/snaps-utils/src/index.ts +++ b/packages/snaps-utils/src/index.ts @@ -31,4 +31,4 @@ export * from './url'; export * from './validation'; export * from './versions'; export * from './virtual-file'; -export * from './promise'; +export type * from './promise'; diff --git a/packages/snaps-utils/src/json-rpc.ts b/packages/snaps-utils/src/json-rpc.ts index 1196327889..a9ad33c038 100644 --- a/packages/snaps-utils/src/json-rpc.ts +++ b/packages/snaps-utils/src/json-rpc.ts @@ -64,7 +64,6 @@ export type RpcOrigins = Infer; */ export function assertIsRpcOrigins( value: unknown, - // eslint-disable-next-line @typescript-eslint/naming-convention ErrorWrapper?: AssertionErrorConstructor, ): asserts value is RpcOrigins { assertStruct( @@ -91,7 +90,6 @@ export type KeyringOrigins = Infer; */ export function assertIsKeyringOrigins( value: unknown, - // eslint-disable-next-line @typescript-eslint/naming-convention ErrorWrapper?: AssertionErrorConstructor, ): asserts value is KeyringOrigins { assertStruct( diff --git a/packages/snaps-utils/src/manifest/manifest.test.ts b/packages/snaps-utils/src/manifest/manifest.test.ts index 1b22eaabf2..78cffe923e 100644 --- a/packages/snaps-utils/src/manifest/manifest.test.ts +++ b/packages/snaps-utils/src/manifest/manifest.test.ts @@ -1,6 +1,18 @@ import { promises as fs } from 'fs'; import { join } from 'path'; +import { + checkManifest, + getSnapFilePaths, + getSnapFiles, + getSnapIcon, + getSnapSourceCode, + getWritableManifest, + runFixes, +} from './manifest'; +import type { SnapManifest } from './validation'; +import { runValidators } from './validator'; +import type { ValidatorMeta } from './validator-types'; import { readJsonFile } from '../fs'; import { getPlatformVersion } from '../platform-version'; import { getSnapChecksum } from '../snaps'; @@ -15,18 +27,6 @@ import { getMockSnapFiles, } from '../test-utils'; import { NpmSnapFileNames } from '../types'; -import { - checkManifest, - getSnapFilePaths, - getSnapFiles, - getSnapIcon, - getSnapSourceCode, - getWritableManifest, - runFixes, -} from './manifest'; -import type { SnapManifest } from './validation'; -import { runValidators } from './validator'; -import type { ValidatorMeta } from './validator-types'; jest.mock('fs'); @@ -139,7 +139,6 @@ describe('checkManifest', () => { }); it('returns a warning if package.json is missing recommended fields', async () => { - // eslint-disable-next-line @typescript-eslint/no-unused-vars const { repository, ...packageJson } = getPackageJson(); await fs.writeFile(PACKAGE_JSON_PATH, JSON.stringify(packageJson)); diff --git a/packages/snaps-utils/src/manifest/manifest.ts b/packages/snaps-utils/src/manifest/manifest.ts index 6e0e5cf312..46d41c3336 100644 --- a/packages/snaps-utils/src/manifest/manifest.ts +++ b/packages/snaps-utils/src/manifest/manifest.ts @@ -4,16 +4,16 @@ import { assert, isPlainObject } from '@metamask/utils'; import { promises as fs } from 'fs'; import pathUtils from 'path'; +import type { SnapManifest } from './validation'; +import type { ValidatorResults } from './validator'; +import { hasFixes, runValidators } from './validator'; +import type { ValidatorMeta, ValidatorReport } from './validator-types'; import { deepClone } from '../deep-clone'; import { readJsonFile } from '../fs'; import { parseJson } from '../json'; import type { SnapFiles, UnvalidatedSnapFiles } from '../types'; import { NpmSnapFileNames } from '../types'; import { readVirtualFile, VirtualFile } from '../virtual-file/node'; -import type { SnapManifest } from './validation'; -import type { ValidatorResults } from './validator'; -import { hasFixes, runValidators } from './validator'; -import type { ValidatorMeta, ValidatorReport } from './validator-types'; const MANIFEST_SORT_ORDER: Record = { $schema: 1, diff --git a/packages/snaps-utils/src/manifest/validation.test.ts b/packages/snaps-utils/src/manifest/validation.test.ts index 082552d01b..a43651118a 100644 --- a/packages/snaps-utils/src/manifest/validation.test.ts +++ b/packages/snaps-utils/src/manifest/validation.test.ts @@ -1,6 +1,5 @@ import { assert, is, StructError } from '@metamask/superstruct'; -import { getSnapManifest, MOCK_SNAP_ID } from '../test-utils'; import { assertIsSnapManifest, Bip32EntropyStruct, @@ -12,6 +11,7 @@ import { PermissionsStruct, SnapIdsStruct, } from './validation'; +import { getSnapManifest, MOCK_SNAP_ID } from '../test-utils'; describe('Bip32PathStruct', () => { it.each(['m/0/1/2', "m/0'/1/2", "m/1'/2'/3'/4/5/6", "m/0/1'/2"])( diff --git a/packages/snaps-utils/src/manifest/validator-types.ts b/packages/snaps-utils/src/manifest/validator-types.ts index 91eb72b84f..995bce3b70 100644 --- a/packages/snaps-utils/src/manifest/validator-types.ts +++ b/packages/snaps-utils/src/manifest/validator-types.ts @@ -1,6 +1,6 @@ +import type { SnapManifest } from './validation'; import type { Promisable } from '../promise'; import type { SnapFiles, UnvalidatedSnapFiles } from '../types'; -import type { SnapManifest } from './validation'; // Eslint uses patch based fixing, but it's too complex for our needs. // https://eslint.org/docs/latest/extend/custom-rules#applying-fixes diff --git a/packages/snaps-utils/src/manifest/validator.ts b/packages/snaps-utils/src/manifest/validator.ts index 54aff65fc6..9e45798927 100644 --- a/packages/snaps-utils/src/manifest/validator.ts +++ b/packages/snaps-utils/src/manifest/validator.ts @@ -1,6 +1,5 @@ import { assert } from '@metamask/utils'; -import type { SnapFiles, UnvalidatedSnapFiles } from '../types'; import type { ValidatorContext, ValidatorFix, @@ -9,6 +8,7 @@ import type { ValidatorSeverity, } from './validator-types'; import * as defaultValidators from './validators'; +import type { SnapFiles, UnvalidatedSnapFiles } from '../types'; export type ValidatorResults = { files?: SnapFiles; diff --git a/packages/snaps-utils/src/manifest/validators/checksum.test.ts b/packages/snaps-utils/src/manifest/validators/checksum.test.ts index 516e7a0637..74f233ce58 100644 --- a/packages/snaps-utils/src/manifest/validators/checksum.test.ts +++ b/packages/snaps-utils/src/manifest/validators/checksum.test.ts @@ -1,12 +1,12 @@ import assert from 'assert'; +import { checksum } from './checksum'; import { DEFAULT_SNAP_SHASUM, getMockSnapFiles, getSnapManifest, } from '../../test-utils'; import type { ValidatorFix } from '../validator-types'; -import { checksum } from './checksum'; describe('checksum', () => { it('does nothing on valid checksum', async () => { diff --git a/packages/snaps-utils/src/manifest/validators/expected-files.test.ts b/packages/snaps-utils/src/manifest/validators/expected-files.test.ts index ac57001cdb..f7bf8cd283 100644 --- a/packages/snaps-utils/src/manifest/validators/expected-files.test.ts +++ b/packages/snaps-utils/src/manifest/validators/expected-files.test.ts @@ -1,8 +1,8 @@ import assert from 'assert'; +import { expectedFiles } from './expected-files'; import { getMockSnapFiles } from '../../test-utils'; import type { UnvalidatedSnapFiles } from '../../types'; -import { expectedFiles } from './expected-files'; describe('expectedFiles', () => { it('does nothing if files exist', async () => { diff --git a/packages/snaps-utils/src/manifest/validators/icon-declared.test.ts b/packages/snaps-utils/src/manifest/validators/icon-declared.test.ts index d74066a684..9c5692ebd5 100644 --- a/packages/snaps-utils/src/manifest/validators/icon-declared.test.ts +++ b/packages/snaps-utils/src/manifest/validators/icon-declared.test.ts @@ -1,7 +1,7 @@ import assert from 'assert'; -import { getMockSnapFiles, getSnapManifest } from '../../test-utils'; import { iconDeclared } from './icon-declared'; +import { getMockSnapFiles, getSnapManifest } from '../../test-utils'; describe('iconDeclared', () => { it('does nothing if icon is declared', async () => { diff --git a/packages/snaps-utils/src/manifest/validators/icon-dimensions.test.ts b/packages/snaps-utils/src/manifest/validators/icon-dimensions.test.ts index 05c3d5128d..a5b0deb91b 100644 --- a/packages/snaps-utils/src/manifest/validators/icon-dimensions.test.ts +++ b/packages/snaps-utils/src/manifest/validators/icon-dimensions.test.ts @@ -1,7 +1,7 @@ import assert from 'assert'; -import { getMockSnapFiles } from '../../test-utils'; import { iconDimensions } from './icon-dimensions'; +import { getMockSnapFiles } from '../../test-utils'; describe('iconDimensions', () => { it('does nothing if icon is square', async () => { diff --git a/packages/snaps-utils/src/manifest/validators/icon-missing.test.ts b/packages/snaps-utils/src/manifest/validators/icon-missing.test.ts index e1013e5926..40452d2ae8 100644 --- a/packages/snaps-utils/src/manifest/validators/icon-missing.test.ts +++ b/packages/snaps-utils/src/manifest/validators/icon-missing.test.ts @@ -1,7 +1,7 @@ import assert from 'assert'; -import { getMockSnapFiles } from '../../test-utils'; import { iconMissing } from './icon-missing'; +import { getMockSnapFiles } from '../../test-utils'; describe('iconMissing', () => { it('does nothing if icon exists', async () => { diff --git a/packages/snaps-utils/src/manifest/validators/is-localization-file.test.ts b/packages/snaps-utils/src/manifest/validators/is-localization-file.test.ts index 13cbc3237e..fcd268db7a 100644 --- a/packages/snaps-utils/src/manifest/validators/is-localization-file.test.ts +++ b/packages/snaps-utils/src/manifest/validators/is-localization-file.test.ts @@ -1,8 +1,8 @@ import assert from 'assert'; +import { isLocalizationFile } from './is-localization-file'; import { getMockLocalizationFile } from '../../test-utils'; import { VirtualFile } from '../../virtual-file'; -import { isLocalizationFile } from './is-localization-file'; describe('isLocalizationFile', () => { it('does nothing on valid files', async () => { diff --git a/packages/snaps-utils/src/manifest/validators/is-package-json.test.ts b/packages/snaps-utils/src/manifest/validators/is-package-json.test.ts index 1f3142bb63..cd6f459d7b 100644 --- a/packages/snaps-utils/src/manifest/validators/is-package-json.test.ts +++ b/packages/snaps-utils/src/manifest/validators/is-package-json.test.ts @@ -1,8 +1,8 @@ import assert from 'assert'; +import { isPackageJson } from './is-package-json'; import { getPackageJson } from '../../test-utils'; import { VirtualFile } from '../../virtual-file'; -import { isPackageJson } from './is-package-json'; describe('isPackageJson', () => { it("does nothing if file doesn't exist", async () => { diff --git a/packages/snaps-utils/src/manifest/validators/is-snap-icon.test.ts b/packages/snaps-utils/src/manifest/validators/is-snap-icon.test.ts index 18fad113f0..c2c9fc12c3 100644 --- a/packages/snaps-utils/src/manifest/validators/is-snap-icon.test.ts +++ b/packages/snaps-utils/src/manifest/validators/is-snap-icon.test.ts @@ -1,7 +1,7 @@ import assert from 'assert'; -import { VirtualFile } from '../../virtual-file'; import { isSnapIcon } from './is-snap-icon'; +import { VirtualFile } from '../../virtual-file'; describe('isSnapIcon', () => { it('does nothing on valid icon', async () => { diff --git a/packages/snaps-utils/src/manifest/validators/is-snap-manifest.test.ts b/packages/snaps-utils/src/manifest/validators/is-snap-manifest.test.ts index 1a71b13b42..d5f1178e13 100644 --- a/packages/snaps-utils/src/manifest/validators/is-snap-manifest.test.ts +++ b/packages/snaps-utils/src/manifest/validators/is-snap-manifest.test.ts @@ -1,8 +1,8 @@ import assert from 'assert'; +import { isSnapManifest } from './is-snap-manifest'; import { getMockSnapFiles } from '../../test-utils'; import { VirtualFile } from '../../virtual-file'; -import { isSnapManifest } from './is-snap-manifest'; describe('isSnapManifest', () => { it("does nothing if there's not manifest", async () => { diff --git a/packages/snaps-utils/src/manifest/validators/manifest-localization.test.ts b/packages/snaps-utils/src/manifest/validators/manifest-localization.test.ts index 698d3b28cc..418fcede35 100644 --- a/packages/snaps-utils/src/manifest/validators/manifest-localization.test.ts +++ b/packages/snaps-utils/src/manifest/validators/manifest-localization.test.ts @@ -1,11 +1,11 @@ import assert from 'assert'; +import { manifestLocalization } from './manifest-localization'; import { getMockLocalizationFile, getMockSnapFilesWithUpdatedChecksum, getSnapManifest, } from '../../test-utils'; -import { manifestLocalization } from './manifest-localization'; describe('manifestLocalization', () => { it('does nothing on valid localization', async () => { diff --git a/packages/snaps-utils/src/manifest/validators/package-json-recommended-fields.test.ts b/packages/snaps-utils/src/manifest/validators/package-json-recommended-fields.test.ts index 0b8e6a76ea..74db6022c2 100644 --- a/packages/snaps-utils/src/manifest/validators/package-json-recommended-fields.test.ts +++ b/packages/snaps-utils/src/manifest/validators/package-json-recommended-fields.test.ts @@ -1,7 +1,7 @@ import assert from 'assert'; -import { getMockSnapFiles, getPackageJson } from '../../test-utils'; import { packageJsonRecommendedFields } from './package-json-recommended-fields'; +import { getMockSnapFiles, getPackageJson } from '../../test-utils'; describe('packageJsonRecommendedFields', () => { it('does nothing if fields exist', async () => { diff --git a/packages/snaps-utils/src/manifest/validators/package-name-match.test.ts b/packages/snaps-utils/src/manifest/validators/package-name-match.test.ts index 833f9f21ed..07d7820045 100644 --- a/packages/snaps-utils/src/manifest/validators/package-name-match.test.ts +++ b/packages/snaps-utils/src/manifest/validators/package-name-match.test.ts @@ -1,8 +1,8 @@ import assert from 'assert'; +import { packageNameMatch } from './package-name-match'; import { deepClone } from '../../deep-clone'; import { getMockSnapFiles, getSnapManifest } from '../../test-utils'; -import { packageNameMatch } from './package-name-match'; describe('packageNameMatch', () => { it('does nothing if name matches', async () => { diff --git a/packages/snaps-utils/src/manifest/validators/platform-version.test.ts b/packages/snaps-utils/src/manifest/validators/platform-version.test.ts index 5d101530a8..a20add0320 100644 --- a/packages/snaps-utils/src/manifest/validators/platform-version.test.ts +++ b/packages/snaps-utils/src/manifest/validators/platform-version.test.ts @@ -2,13 +2,13 @@ import type { SemVerVersion } from '@metamask/utils'; import assert from 'assert'; import { createRequire } from 'module'; -import { getMockSnapFiles, getSnapManifest } from '../../test-utils'; import { platformVersion } from './platform-version'; +import { getMockSnapFiles, getSnapManifest } from '../../test-utils'; describe('platformVersion', () => { const require = createRequire(__filename); const packageJson = require.resolve('@metamask/snaps-sdk/package.json'); - // eslint-disable-next-line import/no-dynamic-require + // eslint-disable-next-line import-x/no-dynamic-require const sdkVersion = require(packageJson).version; it('does nothing if the version matches', async () => { diff --git a/packages/snaps-utils/src/manifest/validators/platform-version.ts b/packages/snaps-utils/src/manifest/validators/platform-version.ts index f3393e8d23..fe1f78cfa8 100644 --- a/packages/snaps-utils/src/manifest/validators/platform-version.ts +++ b/packages/snaps-utils/src/manifest/validators/platform-version.ts @@ -16,7 +16,7 @@ export const platformVersion: ValidatorMeta = { const require = createRequire(files.manifest.path); const packageJson = require.resolve('@metamask/snaps-sdk/package.json'); - // eslint-disable-next-line import/no-dynamic-require + // eslint-disable-next-line import-x/no-dynamic-require const actualVersion = require(packageJson).version; if (!manifestPlatformVersion) { diff --git a/packages/snaps-utils/src/manifest/validators/repository-match.test.ts b/packages/snaps-utils/src/manifest/validators/repository-match.test.ts index c5b9f25c1c..7f7c1a5513 100644 --- a/packages/snaps-utils/src/manifest/validators/repository-match.test.ts +++ b/packages/snaps-utils/src/manifest/validators/repository-match.test.ts @@ -1,8 +1,8 @@ import assert from 'assert'; +import { repositoryMatch } from './repository-match'; import { deepClone } from '../../deep-clone'; import { getMockSnapFiles, getSnapManifest } from '../../test-utils'; -import { repositoryMatch } from './repository-match'; describe('repositoryMatch', () => { it('does nothing if repositories match', async () => { diff --git a/packages/snaps-utils/src/manifest/validators/version-match.test.ts b/packages/snaps-utils/src/manifest/validators/version-match.test.ts index 0f57ac7575..dae60819bf 100644 --- a/packages/snaps-utils/src/manifest/validators/version-match.test.ts +++ b/packages/snaps-utils/src/manifest/validators/version-match.test.ts @@ -1,8 +1,8 @@ import assert from 'assert'; +import { versionMatch } from './version-match'; import { deepClone } from '../../deep-clone'; import { getMockSnapFiles, getSnapManifest } from '../../test-utils'; -import { versionMatch } from './version-match'; describe('versionMatch', () => { it('does nothing if versions match', async () => { diff --git a/packages/snaps-utils/src/mock.ts b/packages/snaps-utils/src/mock.ts index 16ce1bd440..8383ac3e90 100644 --- a/packages/snaps-utils/src/mock.ts +++ b/packages/snaps-utils/src/mock.ts @@ -25,7 +25,6 @@ type MockEthereumProvider = EventEmitter & { * @returns A mocked snap provider. */ function getMockSnapGlobal(): MockSnapGlobal { - // eslint-disable-next-line @typescript-eslint/require-await return { request: async () => true }; } @@ -36,7 +35,6 @@ function getMockSnapGlobal(): MockSnapGlobal { */ function getMockEthereumProvider(): MockEthereumProvider { const mockProvider = new EventEmitter() as Partial; - // eslint-disable-next-line @typescript-eslint/require-await mockProvider.request = async () => true; return mockProvider as MockEthereumProvider; } @@ -59,7 +57,6 @@ const mockFunction = () => true; class MockClass {} const handler = { - // eslint-disable-next-line @typescript-eslint/naming-convention construct(Target: any, args: any[]): any { return new Proxy(new Target(...args), handler); }, diff --git a/packages/snaps-utils/src/node.ts b/packages/snaps-utils/src/node.ts index 3ad700a9a4..07906ad662 100644 --- a/packages/snaps-utils/src/node.ts +++ b/packages/snaps-utils/src/node.ts @@ -1,4 +1,4 @@ -/* eslint-disable import/export */ +/* eslint-disable import-x/export */ export * from '.'; export * from './eval'; diff --git a/packages/snaps-utils/src/post-process.ts b/packages/snaps-utils/src/post-process.ts index 49c39ba708..4ef986cbc1 100644 --- a/packages/snaps-utils/src/post-process.ts +++ b/packages/snaps-utils/src/post-process.ts @@ -1,4 +1,3 @@ -// eslint-disable-next-line @typescript-eslint/no-shadow import type { Node, Visitor, PluginObj } from '@babel/core'; import { transformSync, template } from '@babel/core'; import type { Expression, Identifier, TemplateElement } from '@babel/types'; diff --git a/packages/snaps-utils/src/snaps.test.ts b/packages/snaps-utils/src/snaps.test.ts index 812c70a5ff..dd9fbddaa6 100644 --- a/packages/snaps-utils/src/snaps.test.ts +++ b/packages/snaps-utils/src/snaps.test.ts @@ -49,7 +49,9 @@ describe('assertIsValidSnapId', () => { 'throws for non-strings (#%#)', (value) => { expect(() => assertIsValidSnapId(value)).toThrow( - // eslint-disable-next-line @typescript-eslint/restrict-template-expressions + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions, @typescript-eslint/no-base-to-string `Invalid snap ID: Expected the value to satisfy a union of \`intersection | string\`, but received: ${value}.`, ); }, diff --git a/packages/snaps-utils/src/test-utils/manifest.ts b/packages/snaps-utils/src/test-utils/manifest.ts index a07bf7ed83..fdaa7359c5 100644 --- a/packages/snaps-utils/src/test-utils/manifest.ts +++ b/packages/snaps-utils/src/test-utils/manifest.ts @@ -1,12 +1,12 @@ import type { SemVerVersion } from '@metamask/utils'; +import type { MakeSemVer } from './common'; import type { LocalizationFile } from '../localization'; import type { SnapManifest } from '../manifest/validation'; import type { Chain, Namespace } from '../namespace'; import { getSnapChecksum } from '../snaps'; import type { NpmSnapPackageJson, SnapFiles } from '../types'; import { VirtualFile } from '../virtual-file'; -import type { MakeSemVer } from './common'; type GetSnapManifestOptions = Partial> & { shasum?: string; diff --git a/packages/snaps-utils/src/test-utils/snap.ts b/packages/snaps-utils/src/test-utils/snap.ts index e6f7498ee6..2012112dc0 100644 --- a/packages/snaps-utils/src/test-utils/snap.ts +++ b/packages/snaps-utils/src/test-utils/snap.ts @@ -1,14 +1,14 @@ import type { SnapId } from '@metamask/snaps-sdk'; import type { SemVerVersion } from '@metamask/utils'; -import type { PersistedSnap, Snap, TruncatedSnap } from '../snaps'; -import { SnapStatus } from '../snaps'; import type { MakeSemVer } from './common'; import { DEFAULT_SNAP_BUNDLE, DEFAULT_SNAP_SHASUM, getSnapManifest, } from './manifest'; +import type { PersistedSnap, Snap, TruncatedSnap } from '../snaps'; +import { SnapStatus } from '../snaps'; export const MOCK_SNAP_ID = 'npm:@metamask/example-snap' as SnapId; export const MOCK_LOCAL_SNAP_ID = 'local:http://localhost:8080' as SnapId; diff --git a/packages/snaps-utils/src/ui.test.tsx b/packages/snaps-utils/src/ui.test.tsx index a1229f97b4..b46e68c815 100644 --- a/packages/snaps-utils/src/ui.test.tsx +++ b/packages/snaps-utils/src/ui.test.tsx @@ -976,6 +976,7 @@ describe('getJsxChildren', () => { const element = ( Hello + {/* eslint-disable-next-line no-constant-binary-expression */} {false && Foo} World @@ -991,6 +992,7 @@ describe('getJsxChildren', () => { const element = ( Hello + {/* eslint-disable-next-line no-constant-binary-expression */} {false && 'Foo'} World diff --git a/packages/snaps-utils/src/ui.tsx b/packages/snaps-utils/src/ui.tsx index 10aaff7b2c..06dae6fa5f 100644 --- a/packages/snaps-utils/src/ui.tsx +++ b/packages/snaps-utils/src/ui.tsx @@ -162,6 +162,9 @@ export function getTextChildren( const children: (string | StandardFormattingElement | LinkElement | null)[] = []; + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line @typescript-eslint/no-floating-promises walkTokens(rootTokens, (token) => { if (token.type === 'paragraph') { if (children.length > 0) { @@ -181,7 +184,6 @@ export function getTextChildren( } }); - // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion return children.filter((child) => child !== null) as ( | string | StandardFormattingElement @@ -318,6 +320,9 @@ function getMarkdownLinks(text: string) { const links: Tokens.Link[] = []; // Walk the lexed tokens and collect all link tokens + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line @typescript-eslint/no-floating-promises walkTokens(tokens, (token) => { if (token.type === 'link') { links.push(token as Tokens.Link); @@ -435,8 +440,6 @@ export function getTotalTextLength(component: Component): number { switch (type) { case NodeType.Panel: return component.children.reduce( - // This is a bug in TypeScript: https://github.com/microsoft/TypeScript/issues/48313 - // eslint-disable-next-line @typescript-eslint/restrict-plus-operands (sum, node) => sum + getTotalTextLength(node), 0, ); @@ -516,7 +519,7 @@ export function walkJsx( ): Value | undefined { if (Array.isArray(node)) { for (const child of node) { - const childResult = walkJsx(child as JSXElement, callback, depth); + const childResult = walkJsx(child, callback, depth); if (childResult !== undefined) { return childResult; } diff --git a/packages/snaps-utils/src/virtual-file/VirtualFile.ts b/packages/snaps-utils/src/virtual-file/VirtualFile.ts index 1e9886fe27..d2adcb4f6c 100644 --- a/packages/snaps-utils/src/virtual-file/VirtualFile.ts +++ b/packages/snaps-utils/src/virtual-file/VirtualFile.ts @@ -24,7 +24,7 @@ import { deepClone } from '../deep-clone'; * } * } */ -// eslint-disable-next-line @typescript-eslint/consistent-type-definitions, @typescript-eslint/no-empty-interface +// eslint-disable-next-line @typescript-eslint/consistent-type-definitions, @typescript-eslint/no-empty-object-type export interface DataMap {} export type Value = string | Uint8Array; diff --git a/packages/snaps-utils/src/virtual-file/toVirtualFile.test.ts b/packages/snaps-utils/src/virtual-file/toVirtualFile.test.ts index 384edff57a..8a198570de 100644 --- a/packages/snaps-utils/src/virtual-file/toVirtualFile.test.ts +++ b/packages/snaps-utils/src/virtual-file/toVirtualFile.test.ts @@ -10,11 +10,9 @@ jest.mock('fs'); describe('toVirtualFile', () => { beforeEach(() => { vol.reset(); - /* eslint-disable @typescript-eslint/naming-convention */ vol.fromJSON({ '/foo/utf-8.txt': CONTENTS_UTF8, }); - /* eslint-enable @typescript-eslint/naming-convention */ }); describe('readVirtualFile', () => { @@ -40,10 +38,7 @@ describe('toVirtualFile', () => { new VirtualFile({ value: CONTENTS_UTF8, path: PATH }), ); - expect(vol.toJSON(PATH)).toStrictEqual( - // eslint-disable-next-line @typescript-eslint/naming-convention - { [PATH]: CONTENTS_UTF8 }, - ); + expect(vol.toJSON(PATH)).toStrictEqual({ [PATH]: CONTENTS_UTF8 }); }); }); }); diff --git a/packages/snaps-utils/wdio.config.js b/packages/snaps-utils/wdio.config.js index 0d30f0031e..9fc2745901 100644 --- a/packages/snaps-utils/wdio.config.js +++ b/packages/snaps-utils/wdio.config.js @@ -1,4 +1,4 @@ -/* eslint-disable import/unambiguous, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires, n/no-process-env */ +/* eslint-disable n/no-process-env */ const { NodeGlobalsPolyfillPlugin, diff --git a/packages/snaps-webpack-plugin/.eslintrc.js b/packages/snaps-webpack-plugin/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/snaps-webpack-plugin/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/snaps-webpack-plugin/package.json b/packages/snaps-webpack-plugin/package.json index c2c98e984c..2765489f70 100644 --- a/packages/snaps-webpack-plugin/package.json +++ b/packages/snaps-webpack-plugin/package.json @@ -45,9 +45,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ../../.gitignore", "publish:preview": "yarn npm publish --tag preview", "since-latest-release": "../../scripts/since-latest-release.sh", "test": "jest --reporters=jest-silent-reporter", @@ -60,40 +60,26 @@ "@metamask/snaps-sdk": "workspace:^", "@metamask/snaps-utils": "workspace:^", "@metamask/utils": "^11.2.0", - "prettier": "^2.8.8", "webpack-sources": "^3.2.3" }, "devDependencies": { "@lavamoat/allow-scripts": "^3.0.4", - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", "@ts-bridge/cli": "^0.6.1", "@types/jest": "^27.5.1", "@types/webpack-sources": "^3.2.0", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "jest": "^29.0.2", "jest-it-up": "^2.0.0", "jest-silent-reporter": "^0.6.0", "memfs": "^3.4.13", - "prettier-plugin-packagejson": "^2.5.2", + "prettier": "^3.3.3", "typescript": "~5.3.3", - "webpack": "^5.88.0" + "webpack": "^5.97.1" }, "engines": { "node": "^18.16 || >=20" diff --git a/packages/snaps-webpack-plugin/src/__snapshots__/plugin.test.ts.snap b/packages/snaps-webpack-plugin/src/__snapshots__/plugin.test.ts.snap index 5f34f4b5a1..b5b3ac1423 100644 --- a/packages/snaps-webpack-plugin/src/__snapshots__/plugin.test.ts.snap +++ b/packages/snaps-webpack-plugin/src/__snapshots__/plugin.test.ts.snap @@ -2,7 +2,6 @@ exports[`SnapsWebpackPlugin applies a transform 1`] = ` "(() => { - var __webpack_exports__ = {}; const foo = 'bar'; })();" `; @@ -10,7 +9,6 @@ exports[`SnapsWebpackPlugin applies a transform 1`] = ` exports[`SnapsWebpackPlugin forwards the options 1`] = ` "/******/(() => { // webpackBootstrap - var __webpack_exports__ = {}; // foo bar /* baz qux */ diff --git a/packages/snaps-webpack-plugin/src/manifest.test.ts b/packages/snaps-webpack-plugin/src/manifest.test.ts index 451ccb5701..5d589c24d6 100644 --- a/packages/snaps-webpack-plugin/src/manifest.test.ts +++ b/packages/snaps-webpack-plugin/src/manifest.test.ts @@ -1,6 +1,5 @@ import { getSnapManifest } from '@metamask/snaps-utils/test-utils'; import { promises as fs } from 'fs'; -import { resolve } from 'path'; import { writeManifest } from './manifest'; @@ -47,44 +46,6 @@ describe('writeManifest', () => { `); }); - it('uses a custom Prettier config if found', async () => { - const manifest = JSON.stringify(getSnapManifest()); - await writeManifest( - resolve(__dirname, '__fixtures__', 'foo.json'), - manifest, - ); - - expect(jest.mocked(fs.writeFile).mock.calls[0][1]).toMatchInlineSnapshot(` - "{ - "version": "1.0.0", - "description": "The test example snap!", - "proposedName": "@metamask/example-snap", - "repository": { - "type": "git", - "url": "https://github.com/MetaMask/example-snap.git" - }, - "source": { - "shasum": "/17SwI03+Cn9sk45Z6Czp+Sktru1oLzOmkJW+YbP9WE=", - "location": { - "npm": { - "filePath": "dist/bundle.js", - "packageName": "@metamask/example-snap", - "registry": "https://registry.npmjs.org", - "iconPath": "images/icon.svg" - } - } - }, - "initialPermissions": { - "snap_dialog": {}, - "endowment:rpc": { "snaps": true, "dapps": false } - }, - "platformVersion": "1.0.0", - "manifestVersion": "0.1" - } - " - `); - }); - it('accepts a custom write function', async () => { const fn = jest.fn(); const manifest = JSON.stringify(getSnapManifest()); diff --git a/packages/snaps-webpack-plugin/src/manifest.ts b/packages/snaps-webpack-plugin/src/manifest.ts index 041828404b..cd8de4562d 100644 --- a/packages/snaps-webpack-plugin/src/manifest.ts +++ b/packages/snaps-webpack-plugin/src/manifest.ts @@ -1,13 +1,14 @@ import type { WriteFileFunction } from '@metamask/snaps-utils/node'; import { promises as fs } from 'fs'; -import { format, resolveConfig } from 'prettier'; +import * as babel from 'prettier/plugins/babel'; +// TODO: Either fix this lint violation or explain why it's necessary to ignore. +// eslint-disable-next-line import-x/namespace +import * as estree from 'prettier/plugins/estree'; +import { format } from 'prettier/standalone'; /** * Format the manifest data with Prettier and write it to disk. * - * It uses the Prettier configuration found in the project directory (if any), - * or the default Prettier configuration if none is found. - * * @param path - The path to write the manifest to. * @param data - The manifest data. * @param writeFileFn - The function to use to write the manifest. @@ -18,14 +19,11 @@ export async function writeManifest( data: string, writeFileFn: WriteFileFunction = fs.writeFile, ) { - const config = await resolveConfig(path, { - editorconfig: true, - }); - - const formattedManifest = format(data, { - ...config, + const formattedManifest = await format(data, { + tabWidth: 2, parser: 'json', filepath: path, + plugins: [babel, estree], }); await writeFileFn(path, formattedManifest); diff --git a/packages/snaps-webpack-plugin/src/plugin.test.ts b/packages/snaps-webpack-plugin/src/plugin.test.ts index 0b80589a97..c0e271ee59 100644 --- a/packages/snaps-webpack-plugin/src/plugin.test.ts +++ b/packages/snaps-webpack-plugin/src/plugin.test.ts @@ -13,6 +13,9 @@ import type { IPromisesAPI } from 'memfs/lib/promises'; import * as os from 'os'; import * as pathUtils from 'path'; import type { Stats, Configuration } from 'webpack'; +// TODO: Either fix this lint violation or explain why it's necessary to +// ignore. +// eslint-disable-next-line import-x/no-named-as-default import webpack from 'webpack'; import { writeManifest } from './manifest'; diff --git a/packages/snaps-webpack-plugin/src/plugin.ts b/packages/snaps-webpack-plugin/src/plugin.ts index 89cf240b12..c28abd4f41 100644 --- a/packages/snaps-webpack-plugin/src/plugin.ts +++ b/packages/snaps-webpack-plugin/src/plugin.ts @@ -128,6 +128,10 @@ export default class SnapsWebpackPlugin { const filePath = pathUtils.join(outputPath, file.name); + assert( + compiler.outputFileSystem, + 'Expected compiler to have an output file system.', + ); const bundleFile = await promisify( compiler.outputFileSystem.readFile.bind(compiler.outputFileSystem), )(filePath); @@ -136,7 +140,7 @@ export default class SnapsWebpackPlugin { const bundleContent = bundleFile.toString(); if (this.options.eval) { - await useTemporaryFile('snaps-bundle.js', bundleContent, (path) => + await useTemporaryFile('snaps-bundle.js', bundleContent, async (path) => evalBundle(path), ); } @@ -148,6 +152,10 @@ export default class SnapsWebpackPlugin { updateAndWriteManifest: this.options.writeManifest, sourceCode: bundleContent, writeFileFn: async (path, data) => { + assert( + compiler.outputFileSystem, + 'Expected compiler to have an output file system.', + ); return writeManifest( path, data, diff --git a/packages/test-snaps/.eslintrc.js b/packages/test-snaps/.eslintrc.js deleted file mode 100644 index a47fd0b65d..0000000000 --- a/packages/test-snaps/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - parserOptions: { - tsconfigRootDir: __dirname, - }, -}; diff --git a/packages/test-snaps/package.json b/packages/test-snaps/package.json index c23522be5b..69c29cac68 100644 --- a/packages/test-snaps/package.json +++ b/packages/test-snaps/package.json @@ -28,9 +28,9 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", "lint:ci": "yarn lint", "lint:dependencies": "depcheck", - "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:eslint": "eslint . --cache", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", - "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ../../.gitignore", + "lint:misc": "prettier --no-error-on-unmatched-pattern --log-level warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ../../.gitignore", "since-latest-release": "../../scripts/since-latest-release.sh", "start": "yarn workspaces foreach --parallel --verbose --interlaced --all --include \"@metamask/test-snaps\" --include \"@metamask/example-snaps\" run start:test", "start:test": "cross-env NODE_ENV=development webpack serve", @@ -80,11 +80,7 @@ "react-redux": "^8.0.5" }, "devDependencies": { - "@metamask/auto-changelog": "^3.4.4", - "@metamask/eslint-config": "^12.1.0", - "@metamask/eslint-config-jest": "^12.1.0", - "@metamask/eslint-config-nodejs": "^12.1.0", - "@metamask/eslint-config-typescript": "^12.1.0", + "@metamask/auto-changelog": "^4.1.0", "@metamask/providers": "^20.0.0", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.10", "@swc/core": "1.3.78", @@ -92,35 +88,26 @@ "@types/jest": "^27.5.1", "@types/node": "18.14.2", "@types/webpack-env": "^1.18.1", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^6.21.0", "copy-webpack-plugin": "^11.0.0", "cross-env": "^7.0.3", "css-loader": "^6.7.3", "deepmerge": "^4.2.2", "depcheck": "^1.4.7", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.5", - "eslint-plugin-jsdoc": "^41.1.2", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", + "eslint": "^9.11.0", "favicons": "^7.1.2", "favicons-webpack-plugin": "^6.0.0", "html-webpack-plugin": "^5.5.0", "jest": "^29.0.2", "jest-it-up": "^2.0.0", "jest-silent-reporter": "^0.6.0", - "prettier": "^2.8.8", + "prettier": "^3.3.3", "style-loader": "^3.3.2", "swc-loader": "^0.2.3", "terser-webpack-plugin": "^5.3.9", "ts-node": "^10.9.1", "tsconfig-paths-webpack-plugin": "^4.0.1", "typescript": "~5.3.3", - "webpack": "^5.88.0", + "webpack": "^5.97.1", "webpack-cli": "^5.1.4", "webpack-dev-server": "^4.15.1" }, diff --git a/packages/test-snaps/src/components/Connect.tsx b/packages/test-snaps/src/components/Connect.tsx index e3b9299304..2a65898d0c 100644 --- a/packages/test-snaps/src/components/Connect.tsx +++ b/packages/test-snaps/src/components/Connect.tsx @@ -3,10 +3,10 @@ import type { ChangeEvent, FormEvent, FunctionComponent } from 'react'; import { useState } from 'react'; import { Button, Form } from 'react-bootstrap'; +import { ButtonSpinner } from './ButtonSpinner'; import packageJson from '../../package.json'; import { useInstallSnapMutation } from '../api'; import { useInstalled } from '../utils'; -import { ButtonSpinner } from './ButtonSpinner'; type ConnectProps = { name: string; diff --git a/packages/test-snaps/src/components/Snap.tsx b/packages/test-snaps/src/components/Snap.tsx index 0fb198dac1..f9e330d0cf 100644 --- a/packages/test-snaps/src/components/Snap.tsx +++ b/packages/test-snaps/src/components/Snap.tsx @@ -2,8 +2,8 @@ import type { FunctionComponent, ReactNode } from 'react'; import { Card, Col } from 'react-bootstrap'; import CardHeader from 'react-bootstrap/CardHeader'; -import { getSnapId } from '../utils'; import { Connect } from './Connect'; +import { getSnapId } from '../utils'; export type SnapProps = { /** diff --git a/packages/test-snaps/src/features/snaps/bip32/BIP32.tsx b/packages/test-snaps/src/features/snaps/bip32/BIP32.tsx index 51b593f794..8ee6490ae5 100644 --- a/packages/test-snaps/src/features/snaps/bip32/BIP32.tsx +++ b/packages/test-snaps/src/features/snaps/bip32/BIP32.tsx @@ -1,8 +1,8 @@ import type { FunctionComponent } from 'react'; -import { Snap } from '../../../components'; import { PublicKey, SignMessage } from './components'; import { BIP_32_PORT, BIP_32_SNAP_ID, BIP_32_VERSION } from './constants'; +import { Snap } from '../../../components'; export const BIP32: FunctionComponent = () => { return ( diff --git a/packages/test-snaps/src/features/snaps/bip44/BIP44.tsx b/packages/test-snaps/src/features/snaps/bip44/BIP44.tsx index 2a63745c91..4aa047269a 100644 --- a/packages/test-snaps/src/features/snaps/bip44/BIP44.tsx +++ b/packages/test-snaps/src/features/snaps/bip44/BIP44.tsx @@ -2,11 +2,11 @@ import { logError } from '@metamask/snaps-utils'; import type { FunctionComponent } from 'react'; import { Button, ButtonGroup } from 'react-bootstrap'; +import { SignMessage } from './components'; +import { BIP_44_PORT, BIP_44_SNAP_ID, BIP_44_VERSION } from './constants'; import { useInvokeMutation } from '../../../api'; import { Result, Snap } from '../../../components'; import { getSnapId } from '../../../utils'; -import { SignMessage } from './components'; -import { BIP_44_PORT, BIP_44_SNAP_ID, BIP_44_VERSION } from './constants'; export const BIP44: FunctionComponent = () => { const [invokeSnap, { isLoading, data, error }] = useInvokeMutation(); diff --git a/packages/test-snaps/src/features/snaps/client-status/ClientStatus.tsx b/packages/test-snaps/src/features/snaps/client-status/ClientStatus.tsx index cbe86ae4a5..6d82873167 100644 --- a/packages/test-snaps/src/features/snaps/client-status/ClientStatus.tsx +++ b/packages/test-snaps/src/features/snaps/client-status/ClientStatus.tsx @@ -2,14 +2,14 @@ import { logError } from '@metamask/snaps-utils'; import type { FunctionComponent } from 'react'; import { Button } from 'react-bootstrap'; -import { useInvokeMutation } from '../../../api'; -import { Result, Snap } from '../../../components'; -import { getSnapId } from '../../../utils'; import { CLIENT_STATUS_SNAP_ID, CLIENT_STATUS_SNAP_PORT, CLIENT_STATUS_VERSION, } from './constants'; +import { useInvokeMutation } from '../../../api'; +import { Result, Snap } from '../../../components'; +import { getSnapId } from '../../../utils'; export const ClientStatus: FunctionComponent = () => { const [invokeSnap, { isLoading, data, error }] = useInvokeMutation(); diff --git a/packages/test-snaps/src/features/snaps/cronjobs/Cronjobs.tsx b/packages/test-snaps/src/features/snaps/cronjobs/Cronjobs.tsx index e5e2bb273b..2de7a35fcb 100644 --- a/packages/test-snaps/src/features/snaps/cronjobs/Cronjobs.tsx +++ b/packages/test-snaps/src/features/snaps/cronjobs/Cronjobs.tsx @@ -1,6 +1,5 @@ import type { FunctionComponent } from 'react'; -import { Snap } from '../../../components'; import { CancelBackgroundEvent, ScheduleBackgroundEvent, @@ -11,6 +10,7 @@ import { CRONJOBS_SNAP_PORT, CRONJOBS_VERSION, } from './constants'; +import { Snap } from '../../../components'; export const Cronjobs: FunctionComponent = () => { return ( diff --git a/packages/test-snaps/src/features/snaps/dialogs/Dialogs.tsx b/packages/test-snaps/src/features/snaps/dialogs/Dialogs.tsx index d92e4aadf1..b808772078 100644 --- a/packages/test-snaps/src/features/snaps/dialogs/Dialogs.tsx +++ b/packages/test-snaps/src/features/snaps/dialogs/Dialogs.tsx @@ -2,14 +2,14 @@ import { logError } from '@metamask/snaps-utils'; import type { FunctionComponent } from 'react'; import { Button, ButtonGroup } from 'react-bootstrap'; -import { useInvokeMutation } from '../../../api'; -import { Result, Snap } from '../../../components'; -import { getSnapId } from '../../../utils'; import { DIALOGS_SNAP_ID, DIALOGS_SNAP_PORT, DIALOGS_VERSION, } from './constants'; +import { useInvokeMutation } from '../../../api'; +import { Result, Snap } from '../../../components'; +import { getSnapId } from '../../../utils'; export const Dialogs: FunctionComponent = () => { const [invokeSnap, { isLoading, data }] = useInvokeMutation(); diff --git a/packages/test-snaps/src/features/snaps/errors/Errors.tsx b/packages/test-snaps/src/features/snaps/errors/Errors.tsx index b036d907e1..027e688061 100644 --- a/packages/test-snaps/src/features/snaps/errors/Errors.tsx +++ b/packages/test-snaps/src/features/snaps/errors/Errors.tsx @@ -2,10 +2,10 @@ import { logError } from '@metamask/snaps-utils'; import type { FunctionComponent } from 'react'; import { Button } from 'react-bootstrap'; +import { ERRORS_SNAP_ID, ERRORS_SNAP_PORT, ERRORS_VERSION } from './constants'; import { useInvokeMutation } from '../../../api'; import { Result, Snap } from '../../../components'; import { getSnapId } from '../../../utils'; -import { ERRORS_SNAP_ID, ERRORS_SNAP_PORT, ERRORS_VERSION } from './constants'; export const Errors: FunctionComponent = () => { const [invokeSnap, { isLoading, data, error }] = useInvokeMutation(); diff --git a/packages/test-snaps/src/features/snaps/ethereum-provider/EthereumProvider.tsx b/packages/test-snaps/src/features/snaps/ethereum-provider/EthereumProvider.tsx index 523028ee67..6817e2b0e6 100644 --- a/packages/test-snaps/src/features/snaps/ethereum-provider/EthereumProvider.tsx +++ b/packages/test-snaps/src/features/snaps/ethereum-provider/EthereumProvider.tsx @@ -2,15 +2,15 @@ import { logError } from '@metamask/snaps-utils'; import type { FunctionComponent } from 'react'; import { Button, ButtonGroup } from 'react-bootstrap'; -import { useInvokeMutation } from '../../../api'; -import { Result, Snap } from '../../../components'; -import { getSnapId } from '../../../utils'; import { SignMessage, SignTypedData } from './components'; import { ETHEREUM_PROVIDER_SNAP_ID, ETHEREUM_PROVIDER_SNAP_PORT, ETHEREUM_PROVIDER_VERSION, } from './constants'; +import { useInvokeMutation } from '../../../api'; +import { Result, Snap } from '../../../components'; +import { getSnapId } from '../../../utils'; export const EthereumProvider: FunctionComponent = () => { const [invokeSnap, { isLoading, data, error }] = useInvokeMutation(); diff --git a/packages/test-snaps/src/features/snaps/ethers-js/EthersJs.tsx b/packages/test-snaps/src/features/snaps/ethers-js/EthersJs.tsx index bac9d015ec..1774873e21 100644 --- a/packages/test-snaps/src/features/snaps/ethers-js/EthersJs.tsx +++ b/packages/test-snaps/src/features/snaps/ethers-js/EthersJs.tsx @@ -1,12 +1,12 @@ import type { FunctionComponent } from 'react'; -import { Snap } from '../../../components'; import { SignMessage } from './components'; import { ETHERS_JS_PORT, ETHERS_JS_SNAP_ID, ETHERS_JS_VERSION, } from './constants'; +import { Snap } from '../../../components'; export const EthersJs: FunctionComponent = () => { return ( diff --git a/packages/test-snaps/src/features/snaps/file-upload/FileUpload.tsx b/packages/test-snaps/src/features/snaps/file-upload/FileUpload.tsx index f8c6df6855..6362e19694 100644 --- a/packages/test-snaps/src/features/snaps/file-upload/FileUpload.tsx +++ b/packages/test-snaps/src/features/snaps/file-upload/FileUpload.tsx @@ -2,14 +2,14 @@ import { logError } from '@metamask/snaps-utils'; import { type FunctionComponent } from 'react'; import { Button, ButtonGroup } from 'react-bootstrap'; -import { useInvokeMutation } from '../../../api'; -import { Result, Snap } from '../../../components'; -import { getSnapId } from '../../../utils'; import { FILE_UPLOAD_SNAP_ID, FILE_UPLOAD_SNAP_PORT, FILE_UPLOAD_VERSION, } from './constants'; +import { useInvokeMutation } from '../../../api'; +import { Result, Snap } from '../../../components'; +import { getSnapId } from '../../../utils'; export const FileUpload: FunctionComponent = () => { const [invokeSnap, { isLoading, data, error }] = useInvokeMutation(); diff --git a/packages/test-snaps/src/features/snaps/get-entropy/GetEntropy.tsx b/packages/test-snaps/src/features/snaps/get-entropy/GetEntropy.tsx index 9af15a0e12..8db568202e 100644 --- a/packages/test-snaps/src/features/snaps/get-entropy/GetEntropy.tsx +++ b/packages/test-snaps/src/features/snaps/get-entropy/GetEntropy.tsx @@ -1,12 +1,12 @@ import type { FunctionComponent } from 'react'; -import { Snap } from '../../../components'; import { SignMessage } from './components'; import { GET_ENTROPY_PORT, GET_ENTROPY_SNAP_ID, GET_ENTROPY_VERSION, } from './constants'; +import { Snap } from '../../../components'; export const GetEntropy: FunctionComponent = () => { return ( diff --git a/packages/test-snaps/src/features/snaps/get-file/GetFile.tsx b/packages/test-snaps/src/features/snaps/get-file/GetFile.tsx index a92844e9e3..00a36c7fd4 100644 --- a/packages/test-snaps/src/features/snaps/get-file/GetFile.tsx +++ b/packages/test-snaps/src/features/snaps/get-file/GetFile.tsx @@ -2,14 +2,14 @@ import { logError } from '@metamask/snaps-utils'; import type { FunctionComponent } from 'react'; import { Button, ButtonGroup } from 'react-bootstrap'; -import { useInvokeMutation } from '../../../api'; -import { Result, Snap } from '../../../components'; -import { getSnapId } from '../../../utils'; import { GET_FILE_SNAP_ID, GET_FILE_SNAP_PORT, GET_FILE_VERSION, } from './constants'; +import { useInvokeMutation } from '../../../api'; +import { Result, Snap } from '../../../components'; +import { getSnapId } from '../../../utils'; export const GetFile: FunctionComponent = () => { const [invokeSnap, { isLoading, data }] = useInvokeMutation(); diff --git a/packages/test-snaps/src/features/snaps/home-page/HomePage.tsx b/packages/test-snaps/src/features/snaps/home-page/HomePage.tsx index ba69efba27..ad92bc1114 100644 --- a/packages/test-snaps/src/features/snaps/home-page/HomePage.tsx +++ b/packages/test-snaps/src/features/snaps/home-page/HomePage.tsx @@ -1,11 +1,11 @@ import type { FunctionComponent } from 'react'; -import { Snap } from '../../../components'; import { HOME_PAGE_SNAP_ID, HOME_PAGE_SNAP_PORT, HOME_PAGE_VERSION, } from './constants'; +import { Snap } from '../../../components'; export const HomePage: FunctionComponent = () => { return ( diff --git a/packages/test-snaps/src/features/snaps/images/Images.tsx b/packages/test-snaps/src/features/snaps/images/Images.tsx index 49343ad661..69840bd7b3 100644 --- a/packages/test-snaps/src/features/snaps/images/Images.tsx +++ b/packages/test-snaps/src/features/snaps/images/Images.tsx @@ -1,8 +1,8 @@ import type { FunctionComponent } from 'react'; -import { Snap } from '../../../components'; import { ShowImage, ShowQr } from './components'; import { IMAGES_SNAP_ID, IMAGES_SNAP_PORT, IMAGES_VERSION } from './constants'; +import { Snap } from '../../../components'; export const Images: FunctionComponent = () => { return ( diff --git a/packages/test-snaps/src/features/snaps/images/components/ShowQr.tsx b/packages/test-snaps/src/features/snaps/images/components/ShowQr.tsx index 9bf9d892ea..ffc89ae63a 100644 --- a/packages/test-snaps/src/features/snaps/images/components/ShowQr.tsx +++ b/packages/test-snaps/src/features/snaps/images/components/ShowQr.tsx @@ -1,6 +1,6 @@ import { logError } from '@metamask/snaps-utils'; -import type { FunctionComponent } from 'react'; -import { type ChangeEvent, type FormEvent, useState } from 'react'; +import type { ChangeEvent, FormEvent, FunctionComponent } from 'react'; +import { useState } from 'react'; import { Button, Form } from 'react-bootstrap'; import { useInvokeMutation } from '../../../../api'; diff --git a/packages/test-snaps/src/features/snaps/interactive-ui/InteractiveUI.tsx b/packages/test-snaps/src/features/snaps/interactive-ui/InteractiveUI.tsx index 28a0242592..24cc1811fd 100644 --- a/packages/test-snaps/src/features/snaps/interactive-ui/InteractiveUI.tsx +++ b/packages/test-snaps/src/features/snaps/interactive-ui/InteractiveUI.tsx @@ -2,14 +2,14 @@ import { logError } from '@metamask/snaps-utils'; import { type FunctionComponent } from 'react'; import { Button, ButtonGroup } from 'react-bootstrap'; -import { useInvokeMutation } from '../../../api'; -import { Result, Snap } from '../../../components'; -import { getSnapId } from '../../../utils'; import { INTERACTIVE_UI_SNAP_ID, INTERACTIVE_UI_SNAP_PORT, INTERACTIVE_UI_VERSION, } from './constants'; +import { useInvokeMutation } from '../../../api'; +import { Result, Snap } from '../../../components'; +import { getSnapId } from '../../../utils'; export const InteractiveUI: FunctionComponent = () => { const [invokeSnap, { isLoading, data, error }] = useInvokeMutation(); diff --git a/packages/test-snaps/src/features/snaps/json-rpc/JsonRpc.tsx b/packages/test-snaps/src/features/snaps/json-rpc/JsonRpc.tsx index c0f8cc1110..d54dc60ac0 100644 --- a/packages/test-snaps/src/features/snaps/json-rpc/JsonRpc.tsx +++ b/packages/test-snaps/src/features/snaps/json-rpc/JsonRpc.tsx @@ -2,14 +2,14 @@ import { logError } from '@metamask/snaps-utils'; import type { FunctionComponent } from 'react'; import { Button } from 'react-bootstrap'; -import { useInvokeMutation } from '../../../api'; -import { Result, Snap } from '../../../components'; -import { getSnapId } from '../../../utils'; import { JSON_RPC_SNAP_ID, JSON_RPC_SNAP_PORT, JSON_RPC_VERSION, } from './constants'; +import { useInvokeMutation } from '../../../api'; +import { Result, Snap } from '../../../components'; +import { getSnapId } from '../../../utils'; export const JsonRpc: FunctionComponent = () => { const [invokeSnap, { isLoading, data, error }] = useInvokeMutation(); diff --git a/packages/test-snaps/src/features/snaps/jsx/Jsx.tsx b/packages/test-snaps/src/features/snaps/jsx/Jsx.tsx index 9dc4a7aba1..191558be50 100644 --- a/packages/test-snaps/src/features/snaps/jsx/Jsx.tsx +++ b/packages/test-snaps/src/features/snaps/jsx/Jsx.tsx @@ -2,10 +2,10 @@ import { logError } from '@metamask/snaps-utils'; import type { FunctionComponent } from 'react'; import { Button } from 'react-bootstrap'; +import { JSX_SNAP_ID, JSX_SNAP_PORT, JSX_VERSION } from './constants'; import { useInvokeMutation } from '../../../api'; import { Result, Snap } from '../../../components'; import { getSnapId } from '../../../utils'; -import { JSX_SNAP_ID, JSX_SNAP_PORT, JSX_VERSION } from './constants'; export const Jsx: FunctionComponent = () => { const [invokeSnap, { isLoading, data, error }] = useInvokeMutation(); diff --git a/packages/test-snaps/src/features/snaps/legacy-state/LegacyState.tsx b/packages/test-snaps/src/features/snaps/legacy-state/LegacyState.tsx index 665369b800..a3a06d76fa 100644 --- a/packages/test-snaps/src/features/snaps/legacy-state/LegacyState.tsx +++ b/packages/test-snaps/src/features/snaps/legacy-state/LegacyState.tsx @@ -1,5 +1,6 @@ import type { FunctionComponent } from 'react'; +import { ClearData, SendData } from './components'; import { Result, Snap } from '../../../components'; import { MANAGE_STATE_SNAP_ID, @@ -7,7 +8,6 @@ import { MANAGE_STATE_VERSION, } from '../state/constants'; import { useSnapState } from '../state/hooks'; -import { ClearData, SendData } from './components'; export const LegacyState: FunctionComponent = () => { const encryptedState = useSnapState('legacy_getState', true); diff --git a/packages/test-snaps/src/features/snaps/lifecycle-hooks/LifecycleHooks.tsx b/packages/test-snaps/src/features/snaps/lifecycle-hooks/LifecycleHooks.tsx index b360a0678d..7dd39802d7 100644 --- a/packages/test-snaps/src/features/snaps/lifecycle-hooks/LifecycleHooks.tsx +++ b/packages/test-snaps/src/features/snaps/lifecycle-hooks/LifecycleHooks.tsx @@ -1,11 +1,11 @@ import type { FunctionComponent } from 'react'; -import { Snap } from '../../../components'; import { LIFECYCLE_HOOKS_SNAP_ID, LIFECYCLE_HOOKS_SNAP_PORT, LIFECYCLE_HOOKS_VERSION, } from './constants'; +import { Snap } from '../../../components'; export const LifecycleHooks: FunctionComponent = () => { // TODO: Right now there isn't any published version of this snap, so we can't diff --git a/packages/test-snaps/src/features/snaps/localization/Localization.tsx b/packages/test-snaps/src/features/snaps/localization/Localization.tsx index 0b4c7b0170..c017631add 100644 --- a/packages/test-snaps/src/features/snaps/localization/Localization.tsx +++ b/packages/test-snaps/src/features/snaps/localization/Localization.tsx @@ -2,14 +2,14 @@ import { logError } from '@metamask/snaps-utils'; import type { FunctionComponent } from 'react'; import { Button, ButtonGroup } from 'react-bootstrap'; -import { useInvokeMutation } from '../../../api'; -import { Result, Snap } from '../../../components'; -import { getSnapId } from '../../../utils'; import { LOCALIZATION_SNAP_ID, LOCALIZATION_SNAP_PORT, LOCALIZATION_VERSION, } from './constants'; +import { useInvokeMutation } from '../../../api'; +import { Result, Snap } from '../../../components'; +import { getSnapId } from '../../../utils'; export const Localization: FunctionComponent = () => { const [invokeSnap, { isLoading, data }] = useInvokeMutation(); diff --git a/packages/test-snaps/src/features/snaps/name-lookup/NameLookup.tsx b/packages/test-snaps/src/features/snaps/name-lookup/NameLookup.tsx index 254102f4a4..b08def49c8 100644 --- a/packages/test-snaps/src/features/snaps/name-lookup/NameLookup.tsx +++ b/packages/test-snaps/src/features/snaps/name-lookup/NameLookup.tsx @@ -1,11 +1,11 @@ import type { FunctionComponent } from 'react'; -import { Snap } from '../../../components'; import { NAME_LOOKUP_SNAP_ID, NAME_LOOKUP_SNAP_PORT, NAME_LOOKUP_VERSION, } from './constants'; +import { Snap } from '../../../components'; export const NameLookup: FunctionComponent = () => { return ( diff --git a/packages/test-snaps/src/features/snaps/network-access/NetworkAccess.tsx b/packages/test-snaps/src/features/snaps/network-access/NetworkAccess.tsx index 563f4ffd85..c7450be8b2 100644 --- a/packages/test-snaps/src/features/snaps/network-access/NetworkAccess.tsx +++ b/packages/test-snaps/src/features/snaps/network-access/NetworkAccess.tsx @@ -3,14 +3,14 @@ import type { ChangeEvent, FunctionComponent } from 'react'; import { useState } from 'react'; import { Button, Form } from 'react-bootstrap'; -import { useInvokeMutation } from '../../../api'; -import { Result, Snap } from '../../../components'; -import { getSnapId } from '../../../utils'; import { NETWORK_ACCESS_PORT, NETWORK_ACCESS_SNAP_ID, NETWORK_ACCESS_VERSION, } from './constants'; +import { useInvokeMutation } from '../../../api'; +import { Result, Snap } from '../../../components'; +import { getSnapId } from '../../../utils'; export const NetworkAccess: FunctionComponent = () => { const [url, setUrl] = useState(`${window.location.href}test-data.json`); diff --git a/packages/test-snaps/src/features/snaps/notifications/Notifications.tsx b/packages/test-snaps/src/features/snaps/notifications/Notifications.tsx index b1d7b99fd4..baee9c4a21 100644 --- a/packages/test-snaps/src/features/snaps/notifications/Notifications.tsx +++ b/packages/test-snaps/src/features/snaps/notifications/Notifications.tsx @@ -2,14 +2,14 @@ import { logError } from '@metamask/snaps-utils'; import type { FunctionComponent } from 'react'; import { Button, ButtonGroup } from 'react-bootstrap'; -import { useInvokeMutation } from '../../../api'; -import { Snap } from '../../../components'; -import { getSnapId } from '../../../utils'; import { NOTIFICATIONS_SNAP_ID, NOTIFICATIONS_SNAP_PORT, NOTIFICATIONS_VERSION, } from './constants'; +import { useInvokeMutation } from '../../../api'; +import { Snap } from '../../../components'; +import { getSnapId } from '../../../utils'; export const Notifications: FunctionComponent = () => { const [invokeSnap, { isLoading }] = useInvokeMutation(); diff --git a/packages/test-snaps/src/features/snaps/preinstalled/Preinstalled.tsx b/packages/test-snaps/src/features/snaps/preinstalled/Preinstalled.tsx index 735f722f81..810dbd0211 100644 --- a/packages/test-snaps/src/features/snaps/preinstalled/Preinstalled.tsx +++ b/packages/test-snaps/src/features/snaps/preinstalled/Preinstalled.tsx @@ -2,9 +2,9 @@ import { logError } from '@metamask/snaps-utils'; import type { FunctionComponent } from 'react'; import { Button, ButtonGroup } from 'react-bootstrap'; +import { PREINSTALLED_SNAP_ID, PREINSTALLED_VERSION } from './constants'; import { useInvokeMutation } from '../../../api'; import { Result, Snap } from '../../../components'; -import { PREINSTALLED_SNAP_ID, PREINSTALLED_VERSION } from './constants'; export const Preinstalled: FunctionComponent = () => { const [invokeSnap, { isLoading, data, error }] = useInvokeMutation(); diff --git a/packages/test-snaps/src/features/snaps/protocol/Protocol.tsx b/packages/test-snaps/src/features/snaps/protocol/Protocol.tsx index 45477ecc5c..e20b8249e2 100644 --- a/packages/test-snaps/src/features/snaps/protocol/Protocol.tsx +++ b/packages/test-snaps/src/features/snaps/protocol/Protocol.tsx @@ -1,11 +1,11 @@ import type { FunctionComponent } from 'react'; -import { Snap } from '../../../components'; import { PROTOCOL_SNAP_ID, PROTOCOL_SNAP_PORT, PROTOCOL_VERSION, } from './constants'; +import { Snap } from '../../../components'; export const Protocol: FunctionComponent = () => { return ( diff --git a/packages/test-snaps/src/features/snaps/send-flow/SendFlow.tsx b/packages/test-snaps/src/features/snaps/send-flow/SendFlow.tsx index 82b3a01b2b..d20fed639a 100644 --- a/packages/test-snaps/src/features/snaps/send-flow/SendFlow.tsx +++ b/packages/test-snaps/src/features/snaps/send-flow/SendFlow.tsx @@ -2,14 +2,14 @@ import { logError } from '@metamask/snaps-utils'; import type { FunctionComponent } from 'react'; import { Button } from 'react-bootstrap'; -import { useInvokeMutation } from '../../../api'; -import { Result, Snap } from '../../../components'; -import { getSnapId } from '../../../utils'; import { SEND_FLOW_SNAP_ID, SEND_FLOW_SNAP_PORT, SEND_FLOW_VERSION, } from './constants'; +import { useInvokeMutation } from '../../../api'; +import { Result, Snap } from '../../../components'; +import { getSnapId } from '../../../utils'; export const SendFlow: FunctionComponent = () => { const [invokeSnap, { isLoading, data }] = useInvokeMutation(); diff --git a/packages/test-snaps/src/features/snaps/signature-insights/SignatureInsights.tsx b/packages/test-snaps/src/features/snaps/signature-insights/SignatureInsights.tsx index 4e097b67ec..81c3374838 100644 --- a/packages/test-snaps/src/features/snaps/signature-insights/SignatureInsights.tsx +++ b/packages/test-snaps/src/features/snaps/signature-insights/SignatureInsights.tsx @@ -1,11 +1,11 @@ import type { FunctionComponent } from 'react'; -import { Snap } from '../../../components'; import { SIGNATURE_INSIGHTS_SNAP_ID, SIGNATURE_INSIGHTS_SNAP_PORT, SIGNATURE_INSIGHTS_VERSION, } from './constants'; +import { Snap } from '../../../components'; export const SignatureInsights: FunctionComponent = () => { return ( diff --git a/packages/test-snaps/src/features/snaps/state/State.tsx b/packages/test-snaps/src/features/snaps/state/State.tsx index 0561d82e3a..83241b637b 100644 --- a/packages/test-snaps/src/features/snaps/state/State.tsx +++ b/packages/test-snaps/src/features/snaps/state/State.tsx @@ -1,6 +1,5 @@ import type { FunctionComponent } from 'react'; -import { Result, Snap } from '../../../components'; import { ClearState, GetState, SetState } from './components'; import { MANAGE_STATE_SNAP_ID, @@ -8,6 +7,7 @@ import { MANAGE_STATE_VERSION, } from './constants'; import { useSnapState } from './hooks'; +import { Result, Snap } from '../../../components'; export const State: FunctionComponent = () => { const encryptedState = useSnapState('getState', true); diff --git a/packages/test-snaps/src/features/snaps/transaction-insights/TransactionInsights.tsx b/packages/test-snaps/src/features/snaps/transaction-insights/TransactionInsights.tsx index 08035cd301..4fcb4f74fc 100644 --- a/packages/test-snaps/src/features/snaps/transaction-insights/TransactionInsights.tsx +++ b/packages/test-snaps/src/features/snaps/transaction-insights/TransactionInsights.tsx @@ -3,13 +3,13 @@ import { assert } from '@metamask/utils'; import type { FunctionComponent } from 'react'; import { Button, ButtonGroup } from 'react-bootstrap'; -import { useLazyGetAccountsQuery, useLazyRequestQuery } from '../../../api'; -import { Snap, Result } from '../../../components'; import { TRANSACTION_INSIGHTS_SNAP_ID, TRANSACTION_INSIGHTS_SNAP_PORT, TRANSACTION_INSIGHTS_VERSION, } from './constants'; +import { useLazyGetAccountsQuery, useLazyRequestQuery } from '../../../api'; +import { Snap, Result } from '../../../components'; export const TransactionInsights: FunctionComponent = () => { const [getAccounts, { isLoading: isLoadingAccounts, data: accounts }] = diff --git a/packages/test-snaps/src/features/snaps/updates/Updates.tsx b/packages/test-snaps/src/features/snaps/updates/Updates.tsx index 1b1f7df8e7..f23e13824a 100644 --- a/packages/test-snaps/src/features/snaps/updates/Updates.tsx +++ b/packages/test-snaps/src/features/snaps/updates/Updates.tsx @@ -2,13 +2,13 @@ import { logError } from '@metamask/snaps-utils'; import type { FunctionComponent } from 'react'; import { Button, ButtonGroup } from 'react-bootstrap'; -import { useGetSnapsQuery, useInstallSnapMutation } from '../../../api'; -import { Result, Snap } from '../../../components'; import { UPDATES_SNAP_ID, UPDATES_SNAP_NEW_VERSION, UPDATES_SNAP_OLD_VERSION, } from './constants'; +import { useGetSnapsQuery, useInstallSnapMutation } from '../../../api'; +import { Result, Snap } from '../../../components'; export const Updates: FunctionComponent = () => { const [installSnap, { isLoading }] = useInstallSnapMutation(); diff --git a/packages/test-snaps/src/features/snaps/wasm/WebAssembly.tsx b/packages/test-snaps/src/features/snaps/wasm/WebAssembly.tsx index c8a4aaaaee..cf63105283 100644 --- a/packages/test-snaps/src/features/snaps/wasm/WebAssembly.tsx +++ b/packages/test-snaps/src/features/snaps/wasm/WebAssembly.tsx @@ -1,8 +1,8 @@ import type { FunctionComponent } from 'react'; -import { Snap } from '../../../components'; import { FibonacciInput } from './components'; import { WASM_SNAP_ID, WASM_SNAP_PORT, WASM_VERSION } from './constants'; +import { Snap } from '../../../components'; export const WASM: FunctionComponent = () => { return ( diff --git a/packages/test-snaps/src/index.html b/packages/test-snaps/src/index.html index 6ba4dff6f9..6f52e42b68 100644 --- a/packages/test-snaps/src/index.html +++ b/packages/test-snaps/src/index.html @@ -1,4 +1,4 @@ - + diff --git a/packages/test-snaps/src/index.tsx b/packages/test-snaps/src/index.tsx index 2edfdc9e1b..e6c559916a 100644 --- a/packages/test-snaps/src/index.tsx +++ b/packages/test-snaps/src/index.tsx @@ -5,7 +5,7 @@ import { App } from './App'; import { Root } from './components'; import createStore from './store'; -// eslint-disable-next-line import/no-unassigned-import +// eslint-disable-next-line import-x/no-unassigned-import import 'bootstrap/dist/css/bootstrap.min.css'; const rootElement = document.getElementById('root'); diff --git a/packages/test-snaps/src/utils/id.ts b/packages/test-snaps/src/utils/id.ts index af49a76e69..2a77d8d136 100644 --- a/packages/test-snaps/src/utils/id.ts +++ b/packages/test-snaps/src/utils/id.ts @@ -25,6 +25,7 @@ export function getSnapId( return localId; } + // eslint-disable-next-line no-restricted-globals const isProduction = process.env.NODE_ENV === 'production'; return isProduction ? snapId : localId; } diff --git a/packages/test-snaps/webpack.config.ts b/packages/test-snaps/webpack.config.ts index eee7a2653e..2712c0aa27 100644 --- a/packages/test-snaps/webpack.config.ts +++ b/packages/test-snaps/webpack.config.ts @@ -1,5 +1,4 @@ import ReactRefreshPlugin from '@pmmmwh/react-refresh-webpack-plugin'; -// eslint-disable-next-line import/default import CopyPlugin from 'copy-webpack-plugin'; import FaviconsWebpackPlugin from 'favicons-webpack-plugin'; import HtmlWebpackPlugin from 'html-webpack-plugin'; diff --git a/tsconfig.json b/tsconfig.json index addd4ea089..845f371646 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -18,7 +18,8 @@ "noEmit": true, "resolveJsonModule": true, "module": "Node16", - "moduleResolution": "Node16" + "moduleResolution": "Node16", + "strict": true }, "files": [], "include": ["scripts"] diff --git a/yarn.config.cjs b/yarn.config.cjs index 6c5b8f11b1..e5ffb93f5e 100644 --- a/yarn.config.cjs +++ b/yarn.config.cjs @@ -4,8 +4,6 @@ // manifests of each package in the monorepo to ensure they follow a standard // format, but also check the presence of certain files as well. -/* eslint-disable jsdoc/valid-types */ - const { defineConfig } = require('@yarnpkg/types'); const { readFile } = require('fs/promises'); const { get } = require('lodash'); @@ -39,6 +37,9 @@ module.exports = defineConfig({ const workspaceBasename = getWorkspaceBasename(workspace); const isChildWorkspace = workspace.cwd !== '.'; const isPrivate = + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax 'private' in workspace.manifest && workspace.manifest.private === true; const dependenciesByIdentAndType = getDependenciesByIdentAndType( Yarn.dependencies({ workspace }), @@ -389,6 +390,9 @@ async function workspaceFileExists(workspace, path) { try { await getWorkspaceFile(workspace, path); } catch (error) { + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line no-restricted-syntax if ('code' in error && error.code === 'ENOENT') { return false; } diff --git a/yarn.lock b/yarn.lock index 2b66f2175d..d8f0d01135 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2821,14 +2821,14 @@ __metadata: languageName: node linkType: hard -"@es-joy/jsdoccomment@npm:~0.37.0": - version: 0.37.1 - resolution: "@es-joy/jsdoccomment@npm:0.37.1" +"@es-joy/jsdoccomment@npm:~0.49.0": + version: 0.49.0 + resolution: "@es-joy/jsdoccomment@npm:0.49.0" dependencies: - comment-parser: "npm:1.3.1" - esquery: "npm:^1.5.0" - jsdoc-type-pratt-parser: "npm:~4.0.0" - checksum: 10/cdb1175371512978bfc15c7f02a1618de6b270e86cf6acbf7e945f548e502f27cceb97442550bed42e3d3c064c243407b52c1b206e9b1b71adaa449bb944691a + comment-parser: "npm:1.4.1" + esquery: "npm:^1.6.0" + jsdoc-type-pratt-parser: "npm:~4.1.0" + checksum: 10/d767cef9b09f22d1892b8bd544eee32aa7b55c585edf6b51452e6f377f205b06f46bd319174022f75794d39625b4b0f8ce75c8a4ea0b7fd0f773063506e0ef4d languageName: node linkType: hard @@ -3194,20 +3194,91 @@ __metadata: languageName: node linkType: hard -"@eslint/eslintrc@npm:^1.3.3": - version: 1.3.3 - resolution: "@eslint/eslintrc@npm:1.3.3" +"@eslint-community/eslint-utils@npm:^4.1.2, @eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0, @eslint-community/eslint-utils@npm:^4.4.1": + version: 4.4.1 + resolution: "@eslint-community/eslint-utils@npm:4.4.1" + dependencies: + eslint-visitor-keys: "npm:^3.4.3" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: 10/ae92a11412674329b4bd38422518601ec9ceae28e251104d1cad83715da9d38e321f68c817c39b64e66d0af7d98df6f9a10ad2dc638911254b47fb8932df00ef + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.11.0, @eslint-community/regexpp@npm:^4.12.1": + version: 4.12.1 + resolution: "@eslint-community/regexpp@npm:4.12.1" + checksum: 10/c08f1dd7dd18fbb60bdd0d85820656d1374dd898af9be7f82cb00451313402a22d5e30569c150315b4385907cdbca78c22389b2a72ab78883b3173be317620cc + languageName: node + linkType: hard + +"@eslint/config-array@npm:^0.19.0": + version: 0.19.2 + resolution: "@eslint/config-array@npm:0.19.2" + dependencies: + "@eslint/object-schema": "npm:^2.1.6" + debug: "npm:^4.3.1" + minimatch: "npm:^3.1.2" + checksum: 10/a6809720908f7dd8536e1a73b2369adf802fe61335536ed0592bca9543c476956e0c0a20fef8001885da8026e2445dc9bf3e471bb80d32c3be7bcdabb7628fd1 + 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: 10/de41d7fa5dc468b70fb15c72829096939fc0217c41b8519af4620bc1089cb42539a15325c4c3ee3832facac1836c8c944c4a0c4d0cc8b33ffd8e95962278ae14 + languageName: node + linkType: hard + +"@eslint/core@npm:^0.11.0": + version: 0.11.0 + resolution: "@eslint/core@npm:0.11.0" + dependencies: + "@types/json-schema": "npm:^7.0.15" + checksum: 10/0a055edf516529d19eea2196e3149eefb4c6f0bb30145b08cdb92ec114735630bd27585f76466c7cb6fa1073617d1f5e49b36ad63d4d45e55defd94a3268256d + 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.4.0" - globals: "npm:^13.15.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: 10/835d3f39563fd420b06d9ec03cf491609ad00ad3b62b5606b27b367afd50888b772467b82525f79d5e4251c45f0a0321d545be38081aae69e377b611e98c88fe + checksum: 10/b32dd90ce7da68e89b88cd729db46b27aac79a2e6cb1fa75d25a6b766d586b443bfbf59622489efbd3c6f696f147b51111e81ec7cd23d70f215c5d474cad0261 + languageName: node + linkType: hard + +"@eslint/js@npm:9.20.0, @eslint/js@npm:^9.11.0": + version: 9.20.0 + resolution: "@eslint/js@npm:9.20.0" + checksum: 10/2304cd725700046ba611f06bf9cd0941db7e02e0d602d8fd9e4734c13067699954597b9a3a2b048ce02eb0550373669d2ab7be6edaf6abf7b67eb19d1276b57b + languageName: node + linkType: hard + +"@eslint/object-schema@npm:^2.1.6": + version: 2.1.6 + resolution: "@eslint/object-schema@npm:2.1.6" + checksum: 10/266085c8d3fa6cd99457fb6350dffb8ee39db9c6baf28dc2b86576657373c92a568aec4bae7d142978e798b74c271696672e103202d47a0c148da39154351ed6 + languageName: node + linkType: hard + +"@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: 10/82d0142bc7054587bde4f75c2c517f477df7c320e4bdb47a4d5f766899a313ce65e9ce5d59428178d0be473a95292065053f69637042546b811ad89079781cbc languageName: node linkType: hard @@ -3307,14 +3378,20 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.11.6": - version: 0.11.7 - resolution: "@humanwhocodes/config-array@npm:0.11.7" +"@humanfs/core@npm:^0.19.1": + version: 0.19.1 + resolution: "@humanfs/core@npm:0.19.1" + checksum: 10/270d936be483ab5921702623bc74ce394bf12abbf57d9145a69e8a0d1c87eb1c768bd2d93af16c5705041e257e6d9cc7529311f63a1349f3678abc776fc28523 + 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:^1.2.1" - debug: "npm:^4.1.1" - minimatch: "npm:^3.0.5" - checksum: 10/986330703b34e476473687dc7741603b11d2b7ac1ef8627c5bef060500492cba8d039dbe16a8fe0d4e917e246aaa20b6fc36fe836bc92b3a8425bd1d9deb72f4 + "@humanfs/core": "npm:^0.19.1" + "@humanwhocodes/retry": "npm:^0.3.0" + checksum: 10/6d43c6727463772d05610aa05c83dab2bfbe78291022ee7a92cb50999910b8c720c76cc312822e2dea2b497aa1b3fef5fe9f68803fc45c9d4ed105874a65e339 languageName: node linkType: hard @@ -3325,10 +3402,17 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/object-schema@npm:^1.2.1": - version: 1.2.1 - resolution: "@humanwhocodes/object-schema@npm:1.2.1" - checksum: 10/b48a8f87fcd5fdc4ac60a31a8bf710d19cc64556050575e6a35a4a48a8543cf8cde1598a65640ff2cdfbfd165b38f9db4fa3782bea7848eb585cc3db824002e6 +"@humanwhocodes/retry@npm:^0.3.0": + version: 0.3.1 + resolution: "@humanwhocodes/retry@npm:0.3.1" + checksum: 10/eb457f699529de7f07649679ec9e0353055eebe443c2efe71c6dd950258892475a038e13c6a8c5e13ed1fb538cdd0a8794faa96b24b6ffc4c87fb1fc9f70ad7f + languageName: node + linkType: hard + +"@humanwhocodes/retry@npm:^0.4.1": + version: 0.4.1 + resolution: "@humanwhocodes/retry@npm:0.4.1" + checksum: 10/39fafc7319e88f61befebd5e1b4f0136534ea6a9bd10d74366698187bd63544210ec5d79a87ed4d91297f1cc64c4c53d45fb0077a2abfdce212cf0d3862d5f04 languageName: node linkType: hard @@ -3690,10 +3774,10 @@ __metadata: languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:3.1.0, @jridgewell/resolve-uri@npm:^3.0.3": - version: 3.1.0 - resolution: "@jridgewell/resolve-uri@npm:3.1.0" - checksum: 10/320ceb37af56953757b28e5b90c34556157676d41e3d0a3ff88769274d62373582bb0f0276a4f2d29c3f4fdd55b82b8be5731f52d391ad2ecae9b321ee1c742d +"@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 10/97106439d750a409c22c8bff822d648f6a71f3aa9bc8e5129efdc36343cd3096ddc4eeb1c62d2fe48e9bdd4db37b05d4646a17114ecebd3bbcacfa2de51c3c1d languageName: node linkType: hard @@ -3714,17 +3798,10 @@ __metadata: languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:1.4.14": - version: 1.4.14 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" - checksum: 10/26e768fae6045481a983e48aa23d8fcd23af5da70ebd74b0649000e815e7fbb01ea2bc088c9176b3fffeb9bec02184e58f46125ef3320b30eaa1f4094cfefa38 - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.13, @jridgewell/sourcemap-codec@npm:^1.4.15": - version: 1.4.15 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" - checksum: 10/89960ac087781b961ad918978975bcdf2051cd1741880469783c42de64239703eab9db5230d776d8e6a09d73bb5e4cb964e07d93ee6e2e7aea5a7d726e865c09 +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.13, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.15": + version: 1.5.0 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" + checksum: 10/4ed6123217569a1484419ac53f6ea0d9f3b57e5b57ab30d7c267bdb27792a27eb0e4b08e84a2680aa55cc2f2b411ffd6ec3db01c44fdc6dc43aca4b55f8374fd languageName: node linkType: hard @@ -3738,13 +3815,13 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.15, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.17 - resolution: "@jridgewell/trace-mapping@npm:0.3.17" +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.15, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.25, @jridgewell/trace-mapping@npm:^0.3.9": + version: 0.3.25 + resolution: "@jridgewell/trace-mapping@npm:0.3.25" dependencies: - "@jridgewell/resolve-uri": "npm:3.1.0" - "@jridgewell/sourcemap-codec": "npm:1.4.14" - checksum: 10/790d439c9b271d9fc381dc4a837393ab942920245efedd5db20f65a665c0f778637fa623573337d3241ff784ffdb6724bbadf7fa2b61666bcd4884064b02f113 + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: 10/dced32160a44b49d531b80a4a2159dceab6b3ddf0c8e95a0deae4b0e894b172defa63d5ac52a19c2068e1fe7d31ea4ba931fbeec103233ecb4208953967120fc languageName: node linkType: hard @@ -3876,33 +3953,19 @@ __metadata: languageName: node linkType: hard -"@metamask/auto-changelog@npm:^3.4.4": - version: 3.4.4 - resolution: "@metamask/auto-changelog@npm:3.4.4" - dependencies: - diff: "npm:^5.0.0" - execa: "npm:^5.1.1" - prettier: "npm:^2.8.8" - semver: "npm:^7.3.5" - yargs: "npm:^17.0.1" - bin: - auto-changelog: dist/cli.js - checksum: 10/70e98529a153ebeab10410dbc3f567014999f77ed82f2b52f1b36501b28a4e3614c809a90c89600a739d7710595bfecc30e2260410e6afac7539f8db65a48f2c - languageName: node - linkType: hard - -"@metamask/auto-changelog@npm:~3.3.0": - version: 3.3.0 - resolution: "@metamask/auto-changelog@npm:3.3.0" +"@metamask/auto-changelog@npm:^4.0.0, @metamask/auto-changelog@npm:^4.1.0": + version: 4.1.0 + resolution: "@metamask/auto-changelog@npm:4.1.0" dependencies: diff: "npm:^5.0.0" execa: "npm:^5.1.1" - prettier: "npm:^2.8.8" semver: "npm:^7.3.5" yargs: "npm:^17.0.1" + peerDependencies: + prettier: ">=3.0.0" bin: auto-changelog: dist/cli.js - checksum: 10/24ecfc286557726080c21a2e9e4bf01abde505b52bc45c03bd5a0eff0e851952e69c97d936c1294c91b7a9af11a361ebdfe1677938f5e37348d26c6fa0f3f81d + checksum: 10/fe31a9eb364939c83bc5098482b761ca93593081680c4cba17b221150b4d32636cb25fd708e3692c198feddc95d8bcf524e19fa93567fb5aa30b03ea93249250 languageName: node linkType: hard @@ -3922,11 +3985,7 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/key-tree": "npm:^10.0.2" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" @@ -3936,22 +3995,13 @@ __metadata: "@noble/secp256k1": "npm:^1.7.1" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" languageName: unknown @@ -3963,11 +4013,7 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/key-tree": "npm:^10.0.2" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" @@ -3976,22 +4022,13 @@ __metadata: "@noble/bls12-381": "npm:^1.2.0" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" rimraf: "npm:^4.1.2" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" @@ -4013,32 +4050,19 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-sdk": "workspace:^" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" rimraf: "npm:^4.1.2" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" @@ -4049,36 +4073,24 @@ __metadata: version: 0.0.0-use.local resolution: "@metamask/browserify-plugin-example-snap@workspace:packages/examples/packages/browserify-plugin" dependencies: + "@babel/core": "npm:^7.23.2" "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-browserify-plugin": "workspace:^" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-sdk": "workspace:^" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" babelify: "npm:^10.0.0" browserify: "npm:^17.0.0" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" languageName: unknown @@ -4090,32 +4102,19 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-sdk": "workspace:^" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" rimraf: "npm:^4.1.2" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" @@ -4128,11 +4127,7 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/key-tree": "npm:^10.0.2" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" @@ -4141,22 +4136,13 @@ __metadata: "@noble/hashes": "npm:^1.3.1" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" languageName: unknown @@ -4189,11 +4175,7 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/key-tree": "npm:^10.0.2" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" @@ -4203,48 +4185,38 @@ __metadata: "@noble/hashes": "npm:^1.3.1" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" async-mutex: "npm:^0.5.0" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" languageName: unknown linkType: soft -"@metamask/create-release-branch@npm:^3.1.0": - version: 3.1.0 - resolution: "@metamask/create-release-branch@npm:3.1.0" +"@metamask/create-release-branch@npm:^4.0.0": + version: 4.0.0 + resolution: "@metamask/create-release-branch@npm:4.0.0" dependencies: "@metamask/action-utils": "npm:^1.0.0" - "@metamask/auto-changelog": "npm:~3.3.0" + "@metamask/auto-changelog": "npm:^4.0.0" "@metamask/utils": "npm:^9.0.0" debug: "npm:^4.3.4" execa: "npm:^8.0.1" pony-cause: "npm:^2.1.9" semver: "npm:^7.5.4" - validate-npm-package-name: "npm:^5.0.0" which: "npm:^3.0.0" yaml: "npm:^2.2.2" yargs: "npm:^17.7.1" peerDependencies: - prettier: ^2 + prettier: ">=3.0.0" bin: create-release-branch: bin/create-release-branch.js - checksum: 10/a922c04e16ad4d2e5472a783d1a2e3e45724708bca2288f6257552669da305b3b25e492475692084f4ad19ac87a51921ebfa01e9f2c43b22e953ed88db48511d + checksum: 10/891ed4374e4caed4f7a97d57d095798fc5b31234729917276bd7f7888987e3ee1464393d75846e1379c3b7d46c482a14a0594b7f7b814fce75ce8c8a85e9c4cd languageName: node linkType: hard @@ -4253,11 +4225,7 @@ __metadata: resolution: "@metamask/create-snap@workspace:packages/create-snap" dependencies: "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-utils": "workspace:^" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" @@ -4265,24 +4233,14 @@ __metadata: "@types/jest": "npm:^27.5.1" "@types/node": "npm:18.14.2" "@types/yargs": "npm:^17.0.24" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-it-up: "npm:^2.0.0" jest-silent-reporter: "npm:^0.6.0" memfs: "npm:^3.4.13" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" semver: "npm:^7.5.4" ts-node: "npm:^10.9.1" tsc-watch: "npm:^4.5.0" @@ -4299,32 +4257,19 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-sdk": "workspace:^" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" rimraf: "npm:^4.1.2" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" @@ -4337,32 +4282,19 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-sdk": "workspace:^" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" languageName: unknown @@ -4374,94 +4306,97 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-sdk": "workspace:^" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" languageName: unknown linkType: soft -"@metamask/eslint-config-browser@npm:^11.1.0": - version: 11.1.0 - resolution: "@metamask/eslint-config-browser@npm:11.1.0" +"@metamask/eslint-config-browser@npm:^14.0.0": + version: 14.0.0 + resolution: "@metamask/eslint-config-browser@npm:14.0.0" + dependencies: + "@eslint/js": "npm:^9.11.0" + globals: "npm:^15.9.0" peerDependencies: - "@metamask/eslint-config": ^11.0.0 - eslint: ^8.27.0 - checksum: 10/43201e5fc0c7314413ecc2bbffdeb4d3e704c05349eac7b02ac1dc7b541f3baa98975df8e1e19cd9ff7e19fe5e3fa0f267a6fbf64a49e9428639864dec083d34 + "@metamask/eslint-config": ^14.0.0 + eslint: ^9.11.0 + checksum: 10/22f628799d6d2d6a537ffbb72ecf777632b1824ff87e81edcce77f1793b4617f20e185012c45020a75df308e895d5d88f125444ad7e6cb419d90e14368ca145a languageName: node linkType: hard -"@metamask/eslint-config-jest@npm:^12.1.0": - version: 12.1.0 - resolution: "@metamask/eslint-config-jest@npm:12.1.0" +"@metamask/eslint-config-jest@npm:^14.0.0": + version: 14.0.0 + resolution: "@metamask/eslint-config-jest@npm:14.0.0" + dependencies: + "@eslint/js": "npm:^9.11.0" + globals: "npm:^15.9.0" peerDependencies: - "@metamask/eslint-config": ^12.0.0 - eslint: ^8.27.0 - eslint-plugin-jest: ^27.1.5 - checksum: 10/98f60234412051d429237dbf32b147a648a0e3b6adacafda24999ec9eb8096155c8000c62204415100c97980cc3bfe0a0fe19e4c318b8bb529eaf57e9f96e680 + "@metamask/eslint-config": ^14.0.0 + eslint: ^9.11.0 + eslint-plugin-jest: ^28.8.3 + checksum: 10/e7c4f14ff8eae8c1311cd1a941217c39bacf249650b1953138a958472af609a8396722e7b1a0c86386d07f92d7570c3e29754335fe4ef8608a9abf03c7aff6fb languageName: node linkType: hard -"@metamask/eslint-config-nodejs@npm:^12.1.0": - version: 12.1.0 - resolution: "@metamask/eslint-config-nodejs@npm:12.1.0" +"@metamask/eslint-config-nodejs@npm:^14.0.0": + version: 14.0.0 + resolution: "@metamask/eslint-config-nodejs@npm:14.0.0" + dependencies: + "@eslint/js": "npm:^9.11.0" + globals: "npm:^15.9.0" peerDependencies: - "@metamask/eslint-config": ^12.0.0 - eslint: ^8.27.0 - eslint-plugin-n: ^15.7.0 - checksum: 10/ad8d4b545420a14917d9dc4505ab8e3c07c559c35c67f07062eb3e9e86620d0660aa82500662ea9f23152b978417ee9fdebc47e6b39f8cb72e811b7e561e792f + "@metamask/eslint-config": ^14.0.0 + eslint: ^9.11.0 + eslint-plugin-n: ^17.10.3 + checksum: 10/62a69e0a258b6b0ef8cbb844a3420115ff213648f55e1b3863dd29fa5892de8013f8157317e8279f68b7e82c69c97edc15c0040ad49469756393a711d91b0fff languageName: node linkType: hard -"@metamask/eslint-config-typescript@npm:^12.1.0": - version: 12.1.0 - resolution: "@metamask/eslint-config-typescript@npm:12.1.0" +"@metamask/eslint-config-typescript@npm:^14.0.0": + version: 14.0.0 + resolution: "@metamask/eslint-config-typescript@npm:14.0.0" + dependencies: + "@eslint/js": "npm:^9.11.0" peerDependencies: - "@metamask/eslint-config": ^12.0.0 - "@typescript-eslint/eslint-plugin": ^5.42.1 - "@typescript-eslint/parser": ^5.42.1 - eslint: ^8.27.0 - typescript: ~4.8.4 || ~5.0 || ~5.1 - checksum: 10/3159b08d94a751e5639db6253e3bfb6cc7bc5633ad07c43099288e65e5ed25d9f7533968045fedaf4e2a852d0c0fec14290f0f274aa0544a7411cc60deb97aba + "@metamask/eslint-config": ^14.0.0 + eslint: ^9.11.0 + eslint-import-resolver-typescript: ^3.6.3 + eslint-plugin-import-x: ^4.3.0 + eslint-plugin-jsdoc: ^50.2.4 + typescript: ">=4.8.4 <5.6" + typescript-eslint: ^8.6.0 + checksum: 10/cbf0a9e8523292d41140f90630863d034301422f16e6a42e5881c3593e83c07d0394787563d3e88fee02aa22042a9ca974363d3f192374e31bb0729c6ca8734e languageName: node linkType: hard -"@metamask/eslint-config@npm:^12.1.0": - version: 12.1.0 - resolution: "@metamask/eslint-config@npm:12.1.0" +"@metamask/eslint-config@npm:^14.0.0": + version: 14.0.0 + resolution: "@metamask/eslint-config@npm:14.0.0" + dependencies: + "@eslint/js": "npm:^9.11.0" + globals: "npm:^15.9.0" peerDependencies: - eslint: ^8.27.0 - eslint-config-prettier: ^8.5.0 - eslint-plugin-import: ^2.27.5 - eslint-plugin-jsdoc: ^39.6.2 || ^41 - eslint-plugin-prettier: ^4.2.1 - eslint-plugin-promise: ^6.1.1 - prettier: ^2.7.1 - checksum: 10/cf44403475f968003dd447752edf65ea6ec18cae72502f6c2df42954028392d942e0475d9aaf020ab5c8c6f49f944389e4ca37b7def98c0ff28fcc2aeaeb730e + eslint: ^9.11.0 + eslint-config-prettier: ^9.1.0 + eslint-plugin-import-x: ^4.3.0 + eslint-plugin-jsdoc: ^50.2.4 + eslint-plugin-prettier: ^5.2.1 + eslint-plugin-promise: ^7.1.0 + prettier: ^3.3.3 + checksum: 10/b7ae38bf777e9341b8dfac75e98159fb5d5da7d913af2312b586c82370c84acff68ee78e3b104a3577a971d593c6039bd909c8d7ca41cb7a69ed069871080c8a languageName: node linkType: hard @@ -4541,33 +4476,20 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-sdk": "workspace:^" "@metamask/utils": "npm:^11.2.0" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" languageName: unknown @@ -4579,36 +4501,23 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-sdk": "workspace:^" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" ethers: "npm:^6.3.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" - webpack: "npm:^5.88.0" + webpack: "npm:^5.97.1" languageName: unknown linkType: soft @@ -4629,25 +4538,12 @@ __metadata: resolution: "@metamask/example-snaps@workspace:packages/examples" dependencies: "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@metamask/auto-changelog": "npm:^4.1.0" + "@types/node": "npm:18.14.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" languageName: unknown @@ -4659,33 +4555,20 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-sdk": "workspace:^" "@metamask/utils": "npm:^11.2.0" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" rimraf: "npm:^4.1.2" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" @@ -4698,11 +4581,7 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-sdk": "workspace:^" @@ -4710,22 +4589,13 @@ __metadata: "@noble/bls12-381": "npm:^1.2.0" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" languageName: unknown @@ -4737,32 +4607,19 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-sdk": "workspace:^" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" languageName: unknown @@ -4774,32 +4631,19 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-sdk": "workspace:^" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" languageName: unknown @@ -4811,32 +4655,19 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-sdk": "workspace:^" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" uqr: "npm:^0.1.2" @@ -4849,33 +4680,20 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-sdk": "workspace:^" "@metamask/utils": "npm:^11.2.0" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" languageName: unknown @@ -4887,33 +4705,20 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-sdk": "workspace:^" "@metamask/utils": "npm:^11.2.0" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" rimraf: "npm:^4.1.2" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" @@ -4925,25 +4730,12 @@ __metadata: resolution: "@metamask/invoke-snap-example-snap@workspace:packages/examples/packages/invoke-snap" dependencies: "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@metamask/auto-changelog": "npm:^4.1.0" + "@types/node": "npm:18.14.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" languageName: unknown @@ -4966,32 +4758,19 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-sdk": "workspace:^" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" languageName: unknown @@ -5015,11 +4794,7 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" @@ -5027,22 +4802,13 @@ __metadata: "@metamask/utils": "npm:^11.2.0" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" languageName: unknown @@ -5067,32 +4833,19 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-sdk": "workspace:^" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" languageName: unknown @@ -5104,32 +4857,19 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-sdk": "workspace:^" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" languageName: unknown @@ -5141,33 +4881,20 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-sdk": "workspace:^" "@metamask/utils": "npm:^11.2.0" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" languageName: unknown @@ -5179,32 +4906,19 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-sdk": "workspace:^" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" languageName: unknown @@ -5216,34 +4930,20 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-cli": "workspace:^" - "@metamask/snaps-controllers": "workspace:^" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-sdk": "workspace:^" "@metamask/utils": "npm:^11.2.0" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" languageName: unknown @@ -5255,32 +4955,19 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-sdk": "workspace:^" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" languageName: unknown @@ -5356,11 +5043,7 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-controllers": "workspace:^" "@metamask/snaps-jest": "workspace:^" @@ -5368,22 +5051,13 @@ __metadata: "@metamask/utils": "npm:^11.2.0" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" ts-node: "npm:^10.9.1" tsx: "npm:^4.19.1" typescript: "npm:~5.3.3" @@ -5396,33 +5070,20 @@ __metadata: resolution: "@metamask/protocol-example-snap@workspace:packages/examples/packages/protocol" dependencies: "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-sdk": "workspace:^" "@metamask/utils": "npm:^11.2.0" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" rimraf: "npm:^4.1.2" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" @@ -5459,11 +5120,7 @@ __metadata: "@babel/preset-typescript": "npm:^7.23.2" "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-rollup-plugin": "workspace:^" "@metamask/snaps-sdk": "workspace:^" @@ -5473,22 +5130,13 @@ __metadata: "@rollup/plugin-terser": "npm:^0.4.3" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" rollup: "npm:^2.73.0" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" @@ -5528,33 +5176,20 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-sdk": "workspace:^" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" languageName: unknown @@ -5566,32 +5201,19 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-sdk": "workspace:^" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" languageName: unknown @@ -5609,11 +5231,7 @@ __metadata: resolution: "@metamask/snaps-browserify-plugin@workspace:packages/snaps-browserify-plugin" dependencies: "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-utils": "workspace:^" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" @@ -5621,27 +5239,17 @@ __metadata: "@types/browserify": "npm:^12.0.37" "@types/convert-source-map": "npm:^1.5.2" "@types/jest": "npm:^27.5.1" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" browserify: "npm:^17.0.0" concat-stream: "npm:^2.0.0" convert-source-map: "npm:^1.8.0" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-it-up: "npm:^2.0.0" jest-silent-reporter: "npm:^0.6.0" memfs: "npm:^3.4.13" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" readable-stream: "npm:^3.6.2" typescript: "npm:~5.3.3" languageName: unknown @@ -5660,11 +5268,7 @@ __metadata: "@babel/preset-env": "npm:^7.23.2" "@babel/preset-typescript": "npm:^7.23.2" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-sdk": "workspace:^" "@metamask/snaps-utils": "workspace:^" "@metamask/snaps-webpack-plugin": "workspace:^" @@ -5678,8 +5282,6 @@ __metadata: "@types/node": "npm:18.14.2" "@types/serve-handler": "npm:^6.1.0" "@types/yargs": "npm:^17.0.24" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" assert: "npm:^2.0.0" babelify: "npm:^10.0.0" browserify: "npm:^17.0.0" @@ -5693,14 +5295,7 @@ __metadata: deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" domain-browser: "npm:^4.22.0" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" events: "npm:^3.3.0" execa: "npm:^5.1.1" fork-ts-checker-webpack-plugin: "npm:^9.0.2" @@ -5712,8 +5307,7 @@ __metadata: ora: "npm:^5.4.1" os-browserify: "npm:^0.3.0" path-browserify: "npm:^1.0.1" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" process: "npm:^0.11.10" punycode: "npm:^2.3.0" querystring-es3: "npm:^0.2.1" @@ -5734,7 +5328,7 @@ __metadata: url: "npm:^0.11.1" util: "npm:^0.12.5" vm-browserify: "npm:^1.1.2" - webpack: "npm:^5.88.0" + webpack: "npm:^5.97.1" webpack-bundle-analyzer: "npm:^4.10.2" webpack-merge: "npm:^5.9.0" yargs: "npm:^17.7.1" @@ -5751,13 +5345,9 @@ __metadata: "@esbuild-plugins/node-modules-polyfill": "npm:^0.2.2" "@lavamoat/allow-scripts": "npm:^3.0.4" "@metamask/approval-controller": "npm:^7.1.3" - "@metamask/auto-changelog": "npm:^3.4.4" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/base-controller": "npm:^8.0.0" "@metamask/browser-passworder": "npm:^6.0.0" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" "@metamask/json-rpc-engine": "npm:^10.0.2" "@metamask/json-rpc-middleware-stream": "npm:^8.0.7" "@metamask/key-tree": "npm:^10.0.2" @@ -5785,8 +5375,6 @@ __metadata: "@types/readable-stream": "npm:^4.0.15" "@types/semver": "npm:^7.5.0" "@types/tar-stream": "npm:^3.1.1" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" "@wdio/browser-runner": "npm:^8.19.0" "@wdio/cli": "npm:^8.19.0" "@wdio/globals": "npm:^8.19.0" @@ -5800,14 +5388,7 @@ __metadata: deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" esbuild: "npm:^0.18.10" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" expect-webdriverio: "npm:^4.4.1" fast-deep-equal: "npm:^3.1.3" get-npm-tarball-url: "npm:^2.0.3" @@ -5821,8 +5402,7 @@ __metadata: luxon: "npm:^3.5.0" mkdirp: "npm:^1.0.4" nanoid: "npm:^3.1.31" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" readable-stream: "npm:^3.6.2" readable-web-to-node-stream: "npm:^3.0.2" rimraf: "npm:^4.1.2" @@ -5855,11 +5435,7 @@ __metadata: "@lavamoat/allow-scripts": "npm:^3.0.4" "@lavamoat/lavapack": "npm:^6.1.1" "@lavamoat/lavatube": "npm:^1.0.0" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/json-rpc-engine": "npm:^10.0.2" "@metamask/object-multiplex": "npm:^2.1.0" "@metamask/post-message-stream": "npm:^9.0.0" @@ -5875,8 +5451,6 @@ __metadata: "@types/express": "npm:^4.17.17" "@types/jest": "npm:^27.5.1" "@types/node": "npm:18.14.2" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" "@wdio/browser-runner": "npm:^8.19.0" "@wdio/cli": "npm:^8.19.0" "@wdio/globals": "npm:^8.19.0" @@ -5889,14 +5463,7 @@ __metadata: deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" esbuild: "npm:^0.18.10" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" expect-webdriverio: "npm:^4.4.1" istanbul-lib-coverage: "npm:^3.2.0" istanbul-lib-report: "npm:^3.0.0" @@ -5908,8 +5475,7 @@ __metadata: lavamoat: "npm:^8.0.4" lavamoat-browserify: "npm:^17.0.5" nanoid: "npm:^3.1.31" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" readable-stream: "npm:^3.6.2" rimraf: "npm:^4.1.2" serve-handler: "npm:^6.1.5" @@ -5935,11 +5501,7 @@ __metadata: "@jest/globals": "npm:^29.5.0" "@jest/types": "npm:^29.6.3" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-controllers": "workspace:^" "@metamask/snaps-sdk": "workspace:^" "@metamask/snaps-simulation": "workspace:^" @@ -5951,26 +5513,16 @@ __metadata: "@ts-bridge/cli": "npm:^0.6.1" "@types/jest": "npm:^27.5.1" "@types/semver": "npm:^7.5.0" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" express: "npm:^4.18.2" jest: "npm:^29.0.2" jest-environment-node: "npm:^29.5.0" jest-it-up: "npm:^2.0.0" jest-matcher-utils: "npm:^29.5.0" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" redux: "npm:^4.2.1" typescript: "npm:~5.3.3" languageName: unknown @@ -5993,35 +5545,21 @@ __metadata: resolution: "@metamask/snaps-rollup-plugin@workspace:packages/snaps-rollup-plugin" dependencies: "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-utils": "workspace:^" "@rollup/plugin-virtual": "npm:^2.1.0" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" "@ts-bridge/cli": "npm:^0.6.1" "@types/jest": "npm:^27.5.1" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-it-up: "npm:^2.0.0" jest-silent-reporter: "npm:^0.6.0" memfs: "npm:^3.4.13" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" rollup: "npm:^2.73.0" typescript: "npm:~5.3.3" languageName: unknown @@ -6032,11 +5570,7 @@ __metadata: resolution: "@metamask/snaps-rpc-methods@workspace:packages/snaps-rpc-methods" dependencies: "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/json-rpc-engine": "npm:^10.0.2" "@metamask/key-tree": "npm:^10.0.2" "@metamask/permission-controller": "npm:^11.0.6" @@ -6051,24 +5585,14 @@ __metadata: "@ts-bridge/cli": "npm:^0.6.1" "@types/luxon": "npm:^3" "@types/node": "npm:18.14.2" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-it-up: "npm:^2.0.0" jest-silent-reporter: "npm:^0.6.0" luxon: "npm:^3.5.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" typescript: "npm:~5.3.3" languageName: unknown linkType: soft @@ -6078,11 +5602,7 @@ __metadata: resolution: "@metamask/snaps-sdk@workspace:packages/snaps-sdk" dependencies: "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/key-tree": "npm:^10.0.2" "@metamask/providers": "npm:^20.0.0" "@metamask/rpc-errors": "npm:^7.0.2" @@ -6090,25 +5610,15 @@ __metadata: "@metamask/utils": "npm:^11.2.0" "@ts-bridge/cli": "npm:^0.6.1" "@types/jest": "npm:^27.5.1" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" expect-type: "npm:^0.17.3" jest: "npm:^29.0.2" jest-fetch-mock: "npm:^3.0.3" jest-it-up: "npm:^2.0.0" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" ts-jest: "npm:^29.1.1" typescript: "npm:~5.3.3" languageName: unknown @@ -6119,12 +5629,8 @@ __metadata: resolution: "@metamask/snaps-simulation@workspace:packages/snaps-simulation" dependencies: "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/base-controller": "npm:^8.0.0" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" "@metamask/eth-json-rpc-middleware": "npm:^15.2.0" "@metamask/json-rpc-engine": "npm:^10.0.2" "@metamask/json-rpc-middleware-stream": "npm:^8.0.7" @@ -6144,26 +5650,16 @@ __metadata: "@types/jest": "npm:^27.5.1" "@types/mime": "npm:^3.0.0" "@types/readable-stream": "npm:^4.0.15" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" express: "npm:^4.18.2" fast-deep-equal: "npm:^3.1.3" jest: "npm:^29.0.2" jest-it-up: "npm:^2.0.0" jest-silent-reporter: "npm:^0.6.0" mime: "npm:^3.0.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" readable-stream: "npm:^3.6.2" redux-saga: "npm:^1.2.3" ts-jest: "npm:^29.1.1" @@ -6180,13 +5676,8 @@ __metadata: "@emotion/react": "npm:^11.10.8" "@emotion/styled": "npm:^11.10.8" "@ethersproject/units": "npm:^5.7.0" - "@metamask/auto-changelog": "npm:^3.4.4" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/base-controller": "npm:^8.0.0" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-browser": "npm:^11.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" "@metamask/eth-json-rpc-middleware": "npm:^15.2.0" "@metamask/json-rpc-engine": "npm:^10.0.2" "@metamask/json-rpc-middleware-stream": "npm:^8.0.7" @@ -6217,24 +5708,13 @@ __metadata: "@types/react": "npm:^18.2.5" "@types/react-dom": "npm:^18.2.3" "@types/webpack-env": "npm:^1.18.1" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" assert: "npm:^2.0.0" copy-webpack-plugin: "npm:^11.0.0" css-loader: "npm:^6.7.3" date-fns: "npm:^2.30.0" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" - eslint-plugin-react: "npm:^7.32.2" - eslint-plugin-react-hooks: "npm:^4.6.0" + eslint: "npm:^9.11.0" express: "npm:^4.18.2" fast-deep-equal: "npm:^3.1.3" favicons: "npm:^7.1.2" @@ -6252,8 +5732,8 @@ __metadata: lodash.throttle: "npm:^4.1.1" monaco-editor: "npm:^0.38.0" monaco-editor-webpack-plugin: "npm:^7.0.1" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" + prettier-2: "npm:prettier@^2.8.8" process: "npm:^0.11.10" react: "npm:^18.2.0" react-dnd: "npm:^16.0.1" @@ -6274,7 +5754,7 @@ __metadata: ts-node: "npm:^10.9.1" tsconfig-paths-webpack-plugin: "npm:^4.0.1" typescript: "npm:~5.3.3" - webpack: "npm:^5.88.0" + webpack: "npm:^5.97.1" webpack-cli: "npm:^5.1.4" webpack-dev-server: "npm:^4.15.1" webpack-merge: "npm:^5.9.0" @@ -6290,12 +5770,8 @@ __metadata: "@esbuild-plugins/node-globals-polyfill": "npm:^0.2.3" "@esbuild-plugins/node-modules-polyfill": "npm:^0.2.2" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/base-controller": "npm:^8.0.0" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" "@metamask/key-tree": "npm:^10.0.2" "@metamask/permission-controller": "npm:^11.0.6" "@metamask/post-message-stream": "npm:^9.0.0" @@ -6315,8 +5791,6 @@ __metadata: "@types/node": "npm:18.14.2" "@types/semver": "npm:^7.5.0" "@types/validate-npm-package-name": "npm:^4.0.0" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" "@wdio/browser-runner": "npm:^8.19.0" "@wdio/cli": "npm:^8.19.0" "@wdio/globals": "npm:^8.19.0" @@ -6329,14 +5803,7 @@ __metadata: deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" esbuild: "npm:^0.18.10" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" expect-webdriverio: "npm:^4.4.1" fast-deep-equal: "npm:^3.1.3" fast-json-stable-stringify: "npm:^2.1.0" @@ -6348,8 +5815,7 @@ __metadata: jest-silent-reporter: "npm:^0.6.0" marked: "npm:^12.0.1" memfs: "npm:^3.4.13" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" rfdc: "npm:^1.3.0" rimraf: "npm:^4.1.2" semver: "npm:^7.5.4" @@ -6370,11 +5836,7 @@ __metadata: resolution: "@metamask/snaps-webpack-plugin@workspace:packages/snaps-webpack-plugin" dependencies: "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-sdk": "workspace:^" "@metamask/snaps-utils": "workspace:^" "@metamask/utils": "npm:^11.2.0" @@ -6383,26 +5845,16 @@ __metadata: "@ts-bridge/cli": "npm:^0.6.1" "@types/jest": "npm:^27.5.1" "@types/webpack-sources": "npm:^3.2.0" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-it-up: "npm:^2.0.0" jest-silent-reporter: "npm:^0.6.0" memfs: "npm:^3.4.13" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" typescript: "npm:~5.3.3" - webpack: "npm:^5.88.0" + webpack: "npm:^5.97.1" webpack-sources: "npm:^3.2.3" languageName: unknown linkType: soft @@ -6425,17 +5877,13 @@ __metadata: version: 0.0.0-use.local resolution: "@metamask/test-snaps@workspace:packages/test-snaps" dependencies: - "@metamask/auto-changelog": "npm:^3.4.4" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/bip32-example-snap": "workspace:^" "@metamask/bip44-example-snap": "workspace:^" "@metamask/client-status-example-snap": "workspace:^" "@metamask/cronjob-example-snap": "workspace:^" "@metamask/dialog-example-snap": "workspace:^" "@metamask/error-example-snap": "workspace:^" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" "@metamask/ethereum-provider-example-snap": "workspace:^" "@metamask/ethers-js-example-snap": "workspace:^" "@metamask/file-upload-example-snap": "workspace:^" @@ -6469,29 +5917,20 @@ __metadata: "@types/jest": "npm:^27.5.1" "@types/node": "npm:18.14.2" "@types/webpack-env": "npm:^1.18.1" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" bootstrap: "npm:^5.2.2" copy-webpack-plugin: "npm:^11.0.0" cross-env: "npm:^7.0.3" css-loader: "npm:^6.7.3" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" favicons: "npm:^7.1.2" favicons-webpack-plugin: "npm:^6.0.0" html-webpack-plugin: "npm:^5.5.0" jest: "npm:^29.0.2" jest-it-up: "npm:^2.0.0" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" + prettier: "npm:^3.3.3" react: "npm:^18.2.0" react-bootstrap: "npm:^2.5.0" react-dom: "npm:^18.2.0" @@ -6502,7 +5941,7 @@ __metadata: ts-node: "npm:^10.9.1" tsconfig-paths-webpack-plugin: "npm:^4.0.1" typescript: "npm:~5.3.3" - webpack: "npm:^5.88.0" + webpack: "npm:^5.97.1" webpack-cli: "npm:^5.1.4" webpack-dev-server: "npm:^4.15.1" languageName: unknown @@ -6548,33 +5987,20 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-sdk": "workspace:^" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" + "@types/node": "npm:18.14.2" assemblyscript: "npm:^0.27.5" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" languageName: unknown @@ -6586,38 +6012,25 @@ __metadata: dependencies: "@jest/globals": "npm:^29.5.0" "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-sdk": "workspace:^" "@metamask/snaps-webpack-plugin": "workspace:^" "@swc/core": "npm:1.3.78" "@swc/jest": "npm:^0.2.26" + "@types/node": "npm:18.14.2" "@types/webpack-env": "npm:^1.18.1" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" deepmerge: "npm:^4.2.2" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" jest: "npm:^29.0.2" jest-silent-reporter: "npm:^0.6.0" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" swc-loader: "npm:^0.2.3" terser-webpack-plugin: "npm:^5.3.9" ts-node: "npm:^10.9.1" typescript: "npm:~5.3.3" - webpack: "npm:^5.88.0" + webpack: "npm:^5.97.1" webpack-cli: "npm:^5.1.4" languageName: unknown linkType: soft @@ -6782,7 +6195,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: @@ -6792,6 +6205,13 @@ __metadata: languageName: node linkType: hard +"@nolyfill/is-core-module@npm:1.0.39": + version: 1.0.39 + resolution: "@nolyfill/is-core-module@npm:1.0.39" + checksum: 10/0d6e098b871eca71d875651288e1f0fa770a63478b0b50479c99dc760c64175a56b5b04f58d5581bbcc6b552b8191ab415eada093d8df9597ab3423c8cac1815 + languageName: node + linkType: hard + "@npmcli/agent@npm:^2.0.0": version: 2.2.1 resolution: "@npmcli/agent@npm:2.2.1" @@ -7726,13 +7146,20 @@ __metadata: languageName: node linkType: hard -"@types/eslint-scope@npm:^3.7.3": - version: 3.7.3 - resolution: "@types/eslint-scope@npm:3.7.3" +"@types/doctrine@npm:^0.0.9": + version: 0.0.9 + resolution: "@types/doctrine@npm:0.0.9" + checksum: 10/64ef06e6eea2f4f9684d259fedbcb8bf21c954630b96ea2e04875ca42763552b0ba3b01b3dd27ec0f9ea6f8b3b0dba4965d31d5a925cd4c6225fd13a93ae9354 + languageName: node + linkType: hard + +"@types/eslint-scope@npm:^3.7.7": + version: 3.7.7 + resolution: "@types/eslint-scope@npm:3.7.7" dependencies: "@types/eslint": "npm:*" "@types/estree": "npm:*" - checksum: 10/6772b05e1b92003d1f295e81bc847a61f4fbe8ddab77ffa49e84ed3f9552513bdde677eb53ef167753901282857dd1d604d9f82eddb34a233495932b2dc3dc17 + checksum: 10/e2889a124aaab0b89af1bab5959847c5bec09809209255de0e63b9f54c629a94781daa04adb66bffcdd742f5e25a17614fb933965093c0eea64aacda4309380e languageName: node linkType: hard @@ -7746,10 +7173,10 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:^1.0.0": - version: 1.0.5 - resolution: "@types/estree@npm:1.0.5" - checksum: 10/7de6d928dd4010b0e20c6919e1a6c27b61f8d4567befa89252055fad503d587ecb9a1e3eab1b1901f923964d7019796db810b7fd6430acb26c32866d126fd408 +"@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: 10/9d35d475095199c23e05b431bcdd1f6fec7380612aed068b14b2a08aa70494de8a9026765a5a91b1073f636fb0368f6d8973f518a31391d519e20c59388ed88d languageName: node linkType: hard @@ -7923,10 +7350,10 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": - version: 7.0.11 - resolution: "@types/json-schema@npm:7.0.11" - checksum: 10/e50864a93f4dcb9de64c0c605d836f5416341c824d7a8cde1aa15a5fc68bed44b33cdcb2e04e5098339e9121848378f2d0cc5b124dec41c89203c6f67d6f344a +"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.15, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 10/1a3c3e06236e4c4aab89499c428d585527ce50c24fe8259e8b3926d3df4cfbbbcf306cfc73ddfb66cbafc973116efd15967020b0f738f63e09e64c7d260519e7 languageName: node linkType: hard @@ -8161,7 +7588,7 @@ __metadata: languageName: node linkType: hard -"@types/semver@npm:^7.3.12, @types/semver@npm:^7.3.6, @types/semver@npm:^7.5.0": +"@types/semver@npm:^7.3.6, @types/semver@npm:^7.5.0": version: 7.5.0 resolution: "@types/semver@npm:7.5.0" checksum: 10/8fbfbf79e9c14c3c20160a42145a146cba44d9763d0fac78358b394dc36e41bc2590bc4f0129c6fcbbc9b30f12ea1ba821bfe84b29dc80897f315cc7dd251393 @@ -8343,170 +7770,115 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^5.42.1": - version: 5.43.0 - resolution: "@typescript-eslint/eslint-plugin@npm:5.43.0" +"@typescript-eslint/eslint-plugin@npm:8.24.0": + version: 8.24.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.24.0" dependencies: - "@typescript-eslint/scope-manager": "npm:5.43.0" - "@typescript-eslint/type-utils": "npm:5.43.0" - "@typescript-eslint/utils": "npm:5.43.0" - debug: "npm:^4.3.4" - ignore: "npm:^5.2.0" - natural-compare-lite: "npm:^1.4.0" - regexpp: "npm:^3.2.0" - semver: "npm:^7.3.7" - tsutils: "npm:^3.21.0" + "@eslint-community/regexpp": "npm:^4.10.0" + "@typescript-eslint/scope-manager": "npm:8.24.0" + "@typescript-eslint/type-utils": "npm:8.24.0" + "@typescript-eslint/utils": "npm:8.24.0" + "@typescript-eslint/visitor-keys": "npm:8.24.0" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.3.1" + natural-compare: "npm:^1.4.0" + ts-api-utils: "npm:^2.0.1" peerDependencies: - "@typescript-eslint/parser": ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/141c5fcf9435325b85d31f11fb7e6dda303b35f3f9ba9ae0156deead4b4229c5747d214db54a098c4756e810bf2a5758f18bc75004bb5a3cbf201ec09a0c2462 + "@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" + checksum: 10/2b65131dab6159285cd8688ae8fe4708e87f6aede7a6bcf65deec6f506a26f04409c7320d7957f59380f5b387fff2acfaa2c8117e2cbfc1b9368002e7905f616 languageName: node linkType: hard -"@typescript-eslint/parser@npm:^6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/parser@npm:6.21.0" +"@typescript-eslint/parser@npm:8.24.0": + version: 8.24.0 + resolution: "@typescript-eslint/parser@npm:8.24.0" dependencies: - "@typescript-eslint/scope-manager": "npm:6.21.0" - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/typescript-estree": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" + "@typescript-eslint/scope-manager": "npm:8.24.0" + "@typescript-eslint/types": "npm:8.24.0" + "@typescript-eslint/typescript-estree": "npm:8.24.0" + "@typescript-eslint/visitor-keys": "npm:8.24.0" debug: "npm:^4.3.4" peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/4d51cdbc170e72275efc5ef5fce48a81ec431e4edde8374f4d0213d8d370a06823e1a61ae31d502a5f1b0d1f48fc4d29a1b1b5c2dcf809d66d3872ccf6e46ac7 - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:5.43.0": - version: 5.43.0 - resolution: "@typescript-eslint/scope-manager@npm:5.43.0" - dependencies: - "@typescript-eslint/types": "npm:5.43.0" - "@typescript-eslint/visitor-keys": "npm:5.43.0" - checksum: 10/2072d49f62269dd2c337d803e0aa6a15138598b9fac18757b056f18334ad7a52686b6dec9b18f27c824826ec616632938546fb4667ad707234f7525722dd494c + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.8.0" + checksum: 10/b5c66a3208c69144cd5d0b7a2c763205ef8ae88eea76067186bab0909aa9756fe015616b98a7f252a5106aa5e86baeb98f9affbdc0f5d19863a2150f2431bfe0 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/scope-manager@npm:6.21.0" +"@typescript-eslint/scope-manager@npm:8.24.0, @typescript-eslint/scope-manager@npm:^8.1.0": + version: 8.24.0 + resolution: "@typescript-eslint/scope-manager@npm:8.24.0" dependencies: - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - checksum: 10/fe91ac52ca8e09356a71dc1a2f2c326480f3cccfec6b2b6d9154c1a90651ab8ea270b07c67df5678956c3bbf0bbe7113ab68f68f21b20912ea528b1214197395 + "@typescript-eslint/types": "npm:8.24.0" + "@typescript-eslint/visitor-keys": "npm:8.24.0" + checksum: 10/175032d4f714d68b734d7281c340e073a37d348010d308b9cccf8d63d745b8cc9515229e32dcd838acf4a85e21a4e8eff6c557c31ba45e36917e3417de32d723 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:5.43.0": - version: 5.43.0 - resolution: "@typescript-eslint/type-utils@npm:5.43.0" +"@typescript-eslint/type-utils@npm:8.24.0": + version: 8.24.0 + resolution: "@typescript-eslint/type-utils@npm:8.24.0" dependencies: - "@typescript-eslint/typescript-estree": "npm:5.43.0" - "@typescript-eslint/utils": "npm:5.43.0" + "@typescript-eslint/typescript-estree": "npm:8.24.0" + "@typescript-eslint/utils": "npm:8.24.0" debug: "npm:^4.3.4" - tsutils: "npm:^3.21.0" + ts-api-utils: "npm:^2.0.1" peerDependencies: - eslint: "*" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/6ffb38e0fa82831a13dedd0b3153846c718efbe1a92e4aa7176c92f3fc38a727148af6d33fd51de0e1d296c6e5f5021e77be8241291ebf87f3fd408c2f1459b1 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:5.43.0": - version: 5.43.0 - resolution: "@typescript-eslint/types@npm:5.43.0" - checksum: 10/303acb0ad314d04bf4de59542bf5383d10fbbf730c3b83dd87e0b936d825927832920b65cbe53d447075548eb2ffe981a1e526d81be6ab11e2194fbcde53b442 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/types@npm:6.21.0" - checksum: 10/e26da86d6f36ca5b6ef6322619f8ec55aabcd7d43c840c977ae13ae2c964c3091fc92eb33730d8be08927c9de38466c5323e78bfb270a9ff1d3611fe821046c5 + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.8.0" + checksum: 10/a6558d0b0ab7a43826b481c103c556abbafa93c9941d75d647266dc0f55e68950f44a63842a2e7839a7448329f9b7ee88c84913084438dbac38dba5efbc1afbc languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.43.0": - version: 5.43.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.43.0" - dependencies: - "@typescript-eslint/types": "npm:5.43.0" - "@typescript-eslint/visitor-keys": "npm:5.43.0" - debug: "npm:^4.3.4" - globby: "npm:^11.1.0" - is-glob: "npm:^4.0.3" - semver: "npm:^7.3.7" - tsutils: "npm:^3.21.0" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/f8458fee4fbad0a0ed6c972d1652ae22174860113e1085112b2250a7e8248cd0f40df9e7357ee3a3e22831334e135431c9755b449e212cd4cdc47c20b1378a3e +"@typescript-eslint/types@npm:8.24.0": + version: 8.24.0 + resolution: "@typescript-eslint/types@npm:8.24.0" + checksum: 10/ddaaec99c191830cc29ce289678d44f7201dd06c29540750ca4802b6bd2a6dfd8cc29b46ed270dc0198f23e742540bb1e4fe618b6b44e4e76bad7f774bd3fc4a languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/typescript-estree@npm:6.21.0" +"@typescript-eslint/typescript-estree@npm:8.24.0": + version: 8.24.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.24.0" dependencies: - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" + "@typescript-eslint/types": "npm:8.24.0" + "@typescript-eslint/visitor-keys": "npm:8.24.0" debug: "npm:^4.3.4" - globby: "npm:^11.1.0" + fast-glob: "npm:^3.3.2" is-glob: "npm:^4.0.3" - minimatch: "npm:9.0.3" - semver: "npm:^7.5.4" - ts-api-utils: "npm:^1.0.1" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/b32fa35fca2a229e0f5f06793e5359ff9269f63e9705e858df95d55ca2cd7fdb5b3e75b284095a992c48c5fc46a1431a1a4b6747ede2dd08929dc1cbacc589b8 - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:5.43.0, @typescript-eslint/utils@npm:^5.10.0": - version: 5.43.0 - resolution: "@typescript-eslint/utils@npm:5.43.0" - dependencies: - "@types/json-schema": "npm:^7.0.9" - "@types/semver": "npm:^7.3.12" - "@typescript-eslint/scope-manager": "npm:5.43.0" - "@typescript-eslint/types": "npm:5.43.0" - "@typescript-eslint/typescript-estree": "npm:5.43.0" - eslint-scope: "npm:^5.1.1" - eslint-utils: "npm:^3.0.0" - semver: "npm:^7.3.7" + minimatch: "npm:^9.0.4" + semver: "npm:^7.6.0" + ts-api-utils: "npm:^2.0.1" peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 10/afc054ba42200515a38fa3c7d4fda19d4ef510a6953f6c9f3cf274924d95509d138f6703c9b5419bbb4cc79066d9ac8d322b0623888b3744119288ccb8b56e41 + typescript: ">=4.8.4 <5.8.0" + checksum: 10/89e451f5d2136b405d046823c93ac7065d90c7a9f084ffb324e374c769b17ee2580d3711ada1e1575331b234059148f173230e560b08efa3073f8f0c04ce1224 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:5.43.0": - version: 5.43.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.43.0" +"@typescript-eslint/utils@npm:8.24.0, @typescript-eslint/utils@npm:^6.0.0 || ^7.0.0 || ^8.0.0, @typescript-eslint/utils@npm:^8.1.0": + version: 8.24.0 + resolution: "@typescript-eslint/utils@npm:8.24.0" dependencies: - "@typescript-eslint/types": "npm:5.43.0" - eslint-visitor-keys: "npm:^3.3.0" - checksum: 10/4ba65471c77b1cd554db98219f38526d680cc0f2d23ca96d9845bc3fa7e5bbf15c0c61c4da55c9efa8a60597a16e2f73867793349684d5ad82a81035bcb3d65f + "@eslint-community/eslint-utils": "npm:^4.4.0" + "@typescript-eslint/scope-manager": "npm:8.24.0" + "@typescript-eslint/types": "npm:8.24.0" + "@typescript-eslint/typescript-estree": "npm:8.24.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.8.0" + checksum: 10/773a4085e45a94f5a64b34550e7d890b5418c69a9dcd58862410e7e0ded46e3380c8dd7d38baafaa93ef40b2a77320092bded3ca36f15b2f7ea6babeb831e590 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/visitor-keys@npm:6.21.0" +"@typescript-eslint/visitor-keys@npm:8.24.0": + version: 8.24.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.24.0" dependencies: - "@typescript-eslint/types": "npm:6.21.0" - eslint-visitor-keys: "npm:^3.4.1" - checksum: 10/30422cdc1e2ffad203df40351a031254b272f9c6f2b7e02e9bfa39e3fc2c7b1c6130333b0057412968deda17a3a68a578a78929a8139c6acef44d9d841dc72e1 + "@typescript-eslint/types": "npm:8.24.0" + eslint-visitor-keys: "npm:^4.2.0" + checksum: 10/a93bc9e587784cbc47d6849f14581aa3f15574b187a7b98597362acbca43b06c36a6dfa889b5320ced62b182abf0b9759a694489d72fc7902cdea11830a7a535 languageName: node linkType: hard @@ -8841,154 +8213,154 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/ast@npm:1.11.6, @webassemblyjs/ast@npm:^1.11.5": - version: 1.11.6 - resolution: "@webassemblyjs/ast@npm:1.11.6" +"@webassemblyjs/ast@npm:1.14.1, @webassemblyjs/ast@npm:^1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/ast@npm:1.14.1" dependencies: - "@webassemblyjs/helper-numbers": "npm:1.11.6" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" - checksum: 10/4c1303971ccd5188731c9b01073d9738333f37b946a48c4e049f7b788706cdc66f473cd6f3e791423a94c52a3b2230d070007930d29bccbce238b23835839f3c + "@webassemblyjs/helper-numbers": "npm:1.13.2" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" + checksum: 10/f83e6abe38057f5d87c1fb356513a371a8b43c9b87657f2790741a66b1ef8ecf958d1391bc42f27c5fb33f58ab8286a38ea849fdd21f433cd4df1307424bab45 languageName: node linkType: hard -"@webassemblyjs/floating-point-hex-parser@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" - checksum: 10/29b08758841fd8b299c7152eda36b9eb4921e9c584eb4594437b5cd90ed6b920523606eae7316175f89c20628da14326801090167cc7fbffc77af448ac84b7e2 +"@webassemblyjs/floating-point-hex-parser@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.13.2" + checksum: 10/e866ec8433f4a70baa511df5e8f2ebcd6c24f4e2cc6274c7c5aabe2bcce3459ea4680e0f35d450e1f3602acf3913b6b8e4f15069c8cfd34ae8609fb9a7d01795 languageName: node linkType: hard -"@webassemblyjs/helper-api-error@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" - checksum: 10/e8563df85161096343008f9161adb138a6e8f3c2cc338d6a36011aa55eabb32f2fd138ffe63bc278d009ada001cc41d263dadd1c0be01be6c2ed99076103689f +"@webassemblyjs/helper-api-error@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/helper-api-error@npm:1.13.2" + checksum: 10/48b5df7fd3095bb252f59a139fe2cbd999a62ac9b488123e9a0da3906ad8a2f2da7b2eb21d328c01a90da987380928706395c2897d1f3ed9e2125b6d75a920d0 languageName: node linkType: hard -"@webassemblyjs/helper-buffer@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/helper-buffer@npm:1.11.6" - checksum: 10/b14d0573bf680d22b2522e8a341ec451fddd645d1f9c6bd9012ccb7e587a2973b86ab7b89fe91e1c79939ba96095f503af04369a3b356c8023c13a5893221644 +"@webassemblyjs/helper-buffer@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/helper-buffer@npm:1.14.1" + checksum: 10/9690afeafa5e765a34620aa6216e9d40f9126d4e37e9726a2594bf60cab6b211ef20ab6670fd3c4449dd4a3497e69e49b2b725c8da0fb213208c7f45f15f5d5b languageName: node linkType: hard -"@webassemblyjs/helper-numbers@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/helper-numbers@npm:1.11.6" +"@webassemblyjs/helper-numbers@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/helper-numbers@npm:1.13.2" dependencies: - "@webassemblyjs/floating-point-hex-parser": "npm:1.11.6" - "@webassemblyjs/helper-api-error": "npm:1.11.6" + "@webassemblyjs/floating-point-hex-parser": "npm:1.13.2" + "@webassemblyjs/helper-api-error": "npm:1.13.2" "@xtuc/long": "npm:4.2.2" - checksum: 10/9ffd258ad809402688a490fdef1fd02222f20cdfe191c895ac215a331343292164e5033dbc0347f0f76f2447865c0b5c2d2e3304ee948d44f7aa27857028fd08 + checksum: 10/e4c7d0b09811e1cda8eec644a022b560b28f4e974f50195375ccd007df5ee48a922a6dcff5ac40b6a8ec850d56d0ea6419318eee49fec7819ede14e90417a6a4 languageName: node linkType: hard -"@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" - checksum: 10/4ebf03e9c1941288c10e94e0f813f413f972bfaa1f09be2cc2e5577f300430906b61aa24d52f5ef2f894e8e24e61c6f7c39871d7e3d98bc69460e1b8e00bb20b +"@webassemblyjs/helper-wasm-bytecode@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.13.2" + checksum: 10/3edd191fff7296df1ef3b023bdbe6cb5ea668f6386fd197ccfce46015c6f2a8cc9763cfb86503a0b94973ad27996645afff2252ee39a236513833259a47af6ed languageName: node linkType: hard -"@webassemblyjs/helper-wasm-section@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.6" +"@webassemblyjs/helper-wasm-section@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/helper-wasm-section@npm:1.14.1" dependencies: - "@webassemblyjs/ast": "npm:1.11.6" - "@webassemblyjs/helper-buffer": "npm:1.11.6" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" - "@webassemblyjs/wasm-gen": "npm:1.11.6" - checksum: 10/38a615ab3d55f953daaf78b69f145e2cc1ff5288ab71715d1a164408b735c643a87acd7e7ba3e9633c5dd965439a45bb580266b05a06b22ff678d6c013514108 + "@webassemblyjs/ast": "npm:1.14.1" + "@webassemblyjs/helper-buffer": "npm:1.14.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" + "@webassemblyjs/wasm-gen": "npm:1.14.1" + checksum: 10/6b73874f906532512371181d7088460f767966f26309e836060c5a8e4e4bfe6d523fb5f4c034b34aa22ebb1192815f95f0e264298769485c1f0980fdd63ae0ce languageName: node linkType: hard -"@webassemblyjs/ieee754@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/ieee754@npm:1.11.6" +"@webassemblyjs/ieee754@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/ieee754@npm:1.13.2" dependencies: "@xtuc/ieee754": "npm:^1.2.0" - checksum: 10/13574b8e41f6ca39b700e292d7edf102577db5650fe8add7066a320aa4b7a7c09a5056feccac7a74eb68c10dea9546d4461412af351f13f6b24b5f32379b49de + checksum: 10/d7e3520baa37a7309fa7db4d73d69fb869878853b1ebd4b168821bd03fcc4c0e1669c06231315b0039035d9a7a462e53de3ad982da4a426a4b0743b5888e8673 languageName: node linkType: hard -"@webassemblyjs/leb128@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/leb128@npm:1.11.6" +"@webassemblyjs/leb128@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/leb128@npm:1.13.2" dependencies: "@xtuc/long": "npm:4.2.2" - checksum: 10/ec3b72db0e7ce7908fe08ec24395bfc97db486063824c0edc580f0973a4cfbadf30529569d9c7db663a56513e45b94299cca03be9e1992ea3308bb0744164f3d + checksum: 10/3a10542c86807061ec3230bac8ee732289c852b6bceb4b88ebd521a12fbcecec7c432848284b298154f28619e2746efbed19d6904aef06c49ef20a0b85f650cf languageName: node linkType: hard -"@webassemblyjs/utf8@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/utf8@npm:1.11.6" - checksum: 10/361a537bd604101b320a5604c3c96d1038d83166f1b9fb86cedadc7e81bae54c3785ae5d90bf5b1842f7da08194ccaf0f44a64fcca0cbbd6afe1a166196986d6 +"@webassemblyjs/utf8@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/utf8@npm:1.13.2" + checksum: 10/27885e5d19f339501feb210867d69613f281eda695ac508f04d69fa3398133d05b6870969c0242b054dc05420ed1cc49a64dea4fe0588c18d211cddb0117cc54 languageName: node linkType: hard -"@webassemblyjs/wasm-edit@npm:^1.11.5": - version: 1.11.6 - resolution: "@webassemblyjs/wasm-edit@npm:1.11.6" +"@webassemblyjs/wasm-edit@npm:^1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wasm-edit@npm:1.14.1" dependencies: - "@webassemblyjs/ast": "npm:1.11.6" - "@webassemblyjs/helper-buffer": "npm:1.11.6" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" - "@webassemblyjs/helper-wasm-section": "npm:1.11.6" - "@webassemblyjs/wasm-gen": "npm:1.11.6" - "@webassemblyjs/wasm-opt": "npm:1.11.6" - "@webassemblyjs/wasm-parser": "npm:1.11.6" - "@webassemblyjs/wast-printer": "npm:1.11.6" - checksum: 10/c168bfc6d0cdd371345f36f95a4766d098a96ccc1257e6a6e3a74d987a5c4f2ddd2244a6aecfa5d032a47d74ed2c3b579e00a314d31e4a0b76ad35b31cdfa162 + "@webassemblyjs/ast": "npm:1.14.1" + "@webassemblyjs/helper-buffer": "npm:1.14.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" + "@webassemblyjs/helper-wasm-section": "npm:1.14.1" + "@webassemblyjs/wasm-gen": "npm:1.14.1" + "@webassemblyjs/wasm-opt": "npm:1.14.1" + "@webassemblyjs/wasm-parser": "npm:1.14.1" + "@webassemblyjs/wast-printer": "npm:1.14.1" + checksum: 10/c62c50eadcf80876713f8c9f24106b18cf208160ab842fcb92060fd78c37bf37e7fcf0b7cbf1afc05d230277c2ce0f3f728432082c472dd1293e184a95f9dbdd languageName: node linkType: hard -"@webassemblyjs/wasm-gen@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/wasm-gen@npm:1.11.6" +"@webassemblyjs/wasm-gen@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wasm-gen@npm:1.14.1" dependencies: - "@webassemblyjs/ast": "npm:1.11.6" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" - "@webassemblyjs/ieee754": "npm:1.11.6" - "@webassemblyjs/leb128": "npm:1.11.6" - "@webassemblyjs/utf8": "npm:1.11.6" - checksum: 10/f91903506ce50763592863df5d80ffee80f71a1994a882a64cdb83b5e44002c715f1ef1727d8ccb0692d066af34d3d4f5e59e8f7a4e2eeb2b7c32692ac44e363 + "@webassemblyjs/ast": "npm:1.14.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" + "@webassemblyjs/ieee754": "npm:1.13.2" + "@webassemblyjs/leb128": "npm:1.13.2" + "@webassemblyjs/utf8": "npm:1.13.2" + checksum: 10/6085166b0987d3031355fe17a4f9ef0f412e08098d95454059aced2bd72a4c3df2bc099fa4d32d640551fc3eca1ac1a997b44432e46dc9d84642688e42c17ed4 languageName: node linkType: hard -"@webassemblyjs/wasm-opt@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/wasm-opt@npm:1.11.6" +"@webassemblyjs/wasm-opt@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wasm-opt@npm:1.14.1" dependencies: - "@webassemblyjs/ast": "npm:1.11.6" - "@webassemblyjs/helper-buffer": "npm:1.11.6" - "@webassemblyjs/wasm-gen": "npm:1.11.6" - "@webassemblyjs/wasm-parser": "npm:1.11.6" - checksum: 10/e0cfeea381ecbbd0ca1616e9a08974acfe7fc81f8a16f9f2d39f565dc51784dd7043710b6e972f9968692d273e32486b9a8a82ca178d4bd520b2d5e2cf28234d + "@webassemblyjs/ast": "npm:1.14.1" + "@webassemblyjs/helper-buffer": "npm:1.14.1" + "@webassemblyjs/wasm-gen": "npm:1.14.1" + "@webassemblyjs/wasm-parser": "npm:1.14.1" + checksum: 10/fa5d1ef8d2156e7390927f938f513b7fb4440dd6804b3d6c8622b7b1cf25a3abf1a5809f615896d4918e04b27b52bc3cbcf18faf2d563cb563ae0a9204a492db languageName: node linkType: hard -"@webassemblyjs/wasm-parser@npm:1.11.6, @webassemblyjs/wasm-parser@npm:^1.11.5": - version: 1.11.6 - resolution: "@webassemblyjs/wasm-parser@npm:1.11.6" +"@webassemblyjs/wasm-parser@npm:1.14.1, @webassemblyjs/wasm-parser@npm:^1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wasm-parser@npm:1.14.1" dependencies: - "@webassemblyjs/ast": "npm:1.11.6" - "@webassemblyjs/helper-api-error": "npm:1.11.6" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" - "@webassemblyjs/ieee754": "npm:1.11.6" - "@webassemblyjs/leb128": "npm:1.11.6" - "@webassemblyjs/utf8": "npm:1.11.6" - checksum: 10/6995e0b7b8ebc52b381459c6a555f87763dcd3975c4a112407682551e1c73308db7af23385972a253dceb5af94e76f9c97cb861e8239b5ed1c3e79b95d8e2097 + "@webassemblyjs/ast": "npm:1.14.1" + "@webassemblyjs/helper-api-error": "npm:1.13.2" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" + "@webassemblyjs/ieee754": "npm:1.13.2" + "@webassemblyjs/leb128": "npm:1.13.2" + "@webassemblyjs/utf8": "npm:1.13.2" + checksum: 10/07d9805fda88a893c984ed93d5a772d20d671e9731358ab61c6c1af8e0e58d1c42fc230c18974dfddebc9d2dd7775d514ba4d445e70080b16478b4b16c39c7d9 languageName: node linkType: hard -"@webassemblyjs/wast-printer@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/wast-printer@npm:1.11.6" +"@webassemblyjs/wast-printer@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wast-printer@npm:1.14.1" dependencies: - "@webassemblyjs/ast": "npm:1.11.6" + "@webassemblyjs/ast": "npm:1.14.1" "@xtuc/long": "npm:4.2.2" - checksum: 10/fd45fd0d693141d678cc2f6ff2d3a0d7a8884acb1c92fb0c63cf43b7978e9560be04118b12792638a39dd185640453510229e736f3049037d0c361f6435f2d5f + checksum: 10/cef09aad2fcd291bfcf9efdae2ea1e961a1ba0f925d1d9dcdd8c746d32fbaf431b6d26a0241699c0e39f82139018aa720b4ceb84ac6f4c78f13072747480db69 languageName: node linkType: hard @@ -9131,15 +8503,6 @@ __metadata: languageName: node linkType: hard -"acorn-import-assertions@npm:^1.9.0": - version: 1.9.0 - resolution: "acorn-import-assertions@npm:1.9.0" - peerDependencies: - acorn: ^8 - checksum: 10/af8dd58f6b0c6a43e85849744534b99f2133835c6fcdabda9eea27d0a0da625a0d323c4793ba7cb25cf4507609d0f747c210ccc2fc9b5866de04b0e59c9c5617 - languageName: node - linkType: hard - "acorn-jsx@npm:^5.3.2": version: 5.3.2 resolution: "acorn-jsx@npm:5.3.2" @@ -9185,7 +8548,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.0.4, acorn@npm:^8.1.0, acorn@npm:^8.10.0, acorn@npm:^8.11.0, acorn@npm:^8.4.1, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": +"acorn@npm:^8.0.4, acorn@npm:^8.1.0, acorn@npm:^8.10.0, acorn@npm:^8.11.0, acorn@npm:^8.14.0, acorn@npm:^8.4.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": version: 8.14.0 resolution: "acorn@npm:8.14.0" bin: @@ -9274,7 +8637,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^6.10.0, ajv@npm:^6.12.4, ajv@npm:^6.12.5": +"ajv@npm:^6.12.4, ajv@npm:^6.12.5": version: 6.12.6 resolution: "ajv@npm:6.12.6" dependencies: @@ -9529,19 +8892,6 @@ __metadata: languageName: node linkType: hard -"array-includes@npm:^3.1.4, array-includes@npm:^3.1.5, array-includes@npm:^3.1.6": - version: 3.1.6 - resolution: "array-includes@npm:3.1.6" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - get-intrinsic: "npm:^1.1.3" - is-string: "npm:^1.0.7" - checksum: 10/a7168bd16821ec76b95a8f50f73076577a7cbd6c762452043d2b978c8a5fa4afe4f98a025d6f1d5c971b8d0b440b4ee73f6a57fc45382c858b8e17c275015428 - languageName: node - linkType: hard - "array-union@npm:^2.1.0": version: 2.1.0 resolution: "array-union@npm:2.1.0" @@ -9549,43 +8899,6 @@ __metadata: languageName: node linkType: hard -"array.prototype.flat@npm:^1.2.5": - version: 1.3.1 - resolution: "array.prototype.flat@npm:1.3.1" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - es-shim-unscopables: "npm:^1.0.0" - checksum: 10/787bd3e93887b1c12cfed018864cb819a4fe361728d4aadc7b401b0811cf923121881cca369557432529ffa803a463f01e37eaa4b52e4c13bc574c438cd615cb - languageName: node - linkType: hard - -"array.prototype.flatmap@npm:^1.3.1": - version: 1.3.1 - resolution: "array.prototype.flatmap@npm:1.3.1" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - es-shim-unscopables: "npm:^1.0.0" - checksum: 10/f1f3d8e0610afce06a8622295b4843507dfc2fbbd2c2b2a8d541d9f42871747393c3099d630a3f8266ca086b97b089687db64cd86b6eb7e270ebc8f767eec9fc - languageName: node - linkType: hard - -"array.prototype.tosorted@npm:^1.1.1": - version: 1.1.1 - resolution: "array.prototype.tosorted@npm:1.1.1" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - es-shim-unscopables: "npm:^1.0.0" - get-intrinsic: "npm:^1.1.3" - checksum: 10/23e86074d0dda9260aaa137ec45ae5a8196916ee3f256e41665381f120fdb5921bd84ad93eeba8d0234e5cd355093049585167ba2307fde340e5cee15b12415d - languageName: node - linkType: hard - "arrify@npm:^2.0.1": version: 2.0.1 resolution: "arrify@npm:2.0.1" @@ -9711,10 +9024,12 @@ __metadata: languageName: node linkType: hard -"available-typed-arrays@npm:^1.0.5": - version: 1.0.5 - resolution: "available-typed-arrays@npm:1.0.5" - checksum: 10/4d4d5e86ea0425696f40717882f66a570647b94ac8d273ddc7549a9b61e5da099e149bf431530ccbd776bd74e02039eb8b5edf426e3e2211ee61af16698a9064 +"available-typed-arrays@npm:^1.0.7": + version: 1.0.7 + resolution: "available-typed-arrays@npm:1.0.7" + dependencies: + possible-typed-array-names: "npm:^1.0.0" + checksum: 10/6c9da3a66caddd83c875010a1ca8ef11eac02ba15fb592dc9418b2b5e7b77b645fa7729380a92d9835c2f05f2ca1b6251f39b993e0feb3f1517c74fa1af02cab languageName: node linkType: hard @@ -10275,17 +9590,17 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.14.5, browserslist@npm:^4.21.9, browserslist@npm:^4.22.1": - version: 4.22.1 - resolution: "browserslist@npm:4.22.1" +"browserslist@npm:^4.21.9, browserslist@npm:^4.22.1, browserslist@npm:^4.24.0": + version: 4.24.4 + resolution: "browserslist@npm:4.24.4" dependencies: - caniuse-lite: "npm:^1.0.30001541" - electron-to-chromium: "npm:^1.4.535" - node-releases: "npm:^2.0.13" - update-browserslist-db: "npm:^1.0.13" + caniuse-lite: "npm:^1.0.30001688" + electron-to-chromium: "npm:^1.5.73" + node-releases: "npm:^2.0.19" + update-browserslist-db: "npm:^1.1.1" bin: browserslist: cli.js - checksum: 10/4a515168e0589c7b1ccbf13a93116ce0418cc5e65d228ec036022cf0e08773fdfb732e2abbf1e1188b96d19ecd4dd707504e75b6d393cba2782fc7d6a7fdefe8 + checksum: 10/11fda105e803d891311a21a1f962d83599319165faf471c2d70e045dff82a12128f5b50b1fcba665a2352ad66147aaa248a9d2355a80aadc3f53375eb3de2e48 languageName: node linkType: hard @@ -10386,7 +9701,7 @@ __metadata: languageName: node linkType: hard -"builtins@npm:^5.0.0, builtins@npm:^5.0.1": +"builtins@npm:^5.0.0": version: 5.0.1 resolution: "builtins@npm:5.0.1" dependencies: @@ -10499,16 +9814,35 @@ __metadata: languageName: node linkType: hard -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.7": - version: 1.0.7 - resolution: "call-bind@npm:1.0.7" +"call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.1": + version: 1.0.2 + resolution: "call-bind-apply-helpers@npm:1.0.2" dependencies: - es-define-property: "npm:^1.0.0" es-errors: "npm:^1.3.0" function-bind: "npm:^1.1.2" + checksum: 10/00482c1f6aa7cfb30fb1dbeb13873edf81cfac7c29ed67a5957d60635a56b2a4a480f1016ddbdb3395cc37900d46037fb965043a51c5c789ffeab4fc535d18b5 + languageName: node + linkType: hard + +"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.8": + version: 1.0.8 + resolution: "call-bind@npm:1.0.8" + dependencies: + call-bind-apply-helpers: "npm:^1.0.0" + es-define-property: "npm:^1.0.0" get-intrinsic: "npm:^1.2.4" - set-function-length: "npm:^1.2.1" - checksum: 10/cd6fe658e007af80985da5185bff7b55e12ef4c2b6f41829a26ed1eef254b1f1c12e3dfd5b2b068c6ba8b86aba62390842d81752e67dcbaec4f6f76e7113b6b7 + set-function-length: "npm:^1.2.2" + checksum: 10/659b03c79bbfccf0cde3a79e7d52570724d7290209823e1ca5088f94b52192dc1836b82a324d0144612f816abb2f1734447438e38d9dafe0b3f82c2a1b9e3bce + languageName: node + linkType: hard + +"call-bound@npm:^1.0.2, call-bound@npm:^1.0.3": + version: 1.0.3 + resolution: "call-bound@npm:1.0.3" + dependencies: + call-bind-apply-helpers: "npm:^1.0.1" + get-intrinsic: "npm:^1.2.6" + checksum: 10/c39a8245f68cdb7c1f5eea7b3b1e3a7a90084ea6efebb78ebc454d698ade2c2bb42ec033abc35f1e596d62496b6100e9f4cdfad1956476c510130e2cda03266d languageName: node linkType: hard @@ -10567,10 +9901,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001541": - version: 1.0.30001550 - resolution: "caniuse-lite@npm:1.0.30001550" - checksum: 10/a5a475bff94109d326760deabb214f9234e908697d12c5d96b4a6fe6f2e960a0d16451df1188fa4d69bff5b5bd6d3de5eb792fd7dfdffb613685223ce9a43567 +"caniuse-lite@npm:^1.0.30001688": + version: 1.0.30001699 + resolution: "caniuse-lite@npm:1.0.30001699" + checksum: 10/325bf4d4ea8ab377046b6d5a43685359d5426adbb62aa1bea2c851cb5673547ef22b4a2b0e172e5a87ac74a7042e6ad23b87b78fdd04543c152d4e799397d7ba languageName: node linkType: hard @@ -11022,10 +10356,10 @@ __metadata: languageName: node linkType: hard -"comment-parser@npm:1.3.1": - version: 1.3.1 - resolution: "comment-parser@npm:1.3.1" - checksum: 10/d533b527539472a4431f282afa406acd74f792728223984114e1ba10a417c06df91f2364e8aee41a78e9c92243c3bcc57b1ddc9a2a77342326ddb942b56d5060 +"comment-parser@npm:1.4.1": + version: 1.4.1 + resolution: "comment-parser@npm:1.4.1" + checksum: 10/16a3260b5e77819ebd9c99b0b65c7d6723b1ff73487bac9ce2d8f016a2847dd689e8663b88e1fad1444bbea89847c42f785708ac86a2c55f614f7095249bbf6b languageName: node linkType: hard @@ -11400,14 +10734,14 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": - version: 7.0.3 - resolution: "cross-spawn@npm:7.0.3" +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.6": + version: 7.0.6 + resolution: "cross-spawn@npm:7.0.6" dependencies: path-key: "npm:^3.1.0" shebang-command: "npm:^2.0.0" which: "npm:^2.0.1" - checksum: 10/e1a13869d2f57d974de0d9ef7acbf69dc6937db20b918525a01dacb5032129bd552d290d886d981e99f1b624cb03657084cc87bd40f115c07ecf376821c729ce + checksum: 10/0d52657d7ae36eb130999dffff1168ec348687b48dd38e2ff59992ed916c88d328cf1d07ff4a4a10bc78de5e1c23f04b306d569e42f7a2293915c081e4dfee86 languageName: node linkType: hard @@ -11578,7 +10912,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:2.6.9, debug@npm:^2.6.9": +"debug@npm:2.6.9": version: 2.6.9 resolution: "debug@npm:2.6.9" dependencies: @@ -11587,15 +10921,15 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": - version: 4.3.6 - resolution: "debug@npm:4.3.6" +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.6, debug@npm:^4.3.7": + version: 4.4.0 + resolution: "debug@npm:4.4.0" dependencies: - ms: "npm:2.1.2" + ms: "npm:^2.1.3" peerDependenciesMeta: supports-color: optional: true - checksum: 10/d3adb9af7d57a9e809a68f404490cf776122acca16e6359a2702c0f462e510e91f9765c07f707b8ab0d91e03bad57328f3256f5082631cefb5393d0394d50fb7 + checksum: 10/1847944c2e3c2c732514b93d11886575625686056cd765336212dc15de2d2b29612b6cd80e1afba767bb8e1803b778caf9973e98169ef1a24a7a7009e1820367 languageName: node linkType: hard @@ -11754,7 +11088,7 @@ __metadata: languageName: node linkType: hard -"define-data-property@npm:^1.1.4": +"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": version: 1.1.4 resolution: "define-data-property@npm:1.1.4" dependencies: @@ -11772,13 +11106,14 @@ __metadata: languageName: node linkType: hard -"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4": - version: 1.1.4 - resolution: "define-properties@npm:1.1.4" +"define-properties@npm:^1.1.3, define-properties@npm:^1.2.1": + version: 1.2.1 + resolution: "define-properties@npm:1.2.1" dependencies: + define-data-property: "npm:^1.0.1" has-property-descriptors: "npm:^1.0.0" object-keys: "npm:^1.1.1" - checksum: 10/ce0aef3f9eb193562b5cfb79b2d2c86b6a109dfc9fdcb5f45d680631a1a908c06824ddcdb72b7573b54e26ace07f0a23420aaba0d5c627b34d2c1de8ef527e2b + checksum: 10/b4ccd00597dd46cb2d4a379398f5b19fca84a16f3374e2249201992f36b30f6835949a9429669ee6b41b6e837205a163eadd745e472069e70dfc10f03e5fcc12 languageName: node linkType: hard @@ -12071,15 +11406,6 @@ __metadata: languageName: node linkType: hard -"doctrine@npm:^2.1.0": - version: 2.1.0 - resolution: "doctrine@npm:2.1.0" - dependencies: - esutils: "npm:^2.0.2" - checksum: 10/555684f77e791b17173ea86e2eea45ef26c22219cb64670669c4f4bebd26dbc95cd90ec1f4159e9349a6bb9eb892ce4dde8cd0139e77bedd8bf4518238618474 - languageName: node - linkType: hard - "doctrine@npm:^3.0.0": version: 3.0.0 resolution: "doctrine@npm:3.0.0" @@ -12193,6 +11519,17 @@ __metadata: languageName: node linkType: hard +"dunder-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "dunder-proto@npm:1.0.1" + dependencies: + call-bind-apply-helpers: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.2.0" + checksum: 10/5add88a3d68d42d6e6130a0cac450b7c2edbe73364bbd2fc334564418569bea97c6943a8fcd70e27130bf32afc236f30982fc4905039b703f23e9e0433c29934 + languageName: node + linkType: hard + "duplexer2@npm:^0.1.2, duplexer2@npm:~0.1.0, duplexer2@npm:~0.1.2, duplexer2@npm:~0.1.4": version: 0.1.4 resolution: "duplexer2@npm:0.1.4" @@ -12285,10 +11622,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.535": - version: 1.4.557 - resolution: "electron-to-chromium@npm:1.4.557" - checksum: 10/e0e391c1149b006545555d484f4cc33072bdecb14dd68b95ef3ae449601edad7671d0cd6988bd5f1889c6c29b30e20c999b987bdd7116f8efbacab3cf6d42891 +"electron-to-chromium@npm:^1.5.73": + version: 1.5.98 + resolution: "electron-to-chromium@npm:1.5.98" + checksum: 10/92e34018f289ca57bbb20e14bd5bf6b28d34489a259c7a43079381abcf7cd9399a104d49bfdbf44019d72f682ea32b2482be534758997c292501098a83454210 languageName: node linkType: hard @@ -12367,13 +11704,13 @@ __metadata: languageName: node linkType: hard -"enhanced-resolve@npm:^5.15.0, enhanced-resolve@npm:^5.7.0": - version: 5.15.0 - resolution: "enhanced-resolve@npm:5.15.0" +"enhanced-resolve@npm:^5.15.0, enhanced-resolve@npm:^5.17.1, enhanced-resolve@npm:^5.7.0": + version: 5.18.1 + resolution: "enhanced-resolve@npm:5.18.1" dependencies: graceful-fs: "npm:^4.2.4" tapable: "npm:^2.2.0" - checksum: 10/180c3f2706f9117bf4dc7982e1df811dad83a8db075723f299245ef4488e0cad7e96859c5f0e410682d28a4ecd4da021ec7d06265f7e4eb6eed30c69ca5f7d3e + checksum: 10/50e81c7fe2239fba5670ebce78a34709906ed3a79274aa416434f7307b252e0b7824d76a7dd403eca795571dc6afd9a44183fc45a68475e8f2fdfbae6e92fcc3 languageName: node linkType: hard @@ -12432,44 +11769,10 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.19.0, es-abstract@npm:^1.20.4": - version: 1.20.4 - resolution: "es-abstract@npm:1.20.4" - dependencies: - call-bind: "npm:^1.0.2" - es-to-primitive: "npm:^1.2.1" - function-bind: "npm:^1.1.1" - function.prototype.name: "npm:^1.1.5" - get-intrinsic: "npm:^1.1.3" - get-symbol-description: "npm:^1.0.0" - has: "npm:^1.0.3" - has-property-descriptors: "npm:^1.0.0" - has-symbols: "npm:^1.0.3" - internal-slot: "npm:^1.0.3" - is-callable: "npm:^1.2.7" - is-negative-zero: "npm:^2.0.2" - is-regex: "npm:^1.1.4" - is-shared-array-buffer: "npm:^1.0.2" - is-string: "npm:^1.0.7" - is-weakref: "npm:^1.0.2" - object-inspect: "npm:^1.12.2" - object-keys: "npm:^1.1.1" - object.assign: "npm:^4.1.4" - regexp.prototype.flags: "npm:^1.4.3" - safe-regex-test: "npm:^1.0.0" - string.prototype.trimend: "npm:^1.0.5" - string.prototype.trimstart: "npm:^1.0.5" - unbox-primitive: "npm:^1.0.2" - checksum: 10/04fc6bd5e0389d157f119b59eb98dbdd3d2c5873470b375f01d6eff6ecb3ca67f91a5d7ee93c5bf0c2c475c5de2b813229f5269e087634ad84fb7827c8a66959 - languageName: node - linkType: hard - -"es-define-property@npm:^1.0.0": - version: 1.0.0 - resolution: "es-define-property@npm:1.0.0" - dependencies: - get-intrinsic: "npm:^1.2.4" - checksum: 10/f66ece0a887b6dca71848fa71f70461357c0e4e7249696f81bad0a1f347eed7b31262af4a29f5d726dc026426f085483b6b90301855e647aa8e21936f07293c6 +"es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1": + version: 1.0.1 + resolution: "es-define-property@npm:1.0.1" + checksum: 10/f8dc9e660d90919f11084db0a893128f3592b781ce967e4fccfb8f3106cb83e400a4032c559184ec52ee1dbd4b01e7776c7cd0b3327b1961b1a4a7008920fe78 languageName: node linkType: hard @@ -12497,30 +11800,19 @@ __metadata: languageName: node linkType: hard -"es-module-lexer@npm:^1.2.1": - version: 1.5.4 - resolution: "es-module-lexer@npm:1.5.4" - checksum: 10/f29c7c97a58eb17640dcbd71bd6ef754ad4f58f95c3073894573d29dae2cad43ecd2060d97ed5b866dfb7804d5590fb7de1d2c5339a5fceae8bd60b580387fc5 - languageName: node - linkType: hard - -"es-shim-unscopables@npm:^1.0.0": - version: 1.0.0 - resolution: "es-shim-unscopables@npm:1.0.0" - dependencies: - has: "npm:^1.0.3" - checksum: 10/ac2db2c70d253cf83bebcdc974d185239e205ca18af743efd3b656bac00cabfee2358a050b18b63b46972dab5cfa10ef3f2597eb3a8d4d6d9417689793665da6 +"es-module-lexer@npm:^1.2.1, es-module-lexer@npm:^1.5.3": + version: 1.6.0 + resolution: "es-module-lexer@npm:1.6.0" + checksum: 10/807ee7020cc46a9c970c78cad1f2f3fc139877e5ebad7f66dbfbb124d451189ba1c48c1c632bd5f8ce1b8af2caef3fca340ba044a410fa890d17b080a59024bb languageName: node linkType: hard -"es-to-primitive@npm:^1.2.1": - version: 1.2.1 - resolution: "es-to-primitive@npm:1.2.1" +"es-object-atoms@npm:^1.0.0": + version: 1.1.1 + resolution: "es-object-atoms@npm:1.1.1" dependencies: - is-callable: "npm:^1.1.4" - is-date-object: "npm:^1.0.1" - is-symbol: "npm:^1.0.2" - checksum: 10/74aeeefe2714cf99bb40cab7ce3012d74e1e2c1bd60d0a913b467b269edde6e176ca644b5ba03a5b865fb044a29bca05671cd445c85ca2cdc2de155d7fc8fe9b + es-errors: "npm:^1.3.0" + checksum: 10/54fe77de288451dae51c37bfbfe3ec86732dc3778f98f3eb3bdb4bf48063b2c0b8f9c93542656986149d08aa5be3204286e2276053d19582b76753f1a2728867 languageName: node linkType: hard @@ -12905,10 +12197,10 @@ __metadata: languageName: node linkType: hard -"escalade@npm:^3.1.1": - version: 3.1.1 - resolution: "escalade@npm:3.1.1" - checksum: 10/afa618e73362576b63f6ca83c975456621095a1ed42ff068174e3f5cea48afc422814dda548c96e6ebb5333e7265140c7292abcc81bbd6ccb1757d50d3a4e182 +"escalade@npm:^3.1.1, escalade@npm:^3.2.0": + version: 3.2.0 + resolution: "escalade@npm:3.2.0" + checksum: 10/9d7169e3965b2f9ae46971afa392f6e5a25545ea30f2e2dd99c9b0a95a3f52b5653681a84f5b2911a413ddad2d7a93d3514165072f349b5ffc59c75a899970d6 languageName: node linkType: hard @@ -12965,186 +12257,189 @@ __metadata: languageName: node linkType: hard -"eslint-config-prettier@npm:^8.5.0": - version: 8.5.0 - resolution: "eslint-config-prettier@npm:8.5.0" +"eslint-compat-utils@npm:^0.5.1": + version: 0.5.1 + resolution: "eslint-compat-utils@npm:0.5.1" + dependencies: + semver: "npm:^7.5.4" + peerDependencies: + eslint: ">=6.0.0" + checksum: 10/ac65ac1c6107cf19f63f5fc17cea361c9cb1336be7356f23dbb0fac10979974b4622e13e950be43cbf431801f2c07f7dab448573181ccf6edc0b86d5b5304511 + languageName: node + linkType: hard + +"eslint-config-prettier@npm:^9.1.0": + version: 9.1.0 + resolution: "eslint-config-prettier@npm:9.1.0" peerDependencies: eslint: ">=7.0.0" bin: eslint-config-prettier: bin/cli.js - checksum: 10/cafd93fb39997969e9e79b3e0b3466d0b8570273d15423986597b8422b7363d4a80f009aec1d1443fa2329972dafde79031b1649590cc35069b0a68d31098e7b + checksum: 10/411e3b3b1c7aa04e3e0f20d561271b3b909014956c4dba51c878bf1a23dbb8c800a3be235c46c4732c70827276e540b6eed4636d9b09b444fd0a8e07f0fcd830 languageName: node linkType: hard -"eslint-import-resolver-node@npm:^0.3.6": - version: 0.3.6 - resolution: "eslint-import-resolver-node@npm:0.3.6" +"eslint-import-resolver-node@npm:^0.3.9": + version: 0.3.9 + resolution: "eslint-import-resolver-node@npm:0.3.9" dependencies: debug: "npm:^3.2.7" - resolve: "npm:^1.20.0" - checksum: 10/c35c6edb7e77980a90922be8aedfacde572839b817146ab9fbed01195cb173cc40aa02d44ba0950170cfd41add11bc652dda8efed7ca766d733dc1eefc174614 + is-core-module: "npm:^2.13.0" + resolve: "npm:^1.22.4" + checksum: 10/d52e08e1d96cf630957272e4f2644dcfb531e49dcfd1edd2e07e43369eb2ec7a7d4423d417beee613201206ff2efa4eb9a582b5825ee28802fc7c71fcd53ca83 languageName: node linkType: hard -"eslint-module-utils@npm:^2.7.3": - version: 2.7.4 - resolution: "eslint-module-utils@npm:2.7.4" +"eslint-import-resolver-typescript@npm:^3.6.3": + version: 3.7.0 + resolution: "eslint-import-resolver-typescript@npm:3.7.0" dependencies: - debug: "npm:^3.2.7" + "@nolyfill/is-core-module": "npm:1.0.39" + debug: "npm:^4.3.7" + enhanced-resolve: "npm:^5.15.0" + fast-glob: "npm:^3.3.2" + get-tsconfig: "npm:^4.7.5" + is-bun-module: "npm:^1.0.2" + is-glob: "npm:^4.0.3" + stable-hash: "npm:^0.0.4" + peerDependencies: + eslint: "*" + eslint-plugin-import: "*" + eslint-plugin-import-x: "*" peerDependenciesMeta: - eslint: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: optional: true - checksum: 10/25527e03d4245d1d0b2ff1f752aaa02a34520c2a56403fd316e7ea54dcbbdd68089d490c6db2b79bfd4de57287535ade9fef6e024caa6310fc664289899a672d + checksum: 10/8158730c11e562c56ed9bf7236dc75bce35b6992dc32c39ac2f4177ab77fca97b95999850204a6458054243607b54aee88c028a61fed4184f24f425fa1afff01 languageName: node linkType: hard -"eslint-plugin-es@npm:^4.1.0": - version: 4.1.0 - resolution: "eslint-plugin-es@npm:4.1.0" +"eslint-plugin-es-x@npm:^7.8.0": + version: 7.8.0 + resolution: "eslint-plugin-es-x@npm:7.8.0" dependencies: - eslint-utils: "npm:^2.0.0" - regexpp: "npm:^3.0.0" + "@eslint-community/eslint-utils": "npm:^4.1.2" + "@eslint-community/regexpp": "npm:^4.11.0" + eslint-compat-utils: "npm:^0.5.1" peerDependencies: - eslint: ">=4.19.1" - checksum: 10/431c7a6296f6f44d94acfb65c8d00fdd2c1c187d8aa97e1eab1d6780e9ed6cf6b62007fd403509ed5ec788a75cf41c8f1e3174cc16f5cc08b9ea266dc92de68e + eslint: ">=8" + checksum: 10/1df8d52c4fadc06854ce801af05b05f2642aa2deb918fb7d37738596eabd70b7f21a22b150b78ec9104bac6a1b6b4fb796adea2364ede91b01d20964849ce5f7 languageName: node linkType: hard -"eslint-plugin-import@npm:^2.26.0": - version: 2.26.0 - resolution: "eslint-plugin-import@npm:2.26.0" +"eslint-plugin-import-x@npm:^4.3.0": + version: 4.6.1 + resolution: "eslint-plugin-import-x@npm:4.6.1" dependencies: - array-includes: "npm:^3.1.4" - array.prototype.flat: "npm:^1.2.5" - debug: "npm:^2.6.9" - doctrine: "npm:^2.1.0" - eslint-import-resolver-node: "npm:^0.3.6" - eslint-module-utils: "npm:^2.7.3" - has: "npm:^1.0.3" - is-core-module: "npm:^2.8.1" + "@types/doctrine": "npm:^0.0.9" + "@typescript-eslint/scope-manager": "npm:^8.1.0" + "@typescript-eslint/utils": "npm:^8.1.0" + debug: "npm:^4.3.4" + doctrine: "npm:^3.0.0" + enhanced-resolve: "npm:^5.17.1" + eslint-import-resolver-node: "npm:^0.3.9" + get-tsconfig: "npm:^4.7.3" is-glob: "npm:^4.0.3" - minimatch: "npm:^3.1.2" - object.values: "npm:^1.1.5" - resolve: "npm:^1.22.0" - tsconfig-paths: "npm:^3.14.1" + minimatch: "npm:^9.0.3" + semver: "npm:^7.6.3" + stable-hash: "npm:^0.0.4" + tslib: "npm:^2.6.3" peerDependencies: - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - checksum: 10/80322d0414c6d6b6f8ddb77a87ede733d7af8536461cbc977e0da9a9e7bd976aa588488a5f310383b914111f496c0a259d2752f402e5880b16ecc48aca89b29e + eslint: ^8.57.0 || ^9.0.0 + checksum: 10/514d8147f7bdff4accbeb06c294b68670287ecdaada9b2fbd3a2ba89d35860095cadd5a4175894fc8e75ba3b2be83dc172eba5cc71b823fd0dd846b7d49877ff languageName: node linkType: hard -"eslint-plugin-jest@npm:^27.1.5": - version: 27.1.5 - resolution: "eslint-plugin-jest@npm:27.1.5" +"eslint-plugin-jest@npm:^28.8.3": + version: 28.11.0 + resolution: "eslint-plugin-jest@npm:28.11.0" dependencies: - "@typescript-eslint/utils": "npm:^5.10.0" + "@typescript-eslint/utils": "npm:^6.0.0 || ^7.0.0 || ^8.0.0" peerDependencies: - "@typescript-eslint/eslint-plugin": ^5.0.0 - eslint: ^7.0.0 || ^8.0.0 + "@typescript-eslint/eslint-plugin": ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + jest: "*" peerDependenciesMeta: "@typescript-eslint/eslint-plugin": optional: true jest: optional: true - checksum: 10/c94896227bc79ee10b6d4cee225031aba108b448f6e979718f4f286bab6a0517b6fcfe4189e60283c04135e68122d0bc70bf5e107d8952cc78fc7b34a30ca791 + checksum: 10/7f3896ec2dc03110688bb9f359a7aa1ba1a6d9a60ffbc3642361c4aaf55afcba9ce36b6609b20b1507028c2170ffe29b0f3e9cc9b7fe12fdd233740a2f9ce0a1 languageName: node linkType: hard -"eslint-plugin-jsdoc@npm:^41.1.2": - version: 41.1.2 - resolution: "eslint-plugin-jsdoc@npm:41.1.2" +"eslint-plugin-jsdoc@npm:^50.2.4": + version: 50.6.3 + resolution: "eslint-plugin-jsdoc@npm:50.6.3" dependencies: - "@es-joy/jsdoccomment": "npm:~0.37.0" + "@es-joy/jsdoccomment": "npm:~0.49.0" are-docs-informative: "npm:^0.0.2" - comment-parser: "npm:1.3.1" - debug: "npm:^4.3.4" + comment-parser: "npm:1.4.1" + debug: "npm:^4.3.6" escape-string-regexp: "npm:^4.0.0" - esquery: "npm:^1.5.0" - semver: "npm:^7.3.8" - spdx-expression-parse: "npm:^3.0.1" + espree: "npm:^10.1.0" + esquery: "npm:^1.6.0" + parse-imports: "npm:^2.1.1" + semver: "npm:^7.6.3" + spdx-expression-parse: "npm:^4.0.0" + synckit: "npm:^0.9.1" peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - checksum: 10/1ebddfd844bea140e811fe27e2d605e974faf20a8642964cae5c3c0188dc7b48db2c727a70a2656a3e0c2568007778abadfceb785b9eea50d5acd262026ac2fa + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + checksum: 10/2c8fa8f493730e326d53bfdaccdb4d8502ee836cd7893f56cf9b12d36831a0cd8c3e9740fe0a7fc67232d1fb6866c17385b2d89b7ce56543056403b982b5f1a6 languageName: node linkType: hard -"eslint-plugin-n@npm:^15.7.0": - version: 15.7.0 - resolution: "eslint-plugin-n@npm:15.7.0" +"eslint-plugin-n@npm:^17.10.3": + version: 17.15.1 + resolution: "eslint-plugin-n@npm:17.15.1" dependencies: - builtins: "npm:^5.0.1" - eslint-plugin-es: "npm:^4.1.0" - eslint-utils: "npm:^3.0.0" - ignore: "npm:^5.1.1" - is-core-module: "npm:^2.11.0" - minimatch: "npm:^3.1.2" - resolve: "npm:^1.22.1" - semver: "npm:^7.3.8" + "@eslint-community/eslint-utils": "npm:^4.4.1" + enhanced-resolve: "npm:^5.17.1" + eslint-plugin-es-x: "npm:^7.8.0" + get-tsconfig: "npm:^4.8.1" + globals: "npm:^15.11.0" + ignore: "npm:^5.3.2" + minimatch: "npm:^9.0.5" + semver: "npm:^7.6.3" peerDependencies: - eslint: ">=7.0.0" - checksum: 10/c759f90ca802a6323b5ddab30ec83004bdd1cd620e2a2ff09078f3f5a732b0784e3e12b7cb3374d8464dcc178c7c8cc457c775d81e18c9b4543b5fe4c5995dd0 + eslint: ">=8.23.0" + checksum: 10/43fc161949fa0346ac7063a30580cd0db27e216b8e6a48d73d0bf4f10b88e9b65f263399843b3fe2087f766f264d16f0cbe8f2f898591516842201dc115a2d21 languageName: node linkType: hard -"eslint-plugin-prettier@npm:^4.2.1": - version: 4.2.1 - resolution: "eslint-plugin-prettier@npm:4.2.1" +"eslint-plugin-prettier@npm:^5.2.1": + version: 5.2.3 + resolution: "eslint-plugin-prettier@npm:5.2.3" dependencies: prettier-linter-helpers: "npm:^1.0.0" + synckit: "npm:^0.9.1" peerDependencies: - eslint: ">=7.28.0" - prettier: ">=2.0.0" + "@types/eslint": ">=8.0.0" + eslint: ">=8.0.0" + eslint-config-prettier: "*" + prettier: ">=3.0.0" peerDependenciesMeta: + "@types/eslint": + optional: true eslint-config-prettier: optional: true - checksum: 10/d387f85dd1bfcb6bc6b794845fee6afb9ebb2375653de6bcde6e615892fb97f85121a7c012a4651b181fc09953bdf54c9bc70cab7ad297019d89ae87dd007e28 - languageName: node - linkType: hard - -"eslint-plugin-promise@npm:^6.1.1": - version: 6.1.1 - resolution: "eslint-plugin-promise@npm:6.1.1" - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - checksum: 10/216c4348f796c5e90984224532d42a8f8d0455b8cbb1955bcb328b3aa10a52e9718f6fb044b6fe19825eda3a2d62a32b1042d9cbb10731353cf61b7a6cab2d71 + checksum: 10/6444a0b89f3e2a6b38adce69761133f8539487d797f1655b3fa24f93a398be132c4f68f87041a14740b79202368d5782aa1dffd2bd7a3ea659f263d6796acf15 languageName: node linkType: hard -"eslint-plugin-react-hooks@npm:^4.6.0": - version: 4.6.0 - resolution: "eslint-plugin-react-hooks@npm:4.6.0" - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - checksum: 10/3c63134e056a6d98d66e2c475c81f904169db817e89316d14e36269919e31f4876a2588aa0e466ec8ef160465169c627fe823bfdaae7e213946584e4a165a3ac - languageName: node - linkType: hard - -"eslint-plugin-react@npm:^7.32.2": - version: 7.32.2 - resolution: "eslint-plugin-react@npm:7.32.2" +"eslint-plugin-promise@npm:^7.1.0": + version: 7.2.1 + resolution: "eslint-plugin-promise@npm:7.2.1" dependencies: - array-includes: "npm:^3.1.6" - array.prototype.flatmap: "npm:^1.3.1" - array.prototype.tosorted: "npm:^1.1.1" - doctrine: "npm:^2.1.0" - estraverse: "npm:^5.3.0" - jsx-ast-utils: "npm:^2.4.1 || ^3.0.0" - minimatch: "npm:^3.1.2" - object.entries: "npm:^1.1.6" - object.fromentries: "npm:^2.0.6" - object.hasown: "npm:^1.1.2" - object.values: "npm:^1.1.6" - prop-types: "npm:^15.8.1" - resolve: "npm:^2.0.0-next.4" - semver: "npm:^6.3.0" - string.prototype.matchall: "npm:^4.0.8" + "@eslint-community/eslint-utils": "npm:^4.4.0" peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: 10/5ca7959c85fa557bcd25c4b9b3f81fbfae974e8fb16172e31a275712cc71da8ecbb9436da2d3130a8b24dd7a4bbe69d37d4392944aecc4821618717ba156caf4 + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + checksum: 10/e7447159d52dbc0fdaacfad18571906bb783f9f41f497e73f9b0351e9cc79497f9a9053fbef8141d0c027c16c768a1ef7f8cd4709a4a5cbb14636e862a1ccb34 languageName: node linkType: hard -"eslint-scope@npm:5.1.1, eslint-scope@npm:^5.1.1": +"eslint-scope@npm:5.1.1": version: 5.1.1 resolution: "eslint-scope@npm:5.1.1" dependencies: @@ -13154,107 +12449,80 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:^7.1.1": - version: 7.1.1 - resolution: "eslint-scope@npm:7.1.1" +"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: 10/5bc6f6bdfd815202471077108e76af1c8c648a16e4f60d71d9f98db0dd2b2ba9596fa1d427974f6fc7a2cfea728870b9f2f06048cd426f0f2d3d2375f51f67a9 - languageName: node - linkType: hard - -"eslint-utils@npm:^2.0.0": - version: 2.1.0 - resolution: "eslint-utils@npm:2.1.0" - dependencies: - eslint-visitor-keys: "npm:^1.1.0" - checksum: 10/a7e43a5154a16a90c021cabeb160c3668cccbcf6474ccb2a7d7762698582398f3b938c5330909b858ef7c21182edfc9786dbf89ed7b294f51b7659a378bf7cec - languageName: node - linkType: hard - -"eslint-utils@npm:^3.0.0": - version: 3.0.0 - resolution: "eslint-utils@npm:3.0.0" - dependencies: - eslint-visitor-keys: "npm:^2.0.0" - peerDependencies: - eslint: ">=5" - checksum: 10/7675260a6b220c70f13e4cdbf077e93cad0dfb388429a27d6c0b584b2b20dca24594508e8bdb00a460a5764bd364a5018e20c2b8b1d70f82bcc3fdc30692a4d2 + checksum: 10/cd9ab60d5a68f3a0fcac04d1cff5a7383d0f331964d5f1c446259123caec5b3ccc542284d07846e4f4d1389da77750821cc9a6e1ce18558c674977351666f9a6 languageName: node linkType: hard -"eslint-visitor-keys@npm:^1.1.0": - version: 1.3.0 - resolution: "eslint-visitor-keys@npm:1.3.0" - checksum: 10/595ab230e0fcb52f86ba0986a9a473b9fcae120f3729b43f1157f88f27f8addb1e545c4e3d444185f2980e281ca15be5ada6f65b4599eec227cf30e41233b762 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^2.0.0": - version: 2.0.0 - resolution: "eslint-visitor-keys@npm:2.0.0" - checksum: 10/38a7284d7b75f43b92e83f0c81def045a49ea3ba5ff55917937107455dc15c7c91318f31f746b41ed103605153961e5445e85ab97cb43cfd8ebfc42148dfca4a - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1": +"eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" checksum: 10/3f357c554a9ea794b094a09bd4187e5eacd1bc0d0653c3adeb87962c548e6a1ab8f982b86963ae1337f5d976004146536dcee5d0e2806665b193fbfbf1a9231b languageName: node linkType: hard -"eslint@npm:^8.27.0": - version: 8.27.0 - resolution: "eslint@npm:8.27.0" +"eslint-visitor-keys@npm:^4.2.0": + version: 4.2.0 + resolution: "eslint-visitor-keys@npm:4.2.0" + checksum: 10/9651b3356b01760e586b4c631c5268c0e1a85236e3292bf754f0472f465bf9a856c0ddc261fceace155334118c0151778effafbab981413dbf9288349343fa25 + languageName: node + linkType: hard + +"eslint@npm:^9.11.0": + version: 9.20.1 + resolution: "eslint@npm:9.20.1" dependencies: - "@eslint/eslintrc": "npm:^1.3.3" - "@humanwhocodes/config-array": "npm:^0.11.6" + "@eslint-community/eslint-utils": "npm:^4.2.0" + "@eslint-community/regexpp": "npm:^4.12.1" + "@eslint/config-array": "npm:^0.19.0" + "@eslint/core": "npm:^0.11.0" + "@eslint/eslintrc": "npm:^3.2.0" + "@eslint/js": "npm:9.20.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" - ajv: "npm:^6.10.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.1.1" - eslint-utils: "npm:^3.0.0" - eslint-visitor-keys: "npm:^3.3.0" - espree: "npm:^9.4.0" - esquery: "npm:^1.4.0" + 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.15.0" - grapheme-splitter: "npm:^1.0.4" ignore: "npm:^5.2.0" - import-fresh: "npm:^3.0.0" imurmurhash: "npm:^0.1.4" is-glob: "npm:^4.0.0" - is-path-inside: "npm:^3.0.3" - js-sdsl: "npm:^4.1.4" - 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.1" - regexpp: "npm:^3.2.0" - strip-ansi: "npm:^6.0.1" - strip-json-comments: "npm:^3.1.0" - text-table: "npm:^0.2.0" + optionator: "npm:^0.9.3" + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true bin: eslint: bin/eslint.js - checksum: 10/a4bdc74c184a6110db309a54db752aa3be87a671a933fc1e01f45ab658a36675f6d9f1ca2729d83067d1c9f02331f8094d689a8fba15583caf78b8a3a80787fc + checksum: 10/b1d870135c8ff628685e72c0e9cd161476835e8e69e803d89d87fc4aebe85fc6b51ca422c3c4bc62f0ef7bbd9b10feda76e37e4801706e75931c1791d0e051a8 languageName: node linkType: hard -"espree@npm:9.6.1, espree@npm:^9.4.0, espree@npm:^9.6.1": +"espree@npm:9.6.1, espree@npm:^9.6.1": version: 9.6.1 resolution: "espree@npm:9.6.1" dependencies: @@ -13265,6 +12533,17 @@ __metadata: languageName: node linkType: hard +"espree@npm:^10.0.1, espree@npm:^10.1.0, espree@npm:^10.3.0": + version: 10.3.0 + resolution: "espree@npm:10.3.0" + dependencies: + acorn: "npm:^8.14.0" + acorn-jsx: "npm:^5.3.2" + eslint-visitor-keys: "npm:^4.2.0" + checksum: 10/3412d44d4204c9e29d6b5dd0277400cfa0cd68495dc09eae1b9ce79d0c8985c1c5cc09cb9ba32a1cd963f48a49b0c46bdb7736afe395a300aa6bb1c0d86837e8 + languageName: node + linkType: hard + "esprima@npm:^4.0.0, esprima@npm:^4.0.1, esprima@npm:~4.0.0": version: 4.0.1 resolution: "esprima@npm:4.0.1" @@ -13275,7 +12554,7 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.4.0, esquery@npm:^1.5.0": +"esquery@npm:^1.5.0, esquery@npm:^1.6.0": version: 1.6.0 resolution: "esquery@npm:1.6.0" dependencies: @@ -13300,7 +12579,7 @@ __metadata: languageName: node linkType: hard -"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0": +"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": version: 5.3.0 resolution: "estraverse@npm:5.3.0" checksum: 10/37cbe6e9a68014d34dbdc039f90d0baf72436809d02edffcc06ba3c2a12eb298048f877511353b130153e532aac8d68ba78430c0dd2f44806ebc7c014b01585e @@ -13627,16 +12906,16 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0": - version: 3.3.2 - resolution: "fast-glob@npm:3.3.2" +"fast-glob@npm:^3.2.11, fast-glob@npm:^3.3.0, fast-glob@npm:^3.3.2": + version: 3.3.3 + resolution: "fast-glob@npm:3.3.3" dependencies: "@nodelib/fs.stat": "npm:^2.0.2" "@nodelib/fs.walk": "npm:^1.2.3" glob-parent: "npm:^5.1.2" merge2: "npm:^1.3.0" - micromatch: "npm:^4.0.4" - checksum: 10/222512e9315a0efca1276af9adb2127f02105d7288fa746145bf45e2716383fb79eb983c89601a72a399a56b7c18d38ce70457c5466218c5f13fad957cee16df + micromatch: "npm:^4.0.8" + checksum: 10/dcc6432b269762dd47381d8b8358bf964d8f4f60286ac6aa41c01ade70bda459ff2001b516690b96d5365f68a49242966112b5d5cc9cd82395fa8f9d017c90ad languageName: node linkType: hard @@ -13744,6 +13023,18 @@ __metadata: languageName: node linkType: hard +"fdir@npm:^6.4.2": + version: 6.4.3 + resolution: "fdir@npm:6.4.3" + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + checksum: 10/8e6d20f4590dc168de1374a9cadaa37e20ca6e0b822aa247c230e7ea1d9e9674a68cd816146435e4ecc98f9285091462ab7e5e56eebc9510931a1794e4db68b2 + languageName: node + linkType: hard + "fetch-blob@npm:^3.1.2, fetch-blob@npm:^3.1.4": version: 3.2.0 resolution: "fetch-blob@npm:3.2.0" @@ -13764,12 +13055,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: 10/099bb9d4ab332cb93c48b14807a6918a1da87c45dce91d4b61fd40e6505d56d0697da060cb901c729c90487067d93c9243f5da3dc9c41f0358483bfdebca736b + flat-cache: "npm:^4.0.0" + checksum: 10/afe55c4de4e0d226a23c1eae62a7219aafb390859122608a89fa4df6addf55c7fd3f1a2da6f5b41e7cdff496e4cf28bbd215d53eab5c817afa96d2b40c81bfb0 languageName: node linkType: hard @@ -13891,13 +13182,13 @@ __metadata: languageName: node linkType: hard -"flat-cache@npm:^3.0.4": - version: 3.0.4 - resolution: "flat-cache@npm:3.0.4" +"flat-cache@npm:^4.0.0": + version: 4.0.1 + resolution: "flat-cache@npm:4.0.1" dependencies: - flatted: "npm:^3.1.0" - rimraf: "npm:^3.0.2" - checksum: 10/9fe5d0cb97c988e3b25242e71346965fae22757674db3fca14206850af2efa3ca3b04a3ba0eba8d5e20fd8a3be80a2e14b1c2917e70ffe1acb98a8c3327e4c9f + flatted: "npm:^3.2.9" + keyv: "npm:^4.5.4" + checksum: 10/58ce851d9045fffc7871ce2bd718bc485ad7e777bf748c054904b87c351ff1080c2c11da00788d78738bfb51b71e4d5ea12d13b98eb36e3358851ffe495b62dc languageName: node linkType: hard @@ -13910,10 +13201,10 @@ __metadata: languageName: node linkType: hard -"flatted@npm:^3.1.0": - version: 3.1.1 - resolution: "flatted@npm:3.1.1" - checksum: 10/2ce58ed083be7f7ec4500deba0a58df0673487ddadf14ab197d149149e965db6b5d53bedb40d59dee180afba97b093326c6f836385004ea8929b7beb18bb6033 +"flatted@npm:^3.2.9": + version: 3.3.2 + resolution: "flatted@npm:3.3.2" + checksum: 10/ac3c159742e01d0e860a861164bcfd35bb567ccbebb8a0dd041e61cf3c64a435b917dd1e7ed1c380c2ebca85735fb16644485ec33665bc6aafc3b316aa1eed44 languageName: node linkType: hard @@ -14226,19 +13517,7 @@ __metadata: languageName: node linkType: hard -"function.prototype.name@npm:^1.1.5": - version: 1.1.5 - resolution: "function.prototype.name@npm:1.1.5" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.19.0" - functions-have-names: "npm:^1.2.2" - checksum: 10/5d426e5a38ac41747bcfce6191e0ec818ed18678c16cfc36b5d1ca87f56ff98c4ce958ee2c1ea2a18dc3da989844a37b1065311e2d2ae4cf12da8f82418b686b - languageName: node - linkType: hard - -"functions-have-names@npm:^1.2.2": +"functions-have-names@npm:^1.2.3": version: 1.2.3 resolution: "functions-have-names@npm:1.2.3" checksum: 10/0ddfd3ed1066a55984aaecebf5419fbd9344a5c38dd120ffb0739fac4496758dcf371297440528b115e4367fc46e3abc86a2cc0ff44612181b175ae967a11a05 @@ -14309,16 +13588,21 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0, get-intrinsic@npm:^1.2.4": - version: 1.2.4 - resolution: "get-intrinsic@npm:1.2.4" +"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6": + version: 1.2.7 + resolution: "get-intrinsic@npm:1.2.7" dependencies: + call-bind-apply-helpers: "npm:^1.0.1" + es-define-property: "npm:^1.0.1" es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" function-bind: "npm:^1.1.2" - has-proto: "npm:^1.0.1" - has-symbols: "npm:^1.0.3" - hasown: "npm:^2.0.0" - checksum: 10/85bbf4b234c3940edf8a41f4ecbd4e25ce78e5e6ad4e24ca2f77037d983b9ef943fd72f00f3ee97a49ec622a506b67db49c36246150377efcda1c9eb03e5f06d + get-proto: "npm:^1.0.0" + gopd: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + hasown: "npm:^2.0.2" + math-intrinsics: "npm:^1.1.0" + checksum: 10/4f7149c9a826723f94c6d49f70bcb3df1d3f9213994fab3668f12f09fa72074681460fb29ebb6f135556ec6372992d63802386098791a8f09cfa6f27090fa67b languageName: node linkType: hard @@ -14350,6 +13634,16 @@ __metadata: languageName: node linkType: hard +"get-proto@npm:^1.0.0, get-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "get-proto@npm:1.0.1" + dependencies: + dunder-proto: "npm:^1.0.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10/4fc96afdb58ced9a67558698b91433e6b037aaa6f1493af77498d7c85b141382cf223c0e5946f334fb328ee85dfe6edd06d218eaf09556f4bc4ec6005d7f5f7b + languageName: node + linkType: hard + "get-stdin@npm:^9.0.0": version: 9.0.0 resolution: "get-stdin@npm:9.0.0" @@ -14380,22 +13674,12 @@ __metadata: languageName: node linkType: hard -"get-symbol-description@npm:^1.0.0": - version: 1.0.0 - resolution: "get-symbol-description@npm:1.0.0" - dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.1.1" - checksum: 10/7e5f298afe0f0872747dce4a949ce490ebc5d6dd6aefbbe5044543711c9b19a4dfaebdbc627aee99e1299d58a435b2fbfa083458c1d58be6dc03a3bada24d359 - languageName: node - linkType: hard - -"get-tsconfig@npm:^4.7.5": - version: 4.8.1 - resolution: "get-tsconfig@npm:4.8.1" +"get-tsconfig@npm:^4.7.3, get-tsconfig@npm:^4.7.5, get-tsconfig@npm:^4.8.1": + version: 4.10.0 + resolution: "get-tsconfig@npm:4.10.0" dependencies: resolve-pkg-maps: "npm:^1.0.0" - checksum: 10/3fb5a8ad57b9633eaea085d81661e9e5c9f78b35d8f8689eaf8b8b45a2a3ebf3b3422266d4d7df765e308cc1e6231648d114803ab3d018332e29916f2c1de036 + checksum: 10/5259b5c99a1957114337d9d0603b4a305ec9e29fa6cac7d2fbf634ba6754a0cc88bfd281a02416ce64e604b637d3cb239185381a79a5842b17fb55c097b38c4b languageName: node linkType: hard @@ -14551,30 +13835,21 @@ __metadata: languageName: node linkType: hard -"globals@npm:^13.15.0": - version: 13.18.0 - resolution: "globals@npm:13.18.0" - dependencies: - type-fest: "npm:^0.20.2" - checksum: 10/e5e6a0d7e00d35f04015cf6496f2d09f3c566566e99696f6675aa9bf8e259933a31ed4fecab0e305a374304c5ba9538f2694a86b6df05ac040a473246511709b +"globals@npm:^14.0.0": + version: 14.0.0 + resolution: "globals@npm:14.0.0" + checksum: 10/03939c8af95c6df5014b137cac83aa909090c3a3985caef06ee9a5a669790877af8698ab38007e4c0186873adc14c0b13764acc754b16a754c216cc56aa5f021 languageName: node linkType: hard -"globby@npm:^11.1.0": - version: 11.1.0 - resolution: "globby@npm:11.1.0" - dependencies: - array-union: "npm:^2.1.0" - dir-glob: "npm:^3.0.1" - fast-glob: "npm:^3.2.9" - ignore: "npm:^5.2.0" - merge2: "npm:^1.4.1" - slash: "npm:^3.0.0" - checksum: 10/288e95e310227bbe037076ea81b7c2598ccbc3122d87abc6dab39e1eec309aa14f0e366a98cdc45237ffcfcbad3db597778c0068217dcb1950fef6249104e1b1 +"globals@npm:^15.11.0, globals@npm:^15.9.0": + version: 15.15.0 + resolution: "globals@npm:15.15.0" + checksum: 10/7f561c87b2fd381b27fc2db7df8a4ea7a9bb378667b8a7193e61fd2ca3a876479174e2a303a74345fbea6e1242e16db48915c1fd3bf35adcf4060a795b425e18 languageName: node linkType: hard -"globby@npm:^13.1.1, globby@npm:^13.1.2": +"globby@npm:^13.1.1": version: 13.2.2 resolution: "globby@npm:13.2.2" dependencies: @@ -14605,12 +13880,10 @@ __metadata: languageName: node linkType: hard -"gopd@npm:^1.0.1": - version: 1.0.1 - resolution: "gopd@npm:1.0.1" - dependencies: - get-intrinsic: "npm:^1.1.3" - checksum: 10/5fbc7ad57b368ae4cd2f41214bd947b045c1a4be2f194a7be1778d71f8af9dbf4004221f3b6f23e30820eb0d052b4f819fe6ebe8221e2a3c6f0ee4ef173421ca +"gopd@npm:^1.0.1, gopd@npm:^1.2.0": + version: 1.2.0 + resolution: "gopd@npm:1.2.0" + checksum: 10/94e296d69f92dc1c0768fcfeecfb3855582ab59a7c75e969d5f96ce50c3d201fd86d5a2857c22565764d5bb8a816c7b1e58f133ec318cd56274da36c5e3fb1a1 languageName: node linkType: hard @@ -14633,20 +13906,27 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.2, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.2, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: 10/bf152d0ed1dc159239db1ba1f74fdbc40cb02f626770dcd5815c427ce0688c2635a06ed69af364396da4636d0408fcf7d4afdf7881724c3307e46aff30ca49e2 languageName: node linkType: hard -"grapheme-splitter@npm:^1.0.2, grapheme-splitter@npm:^1.0.4": +"grapheme-splitter@npm:^1.0.2": version: 1.0.4 resolution: "grapheme-splitter@npm:1.0.4" checksum: 10/fdb2f51fd430ce881e18e44c4934ad30e59736e46213f7ad35ea5970a9ebdf7d0fe56150d15cc98230d55d2fd48c73dc6781494c38d8cf2405718366c36adb88 languageName: node linkType: hard +"graphemer@npm:^1.4.0": + version: 1.4.0 + resolution: "graphemer@npm:1.4.0" + checksum: 10/6dd60dba97007b21e3a829fab3f771803cc1292977fe610e240ea72afd67e5690ac9eeaafc4a99710e78962e5936ab5a460787c2a1180f1cb0ccfac37d29f897 + languageName: node + linkType: hard + "gzip-size@npm:^6.0.0": version: 6.0.0 resolution: "gzip-size@npm:6.0.0" @@ -14702,26 +13982,19 @@ __metadata: languageName: node linkType: hard -"has-proto@npm:^1.0.1": - version: 1.0.1 - resolution: "has-proto@npm:1.0.1" - checksum: 10/eab2ab0ed1eae6d058b9bbc4c1d99d2751b29717be80d02fd03ead8b62675488de0c7359bc1fdd4b87ef6fd11e796a9631ad4d7452d9324fdada70158c2e5be7 - languageName: node - linkType: hard - -"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": - version: 1.0.3 - resolution: "has-symbols@npm:1.0.3" - checksum: 10/464f97a8202a7690dadd026e6d73b1ceeddd60fe6acfd06151106f050303eaa75855aaa94969df8015c11ff7c505f196114d22f7386b4a471038da5874cf5e9b +"has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": + version: 1.1.0 + resolution: "has-symbols@npm:1.1.0" + checksum: 10/959385c98696ebbca51e7534e0dc723ada325efa3475350951363cce216d27373e0259b63edb599f72eb94d6cde8577b4b2375f080b303947e560f85692834fa languageName: node linkType: hard -"has-tostringtag@npm:^1.0.0": - version: 1.0.0 - resolution: "has-tostringtag@npm:1.0.0" +"has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.2": + version: 1.0.2 + resolution: "has-tostringtag@npm:1.0.2" dependencies: - has-symbols: "npm:^1.0.2" - checksum: 10/95546e7132efc895a9ae64a8a7cf52588601fc3d52e0304ed228f336992cdf0baaba6f3519d2655e560467db35a1ed79f6420c286cc91a13aa0647a31ed92570 + has-symbols: "npm:^1.0.3" + checksum: 10/c74c5f5ceee3c8a5b8bc37719840dc3749f5b0306d818974141dda2471a1a2ca6c8e46b9d6ac222c5345df7a901c9b6f350b1e6d62763fec877e26609a401bfe languageName: node linkType: hard @@ -14732,7 +14005,7 @@ __metadata: languageName: node linkType: hard -"has@npm:^1.0.0, has@npm:^1.0.3": +"has@npm:^1.0.0": version: 1.0.3 resolution: "has@npm:1.0.3" dependencies: @@ -14762,12 +14035,12 @@ __metadata: languageName: node linkType: hard -"hasown@npm:^2.0.0": - version: 2.0.0 - resolution: "hasown@npm:2.0.0" +"hasown@npm:^2.0.2": + version: 2.0.2 + resolution: "hasown@npm:2.0.2" dependencies: function-bind: "npm:^1.1.2" - checksum: 10/c330f8d93f9d23fe632c719d4db3d698ef7d7c367d51548b836069e06a90fa9151e868c8e67353cfe98d67865bf7354855db28fa36eb1b18fa5d4a3f4e7f1c90 + checksum: 10/7898a9c1788b2862cf0f9c345a6bec77ba4a0c0983c7f19d610c382343d4f98fa260686b225dfb1f88393a66679d2ec58ee310c1d6868c081eda7918f32cc70a languageName: node linkType: hard @@ -15117,10 +14390,10 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.1.1, ignore@npm:^5.2.0, ignore@npm:^5.2.4": - version: 5.2.4 - resolution: "ignore@npm:5.2.4" - checksum: 10/4f7caf5d2005da21a382d4bd1d2aa741a3bed51de185c8562dd7f899a81a620ac4fd0619b06f7029a38ae79e4e4c134399db3bd0192c703c3ef54bb82df3086c +"ignore@npm:^5.2.0, ignore@npm:^5.2.4, ignore@npm:^5.3.1, ignore@npm:^5.3.2": + version: 5.3.2 + resolution: "ignore@npm:5.3.2" + checksum: 10/cceb6a457000f8f6a50e1196429750d782afce5680dd878aa4221bd79972d68b3a55b4b1458fc682be978f4d3c6a249046aa0880637367216444ab7b014cfc98 languageName: node linkType: hard @@ -15131,7 +14404,7 @@ __metadata: languageName: node linkType: hard -"import-fresh@npm:^3.0.0, import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": +"import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" dependencies: @@ -15287,14 +14560,14 @@ __metadata: languageName: node linkType: hard -"internal-slot@npm:^1.0.3, internal-slot@npm:^1.0.4": - version: 1.0.5 - resolution: "internal-slot@npm:1.0.5" +"internal-slot@npm:^1.0.4": + version: 1.1.0 + resolution: "internal-slot@npm:1.1.0" dependencies: - get-intrinsic: "npm:^1.2.0" - has: "npm:^1.0.3" - side-channel: "npm:^1.0.4" - checksum: 10/e2eb5b348e427957dd4092cb57b9374a2cbcabbf61e5e5b4d99cb68eeaae29394e8efd79f23dc2b1831253346f3c16b82010737b84841225e934d80d04d68643 + es-errors: "npm:^1.3.0" + hasown: "npm:^2.0.2" + side-channel: "npm:^1.1.0" + checksum: 10/1d5219273a3dab61b165eddf358815eefc463207db33c20fcfca54717da02e3f492003757721f972fd0bf21e4b426cab389c5427b99ceea4b8b670dc88ee6d4a languageName: node linkType: hard @@ -15356,13 +14629,13 @@ __metadata: linkType: hard "is-array-buffer@npm:^3.0.1": - version: 3.0.1 - resolution: "is-array-buffer@npm:3.0.1" + version: 3.0.5 + resolution: "is-array-buffer@npm:3.0.5" dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.1.3" - is-typed-array: "npm:^1.1.10" - checksum: 10/f26ab87448e698285daf707e52a533920449f7abf63714140ffab9d5571aa5a71ac2fa2677e8b793ad0d5d3e40078d4d2c8a0ab39c957e3cfc6513bb6c9dfdc9 + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + get-intrinsic: "npm:^1.2.6" + checksum: 10/ef1095c55b963cd0dcf6f88a113e44a0aeca91e30d767c475e7d746d28d1195b10c5076b94491a7a0cd85020ca6a4923070021d74651d093dc909e9932cf689b languageName: node linkType: hard @@ -15380,10 +14653,12 @@ __metadata: languageName: node linkType: hard -"is-bigint@npm:^1.0.1": - version: 1.0.2 - resolution: "is-bigint@npm:1.0.2" - checksum: 10/7e01ddae281d628731ac45953def65032a2e9d7e1b9d68741078cf134088f08be28821848e410391e47f765b0428f4154b10f3bdbb35f18a5919c4d18dd3f1d4 +"is-bigint@npm:^1.1.0": + version: 1.1.0 + resolution: "is-bigint@npm:1.1.0" + dependencies: + has-bigints: "npm:^1.0.2" + checksum: 10/10cf327310d712fe227cfaa32d8b11814c214392b6ac18c827f157e1e85363cf9c8e2a22df526689bd5d25e53b58cc110894787afb54e138e7c504174dba15fd languageName: node linkType: hard @@ -15396,12 +14671,13 @@ __metadata: languageName: node linkType: hard -"is-boolean-object@npm:^1.1.0": - version: 1.1.1 - resolution: "is-boolean-object@npm:1.1.1" +"is-boolean-object@npm:^1.2.1": + version: 1.2.2 + resolution: "is-boolean-object@npm:1.2.2" dependencies: - call-bind: "npm:^1.0.2" - checksum: 10/63fbf0841b7b101dc8c8fd17a93c9437304128433135525695e944d2efa9f74412e694b9f87fe659052caec91a5d22b02f3b6c23c070f41c27e26ee9fc46e302 + call-bound: "npm:^1.0.3" + has-tostringtag: "npm:^1.0.2" + checksum: 10/051fa95fdb99d7fbf653165a7e6b2cba5d2eb62f7ffa81e793a790f3fb5366c91c1b7b6af6820aa2937dd86c73aa3ca9d9ca98f500988457b1c59692c52ba911 languageName: node linkType: hard @@ -15421,7 +14697,16 @@ __metadata: languageName: node linkType: hard -"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": +"is-bun-module@npm:^1.0.2": + version: 1.3.0 + resolution: "is-bun-module@npm:1.3.0" + dependencies: + semver: "npm:^7.6.3" + checksum: 10/b23d9ec7b4d4bfd89e4e72b5cd52e1bc153facad59fdd7394c656f8859a78740ef35996a2066240a32f39cc9a9da4b4eb69e68df3c71755a61ebbaf56d3daef0 + languageName: node + linkType: hard + +"is-callable@npm:^1.1.3": version: 1.2.7 resolution: "is-callable@npm:1.2.7" checksum: 10/48a9297fb92c99e9df48706241a189da362bff3003354aea4048bd5f7b2eb0d823cd16d0a383cece3d76166ba16d85d9659165ac6fcce1ac12e6c649d66dbdb9 @@ -15439,21 +14724,22 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.11.0, is-core-module@npm:^2.12.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.8.1, is-core-module@npm:^2.9.0": - version: 2.13.0 - resolution: "is-core-module@npm:2.13.0" +"is-core-module@npm:^2.12.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.16.0, is-core-module@npm:^2.8.1": + version: 2.16.1 + resolution: "is-core-module@npm:2.16.1" dependencies: - has: "npm:^1.0.3" - checksum: 10/55ccb5ccd208a1e088027065ee6438a99367e4c31c366b52fbaeac8fa23111cd17852111836d904da604801b3286d38d3d1ffa6cd7400231af8587f021099dc6 + hasown: "npm:^2.0.2" + checksum: 10/452b2c2fb7f889cbbf7e54609ef92cf6c24637c568acc7e63d166812a0fb365ae8a504c333a29add8bdb1686704068caa7f4e4b639b650dde4f00a038b8941fb languageName: node linkType: hard -"is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5": - version: 1.0.5 - resolution: "is-date-object@npm:1.0.5" +"is-date-object@npm:^1.0.5": + version: 1.1.0 + resolution: "is-date-object@npm:1.1.0" dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10/cc80b3a4b42238fa0d358b9a6230dae40548b349e64a477cb7c5eff9b176ba194c11f8321daaf6dd157e44073e9b7fd01f87db1f14952a88d5657acdcd3a56e2 + call-bound: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.2" + checksum: 10/3a811b2c3176fb31abee1d23d3dc78b6c65fd9c07d591fcb67553cab9e7f272728c3dd077d2d738b53f9a2103255b0a6e8dfc9568a7805c56a78b2563e8d1dec languageName: node linkType: hard @@ -15502,11 +14788,14 @@ __metadata: linkType: hard "is-generator-function@npm:^1.0.7": - version: 1.0.10 - resolution: "is-generator-function@npm:1.0.10" + version: 1.1.0 + resolution: "is-generator-function@npm:1.1.0" dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10/499a3ce6361064c3bd27fbff5c8000212d48506ebe1977842bbd7b3e708832d0deb1f4cc69186ece3640770e8c4f1287b24d99588a0b8058b2dbdd344bc1f47f + call-bound: "npm:^1.0.3" + get-proto: "npm:^1.0.0" + has-tostringtag: "npm:^1.0.2" + safe-regex-test: "npm:^1.1.0" + checksum: 10/5906ff51a856a5fbc6b90a90fce32040b0a6870da905f98818f1350f9acadfc9884f7c3dec833fce04b83dd883937b86a190b6593ede82e8b1af8b6c4ecf7cbd languageName: node linkType: hard @@ -15540,10 +14829,10 @@ __metadata: languageName: node linkType: hard -"is-map@npm:^2.0.1, is-map@npm:^2.0.2": - version: 2.0.2 - resolution: "is-map@npm:2.0.2" - checksum: 10/60ba910f835f2eacb1fdf5b5a6c60fe1c702d012a7673e6546992bcc0c873f62ada6e13d327f9e48f1720d49c152d6cdecae1fa47a261ef3d247c3ce6f0e1d39 +"is-map@npm:^2.0.2, is-map@npm:^2.0.3": + version: 2.0.3 + resolution: "is-map@npm:2.0.3" + checksum: 10/8de7b41715b08bcb0e5edb0fb9384b80d2d5bcd10e142188f33247d19ff078abaf8e9b6f858e2302d8d05376a26a55cd23a3c9f8ab93292b02fcd2cc9e4e92bb languageName: node linkType: hard @@ -15564,17 +14853,13 @@ __metadata: languageName: node linkType: hard -"is-negative-zero@npm:^2.0.2": - version: 2.0.2 - resolution: "is-negative-zero@npm:2.0.2" - checksum: 10/edbec1a9e6454d68bf595a114c3a72343d2d0be7761d8173dae46c0b73d05bb8fe9398c85d121e7794a66467d2f40b4a610b0be84cd804262d234fc634c86131 - languageName: node - linkType: hard - -"is-number-object@npm:^1.0.4": - version: 1.0.5 - resolution: "is-number-object@npm:1.0.5" - checksum: 10/360b0c6cc9d80eed44167bf8e648937d87a07a7383f20c8469166366eef8520987ff302246d971ea2feefec9e81dd6993196fa22678ad53ccc4b52f2e303a04e +"is-number-object@npm:^1.1.1": + version: 1.1.1 + resolution: "is-number-object@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.3" + has-tostringtag: "npm:^1.0.2" + checksum: 10/a5922fb8779ab1ea3b8a9c144522b3d0bea5d9f8f23f7a72470e61e1e4df47714e28e0154ac011998b709cce260c3c9447ad3cd24a96c2f2a0abfdb2cbdc76c8 languageName: node linkType: hard @@ -15585,13 +14870,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: 10/abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 - languageName: node - linkType: hard - "is-plain-obj@npm:^2.1.0": version: 2.1.0 resolution: "is-plain-obj@npm:2.1.0" @@ -15638,29 +14916,31 @@ __metadata: languageName: node linkType: hard -"is-regex@npm:^1.1.4": - version: 1.1.4 - resolution: "is-regex@npm:1.1.4" +"is-regex@npm:^1.1.4, is-regex@npm:^1.2.1": + version: 1.2.1 + resolution: "is-regex@npm:1.2.1" dependencies: - call-bind: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.0" - checksum: 10/36d9174d16d520b489a5e9001d7d8d8624103b387be300c50f860d9414556d0485d74a612fdafc6ebbd5c89213d947dcc6b6bff6b2312093f71ea03cbb19e564 + call-bound: "npm:^1.0.2" + gopd: "npm:^1.2.0" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.2" + checksum: 10/c42b7efc5868a5c9a4d8e6d3e9816e8815c611b09535c00fead18a1138455c5cb5e1887f0023a467ad3f9c419d62ba4dc3d9ba8bafe55053914d6d6454a945d2 languageName: node linkType: hard -"is-set@npm:^2.0.1, is-set@npm:^2.0.2": - version: 2.0.2 - resolution: "is-set@npm:2.0.2" - checksum: 10/d89e82acdc7760993474f529e043f9c4a1d63ed4774d21cc2e331d0e401e5c91c27743cd7c889137028f6a742234759a4bd602368fbdbf0b0321994aefd5603f +"is-set@npm:^2.0.2, is-set@npm:^2.0.3": + version: 2.0.3 + resolution: "is-set@npm:2.0.3" + checksum: 10/5685df33f0a4a6098a98c72d94d67cad81b2bc72f1fb2091f3d9283c4a1c582123cd709145b02a9745f0ce6b41e3e43f1c944496d1d74d4ea43358be61308669 languageName: node linkType: hard "is-shared-array-buffer@npm:^1.0.2": - version: 1.0.2 - resolution: "is-shared-array-buffer@npm:1.0.2" + version: 1.0.4 + resolution: "is-shared-array-buffer@npm:1.0.4" dependencies: - call-bind: "npm:^1.0.2" - checksum: 10/23d82259d6cd6dbb7c4ff3e4efeff0c30dbc6b7f88698498c17f9821cb3278d17d2b6303a5341cbd638ab925a28f3f086a6c79b3df70ac986cc526c725d43b4f + call-bound: "npm:^1.0.3" + checksum: 10/0380d7c60cc692856871526ffcd38a8133818a2ee42d47bb8008248a0cd2121d8c8b5f66b6da3cac24bc5784553cacb6faaf678f66bc88c6615b42af2825230e languageName: node linkType: hard @@ -15678,34 +14958,33 @@ __metadata: languageName: node linkType: hard -"is-string@npm:^1.0.5, is-string@npm:^1.0.7": - version: 1.0.7 - resolution: "is-string@npm:1.0.7" +"is-string@npm:^1.0.7, is-string@npm:^1.1.1": + version: 1.1.1 + resolution: "is-string@npm:1.1.1" dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10/2bc292fe927493fb6dfc3338c099c3efdc41f635727c6ebccf704aeb2a27bca7acb9ce6fd34d103db78692b10b22111a8891de26e12bfa1c5e11e263c99d1fef + call-bound: "npm:^1.0.3" + has-tostringtag: "npm:^1.0.2" + checksum: 10/5277cb9e225a7cc8a368a72623b44a99f2cfa139659c6b203553540681ad4276bfc078420767aad0e73eef5f0bd07d4abf39a35d37ec216917879d11cebc1f8b languageName: node linkType: hard -"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": - version: 1.0.4 - resolution: "is-symbol@npm:1.0.4" +"is-symbol@npm:^1.1.1": + version: 1.1.1 + resolution: "is-symbol@npm:1.1.1" dependencies: - has-symbols: "npm:^1.0.2" - checksum: 10/a47dd899a84322528b71318a89db25c7ecdec73197182dad291df15ffea501e17e3c92c8de0bfb50e63402747399981a687b31c519971b1fa1a27413612be929 + call-bound: "npm:^1.0.2" + has-symbols: "npm:^1.1.0" + safe-regex-test: "npm:^1.1.0" + checksum: 10/db495c0d8cd0a7a66b4f4ef7fccee3ab5bd954cb63396e8ac4d32efe0e9b12fdfceb851d6c501216a71f4f21e5ff20fc2ee845a3d52d455e021c466ac5eb2db2 languageName: node linkType: hard -"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.3": - version: 1.1.10 - resolution: "is-typed-array@npm:1.1.10" +"is-typed-array@npm:^1.1.3": + version: 1.1.15 + resolution: "is-typed-array@npm:1.1.15" dependencies: - available-typed-arrays: "npm:^1.0.5" - call-bind: "npm:^1.0.2" - for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - has-tostringtag: "npm:^1.0.0" - checksum: 10/2392b2473bbc994f5c30d6848e32bab3cab6c80b795aaec3020baf5419ff7df38fc11b3a043eb56d50f842394c578dbb204a7a29398099f895cf111c5b27f327 + which-typed-array: "npm:^1.1.16" + checksum: 10/e8cf60b9ea85667097a6ad68c209c9722cfe8c8edf04d6218366469e51944c5cc25bae45ffb845c23f811d262e4314d3b0168748eb16711aa34d12724cdf0735 languageName: node linkType: hard @@ -15737,29 +15016,20 @@ __metadata: languageName: node linkType: hard -"is-weakmap@npm:^2.0.1": - version: 2.0.1 - resolution: "is-weakmap@npm:2.0.1" - checksum: 10/289fa4e8ba1bdda40ca78481266f6925b7c46a85599e6a41a77010bf91e5a24dfb660db96863bbf655ecdbda0ab517204d6a4e0c151dbec9d022c556321f3776 - languageName: node - linkType: hard - -"is-weakref@npm:^1.0.2": - version: 1.0.2 - resolution: "is-weakref@npm:1.0.2" - dependencies: - call-bind: "npm:^1.0.2" - checksum: 10/0023fd0e4bdf9c338438ffbe1eed7ebbbff7e7e18fb7cdc227caaf9d4bd024a2dcdf6a8c9f40c92192022eac8391243bb9e66cccebecbf6fe1d8a366108f8513 +"is-weakmap@npm:^2.0.2": + version: 2.0.2 + resolution: "is-weakmap@npm:2.0.2" + checksum: 10/a7b7e23206c542dcf2fa0abc483142731788771527e90e7e24f658c0833a0d91948a4f7b30d78f7a65255a48512e41a0288b778ba7fc396137515c12e201fd11 languageName: node linkType: hard -"is-weakset@npm:^2.0.1": - version: 2.0.2 - resolution: "is-weakset@npm:2.0.2" +"is-weakset@npm:^2.0.3": + version: 2.0.4 + resolution: "is-weakset@npm:2.0.4" dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.1.1" - checksum: 10/8f2ddb9639716fd7936784e175ea1183c5c4c05274c34f34f6a53175313cb1c9c35a8b795623306995e2f7cc8f25aa46302f15a2113e51c5052d447be427195c + call-bound: "npm:^1.0.3" + get-intrinsic: "npm:^1.2.6" + checksum: 10/1d5e1d0179beeed3661125a6faa2e59bfb48afda06fc70db807f178aa0ebebc3758fb6358d76b3d528090d5ef85148c345dcfbf90839592fe293e3e5e82f2134 languageName: node linkType: hard @@ -16494,13 +15764,6 @@ __metadata: languageName: node linkType: hard -"js-sdsl@npm:^4.1.4": - version: 4.1.5 - resolution: "js-sdsl@npm:4.1.5" - checksum: 10/ef6f3d8427fb347666a00545f74dcff82df0dcf808d16e527a283cb52221b3097811a8601d334949dbce26b4a526efd95820457b2d5df2ccb4778586eb206ddd - languageName: node - linkType: hard - "js-sha3@npm:^0.5.7": version: 0.5.7 resolution: "js-sha3@npm:0.5.7" @@ -16545,10 +15808,10 @@ __metadata: languageName: node linkType: hard -"jsdoc-type-pratt-parser@npm:~4.0.0": - version: 4.0.0 - resolution: "jsdoc-type-pratt-parser@npm:4.0.0" - checksum: 10/a225ab874e56612730dd6c0466ce9f09e8a0e7d85896e9e5f0fa53cfb2e897128a7ec702fd99ed3854b3fbf5a89ad6dce72ca4f4f6149da69f130c2874f06b75 +"jsdoc-type-pratt-parser@npm:~4.1.0": + version: 4.1.0 + resolution: "jsdoc-type-pratt-parser@npm:4.1.0" + checksum: 10/30d88f95f6cbb4a1aa6d4b0d0ae46eb1096e606235ecaf9bab7a3ed5da860516b5d1cd967182765002f292c627526db918f3e56d34637bcf810e6ef84d403f3f languageName: node linkType: hard @@ -16736,22 +15999,12 @@ __metadata: languageName: node linkType: hard -"jsx-ast-utils@npm:^2.4.1 || ^3.0.0": - version: 3.3.3 - resolution: "jsx-ast-utils@npm:3.3.3" - dependencies: - array-includes: "npm:^3.1.5" - object.assign: "npm:^4.1.3" - checksum: 10/c85f6f239593e09d8445a7e43412234304addf4bfb5d2114dc19f5ce27dfe3a8f8b12a50ff74e94606d0ad48cf1d5aff2381c939446b3fe48a5d433bb52ccb29 - languageName: node - linkType: hard - -"keyv@npm:^4.5.3": - version: 4.5.3 - resolution: "keyv@npm:4.5.3" +"keyv@npm:^4.5.3, keyv@npm:^4.5.4": + version: 4.5.4 + resolution: "keyv@npm:4.5.4" dependencies: json-buffer: "npm:3.0.1" - checksum: 10/2c96e345ecee2c7bf8876b368190b0067308b8da080c1462486fbe71a5b863242c350f1507ddad8f373c5d886b302c42f491de4d3be725071c6743a2f1188ff2 + checksum: 10/167eb6ef64cc84b6fa0780ee50c9de456b422a1e18802209234f7c2cf7eae648c7741f32e50d7e24ccb22b24c13154070b01563d642755b156c357431a191e75 languageName: node linkType: hard @@ -17459,6 +16712,13 @@ __metadata: languageName: node linkType: hard +"math-intrinsics@npm:^1.1.0": + version: 1.1.0 + resolution: "math-intrinsics@npm:1.1.0" + checksum: 10/11df2eda46d092a6035479632e1ec865b8134bdfc4bd9e571a656f4191525404f13a283a515938c3a8de934dbfd9c09674d9da9fa831e6eb7e22b50b197d2edd + languageName: node + linkType: hard + "md5.js@npm:^1.3.4": version: 1.3.5 resolution: "md5.js@npm:1.3.5" @@ -17532,7 +16792,7 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4": +"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.8": version: 4.0.8 resolution: "micromatch@npm:4.0.8" dependencies: @@ -17664,15 +16924,6 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:9.0.3, minimatch@npm:^9.0.0, minimatch@npm:^9.0.1": - version: 9.0.3 - resolution: "minimatch@npm:9.0.3" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10/c81b47d28153e77521877649f4bab48348d10938df9e8147a58111fe00ef89559a2938de9f6632910c4f7bf7bb5cd81191a546167e58d357f0cfb1e18cecc1c5 - languageName: node - linkType: hard - "minimatch@npm:^5.0.1, minimatch@npm:^5.1.0": version: 5.1.6 resolution: "minimatch@npm:5.1.6" @@ -17691,6 +16942,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^9.0.0, minimatch@npm:^9.0.1, minimatch@npm:^9.0.3, minimatch@npm:^9.0.4, minimatch@npm:^9.0.5": + version: 9.0.5 + resolution: "minimatch@npm:9.0.5" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10/dd6a8927b063aca6d910b119e1f2df6d2ce7d36eab91de83167dd136bb85e1ebff97b0d3de1cb08bd1f7e018ca170b4962479fefab5b2a69e2ae12cb2edc8348 + languageName: node + linkType: hard + "minimatch@npm:~3.0.2": version: 3.0.8 resolution: "minimatch@npm:3.0.8" @@ -17994,7 +17254,7 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1": +"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: 10/aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d @@ -18072,13 +17332,6 @@ __metadata: languageName: node linkType: hard -"natural-compare-lite@npm:^1.4.0": - version: 1.4.0 - resolution: "natural-compare-lite@npm:1.4.0" - checksum: 10/5222ac3986a2b78dd6069ac62cbb52a7bf8ffc90d972ab76dfe7b01892485d229530ed20d0c62e79a6b363a663b273db3bde195a1358ce9e5f779d4453887225 - languageName: node - linkType: hard - "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" @@ -18246,10 +17499,10 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.13": - version: 2.0.13 - resolution: "node-releases@npm:2.0.13" - checksum: 10/c9bb813aab2717ff8b3015ecd4c7c5670a5546e9577699a7c84e8d69230cd3b1ce8f863f8e9b50f18b19a5ffa4b9c1a706bbbfe4c378de955fedbab04488a338 +"node-releases@npm:^2.0.19": + version: 2.0.19 + resolution: "node-releases@npm:2.0.19" + checksum: 10/c2b33b4f0c40445aee56141f13ca692fa6805db88510e5bbb3baadb2da13e1293b738e638e15e4a8eb668bb9e97debb08e7a35409b477b5cc18f171d35a83045 languageName: node linkType: hard @@ -18406,10 +17659,10 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.12.0, object-inspect@npm:^1.12.2, object-inspect@npm:^1.13.1": - version: 1.13.2 - resolution: "object-inspect@npm:1.13.2" - checksum: 10/7ef65583b6397570a17c56f0c1841e0920e83900f2c94638927abb7b81ac08a19c7aae135bd9dcca96208cac0c7332b4650fb927f027b0cf92d71df2990d0561 +"object-inspect@npm:^1.12.0, object-inspect@npm:^1.13.3": + version: 1.13.4 + resolution: "object-inspect@npm:1.13.4" + checksum: 10/aa13b1190ad3e366f6c83ad8a16ed37a19ed57d267385aa4bfdccda833d7b90465c057ff6c55d035a6b2e52c1a2295582b294217a0a3a1ae7abdd6877ef781fb languageName: node linkType: hard @@ -18430,58 +17683,17 @@ __metadata: languageName: node linkType: hard -"object.assign@npm:^4.1.3, object.assign@npm:^4.1.4": - version: 4.1.4 - resolution: "object.assign@npm:4.1.4" +"object.assign@npm:^4.1.4": + version: 4.1.7 + resolution: "object.assign@npm:4.1.7" dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - has-symbols: "npm:^1.0.3" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + has-symbols: "npm:^1.1.0" object-keys: "npm:^1.1.1" - checksum: 10/fd82d45289df0a952d772817622ecbaeb4ec933d3abb53267aede083ee38f6a395af8fadfbc569ee575115b0b7c9b286e7cfb2b7a2557b1055f7acbce513bc29 - languageName: node - linkType: hard - -"object.entries@npm:^1.1.6": - version: 1.1.6 - resolution: "object.entries@npm:1.1.6" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - checksum: 10/08a09ff839fd541e8af90a47c67a3dd71721683cdc28e55470e191a8afd8b61188fb9a429fd1d1805808097d8d5950b47c0c2862157dad891226112d8321401b - languageName: node - linkType: hard - -"object.fromentries@npm:^2.0.6": - version: 2.0.6 - resolution: "object.fromentries@npm:2.0.6" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - checksum: 10/e8b813647cbc6505750cdff8b3978bb341492707a5f1df4129e2d8a904b31692e225eff92481ae5916be3bde3c2eff1d0e8a6730921ca7f4eed60bc15a70cb35 - languageName: node - linkType: hard - -"object.hasown@npm:^1.1.2": - version: 1.1.2 - resolution: "object.hasown@npm:1.1.2" - dependencies: - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - checksum: 10/94031022a2ba6006c15c6f1e0c4f51a7fa5b36aee64800192335b979fcc8bd823b18c35cb1a728af68fdfdbbe6d765f77a3c5437306c031f63654b8a34b9e639 - languageName: node - linkType: hard - -"object.values@npm:^1.1.5, object.values@npm:^1.1.6": - version: 1.1.6 - resolution: "object.values@npm:1.1.6" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - checksum: 10/adea807c90951df34eb2f5c6a90ab5624e15c71f0b3a3e422db16933c9f4e19551d10649fffcb4adcac01d86d7c14a64bfb500d8f058db5a52976150a917f6eb + checksum: 10/3fe28cdd779f2a728a9a66bd688679ba231a2b16646cd1e46b528fe7c947494387dda4bc189eff3417f3717ef4f0a8f2439347cf9a9aa3cef722fbfd9f615587 languageName: node linkType: hard @@ -18564,17 +17776,17 @@ __metadata: languageName: node linkType: hard -"optionator@npm:^0.9.1": - version: 0.9.1 - resolution: "optionator@npm:0.9.1" +"optionator@npm:^0.9.3": + version: 0.9.4 + resolution: "optionator@npm:0.9.4" dependencies: deep-is: "npm:^0.1.3" fast-levenshtein: "npm:^2.0.6" levn: "npm:^0.4.1" prelude-ls: "npm:^1.2.1" type-check: "npm:^0.4.0" - word-wrap: "npm:^1.2.3" - checksum: 10/19cfb625ba3cafd99c204744595a8b5111491632d379be341a8286c53a0101adac6f7ca9be4319ccecaaf5d43a55e65dde8b434620726032472833d958d43698 + word-wrap: "npm:^1.2.5" + checksum: 10/a8398559c60aef88d7f353a4f98dcdff6090a4e70f874c827302bf1213d9106a1c4d5fcb68dacb1feb3c30a04c4102f41047aa55d4c576b863d6fc876e001af6 languageName: node linkType: hard @@ -18788,6 +18000,16 @@ __metadata: languageName: node linkType: hard +"parse-imports@npm:^2.1.1": + version: 2.2.1 + resolution: "parse-imports@npm:2.2.1" + dependencies: + es-module-lexer: "npm:^1.5.3" + slashes: "npm:^3.0.12" + checksum: 10/db1d98077587d23bfa1f136abae158ea08e1e588d0260dfc0769092be86b842c798ae47466742b1d9bc106d3430cebbd9730fc34872a2c0e72b9ff720986e82e + languageName: node + linkType: hard + "parse-json@npm:^2.2.0": version: 2.2.0 resolution: "parse-json@npm:2.2.0" @@ -19019,10 +18241,10 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.0.0": - version: 1.0.0 - resolution: "picocolors@npm:1.0.0" - checksum: 10/a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981 +"picocolors@npm:^1.0.0, picocolors@npm:^1.1.1": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: 10/e1cf46bf84886c79055fdfa9dcb3e4711ad259949e3565154b004b260cd356c5d54b31a1437ce9782624bf766272fe6b0154f5f0c744fb7af5d454d2b60db045 languageName: node linkType: hard @@ -19033,6 +18255,13 @@ __metadata: languageName: node linkType: hard +"picomatch@npm:^4.0.2": + version: 4.0.2 + resolution: "picomatch@npm:4.0.2" + checksum: 10/ce617b8da36797d09c0baacb96ca8a44460452c89362d7cb8f70ca46b4158ba8bc3606912de7c818eb4a939f7f9015cef3c766ec8a0c6bfc725fdc078e39c717 + languageName: node + linkType: hard + "pidtree@npm:^0.5.0": version: 0.5.0 resolution: "pidtree@npm:0.5.0" @@ -19136,6 +18365,13 @@ __metadata: languageName: node linkType: hard +"possible-typed-array-names@npm:^1.0.0": + version: 1.1.0 + resolution: "possible-typed-array-names@npm:1.1.0" + checksum: 10/2f44137b8d3dd35f4a7ba7469eec1cd9cfbb46ec164b93a5bc1f4c3d68599c9910ee3b91da1d28b4560e9cc8414c3cd56fedc07259c67e52cc774476270d3302 + languageName: node + linkType: hard + "postcss-modules-extract-imports@npm:^3.0.0": version: 3.0.0 resolution: "postcss-modules-extract-imports@npm:3.0.0" @@ -19237,6 +18473,15 @@ __metadata: languageName: node linkType: hard +"prettier-2@npm:prettier@^2.8.8": + version: 2.8.8 + resolution: "prettier@npm:2.8.8" + bin: + prettier: bin-prettier.js + checksum: 10/00cdb6ab0281f98306cd1847425c24cbaaa48a5ff03633945ab4c701901b8e96ad558eb0777364ffc312f437af9b5a07d0f45346266e8245beaf6247b9c62b24 + languageName: node + linkType: hard + "prettier-linter-helpers@npm:^1.0.0": version: 1.0.0 resolution: "prettier-linter-helpers@npm:1.0.0" @@ -19246,27 +18491,27 @@ __metadata: languageName: node linkType: hard -"prettier-plugin-packagejson@npm:^2.5.2": - version: 2.5.2 - resolution: "prettier-plugin-packagejson@npm:2.5.2" +"prettier-plugin-packagejson@npm:^2.5.8": + version: 2.5.8 + resolution: "prettier-plugin-packagejson@npm:2.5.8" dependencies: - sort-package-json: "npm:2.10.1" - synckit: "npm:0.9.1" + sort-package-json: "npm:2.14.0" + synckit: "npm:0.9.2" peerDependencies: prettier: ">= 1.16.0" peerDependenciesMeta: prettier: optional: true - checksum: 10/f280d69327a468cd104c72a81134258d3573e56d697a88a5c4498c8d02cecda9a27d9eb3f1d29cc726491782eb3f279c9d41ecf8364a197e20b239c5ccfd0269 + checksum: 10/9c5d3c92ac9c873af652636c9007bc368f03c685aba8fef0f1ae41de88235f7acebdee080970f61583639ef89e07391ef01150a30c2d5e5ae615bb507053423a languageName: node linkType: hard -"prettier@npm:^2.8.8": - version: 2.8.8 - resolution: "prettier@npm:2.8.8" +"prettier@npm:^3.3.3": + version: 3.5.1 + resolution: "prettier@npm:3.5.1" bin: - prettier: bin-prettier.js - checksum: 10/00cdb6ab0281f98306cd1847425c24cbaaa48a5ff03633945ab4c701901b8e96ad558eb0777364ffc312f437af9b5a07d0f45346266e8245beaf6247b9c62b24 + prettier: bin/prettier.cjs + checksum: 10/09ab168e651e50c2c79804d65f17a68129ce1c573830b2fb08c988b585add8076b8d995789034d66a14338d6b8835e8c591e0fc1bc90f4344af9645738636d01 languageName: node linkType: hard @@ -20198,20 +19443,16 @@ __metadata: linkType: hard "regexp.prototype.flags@npm:^1.4.3": - version: 1.4.3 - resolution: "regexp.prototype.flags@npm:1.4.3" + version: 1.5.4 + resolution: "regexp.prototype.flags@npm:1.5.4" dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - functions-have-names: "npm:^1.2.2" - checksum: 10/3cde7cd22f0cf9d04db0b77c825b14824c6e7d2ec77e17e8dba707ad1b3c70bb3f2ac5b4cad3c0932045ba61cb2fd1b8ef84a49140e952018bdae065cc001670 - languageName: node - linkType: hard - -"regexpp@npm:^3.0.0, regexpp@npm:^3.2.0": - version: 3.2.0 - resolution: "regexpp@npm:3.2.0" - checksum: 10/3310010895a906873262f4b494fc99bcef1e71ef6720a0532c5999ca586498cbd4a284c8e3c2423f9d1d37512fd08d6064b7564e0e59508cf938f76dd15ace84 + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-errors: "npm:^1.3.0" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" + set-function-name: "npm:^2.0.2" + checksum: 10/8ab897ca445968e0b96f6237641510f3243e59c180ee2ee8d83889c52ff735dd1bf3657fcd36db053e35e1d823dd53f2565d0b8021ea282c9fe62401c6c3bd6d languageName: node linkType: hard @@ -20349,7 +19590,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:1.22.8, resolve@npm:^1.1.4, resolve@npm:^1.10.0, resolve@npm:^1.13.1, resolve@npm:^1.14.2, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.0, resolve@npm:^1.22.1, resolve@npm:^1.22.3, resolve@npm:^1.4.0": +"resolve@npm:1.22.8": version: 1.22.8 resolution: "resolve@npm:1.22.8" dependencies: @@ -20362,20 +19603,20 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^2.0.0-next.4": - version: 2.0.0-next.4 - resolution: "resolve@npm:2.0.0-next.4" +"resolve@npm:^1.1.4, resolve@npm:^1.10.0, resolve@npm:^1.13.1, resolve@npm:^1.14.2, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.3, resolve@npm:^1.22.4, resolve@npm:^1.4.0": + version: 1.22.10 + resolution: "resolve@npm:1.22.10" dependencies: - is-core-module: "npm:^2.9.0" + is-core-module: "npm:^2.16.0" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 10/20d5293f5015aa0b65c488ee365f9dfc30b954b04f9074425a6fb738d78fa63825a82ba8574b7ee200af7ebd5e98c41786831d1d4c1612da3cd063980dfa06a3 + checksum: 10/0a398b44da5c05e6e421d70108822c327675febb880eebe905587628de401854c61d5df02866ff34fc4cb1173a51c9f0e84a94702738df3611a62e2acdc68181 languageName: node linkType: hard -"resolve@patch:resolve@npm%3A1.22.8#optional!builtin, resolve@patch:resolve@npm%3A^1.1.4#optional!builtin, resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.13.1#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.17.0#optional!builtin, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.3#optional!builtin, resolve@patch:resolve@npm%3A^1.4.0#optional!builtin": +"resolve@patch:resolve@npm%3A1.22.8#optional!builtin": version: 1.22.8 resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" dependencies: @@ -20388,16 +19629,16 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^2.0.0-next.4#optional!builtin": - version: 2.0.0-next.4 - resolution: "resolve@patch:resolve@npm%3A2.0.0-next.4#optional!builtin::version=2.0.0-next.4&hash=c3c19d" +"resolve@patch:resolve@npm%3A^1.1.4#optional!builtin, resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.13.1#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.17.0#optional!builtin, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.3#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin, resolve@patch:resolve@npm%3A^1.4.0#optional!builtin": + version: 1.22.10 + resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d" dependencies: - is-core-module: "npm:^2.9.0" + is-core-module: "npm:^2.16.0" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 10/27bff19d8219385bb1e271066317e553cff18daa2a19db9598d94ae444417ef3f5aec19e86927872d6cb241d02649cfb35a4c0d9d10ef2afa6325bce8bc8d903 + checksum: 10/d4d878bfe3702d215ea23e75e0e9caf99468e3db76f5ca100d27ebdc527366fee3877e54bce7d47cc72ca8952fc2782a070d238bfa79a550eeb0082384c3b81a languageName: node linkType: hard @@ -20567,31 +19808,31 @@ __metadata: resolution: "root@workspace:." dependencies: "@lavamoat/allow-scripts": "npm:^3.0.4" - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/create-release-branch": "npm:^3.1.0" - "@metamask/eslint-config": "npm:^12.1.0" - "@metamask/eslint-config-jest": "npm:^12.1.0" - "@metamask/eslint-config-nodejs": "npm:^12.1.0" - "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/auto-changelog": "npm:^4.1.0" + "@metamask/create-release-branch": "npm:^4.0.0" + "@metamask/eslint-config": "npm:^14.0.0" + "@metamask/eslint-config-browser": "npm:^14.0.0" + "@metamask/eslint-config-jest": "npm:^14.0.0" + "@metamask/eslint-config-nodejs": "npm:^14.0.0" + "@metamask/eslint-config-typescript": "npm:^14.0.0" "@metamask/utils": "npm:^11.2.0" "@swc/core": "npm:1.3.78" "@ts-bridge/cli": "npm:^0.6.1" "@types/jest": "npm:^27.5.1" "@types/lodash": "npm:^4" "@types/node": "npm:18.14.2" - "@typescript-eslint/eslint-plugin": "npm:^5.42.1" - "@typescript-eslint/parser": "npm:^6.21.0" "@yarnpkg/types": "npm:^4.0.0" chromedriver: "npm:^133.0.1" depcheck: "npm:^1.4.7" - eslint: "npm:^8.27.0" - eslint-config-prettier: "npm:^8.5.0" - eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.1.5" - eslint-plugin-jsdoc: "npm:^41.1.2" - eslint-plugin-n: "npm:^15.7.0" - eslint-plugin-prettier: "npm:^4.2.1" - eslint-plugin-promise: "npm:^6.1.1" + eslint: "npm:^9.11.0" + eslint-config-prettier: "npm:^9.1.0" + eslint-import-resolver-typescript: "npm:^3.6.3" + eslint-plugin-import-x: "npm:^4.3.0" + eslint-plugin-jest: "npm:^28.8.3" + eslint-plugin-jsdoc: "npm:^50.2.4" + eslint-plugin-n: "npm:^17.10.3" + eslint-plugin-prettier: "npm:^5.2.1" + eslint-plugin-promise: "npm:^7.1.0" execa: "npm:^5.1.1" favicons: "npm:^7.1.2" geckodriver: "npm:^4.2.0" @@ -20600,14 +19841,16 @@ __metadata: lint-staged: "npm:^12.4.1" lodash: "npm:^4.17.21" minimatch: "npm:^7.4.1" - prettier: "npm:^2.8.8" - prettier-plugin-packagejson: "npm:^2.5.2" + prettier: "npm:^3.3.3" + prettier-2: "npm:prettier@^2.8.8" + prettier-plugin-packagejson: "npm:^2.5.8" rimraf: "npm:^4.1.2" semver: "npm:^7.5.4" simple-git-hooks: "npm:^2.7.0" ts-node: "npm:^10.9.1" tsx: "npm:^4.19.1" typescript: "npm:~5.3.3" + typescript-eslint: "npm:^8.6.0" vite: "npm:^4.3.9" languageName: unknown linkType: soft @@ -20663,14 +19906,14 @@ __metadata: languageName: node linkType: hard -"safe-regex-test@npm:^1.0.0": - version: 1.0.0 - resolution: "safe-regex-test@npm:1.0.0" +"safe-regex-test@npm:^1.1.0": + version: 1.1.0 + resolution: "safe-regex-test@npm:1.1.0" dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.1.3" - is-regex: "npm:^1.1.4" - checksum: 10/c7248dfa07891aa634c8b9c55da696e246f8589ca50e7fd14b22b154a106e83209ddf061baf2fa45ebfbd485b094dc7297325acfc50724de6afe7138451b42a9 + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + is-regex: "npm:^1.2.1" + checksum: 10/ebdb61f305bf4756a5b023ad86067df5a11b26898573afe9e52a548a63c3bd594825d9b0e2dde2eb3c94e57e0e04ac9929d4107c394f7b8e56a4613bed46c69a languageName: node linkType: hard @@ -20724,15 +19967,15 @@ __metadata: languageName: node linkType: hard -"schema-utils@npm:^4.0.0": - version: 4.0.1 - resolution: "schema-utils@npm:4.0.1" +"schema-utils@npm:^4.0.0, schema-utils@npm:^4.3.0": + version: 4.3.0 + resolution: "schema-utils@npm:4.3.0" dependencies: "@types/json-schema": "npm:^7.0.9" ajv: "npm:^8.9.0" ajv-formats: "npm:^2.1.1" ajv-keywords: "npm:^5.1.0" - checksum: 10/f439ffa1eb8fc0893526181202b1e1869a1474a10dfc7fb634d160056510763efa29f1cad480abc1d4659b7725ac9b65438d87c3304c6cb42e54aee4cbe3049e + checksum: 10/86c5a7c72a275c56f140bc3cdd832d56efb11428c88ad588127db12cb9b2c83ccaa9540e115d7baa9c6175b5e360094457e29c44e6fb76787c9498c2eb6df5d6 languageName: node linkType: hard @@ -20777,12 +20020,12 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0": - version: 7.6.3 - resolution: "semver@npm:7.6.3" +"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.3.5, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.3": + version: 7.7.1 + resolution: "semver@npm:7.7.1" bin: semver: bin/semver.js - checksum: 10/36b1fbe1a2b6f873559cd57b238f1094a053dbfd997ceeb8757d79d1d2089c56d1321b9f1069ce263dc64cfa922fa1d2ad566b39426fe1ac6c723c1487589e10 + checksum: 10/4cfa1eb91ef3751e20fc52e47a935a0118d56d6f15a837ab814da0c150778ba2ca4f1a4d9068b33070ea4273629e615066664c2cfcd7c272caf7a8a0f6518b2c languageName: node linkType: hard @@ -20825,12 +20068,12 @@ __metadata: languageName: node linkType: hard -"serialize-javascript@npm:^6.0.0, serialize-javascript@npm:^6.0.1": - version: 6.0.1 - resolution: "serialize-javascript@npm:6.0.1" +"serialize-javascript@npm:^6.0.0, serialize-javascript@npm:^6.0.1, serialize-javascript@npm:^6.0.2": + version: 6.0.2 + resolution: "serialize-javascript@npm:6.0.2" dependencies: randombytes: "npm:^2.1.0" - checksum: 10/f756b1ff34b655b2183c64dd6683d28d4d9b9a80284b264cac9fd421c73890491eafd6c5c2bbe93f1f21bf78b572037c5a18d24b044c317ee1c9dc44d22db94c + checksum: 10/445a420a6fa2eaee4b70cbd884d538e259ab278200a2ededd73253ada17d5d48e91fb1f4cd224a236ab62ea7ba0a70c6af29fc93b4f3d3078bf7da1c031fde58 languageName: node linkType: hard @@ -20892,7 +20135,7 @@ __metadata: languageName: node linkType: hard -"set-function-length@npm:^1.2.1": +"set-function-length@npm:^1.2.2": version: 1.2.2 resolution: "set-function-length@npm:1.2.2" dependencies: @@ -20906,6 +20149,18 @@ __metadata: languageName: node linkType: hard +"set-function-name@npm:^2.0.2": + version: 2.0.2 + resolution: "set-function-name@npm:2.0.2" + dependencies: + define-data-property: "npm:^1.1.4" + es-errors: "npm:^1.3.0" + functions-have-names: "npm:^1.2.3" + has-property-descriptors: "npm:^1.0.2" + checksum: 10/c7614154a53ebf8c0428a6c40a3b0b47dac30587c1a19703d1b75f003803f73cdfa6a93474a9ba678fa565ef5fbddc2fae79bca03b7d22ab5fd5163dbe571a74 + languageName: node + linkType: hard + "setimmediate@npm:^1.0.4, setimmediate@npm:~1.0.4": version: 1.0.5 resolution: "setimmediate@npm:1.0.5" @@ -21009,15 +20264,51 @@ __metadata: languageName: node linkType: hard -"side-channel@npm:^1.0.4, side-channel@npm:^1.0.6": - version: 1.0.6 - resolution: "side-channel@npm:1.0.6" +"side-channel-list@npm:^1.0.0": + version: 1.0.0 + resolution: "side-channel-list@npm:1.0.0" dependencies: - call-bind: "npm:^1.0.7" es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.4" - object-inspect: "npm:^1.13.1" - checksum: 10/eb10944f38cebad8ad643dd02657592fa41273ce15b8bfa928d3291aff2d30c20ff777cfe908f76ccc4551ace2d1245822fdc576657cce40e9066c638ca8fa4d + object-inspect: "npm:^1.13.3" + checksum: 10/603b928997abd21c5a5f02ae6b9cc36b72e3176ad6827fab0417ead74580cc4fb4d5c7d0a8a2ff4ead34d0f9e35701ed7a41853dac8a6d1a664fcce1a044f86f + languageName: node + linkType: hard + +"side-channel-map@npm:^1.0.1": + version: 1.0.1 + resolution: "side-channel-map@npm:1.0.1" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.5" + object-inspect: "npm:^1.13.3" + checksum: 10/5771861f77feefe44f6195ed077a9e4f389acc188f895f570d56445e251b861754b547ea9ef73ecee4e01fdada6568bfe9020d2ec2dfc5571e9fa1bbc4a10615 + languageName: node + linkType: hard + +"side-channel-weakmap@npm:^1.0.2": + version: 1.0.2 + resolution: "side-channel-weakmap@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.5" + object-inspect: "npm:^1.13.3" + side-channel-map: "npm:^1.0.1" + checksum: 10/a815c89bc78c5723c714ea1a77c938377ea710af20d4fb886d362b0d1f8ac73a17816a5f6640f354017d7e292a43da9c5e876c22145bac00b76cfb3468001736 + languageName: node + linkType: hard + +"side-channel@npm:^1.0.4, side-channel@npm:^1.0.6, side-channel@npm:^1.1.0": + version: 1.1.0 + resolution: "side-channel@npm:1.1.0" + dependencies: + es-errors: "npm:^1.3.0" + object-inspect: "npm:^1.13.3" + side-channel-list: "npm:^1.0.0" + side-channel-map: "npm:^1.0.1" + side-channel-weakmap: "npm:^1.0.2" + checksum: 10/7d53b9db292c6262f326b6ff3bc1611db84ece36c2c7dc0e937954c13c73185b0406c56589e2bb8d071d6fee468e14c39fb5d203ee39be66b7b8174f179afaba languageName: node linkType: hard @@ -21103,6 +20394,13 @@ __metadata: languageName: node linkType: hard +"slashes@npm:^3.0.12": + version: 3.0.12 + resolution: "slashes@npm:3.0.12" + checksum: 10/c221d73765013db64f3eaf49dacc6b99a5d5477e63720c1bb71d1af647965dda23ab100ca1eb622e080f11ffe68e1e0a233b7b908073260bed4ec819ff1d3e42 + languageName: node + linkType: hard + "slice-ansi@npm:^3.0.0": version: 3.0.0 resolution: "slice-ansi@npm:3.0.0" @@ -21199,21 +20497,21 @@ __metadata: languageName: node linkType: hard -"sort-package-json@npm:2.10.1": - version: 2.10.1 - resolution: "sort-package-json@npm:2.10.1" +"sort-package-json@npm:2.14.0": + version: 2.14.0 + resolution: "sort-package-json@npm:2.14.0" dependencies: detect-indent: "npm:^7.0.1" detect-newline: "npm:^4.0.0" get-stdin: "npm:^9.0.0" git-hooks-list: "npm:^3.0.0" - globby: "npm:^13.1.2" is-plain-obj: "npm:^4.1.0" semver: "npm:^7.6.0" sort-object-keys: "npm:^1.1.3" + tinyglobby: "npm:^0.2.9" bin: sort-package-json: cli.js - checksum: 10/3a08cb9227c244d51bfb0eaaa5a9ea82fd3c96ea299c040365700b3f445d46a98411df4237f4e3c96ba67be4dcd53931747eab3b799f0335d278b36d64f1061d + checksum: 10/f528be0e41840c6fa7f2a8f0d22110f9cc7d43d0cefe69c9f9f7d59e6680097c9839473d24749cfe611613c0cdf67ea9d28b13f97e9b8bcd20eb7be2ed52a214 languageName: node linkType: hard @@ -21289,7 +20587,7 @@ __metadata: languageName: node linkType: hard -"spdx-expression-parse@npm:^3.0.0, spdx-expression-parse@npm:^3.0.1": +"spdx-expression-parse@npm:^3.0.0": version: 3.0.1 resolution: "spdx-expression-parse@npm:3.0.1" dependencies: @@ -21299,6 +20597,16 @@ __metadata: languageName: node linkType: hard +"spdx-expression-parse@npm:^4.0.0": + version: 4.0.0 + resolution: "spdx-expression-parse@npm:4.0.0" + dependencies: + spdx-exceptions: "npm:^2.1.0" + spdx-license-ids: "npm:^3.0.0" + checksum: 10/936be681fbf5edeec3a79c023136479f70d6edb3fd3875089ac86cd324c6c8c81add47399edead296d1d0af17ae5ce88c7f88885eb150b62c2ff6e535841ca6a + languageName: node + linkType: hard + "spdx-license-ids@npm:^3.0.0": version: 3.0.7 resolution: "spdx-license-ids@npm:3.0.7" @@ -21381,6 +20689,13 @@ __metadata: languageName: node linkType: hard +"stable-hash@npm:^0.0.4": + version: 0.0.4 + resolution: "stable-hash@npm:0.0.4" + checksum: 10/21c039d21c1cb739cf8342561753a5e007cb95ea682ccd452e76310bbb9c6987a89de8eda023e320b019f3e4691aabda75079cdbb7dadf7ab9013e931f2f23cd + languageName: node + linkType: hard + "stack-utils@npm:^2.0.3": version: 2.0.6 resolution: "stack-utils@npm:2.0.6" @@ -21541,44 +20856,6 @@ __metadata: languageName: node linkType: hard -"string.prototype.matchall@npm:^4.0.8": - version: 4.0.8 - resolution: "string.prototype.matchall@npm:4.0.8" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - get-intrinsic: "npm:^1.1.3" - has-symbols: "npm:^1.0.3" - internal-slot: "npm:^1.0.3" - regexp.prototype.flags: "npm:^1.4.3" - side-channel: "npm:^1.0.4" - checksum: 10/9de2e9e33344002e08c03c13533d88d0c557d5a3d9214a4f2cc8d63349f7c35af895804dec08e43224cc4c0345651c678e14260c5933967fd97aad4640a7e485 - languageName: node - linkType: hard - -"string.prototype.trimend@npm:^1.0.5": - version: 1.0.6 - resolution: "string.prototype.trimend@npm:1.0.6" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - checksum: 10/3893db9267e0b8a16658c3947738536e90c400a9b7282de96925d4e210174cfe66c59d6b7eb5b4a9aaa78ef7f5e46afb117e842d93112fbd105c8d19206d8092 - languageName: node - linkType: hard - -"string.prototype.trimstart@npm:^1.0.5": - version: 1.0.6 - resolution: "string.prototype.trimstart@npm:1.0.6" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - checksum: 10/05e2cd06fa5311b17f5b2c7af0a60239fa210f4bb07bbcfce4995215dce330e2b1dd2d8030d371f46252ab637522e14b6e9a78384e8515945b72654c14261d54 - languageName: node - linkType: hard - "string_decoder@npm:^1.1.1, string_decoder@npm:^1.3.0": version: 1.3.0 resolution: "string_decoder@npm:1.3.0" @@ -21670,7 +20947,7 @@ __metadata: languageName: node linkType: hard -"strip-json-comments@npm:3.1.1, strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": +"strip-json-comments@npm:3.1.1, strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" checksum: 10/492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 @@ -21798,13 +21075,13 @@ __metadata: languageName: node linkType: hard -"synckit@npm:0.9.1": - version: 0.9.1 - resolution: "synckit@npm:0.9.1" +"synckit@npm:0.9.2, synckit@npm:^0.9.1": + version: 0.9.2 + resolution: "synckit@npm:0.9.2" dependencies: "@pkgr/core": "npm:^0.1.0" tslib: "npm:^2.6.2" - checksum: 10/bff3903976baf8b699b5483228116d70223781a93b17c70e685c277ee960cdfd1a09cb5a741e6a9ec35e2428f14f4664baec41ccc99a598f267608b2a54f529b + checksum: 10/d45c4288be9c0232343650643892a7edafb79152c0c08d7ae5d33ca2c296b67a0e15f8cb5c9153969612c4ea5cd5686297542384aab977db23cfa6653fe02027 languageName: node linkType: hard @@ -21895,15 +21172,15 @@ __metadata: languageName: node linkType: hard -"terser-webpack-plugin@npm:^5.3.7, terser-webpack-plugin@npm:^5.3.9": - version: 5.3.9 - resolution: "terser-webpack-plugin@npm:5.3.9" +"terser-webpack-plugin@npm:^5.3.10, terser-webpack-plugin@npm:^5.3.9": + version: 5.3.11 + resolution: "terser-webpack-plugin@npm:5.3.11" dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.17" + "@jridgewell/trace-mapping": "npm:^0.3.25" jest-worker: "npm:^27.4.5" - schema-utils: "npm:^3.1.1" - serialize-javascript: "npm:^6.0.1" - terser: "npm:^5.16.8" + schema-utils: "npm:^4.3.0" + serialize-javascript: "npm:^6.0.2" + terser: "npm:^5.31.1" peerDependencies: webpack: ^5.1.0 peerDependenciesMeta: @@ -21913,13 +21190,13 @@ __metadata: optional: true uglify-js: optional: true - checksum: 10/339737a407e034b7a9d4a66e31d84d81c10433e41b8eae2ca776f0e47c2048879be482a9aa08e8c27565a2a949bc68f6e07f451bf4d9aa347dd61b3d000f5353 + checksum: 10/a8f7c92c75aa42628adfa4d171d4695c366c1852ecb4a24e72dd6fec86e383e12ac24b627e798fedff4e213c21fe851cebc61be3ab5a2537e6e42bea46690aa3 languageName: node linkType: hard -"terser@npm:^5.10.0, terser@npm:^5.16.8, terser@npm:^5.17.4, terser@npm:^5.17.7": - version: 5.18.0 - resolution: "terser@npm:5.18.0" +"terser@npm:^5.10.0, terser@npm:^5.17.4, terser@npm:^5.17.7, terser@npm:^5.31.1": + version: 5.39.0 + resolution: "terser@npm:5.39.0" dependencies: "@jridgewell/source-map": "npm:^0.3.3" acorn: "npm:^8.8.2" @@ -21927,7 +21204,7 @@ __metadata: source-map-support: "npm:~0.5.20" bin: terser: bin/terser - checksum: 10/26f30bdddbd17f1e379081c8e1081f97ed1f919d591a6f6806aaced19c306c739ef0d8a7e748f5dbe8e0e44a6f2f8234bf2f9a0b78b14ed9d0ab004b3ce87236 + checksum: 10/d84aff642398329f7179bbeaca28cac76a86100e2372d98d39d9b86c48023b6b9f797d983d6e7c0610b3f957c53d01ada1befa25d625614cb2ccd20714f1e98b languageName: node linkType: hard @@ -22007,6 +21284,16 @@ __metadata: languageName: node linkType: hard +"tinyglobby@npm:^0.2.9": + version: 0.2.10 + resolution: "tinyglobby@npm:0.2.10" + dependencies: + fdir: "npm:^6.4.2" + picomatch: "npm:^4.0.2" + checksum: 10/10c976866d849702edc47fc3fef27d63f074c40f75ef17171ecc1452967900699fa1e62373681dd58e673ddff2e3f6094bcd0a2101e3e4b30f4c2b9da41397f2 + languageName: node + linkType: hard + "tinyspy@npm:^2.1.1": version: 2.1.1 resolution: "tinyspy@npm:2.1.1" @@ -22102,12 +21389,12 @@ __metadata: languageName: node linkType: hard -"ts-api-utils@npm:^1.0.1": - version: 1.3.0 - resolution: "ts-api-utils@npm:1.3.0" +"ts-api-utils@npm:^2.0.1": + version: 2.0.1 + resolution: "ts-api-utils@npm:2.0.1" peerDependencies: - typescript: ">=4.2.0" - checksum: 10/3ee44faa24410cd649b5c864e068d438aa437ef64e9e4a66a41646a6d3024d3097a695eeb3fb26ee364705d3cb9653a65756d009e6a53badb6066a5f447bf7ed + typescript: ">=4.8.4" + checksum: 10/2e68938cd5acad6b5157744215ce10cd097f9f667fd36b5fdd5efdd4b0c51063e855459d835f94f6777bb8a0f334916b6eb5c1eedab8c325feb34baa39238898 languageName: node linkType: hard @@ -22255,28 +21542,17 @@ __metadata: languageName: node linkType: hard -"tslib@npm:2.7.0, tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.6.2": +"tslib@npm:2.7.0": version: 2.7.0 resolution: "tslib@npm:2.7.0" checksum: 10/9a5b47ddac65874fa011c20ff76db69f97cf90c78cff5934799ab8894a5342db2d17b4e7613a087046bc1d133d21547ddff87ac558abeec31ffa929c88b7fce6 languageName: node linkType: hard -"tslib@npm:^1.8.1": - version: 1.14.1 - resolution: "tslib@npm:1.14.1" - checksum: 10/7dbf34e6f55c6492637adb81b555af5e3b4f9cc6b998fb440dac82d3b42bdc91560a35a5fb75e20e24a076c651438234da6743d139e4feabf0783f3cdfe1dddb - languageName: node - linkType: hard - -"tsutils@npm:^3.21.0": - version: 3.21.0 - resolution: "tsutils@npm:3.21.0" - dependencies: - tslib: "npm:^1.8.1" - peerDependencies: - typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - checksum: 10/ea036bec1dd024e309939ffd49fda7a351c0e87a1b8eb049570dd119d447250e2c56e0e6c00554e8205760e7417793fdebff752a46e573fbe07d4f375502a5b2 +"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.6.2, tslib@npm:^2.6.3": + version: 2.8.1 + resolution: "tslib@npm:2.8.1" + checksum: 10/3e2e043d5c2316461cb54e5c7fe02c30ef6dccb3384717ca22ae5c6b5bc95232a6241df19c622d9c73b809bea33b187f6dbc73030963e29950c2141bc32a79f7 languageName: node linkType: hard @@ -22349,13 +21625,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.20.2": - version: 0.20.2 - resolution: "type-fest@npm:0.20.2" - checksum: 10/8907e16284b2d6cfa4f4817e93520121941baba36b39219ea36acfe64c86b9dbc10c9941af450bd60832c8f43464974d51c0957f9858bc66b952b66b6914cbb9 - languageName: node - linkType: hard - "type-fest@npm:^0.21.3": version: 0.21.3 resolution: "type-fest@npm:0.21.3" @@ -22403,6 +21672,20 @@ __metadata: languageName: node linkType: hard +"typescript-eslint@npm:^8.6.0": + version: 8.24.0 + resolution: "typescript-eslint@npm:8.24.0" + dependencies: + "@typescript-eslint/eslint-plugin": "npm:8.24.0" + "@typescript-eslint/parser": "npm:8.24.0" + "@typescript-eslint/utils": "npm:8.24.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.8.0" + checksum: 10/43cb62d87e3b94360841192e271dd0abdeba1dae7ce8330268b934acb8c892c0e895a82a681aacdef20b3f514ccd417646d5e62f5d8c9635f8fe444274ee39d3 + languageName: node + linkType: hard + "typescript-logic@npm:^0.0.0": version: 0.0.0 resolution: "typescript-logic@npm:0.0.0" @@ -22455,18 +21738,6 @@ __metadata: languageName: node linkType: hard -"unbox-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "unbox-primitive@npm:1.0.2" - dependencies: - call-bind: "npm:^1.0.2" - has-bigints: "npm:^1.0.2" - has-symbols: "npm:^1.0.3" - which-boxed-primitive: "npm:^1.0.2" - checksum: 10/06e1ee41c1095e37281cb71a975cb3350f7cb470a0665d2576f02cc9564f623bd90cfc0183693b8a7fdf2d242963dcc3010b509fa3ac683f540c765c0f3e7e43 - languageName: node - linkType: hard - "unbzip2-stream@npm:1.4.3": version: 1.4.3 resolution: "unbzip2-stream@npm:1.4.3" @@ -22635,17 +21906,17 @@ __metadata: languageName: node linkType: hard -"update-browserslist-db@npm:^1.0.13": - version: 1.0.13 - resolution: "update-browserslist-db@npm:1.0.13" +"update-browserslist-db@npm:^1.1.1": + version: 1.1.2 + resolution: "update-browserslist-db@npm:1.1.2" dependencies: - escalade: "npm:^3.1.1" - picocolors: "npm:^1.0.0" + escalade: "npm:^3.2.0" + picocolors: "npm:^1.1.1" peerDependencies: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js - checksum: 10/9074b4ef34d2ed931f27d390aafdd391ee7c45ad83c508e8fed6aaae1eb68f81999a768ed8525c6f88d4001a4fbf1b8c0268f099d0e8e72088ec5945ac796acf + checksum: 10/e7bf8221dfb21eba4a770cd803df94625bb04f65a706aa94c567de9600fe4eb6133fda016ec471dad43b9e7959c1bffb6580b5e20a87808d2e8a13e3892699a9 languageName: node linkType: hard @@ -23010,13 +22281,13 @@ __metadata: languageName: node linkType: hard -"watchpack@npm:^2.4.0": - version: 2.4.0 - resolution: "watchpack@npm:2.4.0" +"watchpack@npm:^2.4.1": + version: 2.4.2 + resolution: "watchpack@npm:2.4.2" dependencies: glob-to-regexp: "npm:^0.4.1" graceful-fs: "npm:^4.1.2" - checksum: 10/4280b45bc4b5d45d5579113f2a4af93b67ae1b9607cc3d86ae41cdd53ead10db5d9dc3237f24256d05ef88b28c69a02712f78e434cb7ecc8edaca134a56e8cab + checksum: 10/6bd4c051d9af189a6c781c3158dcb3069f432a0c144159eeb0a44117412105c61b2b683a5c9eebc4324625e0e9b76536387d0ba354594fa6cbbdf1ef60bee4c3 languageName: node linkType: hard @@ -23292,40 +22563,39 @@ __metadata: languageName: node linkType: hard -"webpack@npm:^5.88.0": - version: 5.88.0 - resolution: "webpack@npm:5.88.0" +"webpack@npm:^5.97.1": + version: 5.97.1 + resolution: "webpack@npm:5.97.1" dependencies: - "@types/eslint-scope": "npm:^3.7.3" - "@types/estree": "npm:^1.0.0" - "@webassemblyjs/ast": "npm:^1.11.5" - "@webassemblyjs/wasm-edit": "npm:^1.11.5" - "@webassemblyjs/wasm-parser": "npm:^1.11.5" - acorn: "npm:^8.7.1" - acorn-import-assertions: "npm:^1.9.0" - browserslist: "npm:^4.14.5" + "@types/eslint-scope": "npm:^3.7.7" + "@types/estree": "npm:^1.0.6" + "@webassemblyjs/ast": "npm:^1.14.1" + "@webassemblyjs/wasm-edit": "npm:^1.14.1" + "@webassemblyjs/wasm-parser": "npm:^1.14.1" + acorn: "npm:^8.14.0" + browserslist: "npm:^4.24.0" chrome-trace-event: "npm:^1.0.2" - enhanced-resolve: "npm:^5.15.0" + enhanced-resolve: "npm:^5.17.1" es-module-lexer: "npm:^1.2.1" eslint-scope: "npm:5.1.1" events: "npm:^3.2.0" glob-to-regexp: "npm:^0.4.1" - graceful-fs: "npm:^4.2.9" + graceful-fs: "npm:^4.2.11" json-parse-even-better-errors: "npm:^2.3.1" loader-runner: "npm:^4.2.0" mime-types: "npm:^2.1.27" neo-async: "npm:^2.6.2" schema-utils: "npm:^3.2.0" tapable: "npm:^2.1.1" - terser-webpack-plugin: "npm:^5.3.7" - watchpack: "npm:^2.4.0" + terser-webpack-plugin: "npm:^5.3.10" + watchpack: "npm:^2.4.1" webpack-sources: "npm:^3.2.3" peerDependenciesMeta: webpack-cli: optional: true bin: webpack: bin/webpack.js - checksum: 10/2d54e7e3863a34eb4233c9bafaefd417a06c3aef95cd61d5054d0cd7f774be77105ff57b1e2ee2c422ec1e5fb731295d63331b6a45c41807bba4c080e559cb8b + checksum: 10/665bd3b8c84b20f0b1f250159865e4d3e9b76c682030313d49124d5f8e96357ccdcc799dd9fe0ebf010fdb33dbc59d9863d79676a308e868e360ac98f7c09987 languageName: node linkType: hard @@ -23384,41 +22654,41 @@ __metadata: linkType: hard "which-boxed-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "which-boxed-primitive@npm:1.0.2" + version: 1.1.1 + resolution: "which-boxed-primitive@npm:1.1.1" dependencies: - is-bigint: "npm:^1.0.1" - is-boolean-object: "npm:^1.1.0" - is-number-object: "npm:^1.0.4" - is-string: "npm:^1.0.5" - is-symbol: "npm:^1.0.3" - checksum: 10/9c7ca7855255f25ac47f4ce8b59c4cc33629e713fd7a165c9d77a2bb47bf3d9655a5664660c70337a3221cf96742f3589fae15a3a33639908d33e29aa2941efb + is-bigint: "npm:^1.1.0" + is-boolean-object: "npm:^1.2.1" + is-number-object: "npm:^1.1.1" + is-string: "npm:^1.1.1" + is-symbol: "npm:^1.1.1" + checksum: 10/a877c0667bc089518c83ad4d845cf8296b03efe3565c1de1940c646e00a2a1ae9ed8a185bcfa27cbf352de7906f0616d83b9d2f19ca500ee02a551fb5cf40740 languageName: node linkType: hard "which-collection@npm:^1.0.1": - version: 1.0.1 - resolution: "which-collection@npm:1.0.1" + version: 1.0.2 + resolution: "which-collection@npm:1.0.2" dependencies: - is-map: "npm:^2.0.1" - is-set: "npm:^2.0.1" - is-weakmap: "npm:^2.0.1" - is-weakset: "npm:^2.0.1" - checksum: 10/85c95fcf92df7972ce66bed879e53d9dc752a30ef08e1ca4696df56bcf1c302e3b9965a39b04a20fa280a997fad6c170eb0b4d62435569b7f6c0bc7be910572b + is-map: "npm:^2.0.3" + is-set: "npm:^2.0.3" + is-weakmap: "npm:^2.0.2" + is-weakset: "npm:^2.0.3" + checksum: 10/674bf659b9bcfe4055f08634b48a8588e879161b9fefed57e9ec4ff5601e4d50a05ccd76cf10f698ef5873784e5df3223336d56c7ce88e13bcf52ebe582fc8d7 languageName: node linkType: hard -"which-typed-array@npm:^1.1.2, which-typed-array@npm:^1.1.9": - version: 1.1.9 - resolution: "which-typed-array@npm:1.1.9" +"which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.2, which-typed-array@npm:^1.1.9": + version: 1.1.18 + resolution: "which-typed-array@npm:1.1.18" dependencies: - available-typed-arrays: "npm:^1.0.5" - call-bind: "npm:^1.0.2" + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - has-tostringtag: "npm:^1.0.0" - is-typed-array: "npm:^1.1.10" - checksum: 10/90ef760a09dcffc479138a6bc77fd2933a81a41d531f4886ae212f6edb54a0645a43a6c24de2c096aea910430035ac56b3d22a06f3d64e5163fa178d0f24e08e + gopd: "npm:^1.2.0" + has-tostringtag: "npm:^1.0.2" + checksum: 10/11eed801b2bd08cdbaecb17aff381e0fb03526532f61acc06e6c7b9370e08062c33763a51f27825f13fdf34aabd0df6104007f4e8f96e6eaef7db0ce17a26d6e languageName: node linkType: hard @@ -23482,10 +22752,10 @@ __metadata: languageName: node linkType: hard -"word-wrap@npm:^1.2.3": - version: 1.2.4 - resolution: "word-wrap@npm:1.2.4" - checksum: 10/a749c0cf410724acde4bdb263dcb13de61489dde22889a6a408e8a57e5948477c5b7438a757e25bb92985ed02562ab271aade90d605a24f3ae78410b638fbbd8 +"word-wrap@npm:^1.2.5": + version: 1.2.5 + resolution: "word-wrap@npm:1.2.5" + checksum: 10/1ec6f6089f205f83037be10d0c4b34c9183b0b63fca0834a5b3cee55dd321429d73d40bb44c8fc8471b5203d6e8f8275717f49a8ff4b2b0ab41d7e1b563e0854 languageName: node linkType: hard