diff --git a/package.json b/package.json index 2ea29d7598..9a1f5b1498 100644 --- a/package.json +++ b/package.json @@ -62,10 +62,10 @@ "devDependencies": { "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@metamask/utils": "^6.0.1", "@swc/cli": "^0.1.62", "@swc/core": "^1.3.66", @@ -79,8 +79,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "execa": "^5.1.1", "favicons": "^7.1.2", "geckodriver": "^3.2.0", diff --git a/packages/create-snap/.eslintrc.js b/packages/create-snap/.eslintrc.js index a266dee000..2665f97874 100644 --- a/packages/create-snap/.eslintrc.js +++ b/packages/create-snap/.eslintrc.js @@ -14,24 +14,10 @@ module.exports = { }, }, - { - files: ['src/**/*', 'scripts/**/*'], - rules: { - 'node/no-process-exit': 'off', - }, - }, - { files: ['src/main.ts'], rules: { - 'node/shebang': 'off', - }, - }, - - { - files: ['**/*.test.ts'], - rules: { - 'node/no-callback-literal': 'off', + 'n/shebang': 'off', }, }, ], diff --git a/packages/create-snap/package.json b/packages/create-snap/package.json index 82f789d02c..7be4ac3cd6 100644 --- a/packages/create-snap/package.json +++ b/packages/create-snap/package.json @@ -58,10 +58,10 @@ "devDependencies": { "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@swc/cli": "^0.1.62", "@swc/core": "^1.3.66", "@swc/jest": "^0.2.26", @@ -77,8 +77,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "jest": "^29.0.2", "jest-it-up": "^2.0.0", "memfs": "^3.4.13", diff --git a/packages/create-snap/src/builders.ts b/packages/create-snap/src/builders.ts index 7b57aac6dc..1b794b50a9 100644 --- a/packages/create-snap/src/builders.ts +++ b/packages/create-snap/src/builders.ts @@ -1,4 +1,4 @@ -import { Options, PositionalOptions } from 'yargs'; +import type { Options, PositionalOptions } from 'yargs'; export type SnapsCliBuilders = { readonly verboseErrors: Readonly; diff --git a/packages/create-snap/src/cmds/init/index.ts b/packages/create-snap/src/cmds/init/index.ts index 24a3ce166e..93a5cc14c3 100644 --- a/packages/create-snap/src/cmds/init/index.ts +++ b/packages/create-snap/src/cmds/init/index.ts @@ -1,8 +1,8 @@ import { logInfo } from '@metamask/snaps-utils'; -import yargs from 'yargs'; +import type yargs from 'yargs'; import builders from '../../builders'; -import { YargsArgs } from '../../types/yargs'; +import type { YargsArgs } from '../../types/yargs'; import { initHandler } from './initHandler'; export const initCommand = { diff --git a/packages/create-snap/src/cmds/init/initHandler.test.ts b/packages/create-snap/src/cmds/init/initHandler.test.ts index 5d6964341e..7ab4c69371 100644 --- a/packages/create-snap/src/cmds/init/initHandler.test.ts +++ b/packages/create-snap/src/cmds/init/initHandler.test.ts @@ -5,7 +5,7 @@ import { promises as fs } from 'fs'; import pathUtils from 'path'; import { resetFileSystem } from '../../test-utils'; -import { YargsArgs } from '../../types/yargs'; +import type { YargsArgs } from '../../types/yargs'; import { initHandler } from './initHandler'; import * as initUtils from './initUtils'; diff --git a/packages/create-snap/src/cmds/init/initHandler.ts b/packages/create-snap/src/cmds/init/initHandler.ts index 4bbdecf577..264ff32dbf 100644 --- a/packages/create-snap/src/cmds/init/initHandler.ts +++ b/packages/create-snap/src/cmds/init/initHandler.ts @@ -1,19 +1,16 @@ +import type { NpmSnapPackageJson } from '@metamask/snaps-utils'; import { NpmSnapFileNames, readJsonFile, - NpmSnapPackageJson, createSnapManifest, logInfo, } from '@metamask/snaps-utils'; -import { - satisfiesVersionRange, - SemVerRange, - SemVerVersion, -} from '@metamask/utils'; +import type { SemVerRange, SemVerVersion } from '@metamask/utils'; +import { satisfiesVersionRange } from '@metamask/utils'; import { promises as fs } from 'fs'; import pathUtils from 'path'; -import { YargsArgs } from '../../types/yargs'; +import type { YargsArgs } from '../../types/yargs'; import { buildSnap, cloneTemplate, diff --git a/packages/create-snap/src/main.ts b/packages/create-snap/src/main.ts index e6bf7844b5..c4a59483b4 100755 --- a/packages/create-snap/src/main.ts +++ b/packages/create-snap/src/main.ts @@ -1,5 +1,4 @@ #!/usr/bin/env node - import { cli } from './cli'; cli(process.argv); diff --git a/packages/create-snap/src/types/yargs.d.ts b/packages/create-snap/src/types/yargs.d.ts index 54d3646d77..a107ce6f2c 100644 --- a/packages/create-snap/src/types/yargs.d.ts +++ b/packages/create-snap/src/types/yargs.d.ts @@ -1,7 +1,7 @@ -import { Options } from 'yargs'; +import type { Options } from 'yargs'; // eslint-disable-next-line @typescript-eslint/ban-types -type OptionalArguments = T & { +type OptionalArguments = Type & { /** Non-option arguments */ _?: (string | number)[]; diff --git a/packages/examples/package.json b/packages/examples/package.json index 791854ab0a..73453032f5 100644 --- a/packages/examples/package.json +++ b/packages/examples/package.json @@ -30,10 +30,10 @@ "devDependencies": { "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@typescript-eslint/eslint-plugin": "^5.42.1", "@typescript-eslint/parser": "^5.42.1", "eslint": "^8.27.0", @@ -41,8 +41,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "prettier": "^2.7.1", "prettier-plugin-packagejson": "^2.2.11", "ts-node": "^10.9.1", diff --git a/packages/examples/packages/bip32/package.json b/packages/examples/packages/bip32/package.json index 2d42293506..593c37b98e 100644 --- a/packages/examples/packages/bip32/package.json +++ b/packages/examples/packages/bip32/package.json @@ -43,10 +43,10 @@ "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "^1.3.66", @@ -59,8 +59,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "jest": "^29.0.2", "prettier": "^2.7.1", "prettier-plugin-packagejson": "^2.2.11", diff --git a/packages/examples/packages/bip32/src/index.ts b/packages/examples/packages/bip32/src/index.ts index 645502d517..44c6afc146 100644 --- a/packages/examples/packages/bip32/src/index.ts +++ b/packages/examples/packages/bip32/src/index.ts @@ -1,5 +1,6 @@ import { providerErrors, rpcErrors } from '@metamask/rpc-errors'; -import { DialogType, OnRpcRequestHandler } from '@metamask/snaps-types'; +import type { OnRpcRequestHandler } from '@metamask/snaps-types'; +import { DialogType } from '@metamask/snaps-types'; import { panel, text, heading, copyable } from '@metamask/snaps-ui'; import { add0x, @@ -11,7 +12,7 @@ import { import { sign as signEd25519 } from '@noble/ed25519'; import { sign as signSecp256k1 } from '@noble/secp256k1'; -import { GetBip32PublicKeyParams, SignMessageParams } from './types'; +import type { GetBip32PublicKeyParams, SignMessageParams } from './types'; import { getPrivateNode, getPublicKey } from './utils'; /** diff --git a/packages/examples/packages/bip32/src/utils.ts b/packages/examples/packages/bip32/src/utils.ts index f78e7f1afb..fc727926a4 100644 --- a/packages/examples/packages/bip32/src/utils.ts +++ b/packages/examples/packages/bip32/src/utils.ts @@ -1,6 +1,6 @@ import { SLIP10Node } from '@metamask/key-tree'; -import { GetBip32PublicKeyParams, SignMessageParams } from './types'; +import type { GetBip32PublicKeyParams, SignMessageParams } from './types'; /** * Get an extended private key BIP-32 node, using the `snap_getBip32Entropy` diff --git a/packages/examples/packages/bip44/package.json b/packages/examples/packages/bip44/package.json index b455e7e9f6..a665b22ee1 100644 --- a/packages/examples/packages/bip44/package.json +++ b/packages/examples/packages/bip44/package.json @@ -42,10 +42,10 @@ "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "^1.3.66", @@ -58,8 +58,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "jest": "^29.0.2", "prettier": "^2.7.1", "prettier-plugin-packagejson": "^2.2.11", diff --git a/packages/examples/packages/bip44/src/index.ts b/packages/examples/packages/bip44/src/index.ts index 101d82cf35..92337c10d4 100644 --- a/packages/examples/packages/bip44/src/index.ts +++ b/packages/examples/packages/bip44/src/index.ts @@ -1,10 +1,11 @@ import { rpcErrors, providerErrors } from '@metamask/rpc-errors'; -import { DialogType, OnRpcRequestHandler } from '@metamask/snaps-types'; +import type { OnRpcRequestHandler } from '@metamask/snaps-types'; +import { DialogType } from '@metamask/snaps-types'; import { panel, text, heading, copyable } from '@metamask/snaps-ui'; import { bytesToHex, stringToBytes } from '@metamask/utils'; import { getPublicKey, sign } from '@noble/bls12-381'; -import { GetAccountParams, SignMessageParams } from './types'; +import type { GetAccountParams, SignMessageParams } from './types'; import { getPrivateKey } from './utils'; /** diff --git a/packages/examples/packages/bip44/src/utils.ts b/packages/examples/packages/bip44/src/utils.ts index e44489b961..622073abf4 100644 --- a/packages/examples/packages/bip44/src/utils.ts +++ b/packages/examples/packages/bip44/src/utils.ts @@ -1,7 +1,7 @@ import { deriveBIP44AddressKey } from '@metamask/key-tree'; import { assert, remove0x } from '@metamask/utils'; -import { GetAccountParams } from './types'; +import type { GetAccountParams } from './types'; /** * Get a BIP-44 private key, using the `snap_getBip44Entropy` method. diff --git a/packages/examples/packages/browserify-plugin/package.json b/packages/examples/packages/browserify-plugin/package.json index d768b75db4..5632043ca7 100644 --- a/packages/examples/packages/browserify-plugin/package.json +++ b/packages/examples/packages/browserify-plugin/package.json @@ -37,10 +37,10 @@ "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@metamask/snaps-browserify-plugin": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "^1.3.66", @@ -55,8 +55,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "jest": "^29.0.2", "prettier": "^2.7.1", "prettier-plugin-packagejson": "^2.2.11", diff --git a/packages/examples/packages/browserify-plugin/src/index.ts b/packages/examples/packages/browserify-plugin/src/index.ts index abe295b971..a3861f4b97 100644 --- a/packages/examples/packages/browserify-plugin/src/index.ts +++ b/packages/examples/packages/browserify-plugin/src/index.ts @@ -1,5 +1,5 @@ import { rpcErrors } from '@metamask/rpc-errors'; -import { OnRpcRequestHandler } from '@metamask/snaps-types'; +import type { OnRpcRequestHandler } from '@metamask/snaps-types'; /** * Handle incoming JSON-RPC requests from the dapp, sent through the diff --git a/packages/examples/packages/cronjobs/package.json b/packages/examples/packages/cronjobs/package.json index 393f63a1af..db905710e2 100644 --- a/packages/examples/packages/cronjobs/package.json +++ b/packages/examples/packages/cronjobs/package.json @@ -39,10 +39,10 @@ "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "^1.3.66", @@ -55,8 +55,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "jest": "^29.0.2", "prettier": "^2.7.1", "prettier-plugin-packagejson": "^2.2.11", diff --git a/packages/examples/packages/cronjobs/src/index.ts b/packages/examples/packages/cronjobs/src/index.ts index a4211fc346..15359c0f05 100644 --- a/packages/examples/packages/cronjobs/src/index.ts +++ b/packages/examples/packages/cronjobs/src/index.ts @@ -1,5 +1,5 @@ import { rpcErrors } from '@metamask/rpc-errors'; -import { OnCronjobHandler } from '@metamask/snaps-types'; +import type { OnCronjobHandler } from '@metamask/snaps-types'; import { panel, text, heading } from '@metamask/snaps-ui'; /** diff --git a/packages/examples/packages/dialogs/package.json b/packages/examples/packages/dialogs/package.json index 77b84ccf0f..c4e01a12bd 100644 --- a/packages/examples/packages/dialogs/package.json +++ b/packages/examples/packages/dialogs/package.json @@ -40,10 +40,10 @@ "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@metamask/utils": "^6.0.1", @@ -57,8 +57,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "jest": "^29.0.2", "prettier": "^2.7.1", "prettier-plugin-packagejson": "^2.2.11", diff --git a/packages/examples/packages/dialogs/src/index.ts b/packages/examples/packages/dialogs/src/index.ts index 1cd5339772..d1fcab22f7 100644 --- a/packages/examples/packages/dialogs/src/index.ts +++ b/packages/examples/packages/dialogs/src/index.ts @@ -1,5 +1,6 @@ import { rpcErrors } from '@metamask/rpc-errors'; -import { OnRpcRequestHandler, DialogType } from '@metamask/snaps-types'; +import type { OnRpcRequestHandler } from '@metamask/snaps-types'; +import { DialogType } from '@metamask/snaps-types'; import { panel, text, heading } from '@metamask/snaps-ui'; /** diff --git a/packages/examples/packages/errors/package.json b/packages/examples/packages/errors/package.json index acf1150897..78c77610ca 100644 --- a/packages/examples/packages/errors/package.json +++ b/packages/examples/packages/errors/package.json @@ -37,10 +37,10 @@ "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "^1.3.66", @@ -53,8 +53,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "jest": "^29.0.2", "prettier": "^2.7.1", "prettier-plugin-packagejson": "^2.2.11", diff --git a/packages/examples/packages/errors/src/index.ts b/packages/examples/packages/errors/src/index.ts index 4efa05a137..8287eee7e5 100644 --- a/packages/examples/packages/errors/src/index.ts +++ b/packages/examples/packages/errors/src/index.ts @@ -1,4 +1,4 @@ -import { OnRpcRequestHandler } from '@metamask/snaps-types'; +import type { OnRpcRequestHandler } from '@metamask/snaps-types'; export const onRpcRequest: OnRpcRequestHandler = async () => { // eslint-disable-next-line no-new, @typescript-eslint/no-floating-promises diff --git a/packages/examples/packages/ethereum-provider/package.json b/packages/examples/packages/ethereum-provider/package.json index 493a7d98ba..b4f7d31c0d 100644 --- a/packages/examples/packages/ethereum-provider/package.json +++ b/packages/examples/packages/ethereum-provider/package.json @@ -40,10 +40,10 @@ "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "^1.3.66", @@ -56,8 +56,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "jest": "^29.0.2", "prettier": "^2.7.1", "prettier-plugin-packagejson": "^2.2.11", diff --git a/packages/examples/packages/ethereum-provider/src/index.ts b/packages/examples/packages/ethereum-provider/src/index.ts index e514699749..61ad17b130 100644 --- a/packages/examples/packages/ethereum-provider/src/index.ts +++ b/packages/examples/packages/ethereum-provider/src/index.ts @@ -1,6 +1,7 @@ import { rpcErrors } from '@metamask/rpc-errors'; -import { OnRpcRequestHandler } from '@metamask/snaps-types'; -import { assert, Hex } from '@metamask/utils'; +import type { OnRpcRequestHandler } from '@metamask/snaps-types'; +import type { Hex } from '@metamask/utils'; +import { assert } from '@metamask/utils'; /** * Get the current gas price using the `ethereum` global. This is essentially diff --git a/packages/examples/packages/ethers-js/package.json b/packages/examples/packages/ethers-js/package.json index 7fdd3647b5..7f8a536eb8 100644 --- a/packages/examples/packages/ethers-js/package.json +++ b/packages/examples/packages/ethers-js/package.json @@ -41,10 +41,10 @@ "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@metamask/utils": "^6.0.1", @@ -58,8 +58,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "jest": "^29.0.2", "prettier": "^2.7.1", "prettier-plugin-packagejson": "^2.2.11", diff --git a/packages/examples/packages/ethers-js/src/index.ts b/packages/examples/packages/ethers-js/src/index.ts index 0ecbcc8d93..b52c5e0d4f 100644 --- a/packages/examples/packages/ethers-js/src/index.ts +++ b/packages/examples/packages/ethers-js/src/index.ts @@ -1,9 +1,9 @@ import { providerErrors, rpcErrors } from '@metamask/rpc-errors'; -import { OnRpcRequestHandler } from '@metamask/snaps-types'; +import type { OnRpcRequestHandler } from '@metamask/snaps-types'; import { panel, heading, copyable, text } from '@metamask/snaps-ui'; import { Wallet } from 'ethers'; -import { SignMessageParams } from './types'; +import type { SignMessageParams } from './types'; import { getPrivateKey } from './utils'; /** diff --git a/packages/examples/packages/get-entropy/package.json b/packages/examples/packages/get-entropy/package.json index f52fa6ddfe..92f712e48e 100644 --- a/packages/examples/packages/get-entropy/package.json +++ b/packages/examples/packages/get-entropy/package.json @@ -41,10 +41,10 @@ "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "^1.3.66", @@ -57,8 +57,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "jest": "^29.0.2", "prettier": "^2.7.1", "prettier-plugin-packagejson": "^2.2.11", diff --git a/packages/examples/packages/get-entropy/src/index.ts b/packages/examples/packages/get-entropy/src/index.ts index 526a07c9b9..7674207b05 100644 --- a/packages/examples/packages/get-entropy/src/index.ts +++ b/packages/examples/packages/get-entropy/src/index.ts @@ -1,10 +1,11 @@ import { rpcErrors, providerErrors } from '@metamask/rpc-errors'; -import { DialogType, OnRpcRequestHandler } from '@metamask/snaps-types'; +import type { OnRpcRequestHandler } from '@metamask/snaps-types'; +import { DialogType } from '@metamask/snaps-types'; import { panel, text, heading, copyable } from '@metamask/snaps-ui'; import { bytesToHex, stringToBytes } from '@metamask/utils'; import { sign } from '@noble/bls12-381'; -import { SignMessageParams } from './types'; +import type { SignMessageParams } from './types'; import { getEntropy } from './utils'; /** diff --git a/packages/examples/packages/invoke-snap/package.json b/packages/examples/packages/invoke-snap/package.json index 4453ada03b..053ede2905 100644 --- a/packages/examples/packages/invoke-snap/package.json +++ b/packages/examples/packages/invoke-snap/package.json @@ -28,10 +28,10 @@ "devDependencies": { "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@typescript-eslint/eslint-plugin": "^5.42.1", "@typescript-eslint/parser": "^5.42.1", "eslint": "^8.27.0", @@ -39,8 +39,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "prettier": "^2.7.1", "prettier-plugin-packagejson": "^2.2.11", "ts-node": "^10.9.1", 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 f351403b74..28a05d840c 100644 --- a/packages/examples/packages/invoke-snap/packages/consumer-signer/package.json +++ b/packages/examples/packages/invoke-snap/packages/consumer-signer/package.json @@ -41,10 +41,10 @@ "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "^1.3.66", @@ -57,8 +57,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "jest": "^29.0.2", "prettier": "^2.7.1", "prettier-plugin-packagejson": "^2.2.11", 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 e850018f73..7f0adb2da7 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 @@ -1,9 +1,9 @@ import { rpcErrors } from '@metamask/rpc-errors'; -import { OnRpcRequestHandler } from '@metamask/snaps-types'; +import type { OnRpcRequestHandler } from '@metamask/snaps-types'; import { assert, stringToBytes } from '@metamask/utils'; import { keccak_256 as keccak256 } from '@noble/hashes/sha3'; -import { BIP44Path, SignMessageParams } from './types'; +import type { BIP44Path, SignMessageParams } from './types'; const CORE_SIGNER_SNAP_ID = 'npm:@metamask/core-signer-example-snap'; const DEFAULT_DERIVATION_PATH: BIP44Path = [ diff --git a/packages/examples/packages/invoke-snap/packages/consumer-signer/src/types.ts b/packages/examples/packages/invoke-snap/packages/consumer-signer/src/types.ts index 986a32c9be..c409d50e0c 100644 --- a/packages/examples/packages/invoke-snap/packages/consumer-signer/src/types.ts +++ b/packages/examples/packages/invoke-snap/packages/consumer-signer/src/types.ts @@ -1,4 +1,4 @@ -import { PartialHDPathTuple5 } from '@metamask/key-tree'; +import type { PartialHDPathTuple5 } from '@metamask/key-tree'; /** * A BIP-44 path is of the form: 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 fc27848e45..0500b10aa4 100644 --- a/packages/examples/packages/invoke-snap/packages/core-signer/package.json +++ b/packages/examples/packages/invoke-snap/packages/core-signer/package.json @@ -43,10 +43,10 @@ "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@noble/hashes": "^1.3.1", @@ -60,8 +60,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "jest": "^29.0.2", "prettier": "^2.7.1", "prettier-plugin-packagejson": "^2.2.11", diff --git a/packages/examples/packages/invoke-snap/packages/core-signer/src/index.test.ts b/packages/examples/packages/invoke-snap/packages/core-signer/src/index.test.ts index 4d98b20b5c..ddc6c7da63 100644 --- a/packages/examples/packages/invoke-snap/packages/core-signer/src/index.test.ts +++ b/packages/examples/packages/invoke-snap/packages/core-signer/src/index.test.ts @@ -1,6 +1,7 @@ import { expect } from '@jest/globals'; import { installSnap } from '@metamask/snaps-jest'; -import { assert, bytesToHex, hasProperty, Json } from '@metamask/utils'; +import type { Json } from '@metamask/utils'; +import { assert, bytesToHex, hasProperty } from '@metamask/utils'; import { sha256 } from '@noble/hashes/sha256'; describe('onRpcRequest', () => { 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 0ae6185761..599244c15f 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 @@ -1,10 +1,11 @@ import { rpcErrors, providerErrors } from '@metamask/rpc-errors'; -import { DialogType, OnRpcRequestHandler } from '@metamask/snaps-types'; +import type { OnRpcRequestHandler } from '@metamask/snaps-types'; +import { DialogType } from '@metamask/snaps-types'; import { panel, text, heading, copyable } from '@metamask/snaps-ui'; import { add0x, assert, hexToBytes } from '@metamask/utils'; import { secp256k1 } from '@noble/curves/secp256k1'; -import { GetAccountParams, SignMessageParams } from './types'; +import type { GetAccountParams, SignMessageParams } from './types'; import { getEntropy } from './utils'; /** diff --git a/packages/examples/packages/invoke-snap/packages/core-signer/src/types.ts b/packages/examples/packages/invoke-snap/packages/core-signer/src/types.ts index 88ca48951e..4730f4af75 100644 --- a/packages/examples/packages/invoke-snap/packages/core-signer/src/types.ts +++ b/packages/examples/packages/invoke-snap/packages/core-signer/src/types.ts @@ -1,5 +1,5 @@ -import { PartialHDPathTuple5 } from '@metamask/key-tree'; -import { Hex } from '@metamask/utils'; +import type { PartialHDPathTuple5 } from '@metamask/key-tree'; +import type { Hex } from '@metamask/utils'; /** * A BIP-44 path is of the form: 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 a75645a259..8e4c7a2f02 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 @@ -1,4 +1,5 @@ -import { secp256k1, SLIP10Node } from '@metamask/key-tree'; +import type { SLIP10Node } from '@metamask/key-tree'; +import { secp256k1 } from '@metamask/key-tree'; import { createBip39KeyFromSeed } from '@metamask/key-tree/dist/derivers/bip39'; import { assertIsHexString, bytesToHex, hexToBytes } from '@metamask/utils'; import { Mutex } from 'async-mutex'; diff --git a/packages/examples/packages/json-rpc/package.json b/packages/examples/packages/json-rpc/package.json index bd6be1d5e5..f6219dfa2d 100644 --- a/packages/examples/packages/json-rpc/package.json +++ b/packages/examples/packages/json-rpc/package.json @@ -38,10 +38,10 @@ "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "^1.3.66", @@ -54,8 +54,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "jest": "^29.0.2", "prettier": "^2.7.1", "prettier-plugin-packagejson": "^2.2.11", diff --git a/packages/examples/packages/json-rpc/src/index.ts b/packages/examples/packages/json-rpc/src/index.ts index 752fb1fb63..b8b0c97dc6 100644 --- a/packages/examples/packages/json-rpc/src/index.ts +++ b/packages/examples/packages/json-rpc/src/index.ts @@ -1,5 +1,5 @@ import { rpcErrors } from '@metamask/rpc-errors'; -import { OnRpcRequestHandler } from '@metamask/snaps-types'; +import type { OnRpcRequestHandler } from '@metamask/snaps-types'; /** * Handle incoming JSON-RPC requests from the dapp, sent through the diff --git a/packages/examples/packages/manage-state/package.json b/packages/examples/packages/manage-state/package.json index 51859511cc..009fb0cb8a 100644 --- a/packages/examples/packages/manage-state/package.json +++ b/packages/examples/packages/manage-state/package.json @@ -38,10 +38,10 @@ "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "^1.3.66", @@ -54,8 +54,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "jest": "^29.0.2", "prettier": "^2.7.1", "prettier-plugin-packagejson": "^2.2.11", diff --git a/packages/examples/packages/manage-state/src/index.ts b/packages/examples/packages/manage-state/src/index.ts index 09ec918e6f..636d5bdcd8 100644 --- a/packages/examples/packages/manage-state/src/index.ts +++ b/packages/examples/packages/manage-state/src/index.ts @@ -1,7 +1,7 @@ import { rpcErrors } from '@metamask/rpc-errors'; -import { OnRpcRequestHandler } from '@metamask/snaps-types'; +import type { OnRpcRequestHandler } from '@metamask/snaps-types'; -import { SetStateParams } from './types'; +import type { SetStateParams } from './types'; import { clearState, getState, setState } from './utils'; /** diff --git a/packages/examples/packages/manage-state/src/types.ts b/packages/examples/packages/manage-state/src/types.ts index 11591c2bf6..fc881c9485 100644 --- a/packages/examples/packages/manage-state/src/types.ts +++ b/packages/examples/packages/manage-state/src/types.ts @@ -1,4 +1,4 @@ -import { State } from './utils'; +import type { State } from './utils'; /** * The parameters for the `setState` JSON-RPC method. diff --git a/packages/examples/packages/network-access/package.json b/packages/examples/packages/network-access/package.json index 44794c397e..0b5cad5ec0 100644 --- a/packages/examples/packages/network-access/package.json +++ b/packages/examples/packages/network-access/package.json @@ -38,10 +38,10 @@ "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "^1.3.66", @@ -54,8 +54,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "jest": "^29.0.2", "prettier": "^2.7.1", "prettier-plugin-packagejson": "^2.2.11", diff --git a/packages/examples/packages/network-access/snap.manifest.json b/packages/examples/packages/network-access/snap.manifest.json index b0aaa6e416..d0d0762d24 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": "3W4RETohkio3T+XYDtP0ySdULZqgkfBVqtjRTLqy+wA=", + "shasum": "2P467YQQVpzMxcKdOtw/QzwBVS8Q+wVkm3T3VDuomgI=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/network-access/src/index.ts b/packages/examples/packages/network-access/src/index.ts index 84765c1b70..4dc17a689c 100644 --- a/packages/examples/packages/network-access/src/index.ts +++ b/packages/examples/packages/network-access/src/index.ts @@ -1,8 +1,8 @@ import { rpcErrors } from '@metamask/rpc-errors'; -import { OnRpcRequestHandler } from '@metamask/snaps-types'; +import type { OnRpcRequestHandler } from '@metamask/snaps-types'; import { DEFAULT_URL } from './constants'; -import { FetchParams } from './types'; +import type { FetchParams } from './types'; /** * Fetch a JSON file from the provided URL. This uses the standard `fetch` diff --git a/packages/examples/packages/notifications/package.json b/packages/examples/packages/notifications/package.json index a7f0f9ef17..38ca00ecca 100644 --- a/packages/examples/packages/notifications/package.json +++ b/packages/examples/packages/notifications/package.json @@ -38,10 +38,10 @@ "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "^1.3.66", @@ -54,8 +54,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "jest": "^29.0.2", "prettier": "^2.7.1", "prettier-plugin-packagejson": "^2.2.11", diff --git a/packages/examples/packages/notifications/src/index.ts b/packages/examples/packages/notifications/src/index.ts index e50236868a..45c7e6dea7 100644 --- a/packages/examples/packages/notifications/src/index.ts +++ b/packages/examples/packages/notifications/src/index.ts @@ -1,5 +1,6 @@ import { rpcErrors } from '@metamask/rpc-errors'; -import { NotificationType, OnRpcRequestHandler } from '@metamask/snaps-types'; +import type { OnRpcRequestHandler } from '@metamask/snaps-types'; +import { NotificationType } from '@metamask/snaps-types'; /** * Handle incoming JSON-RPC requests from the dapp, sent through the diff --git a/packages/examples/packages/rollup-plugin/package.json b/packages/examples/packages/rollup-plugin/package.json index 8cad622f3d..5ccecb50a2 100644 --- a/packages/examples/packages/rollup-plugin/package.json +++ b/packages/examples/packages/rollup-plugin/package.json @@ -41,10 +41,10 @@ "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@metamask/snaps-jest": "workspace:^", "@metamask/snaps-rollup-plugin": "workspace:^", "@rollup/plugin-babel": "^6.0.3", @@ -61,8 +61,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "jest": "^29.0.2", "prettier": "^2.7.1", "prettier-plugin-packagejson": "^2.2.11", diff --git a/packages/examples/packages/rollup-plugin/src/index.ts b/packages/examples/packages/rollup-plugin/src/index.ts index 9c5e6d4110..f1cb554d9c 100644 --- a/packages/examples/packages/rollup-plugin/src/index.ts +++ b/packages/examples/packages/rollup-plugin/src/index.ts @@ -1,5 +1,5 @@ import { rpcErrors } from '@metamask/rpc-errors'; -import { OnRpcRequestHandler } from '@metamask/snaps-types'; +import type { OnRpcRequestHandler } from '@metamask/snaps-types'; /** * Handle incoming JSON-RPC requests from the dapp, sent through the diff --git a/packages/examples/packages/transaction-insights/package.json b/packages/examples/packages/transaction-insights/package.json index 2740533e83..2dc5ecf5fb 100644 --- a/packages/examples/packages/transaction-insights/package.json +++ b/packages/examples/packages/transaction-insights/package.json @@ -39,10 +39,10 @@ "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@swc/core": "^1.3.66", @@ -55,8 +55,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "jest": "^29.0.2", "prettier": "^2.7.1", "prettier-plugin-packagejson": "^2.2.11", diff --git a/packages/examples/packages/transaction-insights/src/index.ts b/packages/examples/packages/transaction-insights/src/index.ts index 594d7d5944..b58e23a4d3 100644 --- a/packages/examples/packages/transaction-insights/src/index.ts +++ b/packages/examples/packages/transaction-insights/src/index.ts @@ -1,4 +1,4 @@ -import { OnTransactionHandler } from '@metamask/snaps-types'; +import type { OnTransactionHandler } from '@metamask/snaps-types'; import { panel, text } from '@metamask/snaps-ui'; import { hasProperty } from '@metamask/utils'; diff --git a/packages/examples/packages/wasm/package.json b/packages/examples/packages/wasm/package.json index 44f9d4b10b..b76a54299e 100644 --- a/packages/examples/packages/wasm/package.json +++ b/packages/examples/packages/wasm/package.json @@ -42,10 +42,10 @@ "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@metamask/snaps-cli": "workspace:^", "@metamask/snaps-jest": "workspace:^", "@metamask/snaps-webpack-plugin": "workspace:^", @@ -62,8 +62,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "http-server": "^14.1.1", "jest": "^29.0.2", "prettier": "^2.7.1", diff --git a/packages/examples/packages/wasm/src/index.ts b/packages/examples/packages/wasm/src/index.ts index b5985c99bf..962836b964 100644 --- a/packages/examples/packages/wasm/src/index.ts +++ b/packages/examples/packages/wasm/src/index.ts @@ -1,5 +1,5 @@ import { rpcErrors } from '@metamask/rpc-errors'; -import { OnRpcRequestHandler } from '@metamask/snaps-types'; +import type { OnRpcRequestHandler } from '@metamask/snaps-types'; import { hexToBytes } from '@metamask/utils'; // Note: The `instantiate` function is generated by AssemblyScript. It does not diff --git a/packages/examples/packages/wasm/webpack.config.ts b/packages/examples/packages/wasm/webpack.config.ts index 626ea85ec4..378d736cbf 100644 --- a/packages/examples/packages/wasm/webpack.config.ts +++ b/packages/examples/packages/wasm/webpack.config.ts @@ -2,7 +2,8 @@ import SnapsWebpackPlugin from '@metamask/snaps-webpack-plugin'; import { bytesToHex } from '@metamask/utils'; import { resolve } from 'path'; import TerserPlugin from 'terser-webpack-plugin'; -import { Configuration, ProvidePlugin } from 'webpack'; +import type { Configuration } from 'webpack'; +import { ProvidePlugin } from 'webpack'; const config: Configuration = { entry: './src/index.ts', diff --git a/packages/examples/packages/webpack-plugin/package.json b/packages/examples/packages/webpack-plugin/package.json index 032b584e39..95c66f3043 100644 --- a/packages/examples/packages/webpack-plugin/package.json +++ b/packages/examples/packages/webpack-plugin/package.json @@ -38,10 +38,10 @@ "@jest/globals": "^29.5.0", "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@metamask/snaps-jest": "workspace:^", "@metamask/snaps-rollup-plugin": "workspace:^", "@metamask/snaps-webpack-plugin": "workspace:^", @@ -56,8 +56,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "jest": "^29.0.2", "prettier": "^2.7.1", "prettier-plugin-packagejson": "^2.2.11", diff --git a/packages/examples/packages/webpack-plugin/src/index.ts b/packages/examples/packages/webpack-plugin/src/index.ts index ac40edc966..a5c7fd2c5c 100644 --- a/packages/examples/packages/webpack-plugin/src/index.ts +++ b/packages/examples/packages/webpack-plugin/src/index.ts @@ -1,5 +1,5 @@ import { rpcErrors } from '@metamask/rpc-errors'; -import { OnRpcRequestHandler } from '@metamask/snaps-types'; +import type { OnRpcRequestHandler } from '@metamask/snaps-types'; /** * Handle incoming JSON-RPC requests from the dapp, sent through the diff --git a/packages/examples/packages/webpack-plugin/webpack.config.ts b/packages/examples/packages/webpack-plugin/webpack.config.ts index 5cb1e15c16..95413ae17f 100644 --- a/packages/examples/packages/webpack-plugin/webpack.config.ts +++ b/packages/examples/packages/webpack-plugin/webpack.config.ts @@ -1,7 +1,7 @@ import SnapsWebpackPlugin from '@metamask/snaps-webpack-plugin'; import { resolve } from 'path'; import TerserPlugin from 'terser-webpack-plugin'; -import { Configuration } from 'webpack'; +import type { Configuration } from 'webpack'; const config: Configuration = { entry: './src/index.ts', diff --git a/packages/rpc-methods/package.json b/packages/rpc-methods/package.json index d84196393e..f5b5fc952d 100644 --- a/packages/rpc-methods/package.json +++ b/packages/rpc-methods/package.json @@ -50,10 +50,10 @@ "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", "@metamask/browser-passworder": "^4.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@swc/cli": "^0.1.62", "@swc/core": "^1.3.66", "@swc/jest": "^0.2.26", @@ -66,8 +66,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "expect-type": "^0.15.0", "jest": "^29.0.2", "jest-it-up": "^2.0.0", diff --git a/packages/rpc-methods/src/permitted/common/snapInstallation.ts b/packages/rpc-methods/src/permitted/common/snapInstallation.ts index 9ab7eafce7..1015fa8a32 100644 --- a/packages/rpc-methods/src/permitted/common/snapInstallation.ts +++ b/packages/rpc-methods/src/permitted/common/snapInstallation.ts @@ -1,5 +1,5 @@ -import { RequestedPermissions } from '@metamask/permission-controller'; -import { InstallSnapsResult } from '@metamask/snaps-utils'; +import type { RequestedPermissions } from '@metamask/permission-controller'; +import type { InstallSnapsResult } from '@metamask/snaps-utils'; import { isObject } from '@metamask/utils'; import { ethErrors } from 'eth-rpc-errors'; diff --git a/packages/rpc-methods/src/permitted/getSnaps.ts b/packages/rpc-methods/src/permitted/getSnaps.ts index f7c6efcec8..44bd5e4711 100644 --- a/packages/rpc-methods/src/permitted/getSnaps.ts +++ b/packages/rpc-methods/src/permitted/getSnaps.ts @@ -1,11 +1,11 @@ -import { InstallSnapsResult } from '@metamask/snaps-utils'; -import { +import type { InstallSnapsResult } from '@metamask/snaps-utils'; +import type { PermittedHandlerExport, PendingJsonRpcResponse, JsonRpcEngineEndCallback, } from '@metamask/types'; -import { MethodHooksObject } from '../utils'; +import type { MethodHooksObject } from '../utils'; const hookNames: MethodHooksObject = { getSnaps: true, diff --git a/packages/rpc-methods/src/permitted/index.ts b/packages/rpc-methods/src/permitted/index.ts index 9981d12609..63d343d8d7 100644 --- a/packages/rpc-methods/src/permitted/index.ts +++ b/packages/rpc-methods/src/permitted/index.ts @@ -1,5 +1,5 @@ -import { GetSnapsHooks } from './getSnaps'; -import { RequestSnapsHooks } from './requestSnaps'; +import type { GetSnapsHooks } from './getSnaps'; +import type { RequestSnapsHooks } from './requestSnaps'; export type PermittedRpcMethodHooks = GetSnapsHooks & RequestSnapsHooks; diff --git a/packages/rpc-methods/src/permitted/invokeSnapSugar.test.ts b/packages/rpc-methods/src/permitted/invokeSnapSugar.test.ts index 57b15d83e1..916d8c7d2e 100644 --- a/packages/rpc-methods/src/permitted/invokeSnapSugar.test.ts +++ b/packages/rpc-methods/src/permitted/invokeSnapSugar.test.ts @@ -1,4 +1,4 @@ -import { +import type { JsonRpcEngineEndCallback, JsonRpcEngineNextCallback, JsonRpcRequest, diff --git a/packages/rpc-methods/src/permitted/invokeSnapSugar.ts b/packages/rpc-methods/src/permitted/invokeSnapSugar.ts index bb020ab36f..602c195187 100644 --- a/packages/rpc-methods/src/permitted/invokeSnapSugar.ts +++ b/packages/rpc-methods/src/permitted/invokeSnapSugar.ts @@ -1,4 +1,4 @@ -import { +import type { PermittedHandlerExport, JsonRpcRequest, JsonRpcEngineNextCallback, diff --git a/packages/rpc-methods/src/permitted/middleware.ts b/packages/rpc-methods/src/permitted/middleware.ts index 5e59d943ef..a1b76b64b2 100644 --- a/packages/rpc-methods/src/permitted/middleware.ts +++ b/packages/rpc-methods/src/permitted/middleware.ts @@ -1,6 +1,6 @@ import { logError } from '@metamask/snaps-utils'; import { ethErrors } from 'eth-rpc-errors'; -import { JsonRpcMiddleware } from 'json-rpc-engine'; +import type { JsonRpcMiddleware } from 'json-rpc-engine'; import { selectHooks } from '../utils'; import { methodHandlers } from './handlers'; diff --git a/packages/rpc-methods/src/permitted/requestSnaps.test.ts b/packages/rpc-methods/src/permitted/requestSnaps.test.ts index f514dbfc24..490001a84b 100644 --- a/packages/rpc-methods/src/permitted/requestSnaps.test.ts +++ b/packages/rpc-methods/src/permitted/requestSnaps.test.ts @@ -1,15 +1,16 @@ -import { +import type { RequestedPermissions, PermissionConstraint, } from '@metamask/permission-controller'; -import { InstallSnapsResult, SnapCaveatType } from '@metamask/snaps-utils'; +import type { InstallSnapsResult } from '@metamask/snaps-utils'; +import { SnapCaveatType } from '@metamask/snaps-utils'; import { MOCK_SNAP_ID, MOCK_ORIGIN, getTruncatedSnap, MOCK_LOCAL_SNAP_ID, } from '@metamask/snaps-utils/test-utils'; -import { +import type { JsonRpcRequest, JsonRpcSuccess, PendingJsonRpcResponse, diff --git a/packages/rpc-methods/src/permitted/requestSnaps.ts b/packages/rpc-methods/src/permitted/requestSnaps.ts index 92d89b73f6..af818dfc05 100644 --- a/packages/rpc-methods/src/permitted/requestSnaps.ts +++ b/packages/rpc-methods/src/permitted/requestSnaps.ts @@ -1,29 +1,30 @@ -import { +import type { PermissionConstraint, RequestedPermissions, Caveat, } from '@metamask/permission-controller'; +import type { SnapsPermissionRequest } from '@metamask/snaps-utils'; import { SnapCaveatType, - SnapsPermissionRequest, verifyRequestedSnapPermissions, } from '@metamask/snaps-utils'; -import { +import type { PermittedHandlerExport, JsonRpcRequest, PendingJsonRpcResponse, JsonRpcEngineEndCallback, } from '@metamask/types'; -import { hasProperty, isObject, Json } from '@metamask/utils'; +import type { Json } from '@metamask/utils'; +import { hasProperty, isObject } from '@metamask/utils'; import { ethErrors } from 'eth-rpc-errors'; import { WALLET_SNAP_PERMISSION_KEY } from '../restricted/invokeSnap'; -import { MethodHooksObject } from '../utils'; -import { - handleInstallSnaps, +import type { MethodHooksObject } from '../utils'; +import type { InstallSnapsHook, InstallSnapsResult, } from './common/snapInstallation'; +import { handleInstallSnaps } from './common/snapInstallation'; const hookNames: MethodHooksObject = { installSnaps: true, diff --git a/packages/rpc-methods/src/request.test.ts b/packages/rpc-methods/src/request.test.ts index 5d8ce8e85e..abf3126693 100644 --- a/packages/rpc-methods/src/request.test.ts +++ b/packages/rpc-methods/src/request.test.ts @@ -1,10 +1,10 @@ -import { JsonSLIP10Node } from '@metamask/key-tree'; -import { RequestedPermissions } from '@metamask/permission-controller'; -import { InstallSnapsResult } from '@metamask/snaps-utils'; -import { JsonRpcParams } from '@metamask/utils'; +import type { JsonSLIP10Node } from '@metamask/key-tree'; +import type { RequestedPermissions } from '@metamask/permission-controller'; +import type { InstallSnapsResult } from '@metamask/snaps-utils'; +import type { JsonRpcParams } from '@metamask/utils'; import { expectTypeOf } from 'expect-type'; -import { ObjectFromMethodName, MethodReturnType } from './request'; +import type { ObjectFromMethodName, MethodReturnType } from './request'; describe('MethodRequestArguments', () => { it('has the proper types for Snaps JSON-RPC methods', () => { diff --git a/packages/rpc-methods/src/request.ts b/packages/rpc-methods/src/request.ts index debbcbc59a..fcc3fadcef 100644 --- a/packages/rpc-methods/src/request.ts +++ b/packages/rpc-methods/src/request.ts @@ -1,13 +1,13 @@ -import { +import type { PermissionSpecificationBuilder, PermissionType, RestrictedMethodOptions, } from '@metamask/permission-controller'; -import { PermittedHandlerExport } from '@metamask/types'; -import { JsonRpcParams } from '@metamask/utils'; +import type { PermittedHandlerExport } from '@metamask/types'; +import type { JsonRpcParams } from '@metamask/utils'; -import { methodHandlers } from './permitted'; -import { restrictedMethodPermissionBuilders } from './restricted'; +import type { methodHandlers } from './permitted'; +import type { restrictedMethodPermissionBuilders } from './restricted'; /** * Get the method implementation from a {@link PermittedHandlerExport}. diff --git a/packages/rpc-methods/src/restricted/caveats/index.ts b/packages/rpc-methods/src/restricted/caveats/index.ts index d7224fce99..5ef90283e3 100644 --- a/packages/rpc-methods/src/restricted/caveats/index.ts +++ b/packages/rpc-methods/src/restricted/caveats/index.ts @@ -1,5 +1,5 @@ -import { PermissionConstraint } from '@metamask/permission-controller'; -import { Json } from '@metamask/utils'; +import type { PermissionConstraint } from '@metamask/permission-controller'; +import type { Json } from '@metamask/utils'; import { getBip32EntropyBuilder } from '../getBip32Entropy'; import { getBip32PublicKeyBuilder } from '../getBip32PublicKey'; diff --git a/packages/rpc-methods/src/restricted/caveats/permittedCoinTypes.ts b/packages/rpc-methods/src/restricted/caveats/permittedCoinTypes.ts index 6c724d988c..b19aa7c3a7 100644 --- a/packages/rpc-methods/src/restricted/caveats/permittedCoinTypes.ts +++ b/packages/rpc-methods/src/restricted/caveats/permittedCoinTypes.ts @@ -1,13 +1,14 @@ -import { +import type { PermissionConstraint, RestrictedMethodCaveatSpecificationConstraint, Caveat, } from '@metamask/permission-controller'; import { FORBIDDEN_COIN_TYPES, SnapCaveatType } from '@metamask/snaps-utils'; -import { Json, hasProperty, isPlainObject } from '@metamask/utils'; +import type { Json } from '@metamask/utils'; +import { hasProperty, isPlainObject } from '@metamask/utils'; import { ethErrors } from 'eth-rpc-errors'; -import { GetBip44EntropyParams } from '../getBip44Entropy'; +import type { GetBip44EntropyParams } from '../getBip44Entropy'; /** * Map a raw value from the `initialPermissions` to a caveat specification. diff --git a/packages/rpc-methods/src/restricted/caveats/permittedDerivationPaths.ts b/packages/rpc-methods/src/restricted/caveats/permittedDerivationPaths.ts index 1bbc5b7cd2..be5f7b42af 100644 --- a/packages/rpc-methods/src/restricted/caveats/permittedDerivationPaths.ts +++ b/packages/rpc-methods/src/restricted/caveats/permittedDerivationPaths.ts @@ -1,15 +1,16 @@ -import { +import type { Caveat, PermissionConstraint, RestrictedMethodCaveatSpecificationConstraint, } from '@metamask/permission-controller'; +import type { Bip32Entropy } from '@metamask/snaps-utils'; import { SnapCaveatType, - Bip32Entropy, Bip32EntropyStruct, isEqual, } from '@metamask/snaps-utils'; -import { Json, assertStruct } from '@metamask/utils'; +import type { Json } from '@metamask/utils'; +import { assertStruct } from '@metamask/utils'; import { ethErrors } from 'eth-rpc-errors'; import { array, size, type } from 'superstruct'; diff --git a/packages/rpc-methods/src/restricted/caveats/snapIds.test.ts b/packages/rpc-methods/src/restricted/caveats/snapIds.test.ts index 65fd6916af..789b7be05b 100644 --- a/packages/rpc-methods/src/restricted/caveats/snapIds.test.ts +++ b/packages/rpc-methods/src/restricted/caveats/snapIds.test.ts @@ -1,7 +1,8 @@ -import { Caveat, OriginString } from '@metamask/permission-controller'; -import { SnapCaveatType, SnapId } from '@metamask/snaps-utils'; +import type { Caveat, OriginString } from '@metamask/permission-controller'; +import type { SnapId } from '@metamask/snaps-utils'; +import { SnapCaveatType } from '@metamask/snaps-utils'; import { MOCK_SNAP_ID, MOCK_ORIGIN } from '@metamask/snaps-utils/test-utils'; -import { Json } from '@metamask/utils'; +import type { Json } from '@metamask/utils'; import { validateSnapIdsCaveat, diff --git a/packages/rpc-methods/src/restricted/caveats/snapIds.ts b/packages/rpc-methods/src/restricted/caveats/snapIds.ts index eb3c9d7220..734aeeb5db 100644 --- a/packages/rpc-methods/src/restricted/caveats/snapIds.ts +++ b/packages/rpc-methods/src/restricted/caveats/snapIds.ts @@ -1,16 +1,18 @@ -import { +import type { Caveat, RestrictedMethodOptions, RestrictedMethodParameters, RestrictedMethodCaveatSpecificationConstraint, PermissionConstraint, } from '@metamask/permission-controller'; -import { SnapIds, SnapCaveatType, SnapIdsStruct } from '@metamask/snaps-utils'; -import { hasProperty, Json, assertStruct } from '@metamask/utils'; +import type { SnapIds } from '@metamask/snaps-utils'; +import { SnapCaveatType, SnapIdsStruct } from '@metamask/snaps-utils'; +import type { Json } from '@metamask/utils'; +import { hasProperty, assertStruct } from '@metamask/utils'; import { ethErrors } from 'eth-rpc-errors'; import { type } from 'superstruct'; -import { InvokeSnapParams } from '../invokeSnap'; +import type { InvokeSnapParams } from '../invokeSnap'; /** * Map a raw value from the `initialPermissions` to a caveat specification. diff --git a/packages/rpc-methods/src/restricted/dialog.test.ts b/packages/rpc-methods/src/restricted/dialog.test.ts index c9cf83fff5..5f1c69680d 100644 --- a/packages/rpc-methods/src/restricted/dialog.test.ts +++ b/packages/rpc-methods/src/restricted/dialog.test.ts @@ -1,12 +1,8 @@ import { PermissionType, SubjectType } from '@metamask/permission-controller'; import { heading, panel, text } from '@metamask/snaps-ui'; -import { - dialogBuilder, - DialogType, - DialogMethodHooks, - getDialogImplementation, -} from './dialog'; +import type { DialogMethodHooks } from './dialog'; +import { dialogBuilder, DialogType, getDialogImplementation } from './dialog'; describe('builder', () => { it('has the expected shape', () => { diff --git a/packages/rpc-methods/src/restricted/dialog.ts b/packages/rpc-methods/src/restricted/dialog.ts index 275c038f9b..f8aeeb2d27 100644 --- a/packages/rpc-methods/src/restricted/dialog.ts +++ b/packages/rpc-methods/src/restricted/dialog.ts @@ -1,29 +1,29 @@ -import { +import type { PermissionSpecificationBuilder, - PermissionType, RestrictedMethodOptions, ValidPermissionSpecification, - SubjectType, } from '@metamask/permission-controller'; -import { Component, ComponentStruct } from '@metamask/snaps-ui'; -import { EnumToUnion, enumValue } from '@metamask/snaps-utils'; -import { NonEmptyArray } from '@metamask/utils'; +import { PermissionType, SubjectType } from '@metamask/permission-controller'; +import type { Component } from '@metamask/snaps-ui'; +import { ComponentStruct } from '@metamask/snaps-ui'; +import type { EnumToUnion } from '@metamask/snaps-utils'; +import { enumValue } from '@metamask/snaps-utils'; +import type { NonEmptyArray } from '@metamask/utils'; import { ethErrors } from 'eth-rpc-errors'; +import type { Infer, Struct } from 'superstruct'; import { create, enums, - Infer, object, optional, size, string, - Struct, StructError, type, union, } from 'superstruct'; -import { MethodHooksObject } from '../utils'; +import type { MethodHooksObject } from '../utils'; const methodName = 'snap_dialog'; diff --git a/packages/rpc-methods/src/restricted/getBip32Entropy.ts b/packages/rpc-methods/src/restricted/getBip32Entropy.ts index d5d0cc8bf9..77c4d5bd23 100644 --- a/packages/rpc-methods/src/restricted/getBip32Entropy.ts +++ b/packages/rpc-methods/src/restricted/getBip32Entropy.ts @@ -1,22 +1,23 @@ -import { +import type { BIP32Node, JsonSLIP10Node, - SLIP10Node, SLIP10PathNode, } from '@metamask/key-tree'; -import { +import { SLIP10Node } from '@metamask/key-tree'; +import type { PermissionSpecificationBuilder, - PermissionType, PermissionValidatorConstraint, RestrictedMethodOptions, ValidPermissionSpecification, - SubjectType, } from '@metamask/permission-controller'; -import { Bip32Entropy, SnapCaveatType } from '@metamask/snaps-utils'; -import { NonEmptyArray, assert } from '@metamask/utils'; +import { PermissionType, SubjectType } from '@metamask/permission-controller'; +import type { Bip32Entropy } from '@metamask/snaps-utils'; +import { SnapCaveatType } from '@metamask/snaps-utils'; +import type { NonEmptyArray } from '@metamask/utils'; +import { assert } from '@metamask/utils'; import { ethErrors } from 'eth-rpc-errors'; -import { MethodHooksObject } from '../utils'; +import type { MethodHooksObject } from '../utils'; const targetName = 'snap_getBip32Entropy'; diff --git a/packages/rpc-methods/src/restricted/getBip32PublicKey.ts b/packages/rpc-methods/src/restricted/getBip32PublicKey.ts index d503f399be..3b6cd33634 100644 --- a/packages/rpc-methods/src/restricted/getBip32PublicKey.ts +++ b/packages/rpc-methods/src/restricted/getBip32PublicKey.ts @@ -1,22 +1,23 @@ -import { BIP32Node, SLIP10Node } from '@metamask/key-tree'; -import { +import type { BIP32Node } from '@metamask/key-tree'; +import { SLIP10Node } from '@metamask/key-tree'; +import type { PermissionSpecificationBuilder, - PermissionType, PermissionValidatorConstraint, RestrictedMethodOptions, ValidPermissionSpecification, - SubjectType, } from '@metamask/permission-controller'; +import { PermissionType, SubjectType } from '@metamask/permission-controller'; import { bip32entropy, Bip32PathStruct, SnapCaveatType, } from '@metamask/snaps-utils'; -import { NonEmptyArray, assertStruct } from '@metamask/utils'; +import type { NonEmptyArray } from '@metamask/utils'; +import { assertStruct } from '@metamask/utils'; import { ethErrors } from 'eth-rpc-errors'; import { boolean, enums, object, optional } from 'superstruct'; -import { MethodHooksObject } from '../utils'; +import type { MethodHooksObject } from '../utils'; const targetName = 'snap_getBip32PublicKey'; diff --git a/packages/rpc-methods/src/restricted/getBip44Entropy.ts b/packages/rpc-methods/src/restricted/getBip44Entropy.ts index 07cec79335..abd0da8639 100644 --- a/packages/rpc-methods/src/restricted/getBip44Entropy.ts +++ b/packages/rpc-methods/src/restricted/getBip44Entropy.ts @@ -1,17 +1,17 @@ -import { BIP44CoinTypeNode, JsonBIP44CoinTypeNode } from '@metamask/key-tree'; -import { +import type { JsonBIP44CoinTypeNode } from '@metamask/key-tree'; +import { BIP44CoinTypeNode } from '@metamask/key-tree'; +import type { PermissionSpecificationBuilder, - PermissionType, PermissionValidatorConstraint, RestrictedMethodOptions, ValidPermissionSpecification, - SubjectType, } from '@metamask/permission-controller'; +import { PermissionType, SubjectType } from '@metamask/permission-controller'; import { SnapCaveatType } from '@metamask/snaps-utils'; -import { NonEmptyArray } from '@metamask/utils'; +import type { NonEmptyArray } from '@metamask/utils'; import { ethErrors } from 'eth-rpc-errors'; -import { MethodHooksObject } from '../utils'; +import type { MethodHooksObject } from '../utils'; const targetName = 'snap_getBip44Entropy'; diff --git a/packages/rpc-methods/src/restricted/getEntropy.ts b/packages/rpc-methods/src/restricted/getEntropy.ts index db3caad41f..c967270fa4 100644 --- a/packages/rpc-methods/src/restricted/getEntropy.ts +++ b/packages/rpc-methods/src/restricted/getEntropy.ts @@ -1,16 +1,18 @@ -import { +import type { PermissionSpecificationBuilder, - PermissionType, RestrictedMethodOptions, ValidPermissionSpecification, - SubjectType, } from '@metamask/permission-controller'; +import { PermissionType, SubjectType } from '@metamask/permission-controller'; import { SIP_6_MAGIC_VALUE } from '@metamask/snaps-utils'; -import { assertStruct, Hex, NonEmptyArray } from '@metamask/utils'; +import type { Hex, NonEmptyArray } from '@metamask/utils'; +import { assertStruct } from '@metamask/utils'; import { ethErrors } from 'eth-rpc-errors'; -import { Infer, literal, object, optional, string } from 'superstruct'; +import type { Infer } from 'superstruct'; +import { literal, object, optional, string } from 'superstruct'; -import { deriveEntropy, MethodHooksObject } from '../utils'; +import type { MethodHooksObject } from '../utils'; +import { deriveEntropy } from '../utils'; const targetName = 'snap_getEntropy'; diff --git a/packages/rpc-methods/src/restricted/index.ts b/packages/rpc-methods/src/restricted/index.ts index 66f0b008d6..7174c777d6 100644 --- a/packages/rpc-methods/src/restricted/index.ts +++ b/packages/rpc-methods/src/restricted/index.ts @@ -1,24 +1,21 @@ -import { dialogBuilder, DialogMethodHooks } from './dialog'; -import { - getBip32EntropyBuilder, - GetBip32EntropyMethodHooks, -} from './getBip32Entropy'; -import { - getBip32PublicKeyBuilder, - GetBip32PublicKeyMethodHooks, -} from './getBip32PublicKey'; -import { - getBip44EntropyBuilder, - GetBip44EntropyMethodHooks, -} from './getBip44Entropy'; -import { getEntropyBuilder, GetEntropyHooks } from './getEntropy'; -import { invokeSnapBuilder, InvokeSnapMethodHooks } from './invokeSnap'; -import { - manageAccountsBuilder, - ManageAccountsMethodHooks, -} from './manageAccounts'; -import { manageStateBuilder, ManageStateMethodHooks } from './manageState'; -import { notifyBuilder, NotifyMethodHooks } from './notify'; +import type { DialogMethodHooks } from './dialog'; +import { dialogBuilder } from './dialog'; +import type { GetBip32EntropyMethodHooks } from './getBip32Entropy'; +import { getBip32EntropyBuilder } from './getBip32Entropy'; +import type { GetBip32PublicKeyMethodHooks } from './getBip32PublicKey'; +import { getBip32PublicKeyBuilder } from './getBip32PublicKey'; +import type { GetBip44EntropyMethodHooks } from './getBip44Entropy'; +import { getBip44EntropyBuilder } from './getBip44Entropy'; +import type { GetEntropyHooks } from './getEntropy'; +import { getEntropyBuilder } from './getEntropy'; +import type { InvokeSnapMethodHooks } from './invokeSnap'; +import { invokeSnapBuilder } from './invokeSnap'; +import type { ManageAccountsMethodHooks } from './manageAccounts'; +import { manageAccountsBuilder } from './manageAccounts'; +import type { ManageStateMethodHooks } from './manageState'; +import { manageStateBuilder } from './manageState'; +import type { NotifyMethodHooks } from './notify'; +import { notifyBuilder } from './notify'; export type { DialogParameters } from './dialog'; export { DialogType } from './dialog'; diff --git a/packages/rpc-methods/src/restricted/invokeSnap.test.ts b/packages/rpc-methods/src/restricted/invokeSnap.test.ts index 4bb90b905e..95f9a5fc51 100644 --- a/packages/rpc-methods/src/restricted/invokeSnap.test.ts +++ b/packages/rpc-methods/src/restricted/invokeSnap.test.ts @@ -1,7 +1,5 @@ -import { - PermissionsRequest, - PermissionType, -} from '@metamask/permission-controller'; +import type { PermissionsRequest } from '@metamask/permission-controller'; +import { PermissionType } from '@metamask/permission-controller'; import { SnapCaveatType } from '@metamask/snaps-utils'; import { MOCK_SNAP_ID, @@ -11,13 +9,12 @@ import { MOCK_LOCAL_SNAP_ID, } from '@metamask/snaps-utils/test-utils'; +import type { InstallSnaps, GetPermittedSnaps } from './invokeSnap'; import { invokeSnapBuilder, getInvokeSnapImplementation, WALLET_SNAP_PERMISSION_KEY, handleSnapInstall, - InstallSnaps, - GetPermittedSnaps, } from './invokeSnap'; describe('builder', () => { diff --git a/packages/rpc-methods/src/restricted/invokeSnap.ts b/packages/rpc-methods/src/restricted/invokeSnap.ts index bebe862f4f..a743309238 100644 --- a/packages/rpc-methods/src/restricted/invokeSnap.ts +++ b/packages/rpc-methods/src/restricted/invokeSnap.ts @@ -1,24 +1,23 @@ -import { +import type { PermissionSpecificationBuilder, RestrictedMethodOptions, ValidPermissionSpecification, - PermissionType, PermissionValidatorConstraint, PermissionSideEffect, } from '@metamask/permission-controller'; -import { +import { PermissionType } from '@metamask/permission-controller'; +import type { Snap, SnapId, - HandlerType, SnapRpcHookArgs, - SnapCaveatType, RequestedSnapPermissions, InstallSnapsResult, } from '@metamask/snaps-utils'; -import { Json, NonEmptyArray } from '@metamask/utils'; +import { HandlerType, SnapCaveatType } from '@metamask/snaps-utils'; +import type { Json, NonEmptyArray } from '@metamask/utils'; import { ethErrors } from 'eth-rpc-errors'; -import { MethodHooksObject } from '../utils'; +import type { MethodHooksObject } from '../utils'; export const WALLET_SNAP_PERMISSION_KEY = 'wallet_snap'; diff --git a/packages/rpc-methods/src/restricted/manageAccounts.ts b/packages/rpc-methods/src/restricted/manageAccounts.ts index 9496a4f032..bf32a3c48c 100644 --- a/packages/rpc-methods/src/restricted/manageAccounts.ts +++ b/packages/rpc-methods/src/restricted/manageAccounts.ts @@ -1,11 +1,12 @@ -import { - SubjectType, - PermissionType, +import type { RestrictedMethodOptions, ValidPermissionSpecification, PermissionSpecificationBuilder, } from '@metamask/permission-controller'; -import { Json, JsonStruct, NonEmptyArray } from '@metamask/utils'; +import { SubjectType, PermissionType } from '@metamask/permission-controller'; +import type { Json, NonEmptyArray } from '@metamask/utils'; +import { JsonStruct } from '@metamask/utils'; +import type { Infer } from 'superstruct'; import { assert, string, @@ -14,7 +15,6 @@ import { union, array, record, - Infer, } from 'superstruct'; const SnapMessageStruct = object({ diff --git a/packages/rpc-methods/src/restricted/manageState.ts b/packages/rpc-methods/src/restricted/manageState.ts index 1226c33325..5c0ea257d7 100644 --- a/packages/rpc-methods/src/restricted/manageState.ts +++ b/packages/rpc-methods/src/restricted/manageState.ts @@ -1,26 +1,17 @@ -import { +import type { PermissionSpecificationBuilder, - PermissionType, RestrictedMethodOptions, ValidPermissionSpecification, - SubjectType, } from '@metamask/permission-controller'; -import { - EnumToUnion, - STATE_ENCRYPTION_MAGIC_VALUE, -} from '@metamask/snaps-utils'; -import { - Json, - NonEmptyArray, - isObject, - getJsonSize, - assert, - isValidJson, - Hex, -} from '@metamask/utils'; +import { PermissionType, SubjectType } from '@metamask/permission-controller'; +import type { EnumToUnion } from '@metamask/snaps-utils'; +import { STATE_ENCRYPTION_MAGIC_VALUE } from '@metamask/snaps-utils'; +import type { Json, NonEmptyArray, Hex } from '@metamask/utils'; +import { isObject, getJsonSize, assert, isValidJson } from '@metamask/utils'; import { ethErrors } from 'eth-rpc-errors'; -import { deriveEntropy, MethodHooksObject } from '../utils'; +import type { MethodHooksObject } from '../utils'; +import { deriveEntropy } from '../utils'; // The salt used for SIP-6-based entropy derivation. export const STATE_ENCRYPTION_SALT = 'snap_manageState encryption'; diff --git a/packages/rpc-methods/src/restricted/notify.ts b/packages/rpc-methods/src/restricted/notify.ts index a94f87d87a..636d077ec5 100644 --- a/packages/rpc-methods/src/restricted/notify.ts +++ b/packages/rpc-methods/src/restricted/notify.ts @@ -1,15 +1,15 @@ -import { +import type { PermissionSpecificationBuilder, - PermissionType, RestrictedMethodOptions, ValidPermissionSpecification, - SubjectType, } from '@metamask/permission-controller'; -import { EnumToUnion } from '@metamask/snaps-utils'; -import { NonEmptyArray, isObject } from '@metamask/utils'; +import { PermissionType, SubjectType } from '@metamask/permission-controller'; +import type { EnumToUnion } from '@metamask/snaps-utils'; +import type { NonEmptyArray } from '@metamask/utils'; +import { isObject } from '@metamask/utils'; import { ethErrors } from 'eth-rpc-errors'; -import { MethodHooksObject } from '../utils'; +import type { MethodHooksObject } from '../utils'; const methodName = 'snap_notify'; diff --git a/packages/rpc-methods/src/utils.ts b/packages/rpc-methods/src/utils.ts index e59260c329..d7b8a26b3b 100644 --- a/packages/rpc-methods/src/utils.ts +++ b/packages/rpc-methods/src/utils.ts @@ -1,11 +1,12 @@ -import { HardenedBIP32Node, SLIP10Node } from '@metamask/key-tree'; -import { MagicValue } from '@metamask/snaps-utils'; +import type { HardenedBIP32Node } from '@metamask/key-tree'; +import { SLIP10Node } from '@metamask/key-tree'; +import type { MagicValue } from '@metamask/snaps-utils'; +import type { Hex } from '@metamask/utils'; import { add0x, assert, concatBytes, createDataView, - Hex, stringToBytes, } from '@metamask/utils'; import { keccak_256 as keccak256 } from '@noble/hashes/sha3'; diff --git a/packages/snaps-browserify-plugin/package.json b/packages/snaps-browserify-plugin/package.json index 1a8240d63a..c1aba67bf8 100644 --- a/packages/snaps-browserify-plugin/package.json +++ b/packages/snaps-browserify-plugin/package.json @@ -44,10 +44,10 @@ "devDependencies": { "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@swc/cli": "^0.1.62", "@swc/core": "^1.3.66", "@swc/jest": "^0.2.26", @@ -64,8 +64,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "jest": "^29.0.2", "jest-it-up": "^2.0.0", "memfs": "^3.4.13", diff --git a/packages/snaps-browserify-plugin/src/plugin.test.ts b/packages/snaps-browserify-plugin/src/plugin.test.ts index 3a818290f0..8545663c7f 100644 --- a/packages/snaps-browserify-plugin/src/plugin.test.ts +++ b/packages/snaps-browserify-plugin/src/plugin.test.ts @@ -11,13 +11,15 @@ import { DEFAULT_SNAP_BUNDLE, getSnapManifest, } from '@metamask/snaps-utils/test-utils'; -import browserify, { Options as BrowserifyOptions } from 'browserify'; +import type { Options as BrowserifyOptions } from 'browserify'; +import browserify from 'browserify'; import concat from 'concat-stream'; import os from 'os'; import pathUtils from 'path'; import { Readable } from 'stream'; -import plugin, { Options, SnapsBrowserifyTransform } from './plugin'; +import type { Options } from './plugin'; +import plugin, { SnapsBrowserifyTransform } from './plugin'; jest.mock('fs'); diff --git a/packages/snaps-browserify-plugin/src/plugin.ts b/packages/snaps-browserify-plugin/src/plugin.ts index da40891698..c877083780 100644 --- a/packages/snaps-browserify-plugin/src/plugin.ts +++ b/packages/snaps-browserify-plugin/src/plugin.ts @@ -1,15 +1,16 @@ +import type { PostProcessOptions } from '@metamask/snaps-utils'; import { checkManifest, evalBundle, logWarning, postProcessBundle, - PostProcessOptions, useTemporaryFile, } from '@metamask/snaps-utils'; -import { BrowserifyObject } from 'browserify'; +import type { BrowserifyObject } from 'browserify'; import { fromSource } from 'convert-source-map'; import pathUtils from 'path'; -import { Transform, TransformCallback } from 'stream'; +import type { TransformCallback } from 'stream'; +import { Transform } from 'stream'; type PluginOptions = { eval?: boolean; diff --git a/packages/snaps-cli/.eslintrc.js b/packages/snaps-cli/.eslintrc.js index 49c3f94d7a..b9b16d71c1 100644 --- a/packages/snaps-cli/.eslintrc.js +++ b/packages/snaps-cli/.eslintrc.js @@ -14,35 +14,10 @@ module.exports = { }, }, - { - files: ['src/**/*', 'scripts/**/*'], - rules: { - 'node/no-process-exit': 'off', - }, - }, - { files: ['src/main.ts'], rules: { - 'node/shebang': 'off', - }, - }, - - { - files: [ - // Exports a yargs middleware function, which must be synchronous. - 'src/utils/snap-config.ts', - 'src/utils/snap-config.test.ts', - ], - rules: { - 'node/no-sync': 'off', - }, - }, - - { - files: ['**/*.test.ts'], - rules: { - 'node/no-callback-literal': 'off', + 'n/shebang': 'off', }, }, diff --git a/packages/snaps-cli/package.json b/packages/snaps-cli/package.json index dc3be1a35b..5fc31eebfb 100644 --- a/packages/snaps-cli/package.json +++ b/packages/snaps-cli/package.json @@ -69,10 +69,10 @@ "devDependencies": { "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@swc/cli": "^0.1.62", "@swc/core": "^1.3.66", "@swc/jest": "^0.2.26", @@ -94,8 +94,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "execa": "^5.1.1", "jest": "^29.0.2", "jest-it-up": "^2.0.0", diff --git a/packages/snaps-cli/src/builders.ts b/packages/snaps-cli/src/builders.ts index 2a59403c93..03e0ab03a4 100644 --- a/packages/snaps-cli/src/builders.ts +++ b/packages/snaps-cli/src/builders.ts @@ -1,4 +1,4 @@ -import { Options, PositionalOptions } from 'yargs'; +import type { Options, PositionalOptions } from 'yargs'; export type SnapsCliBuilders = { readonly bundle: Readonly; diff --git a/packages/snaps-cli/src/cli.test.ts b/packages/snaps-cli/src/cli.test.ts index d2490fb6af..018866d165 100644 --- a/packages/snaps-cli/src/cli.test.ts +++ b/packages/snaps-cli/src/cli.test.ts @@ -1,4 +1,4 @@ -import yargs from 'yargs'; +import type yargs from 'yargs'; import { cli } from './cli'; import commands from './cmds'; diff --git a/packages/snaps-cli/src/cli.ts b/packages/snaps-cli/src/cli.ts index dff585cb94..0fe2d179df 100755 --- a/packages/snaps-cli/src/cli.ts +++ b/packages/snaps-cli/src/cli.ts @@ -1,5 +1,6 @@ -import yargs, { Arguments } from 'yargs'; -import yargsType from 'yargs/yargs'; +import type { Arguments } from 'yargs'; +import yargs from 'yargs'; +import type yargsType from 'yargs/yargs'; import builders from './builders'; import { diff --git a/packages/snaps-cli/src/cmds/build/buildHandler.ts b/packages/snaps-cli/src/cmds/build/buildHandler.ts index f0cc0804bc..19298aa792 100644 --- a/packages/snaps-cli/src/cmds/build/buildHandler.ts +++ b/packages/snaps-cli/src/cmds/build/buildHandler.ts @@ -5,7 +5,7 @@ import { validateOutfileName, } from '@metamask/snaps-utils'; -import { YargsArgs } from '../../types/yargs'; +import type { YargsArgs } from '../../types/yargs'; import { loadConfig } from '../../utils'; import { evalHandler } from '../eval/evalHandler'; import { manifestHandler } from '../manifest/manifestHandler'; diff --git a/packages/snaps-cli/src/cmds/build/bundle.ts b/packages/snaps-cli/src/cmds/build/bundle.ts index 0d0f7b4c44..7d9006fd79 100644 --- a/packages/snaps-cli/src/cmds/build/bundle.ts +++ b/packages/snaps-cli/src/cmds/build/bundle.ts @@ -1,13 +1,15 @@ -import plugin, { Options } from '@metamask/snaps-browserify-plugin'; -import browserify, { BrowserifyObject } from 'browserify'; +import type { Options } from '@metamask/snaps-browserify-plugin'; +import plugin from '@metamask/snaps-browserify-plugin'; +import type { BrowserifyObject } from 'browserify'; +import browserify from 'browserify'; import { TranspilationModes } from '../../builders'; -import { YargsArgs } from '../../types/yargs'; +import type { YargsArgs } from '../../types/yargs'; import { processDependencies, writeBundleFile } from './utils'; // 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, node/global-require */ +/* eslint-disable @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires, n/global-require */ /** * Builds a Snap bundle JS file from its JavaScript source. diff --git a/packages/snaps-cli/src/cmds/build/index.ts b/packages/snaps-cli/src/cmds/build/index.ts index 2aa680093d..9de0bc3572 100644 --- a/packages/snaps-cli/src/cmds/build/index.ts +++ b/packages/snaps-cli/src/cmds/build/index.ts @@ -1,7 +1,7 @@ -import yargs from 'yargs'; +import type yargs from 'yargs'; import builders from '../../builders'; -import { YargsArgs } from '../../types/yargs'; +import type { YargsArgs } from '../../types/yargs'; import { build } from './buildHandler'; import { processInvalidTranspilation } from './utils'; diff --git a/packages/snaps-cli/src/cmds/build/utils.ts b/packages/snaps-cli/src/cmds/build/utils.ts index defafc6664..260b59af2c 100644 --- a/packages/snaps-cli/src/cmds/build/utils.ts +++ b/packages/snaps-cli/src/cmds/build/utils.ts @@ -2,7 +2,7 @@ import { logInfo } from '@metamask/snaps-utils'; import { promises as fs } from 'fs'; import { TranspilationModes } from '../../builders'; -import { YargsArgs } from '../../types/yargs'; +import type { YargsArgs } from '../../types/yargs'; import { writeError } from '../../utils'; type WriteBundleFileArgs = { diff --git a/packages/snaps-cli/src/cmds/eval/evalHandler.test.ts b/packages/snaps-cli/src/cmds/eval/evalHandler.test.ts index b9f54363fd..da59a92134 100644 --- a/packages/snaps-cli/src/cmds/eval/evalHandler.test.ts +++ b/packages/snaps-cli/src/cmds/eval/evalHandler.test.ts @@ -1,6 +1,6 @@ import { evalBundle } from '@metamask/snaps-utils'; -import { YargsArgs } from '../../types/yargs'; +import type { YargsArgs } from '../../types/yargs'; import { evalHandler } from './evalHandler'; jest.mock('@metamask/snaps-utils', () => ({ diff --git a/packages/snaps-cli/src/cmds/eval/evalHandler.ts b/packages/snaps-cli/src/cmds/eval/evalHandler.ts index 489ecf80d9..0887201122 100644 --- a/packages/snaps-cli/src/cmds/eval/evalHandler.ts +++ b/packages/snaps-cli/src/cmds/eval/evalHandler.ts @@ -1,7 +1,7 @@ import { evalBundle, logInfo } from '@metamask/snaps-utils'; import { assert } from '@metamask/utils'; -import { YargsArgs } from '../../types/yargs'; +import type { YargsArgs } from '../../types/yargs'; /** * Runs the snap in a worker, to ensure SES compatibility. diff --git a/packages/snaps-cli/src/cmds/eval/index.test.ts b/packages/snaps-cli/src/cmds/eval/index.test.ts index 836283e6e8..053b0ac2ec 100644 --- a/packages/snaps-cli/src/cmds/eval/index.test.ts +++ b/packages/snaps-cli/src/cmds/eval/index.test.ts @@ -1,5 +1,5 @@ import index from '.'; -import { YargsArgs } from '../../types/yargs'; +import type { YargsArgs } from '../../types/yargs'; import { evalHandler } from './evalHandler'; jest.mock('./evalHandler'); diff --git a/packages/snaps-cli/src/cmds/eval/index.ts b/packages/snaps-cli/src/cmds/eval/index.ts index 35adbb141f..57d70d6c22 100644 --- a/packages/snaps-cli/src/cmds/eval/index.ts +++ b/packages/snaps-cli/src/cmds/eval/index.ts @@ -1,7 +1,7 @@ -import yargs from 'yargs'; +import type yargs from 'yargs'; import builders from '../../builders'; -import { YargsArgs } from '../../types/yargs'; +import type { YargsArgs } from '../../types/yargs'; import { evalHandler } from './evalHandler'; const command = { diff --git a/packages/snaps-cli/src/cmds/init/init.e2e.test.ts b/packages/snaps-cli/src/cmds/init/init.e2e.test.ts deleted file mode 100644 index 86de56a476..0000000000 --- a/packages/snaps-cli/src/cmds/init/init.e2e.test.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { promises as fs } from 'fs'; -import { tmpdir } from 'os'; -import { resolve } from 'path'; - -import { run } from '../../test-utils'; - -jest.unmock('fs'); - -const TMP_DIR = resolve(tmpdir(), 'metamask-snaps-test'); - -describe('mm-snap init', () => { - // TODO: Enable this test. Currently installing dependencies takes too long, - // and we don't want to increase the timeout even more. We should consider - // making a minimal template for testing purposes, and adding a way to specify - // the template to use. - it.skip.each(['init', 'i'])( - 'initializes a new snap using "mm-snap %s"', - async (command) => { - const initPath = resolve(TMP_DIR, command); - await fs.rm(initPath, { force: true, recursive: true }); - await fs.mkdir(TMP_DIR, { recursive: true }); - - await run({ - command, - options: [initPath], - }) - .stdout(/Preparing .*\.\.\./u) - .stdout('Cloning template...') - .stdout('Installing dependencies...') - .stdout('Initializing git repository...') - .stdout(/Build success: '.*' bundled as '.*'!/u) - .stdout(/Eval Success: evaluated '.*' in SES!/u) - .wait('stdout', 'Snap project successfully initiated!') - .kill() - .end(); - }, - ); -}); diff --git a/packages/snaps-cli/src/cmds/manifest/index.test.ts b/packages/snaps-cli/src/cmds/manifest/index.test.ts index 95ce7abd37..dca77fa48f 100644 --- a/packages/snaps-cli/src/cmds/manifest/index.test.ts +++ b/packages/snaps-cli/src/cmds/manifest/index.test.ts @@ -1,5 +1,5 @@ import index from '.'; -import { YargsArgs } from '../../types/yargs'; +import type { YargsArgs } from '../../types/yargs'; import { manifestHandler } from './manifestHandler'; jest.mock('./manifestHandler'); diff --git a/packages/snaps-cli/src/cmds/manifest/index.ts b/packages/snaps-cli/src/cmds/manifest/index.ts index f8e6f9a648..e7e5eb68e6 100644 --- a/packages/snaps-cli/src/cmds/manifest/index.ts +++ b/packages/snaps-cli/src/cmds/manifest/index.ts @@ -1,7 +1,7 @@ -import yargs from 'yargs'; +import type yargs from 'yargs'; import builders from '../../builders'; -import { YargsArgs } from '../../types/yargs'; +import type { YargsArgs } from '../../types/yargs'; import { logError } from '../../utils'; import { manifestHandler } from './manifestHandler'; diff --git a/packages/snaps-cli/src/cmds/manifest/manifestHandler.test.ts b/packages/snaps-cli/src/cmds/manifest/manifestHandler.test.ts index eb59f7ca8d..6a67c6d7d1 100644 --- a/packages/snaps-cli/src/cmds/manifest/manifestHandler.test.ts +++ b/packages/snaps-cli/src/cmds/manifest/manifestHandler.test.ts @@ -1,11 +1,7 @@ -import { - checkManifest, - CheckManifestResult, - logError, - logWarning, -} from '@metamask/snaps-utils'; - -import { YargsArgs } from '../../types/yargs'; +import type { CheckManifestResult } from '@metamask/snaps-utils'; +import { checkManifest, logError, logWarning } from '@metamask/snaps-utils'; + +import type { YargsArgs } from '../../types/yargs'; import { manifestHandler } from './manifestHandler'; jest.mock('@metamask/snaps-utils'); diff --git a/packages/snaps-cli/src/cmds/manifest/manifestHandler.ts b/packages/snaps-cli/src/cmds/manifest/manifestHandler.ts index 22b581495d..b835cb3c05 100644 --- a/packages/snaps-cli/src/cmds/manifest/manifestHandler.ts +++ b/packages/snaps-cli/src/cmds/manifest/manifestHandler.ts @@ -1,6 +1,6 @@ import { checkManifest, logError, logWarning } from '@metamask/snaps-utils'; -import { YargsArgs } from '../../types/yargs'; +import type { YargsArgs } from '../../types/yargs'; const ERROR_PREFIX = 'Manifest Error: '; @@ -23,6 +23,7 @@ export async function manifestHandler({ writeManifest }: YargsArgs) { logError(`${ERROR_PREFIX}The manifest is invalid.`); errors.forEach(logManifestError); + // eslint-disable-next-line n/no-process-exit process.exit(1); } diff --git a/packages/snaps-cli/src/cmds/serve/index.ts b/packages/snaps-cli/src/cmds/serve/index.ts index 9aafc50bd2..9537cb517f 100644 --- a/packages/snaps-cli/src/cmds/serve/index.ts +++ b/packages/snaps-cli/src/cmds/serve/index.ts @@ -1,7 +1,7 @@ -import yargs from 'yargs'; +import type yargs from 'yargs'; import builders from '../../builders'; -import { YargsArgs } from '../../types/yargs'; +import type { YargsArgs } from '../../types/yargs'; import { serve } from './serveHandler'; const command = { diff --git a/packages/snaps-cli/src/cmds/serve/serveHandler.ts b/packages/snaps-cli/src/cmds/serve/serveHandler.ts index c23669c3f2..4d1fe13b37 100644 --- a/packages/snaps-cli/src/cmds/serve/serveHandler.ts +++ b/packages/snaps-cli/src/cmds/serve/serveHandler.ts @@ -2,7 +2,7 @@ import { logInfo, validateDirPath } from '@metamask/snaps-utils'; import http from 'http'; import serveHandler from 'serve-handler'; -import { YargsArgs } from '../../types/yargs'; +import type { YargsArgs } from '../../types/yargs'; import { logRequest, logServerError, logServerListening } from './serveUtils'; /** diff --git a/packages/snaps-cli/src/cmds/watch/index.ts b/packages/snaps-cli/src/cmds/watch/index.ts index 7722c38173..19ead78d2f 100644 --- a/packages/snaps-cli/src/cmds/watch/index.ts +++ b/packages/snaps-cli/src/cmds/watch/index.ts @@ -1,7 +1,7 @@ -import yargs from 'yargs'; +import type yargs from 'yargs'; import builders from '../../builders'; -import { YargsArgs } from '../../types/yargs'; +import type { YargsArgs } from '../../types/yargs'; import { processInvalidTranspilation } from '../build/utils'; import { watch } from './watchHandler'; diff --git a/packages/snaps-cli/src/cmds/watch/watchHandler.ts b/packages/snaps-cli/src/cmds/watch/watchHandler.ts index 15236237c4..d0ab164bb9 100644 --- a/packages/snaps-cli/src/cmds/watch/watchHandler.ts +++ b/packages/snaps-cli/src/cmds/watch/watchHandler.ts @@ -10,7 +10,7 @@ import { import chokidar from 'chokidar'; import pathUtils from 'path'; -import { YargsArgs } from '../../types/yargs'; +import type { YargsArgs } from '../../types/yargs'; import { CONFIG_FILE, loadConfig } from '../../utils'; import { bundle } from '../build/bundle'; import { evalHandler } from '../eval/evalHandler'; diff --git a/packages/snaps-cli/src/main.ts b/packages/snaps-cli/src/main.ts index fae630455d..6e9dd7bb89 100755 --- a/packages/snaps-cli/src/main.ts +++ b/packages/snaps-cli/src/main.ts @@ -1,5 +1,4 @@ #!/usr/bin/env node - import { cli } from './cli'; import commands from './cmds'; diff --git a/packages/snaps-cli/src/types/yargs.d.ts b/packages/snaps-cli/src/types/yargs.d.ts index ec11741661..e4cbe797cd 100644 --- a/packages/snaps-cli/src/types/yargs.d.ts +++ b/packages/snaps-cli/src/types/yargs.d.ts @@ -1,7 +1,7 @@ -import { Options } from 'yargs'; +import type { Options } from 'yargs'; // eslint-disable-next-line @typescript-eslint/ban-types -type OptionalArguments = T & { +type OptionalArguments = Type & { /** Non-option arguments */ _?: (string | number)[]; diff --git a/packages/snaps-cli/src/utils/misc.ts b/packages/snaps-cli/src/utils/misc.ts index 72b16d2198..6b8cd2b9e4 100644 --- a/packages/snaps-cli/src/utils/misc.ts +++ b/packages/snaps-cli/src/utils/misc.ts @@ -2,7 +2,7 @@ import { logError as logErrorUtil } from '@metamask/snaps-utils'; import { hasProperty } from '@metamask/utils'; import { promises as filesystem } from 'fs'; import path from 'path'; -import { Arguments } from 'yargs'; +import type { Arguments } from 'yargs'; export const permRequestKeys = [ '@context', @@ -152,6 +152,7 @@ export async function writeError( if (!global.snaps.isWatching) { // TODO(ritave): Remove process exit and change into collapse of functions // https://github.com/MetaMask/snaps-monorepo/issues/81 + // eslint-disable-next-line n/no-process-exit process.exit(1); } } diff --git a/packages/snaps-cli/src/utils/snap-config.test.ts b/packages/snaps-cli/src/utils/snap-config.test.ts index 69eb082373..6a564ca453 100644 --- a/packages/snaps-cli/src/utils/snap-config.test.ts +++ b/packages/snaps-cli/src/utils/snap-config.test.ts @@ -2,7 +2,8 @@ import path from 'path'; import builders from '../builders'; import * as miscUtils from './misc'; -import { applyConfig, loadConfig, SnapConfig } from './snap-config'; +import type { SnapConfig } from './snap-config'; +import { applyConfig, loadConfig } from './snap-config'; const CONFIG_FILE_LOCATION = path.resolve(process.cwd(), miscUtils.CONFIG_FILE); diff --git a/packages/snaps-cli/src/utils/snap-config.ts b/packages/snaps-cli/src/utils/snap-config.ts index 3d8c09e695..794a178746 100644 --- a/packages/snaps-cli/src/utils/snap-config.ts +++ b/packages/snaps-cli/src/utils/snap-config.ts @@ -1,10 +1,11 @@ import { hasProperty } from '@metamask/utils'; import type browserify from 'browserify'; import path from 'path'; -import { object, optional, func, Infer, is } from 'superstruct'; -import { Arguments } from 'yargs'; +import type { Infer } from 'superstruct'; +import { object, optional, func, is } from 'superstruct'; +import type { Arguments } from 'yargs'; import yargsParse from 'yargs-parser'; -import yargs from 'yargs/yargs'; +import type yargs from 'yargs/yargs'; import builders from '../builders'; import { CONFIG_FILE, logError } from './misc'; @@ -54,7 +55,7 @@ export function loadConfig(cached = true): SnapConfig { let config: any; try { - // eslint-disable-next-line node/global-require, import/no-dynamic-require, @typescript-eslint/no-require-imports + // eslint-disable-next-line n/global-require, import/no-dynamic-require, @typescript-eslint/no-require-imports config = require(path.resolve(process.cwd(), CONFIG_FILE)); } catch (error: any) { if (error.code === 'MODULE_NOT_FOUND') { @@ -62,6 +63,7 @@ export function loadConfig(cached = true): SnapConfig { return snapConfigCache; } logError(`Error during parsing of ${CONFIG_FILE}`, error); + // eslint-disable-next-line n/no-process-exit return process.exit(1); } @@ -69,6 +71,7 @@ export function loadConfig(cached = true): SnapConfig { logError( `Can't validate ${CONFIG_FILE}. Ensure it's a proper javascript file and abides with the structure of a snap configuration file`, ); + // eslint-disable-next-line n/no-process-exit return process.exit(1); } snapConfigCache = config; @@ -138,6 +141,7 @@ export function applyConfig( logError( `Error: Encountered unrecognized config property "options.${key}" in config file "${CONFIG_FILE}". Remove the property and try again.`, ); + // eslint-disable-next-line n/no-process-exit process.exit(1); } } diff --git a/packages/snaps-controllers/package.json b/packages/snaps-controllers/package.json index 87694b1a59..27d4f4577a 100644 --- a/packages/snaps-controllers/package.json +++ b/packages/snaps-controllers/package.json @@ -70,10 +70,10 @@ "@esbuild-plugins/node-modules-polyfill": "^0.2.2", "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@metamask/template-snap": "^0.7.0", "@peculiar/webcrypto": "^1.3.3", "@swc/cli": "^0.1.62", @@ -103,8 +103,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "expect-webdriverio": "^4.1.2", "istanbul-lib-coverage": "^3.2.0", "istanbul-lib-report": "^3.0.0", diff --git a/packages/snaps-controllers/scripts/coverage.ts b/packages/snaps-controllers/scripts/coverage.ts index 75c1ac5b71..0619b58c8d 100644 --- a/packages/snaps-controllers/scripts/coverage.ts +++ b/packages/snaps-controllers/scripts/coverage.ts @@ -1,9 +1,12 @@ /* eslint-disable no-console */ import { promises as fs } from 'fs'; -import { CoverageMap, createCoverageMap } from 'istanbul-lib-coverage'; -import { createContext, ReportBase } from 'istanbul-lib-report'; -import reports, { ReportOptions, ReportType } from 'istanbul-reports'; +import type { CoverageMap } from 'istanbul-lib-coverage'; +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 { resolve } from 'path'; import * as process from 'process'; diff --git a/packages/snaps-controllers/src/cronjob/CronjobController.test.ts b/packages/snaps-controllers/src/cronjob/CronjobController.test.ts index ce0140bc9b..cdb0842cc3 100644 --- a/packages/snaps-controllers/src/cronjob/CronjobController.test.ts +++ b/packages/snaps-controllers/src/cronjob/CronjobController.test.ts @@ -1,6 +1,8 @@ -import { HandlerType, TruncatedSnap } from '@metamask/snaps-utils'; +import type { TruncatedSnap } from '@metamask/snaps-utils'; +import { HandlerType } from '@metamask/snaps-utils'; import { MOCK_SNAP_ID } from '@metamask/snaps-utils/test-utils'; -import { Duration, inMilliseconds, SemVerVersion } from '@metamask/utils'; +import type { SemVerVersion } from '@metamask/utils'; +import { Duration, inMilliseconds } from '@metamask/utils'; import { SnapEndowments } from '../snaps'; import { diff --git a/packages/snaps-controllers/src/cronjob/CronjobController.ts b/packages/snaps-controllers/src/cronjob/CronjobController.ts index 84e8c82a9d..861df0a20e 100644 --- a/packages/snaps-controllers/src/cronjob/CronjobController.ts +++ b/packages/snaps-controllers/src/cronjob/CronjobController.ts @@ -1,28 +1,27 @@ -import { - BaseControllerV2 as BaseController, - RestrictedControllerMessenger, -} from '@metamask/base-controller'; -import { GetPermissions } from '@metamask/permission-controller'; -import { - HandlerType, +import type { RestrictedControllerMessenger } from '@metamask/base-controller'; +import { BaseControllerV2 as BaseController } from '@metamask/base-controller'; +import type { GetPermissions } from '@metamask/permission-controller'; +import type { SnapId, ValidatedSnapId, TruncatedSnap, CronjobSpecification, +} from '@metamask/snaps-utils'; +import { + HandlerType, parseCronExpression, logError, } from '@metamask/snaps-utils'; import { Duration, inMilliseconds } from '@metamask/utils'; -import { +import type { GetAllSnaps, - getRunnableSnaps, HandleSnapRequest, - SnapEndowments, SnapInstalled, SnapRemoved, SnapUpdated, } from '..'; +import { getRunnableSnaps, SnapEndowments } from '..'; import { getCronjobCaveatJobs } from '../snaps/endowments/cronjob'; import { Timer } from '../snaps/Timer'; diff --git a/packages/snaps-controllers/src/fsm.test.ts b/packages/snaps-controllers/src/fsm.test.ts index 9d0737cc74..01c08fee90 100644 --- a/packages/snaps-controllers/src/fsm.test.ts +++ b/packages/snaps-controllers/src/fsm.test.ts @@ -1,6 +1,7 @@ import { AssertionError } from '@metamask/utils'; -import { createMachine, interpret, StateMachine } from '@xstate/fsm'; -import { InitEvent } from '@xstate/fsm/lib/types'; +import type { StateMachine } from '@xstate/fsm'; +import { createMachine, interpret } from '@xstate/fsm'; +import type { InitEvent } from '@xstate/fsm/lib/types'; import { forceStrict, validateMachine } from './fsm'; diff --git a/packages/snaps-controllers/src/fsm.ts b/packages/snaps-controllers/src/fsm.ts index 753fdbc6f9..3900dae334 100644 --- a/packages/snaps-controllers/src/fsm.ts +++ b/packages/snaps-controllers/src/fsm.ts @@ -1,10 +1,6 @@ import { assert } from '@metamask/utils'; -import { - EventObject, - InterpreterStatus, - StateMachine, - Typestate, -} from '@xstate/fsm'; +import type { EventObject, StateMachine, Typestate } from '@xstate/fsm'; +import { InterpreterStatus } from '@xstate/fsm'; /** * Validates the set-up of a @xstate/fsm machine. @@ -25,7 +21,7 @@ export function validateMachine< }; // 1. - const toArray = (obj: T | T[]): T[] => { + const toArray = (obj: Type | Type[]): Type[] => { if (Array.isArray(obj)) { return obj; } else if (obj === undefined || obj === null) { @@ -33,6 +29,7 @@ export function validateMachine< } return [obj]; }; + const allActions = new Set(); const addActions = (actions: any) => toArray(actions) diff --git a/packages/snaps-controllers/src/services/AbstractExecutionService.test.ts b/packages/snaps-controllers/src/services/AbstractExecutionService.test.ts index df9989afad..7176f7ffe9 100644 --- a/packages/snaps-controllers/src/services/AbstractExecutionService.test.ts +++ b/packages/snaps-controllers/src/services/AbstractExecutionService.test.ts @@ -1,7 +1,7 @@ import { HandlerType } from '@metamask/snaps-utils'; import { createService } from '../test-utils'; -import { ExecutionServiceArgs } from './AbstractExecutionService'; +import type { ExecutionServiceArgs } from './AbstractExecutionService'; import { NodeThreadExecutionService } from './node'; class MockExecutionService extends NodeThreadExecutionService { diff --git a/packages/snaps-controllers/src/services/AbstractExecutionService.ts b/packages/snaps-controllers/src/services/AbstractExecutionService.ts index d827cb6439..4ec0b30f58 100644 --- a/packages/snaps-controllers/src/services/AbstractExecutionService.ts +++ b/packages/snaps-controllers/src/services/AbstractExecutionService.ts @@ -1,32 +1,23 @@ import ObjectMultiplex from '@metamask/object-multiplex'; -import { BasePostMessageStream } from '@metamask/post-message-stream'; -import { - SnapRpcHook, - SnapRpcHookArgs, - SNAP_STREAM_NAMES, - logError, -} from '@metamask/snaps-utils'; -import { - Duration, - isJsonRpcNotification, - isObject, - Json, - JsonRpcNotification, -} from '@metamask/utils'; -import { - JsonRpcEngine, +import type { BasePostMessageStream } from '@metamask/post-message-stream'; +import type { SnapRpcHook, SnapRpcHookArgs } from '@metamask/snaps-utils'; +import { SNAP_STREAM_NAMES, logError } from '@metamask/snaps-utils'; +import type { Json, JsonRpcNotification } from '@metamask/utils'; +import { Duration, isJsonRpcNotification, isObject } from '@metamask/utils'; +import type { // TODO: Replace with @metamask/utils version after bumping json-rpc-engine JsonRpcRequest, PendingJsonRpcResponse, } from 'json-rpc-engine'; +import { JsonRpcEngine } from 'json-rpc-engine'; import { createStreamMiddleware } from 'json-rpc-middleware-stream'; import { nanoid } from 'nanoid'; import pump from 'pump'; -import { Duplex } from 'stream'; +import type { Duplex } from 'stream'; import { log } from '../logging'; import { hasTimedOut, withTimeout } from '../utils'; -import { +import type { ExecutionService, ExecutionServiceMessenger, SnapErrorJson, diff --git a/packages/snaps-controllers/src/services/ExecutionService.ts b/packages/snaps-controllers/src/services/ExecutionService.ts index 0d515a9fd3..f4692c5323 100644 --- a/packages/snaps-controllers/src/services/ExecutionService.ts +++ b/packages/snaps-controllers/src/services/ExecutionService.ts @@ -1,6 +1,6 @@ -import { RestrictedControllerMessenger } from '@metamask/base-controller'; -import { SnapId, SnapRpcHookArgs } from '@metamask/snaps-utils'; -import { Json } from '@metamask/types'; +import type { RestrictedControllerMessenger } from '@metamask/base-controller'; +import type { SnapId, SnapRpcHookArgs } from '@metamask/snaps-utils'; +import type { Json } from '@metamask/types'; type TerminateSnap = (snapId: string) => Promise; type TerminateAll = () => Promise; diff --git a/packages/snaps-controllers/src/services/ProxyPostMessageStream.ts b/packages/snaps-controllers/src/services/ProxyPostMessageStream.ts index 9d34cbc8a4..6d14b12093 100644 --- a/packages/snaps-controllers/src/services/ProxyPostMessageStream.ts +++ b/packages/snaps-controllers/src/services/ProxyPostMessageStream.ts @@ -1,5 +1,5 @@ import { BasePostMessageStream } from '@metamask/post-message-stream'; -import { JsonRpcRequest } from '@metamask/utils'; +import type { JsonRpcRequest } from '@metamask/utils'; export type ProxyPostMessageStreamArgs = { stream: BasePostMessageStream; diff --git a/packages/snaps-controllers/src/services/iframe/IframeExecutionService.ts b/packages/snaps-controllers/src/services/iframe/IframeExecutionService.ts index f630223322..52b6082dab 100644 --- a/packages/snaps-controllers/src/services/iframe/IframeExecutionService.ts +++ b/packages/snaps-controllers/src/services/iframe/IframeExecutionService.ts @@ -1,14 +1,9 @@ -import { - WindowPostMessageStream, - BasePostMessageStream, -} from '@metamask/post-message-stream'; +import type { BasePostMessageStream } from '@metamask/post-message-stream'; +import { WindowPostMessageStream } from '@metamask/post-message-stream'; import { createWindow } from '@metamask/snaps-utils'; -import { - Job, - AbstractExecutionService, - ExecutionServiceArgs, -} from '../AbstractExecutionService'; +import type { Job, ExecutionServiceArgs } from '../AbstractExecutionService'; +import { AbstractExecutionService } from '../AbstractExecutionService'; type IframeExecutionEnvironmentServiceArgs = { iframeUrl: URL; diff --git a/packages/snaps-controllers/src/services/node/NodeProcessExecutionService.test.ts b/packages/snaps-controllers/src/services/node/NodeProcessExecutionService.test.ts index 2df915754f..131a1acce5 100644 --- a/packages/snaps-controllers/src/services/node/NodeProcessExecutionService.test.ts +++ b/packages/snaps-controllers/src/services/node/NodeProcessExecutionService.test.ts @@ -1,7 +1,8 @@ -import { HandlerType, SnapId } from '@metamask/snaps-utils'; +import type { SnapId } from '@metamask/snaps-utils'; +import { HandlerType } from '@metamask/snaps-utils'; import { createService, MOCK_BLOCK_NUMBER } from '../../test-utils'; -import { SnapErrorJson } from '../ExecutionService'; +import type { SnapErrorJson } from '../ExecutionService'; import { NodeProcessExecutionService } from './NodeProcessExecutionService'; const ON_RPC_REQUEST = HandlerType.OnRpcRequest; diff --git a/packages/snaps-controllers/src/services/node/NodeProcessExecutionService.ts b/packages/snaps-controllers/src/services/node/NodeProcessExecutionService.ts index 8a932a5787..158c0f0f19 100644 --- a/packages/snaps-controllers/src/services/node/NodeProcessExecutionService.ts +++ b/packages/snaps-controllers/src/services/node/NodeProcessExecutionService.ts @@ -1,10 +1,10 @@ -import { - ProcessParentMessageStream, - BasePostMessageStream, -} from '@metamask/post-message-stream'; -import { ChildProcess, fork } from 'child_process'; +import type { BasePostMessageStream } from '@metamask/post-message-stream'; +import { ProcessParentMessageStream } from '@metamask/post-message-stream'; +import type { ChildProcess } from 'child_process'; +import { fork } from 'child_process'; -import { AbstractExecutionService, Job } from '..'; +import type { Job } from '..'; +import { AbstractExecutionService } from '..'; export class NodeProcessExecutionService extends AbstractExecutionService { protected async initEnvStream(): Promise<{ diff --git a/packages/snaps-controllers/src/services/node/NodeThreadExecutionService.test.ts b/packages/snaps-controllers/src/services/node/NodeThreadExecutionService.test.ts index 4f66871309..e792881fb2 100644 --- a/packages/snaps-controllers/src/services/node/NodeThreadExecutionService.test.ts +++ b/packages/snaps-controllers/src/services/node/NodeThreadExecutionService.test.ts @@ -2,9 +2,10 @@ import { createService, MOCK_BLOCK_NUMBER, } from '@metamask/snaps-controllers/test-utils'; -import { HandlerType, SnapId } from '@metamask/snaps-utils'; +import type { SnapId } from '@metamask/snaps-utils'; +import { HandlerType } from '@metamask/snaps-utils'; -import { SnapErrorJson } from '../ExecutionService'; +import type { SnapErrorJson } from '../ExecutionService'; import { NodeThreadExecutionService } from './NodeThreadExecutionService'; const ON_RPC_REQUEST = HandlerType.OnRpcRequest; diff --git a/packages/snaps-controllers/src/services/node/NodeThreadExecutionService.ts b/packages/snaps-controllers/src/services/node/NodeThreadExecutionService.ts index f4bdb4d2cd..1bca6e9764 100644 --- a/packages/snaps-controllers/src/services/node/NodeThreadExecutionService.ts +++ b/packages/snaps-controllers/src/services/node/NodeThreadExecutionService.ts @@ -1,11 +1,10 @@ -import { - ThreadParentMessageStream, - BasePostMessageStream, -} from '@metamask/post-message-stream'; +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 { AbstractExecutionService, Job } from '..'; +import type { Job } from '..'; +import { AbstractExecutionService } from '..'; export class NodeThreadExecutionService extends AbstractExecutionService { protected async initEnvStream(): Promise<{ diff --git a/packages/snaps-controllers/src/services/offscreen/OffscreenExecutionService.test.ts b/packages/snaps-controllers/src/services/offscreen/OffscreenExecutionService.test.ts index 02f8f989ee..f243b94e88 100644 --- a/packages/snaps-controllers/src/services/offscreen/OffscreenExecutionService.test.ts +++ b/packages/snaps-controllers/src/services/offscreen/OffscreenExecutionService.test.ts @@ -4,12 +4,8 @@ import { MOCK_LOCAL_SNAP_ID, MOCK_SNAP_ID, } from '@metamask/snaps-utils/test-utils'; -import { - isJsonRpcRequest, - isPlainObject, - Json, - JsonRpcRequest, -} from '@metamask/utils'; +import type { Json, JsonRpcRequest } from '@metamask/utils'; +import { isJsonRpcRequest, isPlainObject } from '@metamask/utils'; import { getMockedFunction } from '../../test-utils/mock'; import { OffscreenExecutionService } from './OffscreenExecutionService'; diff --git a/packages/snaps-controllers/src/services/offscreen/OffscreenExecutionService.ts b/packages/snaps-controllers/src/services/offscreen/OffscreenExecutionService.ts index 14a682e443..b71826065e 100644 --- a/packages/snaps-controllers/src/services/offscreen/OffscreenExecutionService.ts +++ b/packages/snaps-controllers/src/services/offscreen/OffscreenExecutionService.ts @@ -1,11 +1,8 @@ import { BrowserRuntimePostMessageStream } from '@metamask/post-message-stream'; import { nanoid } from 'nanoid'; -import { - AbstractExecutionService, - ExecutionServiceArgs, - Job, -} from '../AbstractExecutionService'; +import type { ExecutionServiceArgs, Job } from '../AbstractExecutionService'; +import { AbstractExecutionService } from '../AbstractExecutionService'; import { ProxyPostMessageStream } from '../ProxyPostMessageStream'; type OffscreenExecutionEnvironmentServiceArgs = { diff --git a/packages/snaps-controllers/src/services/webworker/WebWorkerExecutionService.ts b/packages/snaps-controllers/src/services/webworker/WebWorkerExecutionService.ts index 249df8b92a..4d6c425f6a 100644 --- a/packages/snaps-controllers/src/services/webworker/WebWorkerExecutionService.ts +++ b/packages/snaps-controllers/src/services/webworker/WebWorkerExecutionService.ts @@ -1,16 +1,11 @@ -import { - BasePostMessageStream, - WindowPostMessageStream, -} from '@metamask/post-message-stream'; +import type { BasePostMessageStream } from '@metamask/post-message-stream'; +import { WindowPostMessageStream } from '@metamask/post-message-stream'; import { createWindow } from '@metamask/snaps-utils'; import { assert } from '@metamask/utils'; import { nanoid } from 'nanoid'; -import { - AbstractExecutionService, - ExecutionServiceArgs, - Job, -} from '../AbstractExecutionService'; +import type { ExecutionServiceArgs, Job } from '../AbstractExecutionService'; +import { AbstractExecutionService } from '../AbstractExecutionService'; import { ProxyPostMessageStream } from '../ProxyPostMessageStream'; type WebWorkerExecutionEnvironmentServiceArgs = { diff --git a/packages/snaps-controllers/src/snaps/SnapController.test.ts b/packages/snaps-controllers/src/snaps/SnapController.test.ts index 93d16ea2f7..be714a7437 100644 --- a/packages/snaps-controllers/src/snaps/SnapController.test.ts +++ b/packages/snaps-controllers/src/snaps/SnapController.test.ts @@ -1,20 +1,19 @@ import { getPersistentState } from '@metamask/base-controller'; -import { +import type { Caveat, SubjectPermissions, ValidPermission, } from '@metamask/permission-controller'; import { WALLET_SNAP_PERMISSION_KEY } from '@metamask/rpc-methods'; +import type { SnapPermissions, ValidatedSnapId } from '@metamask/snaps-utils'; import { DEFAULT_ENDOWMENTS, getSnapChecksum, HandlerType, SnapCaveatType, - SnapPermissions, SnapStatus, VirtualFile, DEFAULT_REQUESTED_SNAP_VERSION, - ValidatedSnapId, } from '@metamask/snaps-utils'; import { DEFAULT_SNAP_BUNDLE, @@ -30,15 +29,17 @@ import { MOCK_ORIGIN, MOCK_SNAP_ID, } from '@metamask/snaps-utils/test-utils'; -import { AssertionError, SemVerVersion, SemVerRange } from '@metamask/utils'; +import type { SemVerVersion, SemVerRange } from '@metamask/utils'; +import { AssertionError } from '@metamask/utils'; import { ethErrors } from 'eth-rpc-errors'; import fetchMock from 'jest-fetch-mock'; import { createAsyncMiddleware, JsonRpcEngine } from 'json-rpc-engine'; import { createEngineStream } from 'json-rpc-middleware-stream'; import pump from 'pump'; -import { Duplex } from 'stream'; +import type { Duplex } from 'stream'; -import { NodeThreadExecutionService, setupMultiplex } from '../services'; +import type { NodeThreadExecutionService } from '../services'; +import { setupMultiplex } from '../services'; import { ExecutionEnvironmentStub, getControllerMessenger, @@ -66,8 +67,8 @@ import { import { delay } from '../utils'; import { handlerEndowments, SnapEndowments } from './endowments'; import { SnapsRegistryStatus } from './registry'; +import type { SnapControllerState } from './SnapController'; import { - SnapControllerState, SNAP_APPROVAL_INSTALL, SNAP_APPROVAL_RESULT, SNAP_APPROVAL_UPDATE, diff --git a/packages/snaps-controllers/src/snaps/SnapController.ts b/packages/snaps-controllers/src/snaps/SnapController.ts index 96f903feaa..d0923c09b8 100644 --- a/packages/snaps-controllers/src/snaps/SnapController.ts +++ b/packages/snaps-controllers/src/snaps/SnapController.ts @@ -1,12 +1,10 @@ -import { +import type { AddApprovalRequest, UpdateRequestState, } from '@metamask/approval-controller'; -import { - BaseControllerV2 as BaseController, - RestrictedControllerMessenger, -} from '@metamask/base-controller'; -import { +import type { RestrictedControllerMessenger } from '@metamask/base-controller'; +import { BaseControllerV2 as BaseController } from '@metamask/base-controller'; +import type { Caveat, GetEndowments, GetPermissions, @@ -24,40 +22,43 @@ import { ValidPermission, UpdateCaveat, GetSubjectMetadata, - SubjectType, } from '@metamask/permission-controller'; +import { SubjectType } from '@metamask/permission-controller'; import { WALLET_SNAP_PERMISSION_KEY } from '@metamask/rpc-methods'; -import { BlockReason } from '@metamask/snaps-registry'; -import { - assertIsSnapManifest, - DEFAULT_ENDOWMENTS, - DEFAULT_REQUESTED_SNAP_VERSION, +import type { BlockReason } from '@metamask/snaps-registry'; +import type { InstallSnapsResult, - normalizeRelative, PersistedSnap, ProcessSnapResult, RequestedSnapPermissions, - resolveVersionRange, Snap, - SnapCaveatType, SnapId, SnapManifest, SnapRpcHook, SnapRpcHookArgs, - SnapStatus, - SnapStatusEvents, StatusContext, StatusEvents, StatusStates, TruncatedSnap, TruncatedSnapFields, ValidatedSnapId, - assertIsValidSnapId, VirtualFile, +} from '@metamask/snaps-utils'; +import { + assertIsSnapManifest, + DEFAULT_ENDOWMENTS, + DEFAULT_REQUESTED_SNAP_VERSION, + normalizeRelative, + resolveVersionRange, + SnapCaveatType, + SnapStatus, + SnapStatusEvents, + assertIsValidSnapId, logError, logWarning, validateFetchedSnap, } from '@metamask/snaps-utils'; +import type { Json, NonEmptyArray, SemVerRange } from '@metamask/utils'; import { assert, assertIsJsonRpcRequest, @@ -68,20 +69,18 @@ import { inMilliseconds, isNonEmptyArray, isValidSemVerRange, - Json, - NonEmptyArray, satisfiesVersionRange, - SemVerRange, timeSince, } from '@metamask/utils'; -import { createMachine, interpret, StateMachine } from '@xstate/fsm'; +import type { StateMachine } from '@xstate/fsm'; +import { createMachine, interpret } from '@xstate/fsm'; import { ethErrors } from 'eth-rpc-errors'; import type { Patch } from 'immer'; import { nanoid } from 'nanoid'; import { forceStrict, validateMachine } from '../fsm'; import { log } from '../logging'; -import { +import type { ExecuteSnapAction, ExecutionServiceEvents, HandleRpcRequestAction, @@ -92,16 +91,17 @@ import { import { hasTimedOut, setDiff, withTimeout } from '../utils'; import { handlerEndowments, SnapEndowments } from './endowments'; import { getRpcCaveatOrigins } from './endowments/rpc'; -import { detectSnapLocation, SnapLocation } from './location'; +import type { SnapLocation } from './location'; +import { detectSnapLocation } from './location'; import { processSnapPermissions } from './permissions'; -import { +import type { GetMetadata, GetResult, SnapsRegistryInfo, SnapsRegistryMetadata, SnapsRegistryRequest, - SnapsRegistryStatus, } from './registry'; +import { SnapsRegistryStatus } from './registry'; import { RequestQueue } from './RequestQueue'; import { Timer } from './Timer'; diff --git a/packages/snaps-controllers/src/snaps/endowments/cronjob.test.ts b/packages/snaps-controllers/src/snaps/endowments/cronjob.test.ts index d0e3e5ba5c..bb38e9e73f 100644 --- a/packages/snaps-controllers/src/snaps/endowments/cronjob.test.ts +++ b/packages/snaps-controllers/src/snaps/endowments/cronjob.test.ts @@ -1,8 +1,5 @@ -import { - Caveat, - PermissionType, - SubjectType, -} from '@metamask/permission-controller'; +import type { Caveat } from '@metamask/permission-controller'; +import { PermissionType, SubjectType } from '@metamask/permission-controller'; import { SnapCaveatType } from '@metamask/snaps-utils'; import { SnapEndowments } from '.'; diff --git a/packages/snaps-controllers/src/snaps/endowments/cronjob.ts b/packages/snaps-controllers/src/snaps/endowments/cronjob.ts index 71d7165b5c..c243b9b658 100644 --- a/packages/snaps-controllers/src/snaps/endowments/cronjob.ts +++ b/packages/snaps-controllers/src/snaps/endowments/cronjob.ts @@ -1,25 +1,19 @@ -import { +import type { PermissionSpecificationBuilder, - PermissionType, EndowmentGetterParams, ValidPermissionSpecification, PermissionConstraint, Caveat, CaveatSpecificationConstraint, - SubjectType, } from '@metamask/permission-controller'; +import { PermissionType, SubjectType } from '@metamask/permission-controller'; +import type { CronjobSpecification } from '@metamask/snaps-utils'; import { SnapCaveatType, - CronjobSpecification, isCronjobSpecificationArray, } from '@metamask/snaps-utils'; -import { - assert, - hasProperty, - isPlainObject, - Json, - NonEmptyArray, -} from '@metamask/utils'; +import type { Json, NonEmptyArray } from '@metamask/utils'; +import { assert, hasProperty, isPlainObject } from '@metamask/utils'; import { ethErrors } from 'eth-rpc-errors'; import { SnapEndowments } from './enum'; diff --git a/packages/snaps-controllers/src/snaps/endowments/ethereum-provider.ts b/packages/snaps-controllers/src/snaps/endowments/ethereum-provider.ts index 670f3770ea..3cbc2785fe 100644 --- a/packages/snaps-controllers/src/snaps/endowments/ethereum-provider.ts +++ b/packages/snaps-controllers/src/snaps/endowments/ethereum-provider.ts @@ -1,10 +1,9 @@ -import { +import type { EndowmentGetterParams, PermissionSpecificationBuilder, - PermissionType, ValidPermissionSpecification, - SubjectType, } from '@metamask/permission-controller'; +import { PermissionType, SubjectType } from '@metamask/permission-controller'; import { SnapEndowments } from './enum'; diff --git a/packages/snaps-controllers/src/snaps/endowments/index.ts b/packages/snaps-controllers/src/snaps/endowments/index.ts index 6ab9de693f..d193b07712 100644 --- a/packages/snaps-controllers/src/snaps/endowments/index.ts +++ b/packages/snaps-controllers/src/snaps/endowments/index.ts @@ -1,6 +1,6 @@ -import { PermissionConstraint } from '@metamask/permission-controller'; +import type { PermissionConstraint } from '@metamask/permission-controller'; import { HandlerType } from '@metamask/snaps-utils'; -import { Json } from '@metamask/utils'; +import type { Json } from '@metamask/utils'; import { cronjobCaveatSpecifications, diff --git a/packages/snaps-controllers/src/snaps/endowments/long-running.ts b/packages/snaps-controllers/src/snaps/endowments/long-running.ts index 625fe3434f..19c554704b 100644 --- a/packages/snaps-controllers/src/snaps/endowments/long-running.ts +++ b/packages/snaps-controllers/src/snaps/endowments/long-running.ts @@ -1,10 +1,9 @@ -import { +import type { PermissionSpecificationBuilder, - PermissionType, EndowmentGetterParams, ValidPermissionSpecification, - SubjectType, } from '@metamask/permission-controller'; +import { PermissionType, SubjectType } from '@metamask/permission-controller'; import { SnapEndowments } from './enum'; diff --git a/packages/snaps-controllers/src/snaps/endowments/network-access.ts b/packages/snaps-controllers/src/snaps/endowments/network-access.ts index f4c3288d0d..872863dd78 100644 --- a/packages/snaps-controllers/src/snaps/endowments/network-access.ts +++ b/packages/snaps-controllers/src/snaps/endowments/network-access.ts @@ -1,10 +1,9 @@ -import { +import type { EndowmentGetterParams, PermissionSpecificationBuilder, - PermissionType, ValidPermissionSpecification, - SubjectType, } from '@metamask/permission-controller'; +import { PermissionType, SubjectType } from '@metamask/permission-controller'; import { SnapEndowments } from './enum'; diff --git a/packages/snaps-controllers/src/snaps/endowments/rpc.ts b/packages/snaps-controllers/src/snaps/endowments/rpc.ts index 1c9b81ec1c..6ebc6c0285 100644 --- a/packages/snaps-controllers/src/snaps/endowments/rpc.ts +++ b/packages/snaps-controllers/src/snaps/endowments/rpc.ts @@ -1,26 +1,17 @@ -import { +import type { Caveat, CaveatSpecificationConstraint, EndowmentGetterParams, PermissionConstraint, PermissionSpecificationBuilder, - PermissionType, PermissionValidatorConstraint, ValidPermissionSpecification, - SubjectType, } from '@metamask/permission-controller'; -import { - assertIsRpcOrigins, - RpcOrigins, - SnapCaveatType, -} from '@metamask/snaps-utils'; -import { - hasProperty, - isPlainObject, - Json, - NonEmptyArray, - assert, -} from '@metamask/utils'; +import { PermissionType, SubjectType } from '@metamask/permission-controller'; +import type { RpcOrigins } from '@metamask/snaps-utils'; +import { assertIsRpcOrigins, SnapCaveatType } from '@metamask/snaps-utils'; +import type { Json, NonEmptyArray } from '@metamask/utils'; +import { hasProperty, isPlainObject, assert } from '@metamask/utils'; import { ethErrors } from 'eth-rpc-errors'; import { SnapEndowments } from './enum'; diff --git a/packages/snaps-controllers/src/snaps/endowments/transaction-insight.test.ts b/packages/snaps-controllers/src/snaps/endowments/transaction-insight.test.ts index 379ed45818..99babd7606 100644 --- a/packages/snaps-controllers/src/snaps/endowments/transaction-insight.test.ts +++ b/packages/snaps-controllers/src/snaps/endowments/transaction-insight.test.ts @@ -1,8 +1,5 @@ -import { - PermissionConstraint, - PermissionType, - SubjectType, -} from '@metamask/permission-controller'; +import type { PermissionConstraint } from '@metamask/permission-controller'; +import { PermissionType, SubjectType } from '@metamask/permission-controller'; import { SnapCaveatType } from '@metamask/snaps-utils'; import { SnapEndowments } from '.'; diff --git a/packages/snaps-controllers/src/snaps/endowments/transaction-insight.ts b/packages/snaps-controllers/src/snaps/endowments/transaction-insight.ts index ca80ca16d4..cc0b37e90d 100644 --- a/packages/snaps-controllers/src/snaps/endowments/transaction-insight.ts +++ b/packages/snaps-controllers/src/snaps/endowments/transaction-insight.ts @@ -1,23 +1,16 @@ -import { +import type { PermissionSpecificationBuilder, - PermissionType, EndowmentGetterParams, ValidPermissionSpecification, PermissionValidatorConstraint, PermissionConstraint, CaveatSpecificationConstraint, Caveat, - SubjectType, } from '@metamask/permission-controller'; +import { PermissionType, SubjectType } from '@metamask/permission-controller'; import { SnapCaveatType } from '@metamask/snaps-utils'; -import { - assert, - hasProperty, - isObject, - isPlainObject, - Json, - NonEmptyArray, -} from '@metamask/utils'; +import type { Json, NonEmptyArray } from '@metamask/utils'; +import { assert, hasProperty, isObject, isPlainObject } from '@metamask/utils'; import { ethErrors } from 'eth-rpc-errors'; import { SnapEndowments } from './enum'; diff --git a/packages/snaps-controllers/src/snaps/endowments/web-assembly.ts b/packages/snaps-controllers/src/snaps/endowments/web-assembly.ts index 5c4182e53e..d2c5c8c982 100644 --- a/packages/snaps-controllers/src/snaps/endowments/web-assembly.ts +++ b/packages/snaps-controllers/src/snaps/endowments/web-assembly.ts @@ -1,10 +1,9 @@ -import { +import type { EndowmentGetterParams, PermissionSpecificationBuilder, - PermissionType, ValidPermissionSpecification, - SubjectType, } from '@metamask/permission-controller'; +import { PermissionType, SubjectType } from '@metamask/permission-controller'; import { SnapEndowments } from './enum'; diff --git a/packages/snaps-controllers/src/snaps/location/http.ts b/packages/snaps-controllers/src/snaps/location/http.ts index d01fbec27d..d441617415 100644 --- a/packages/snaps-controllers/src/snaps/location/http.ts +++ b/packages/snaps-controllers/src/snaps/location/http.ts @@ -1,5 +1,5 @@ +import type { SnapManifest } from '@metamask/snaps-utils'; import { - SnapManifest, VirtualFile, HttpSnapIdStruct, NpmSnapFileNames, @@ -9,7 +9,7 @@ import { } from '@metamask/snaps-utils'; import { assert, assertStruct } from '@metamask/utils'; -import { SnapLocation } from './location'; +import type { SnapLocation } from './location'; export interface HttpOptions { /** diff --git a/packages/snaps-controllers/src/snaps/location/local.ts b/packages/snaps-controllers/src/snaps/location/local.ts index 797e68d077..4fc5ead18f 100644 --- a/packages/snaps-controllers/src/snaps/location/local.ts +++ b/packages/snaps-controllers/src/snaps/location/local.ts @@ -1,13 +1,10 @@ -import { - LocalSnapIdStruct, - SnapIdPrefixes, - SnapManifest, - VirtualFile, -} from '@metamask/snaps-utils'; +import type { SnapManifest, VirtualFile } from '@metamask/snaps-utils'; +import { LocalSnapIdStruct, SnapIdPrefixes } from '@metamask/snaps-utils'; import { assert, assertStruct } from '@metamask/utils'; -import { HttpLocation, HttpOptions } from './http'; -import { SnapLocation } from './location'; +import type { HttpOptions } from './http'; +import { HttpLocation } from './http'; +import type { SnapLocation } from './location'; export class LocalLocation implements SnapLocation { readonly #http: HttpLocation; diff --git a/packages/snaps-controllers/src/snaps/location/location.ts b/packages/snaps-controllers/src/snaps/location/location.ts index 8a1ede21da..b6de68694a 100644 --- a/packages/snaps-controllers/src/snaps/location/location.ts +++ b/packages/snaps-controllers/src/snaps/location/location.ts @@ -1,9 +1,10 @@ -import { SnapManifest, VirtualFile } from '@metamask/snaps-utils'; +import type { SnapManifest, VirtualFile } from '@metamask/snaps-utils'; import { assert } from '@metamask/utils'; import { HttpLocation } from './http'; import { LocalLocation } from './local'; -import { NpmLocation, NpmOptions } from './npm'; +import type { NpmOptions } from './npm'; +import { NpmLocation } from './npm'; declare module '@metamask/snaps-utils' { interface DataMap { diff --git a/packages/snaps-controllers/src/snaps/location/npm.ts b/packages/snaps-controllers/src/snaps/location/npm.ts index 79771f49ab..ffa807e549 100644 --- a/packages/snaps-controllers/src/snaps/location/npm.ts +++ b/packages/snaps-controllers/src/snaps/location/npm.ts @@ -1,30 +1,29 @@ +import type { SnapManifest } from '@metamask/snaps-utils'; import { createSnapManifest, DEFAULT_REQUESTED_SNAP_VERSION, getTargetVersion, isValidUrl, NpmSnapIdStruct, - SnapManifest, VirtualFile, normalizeRelative, parseJson, } from '@metamask/snaps-utils'; +import type { SemVerRange, SemVerVersion } from '@metamask/utils'; import { assert, assertIsSemVerVersion, assertStruct, isObject, - SemVerRange, - SemVerVersion, } from '@metamask/utils'; import concat from 'concat-stream'; import createGunzipStream from 'gunzip-maybe'; import pump from 'pump'; import { ReadableWebToNodeStream } from 'readable-web-to-node-stream'; -import { Readable, Writable } from 'stream'; +import type { Readable, Writable } from 'stream'; import { extract as tarExtract } from 'tar-stream'; -import { DetectSnapLocationOptions, SnapLocation } from './location'; +import type { DetectSnapLocationOptions, SnapLocation } from './location'; export const DEFAULT_NPM_REGISTRY = 'https://registry.npmjs.org'; diff --git a/packages/snaps-controllers/src/snaps/permissions.ts b/packages/snaps-controllers/src/snaps/permissions.ts index 75fee4276a..761a6c2c32 100644 --- a/packages/snaps-controllers/src/snaps/permissions.ts +++ b/packages/snaps-controllers/src/snaps/permissions.ts @@ -1,4 +1,4 @@ -import { +import type { PermissionConstraint, PermissionSpecificationConstraint, } from '@metamask/permission-controller'; @@ -7,7 +7,7 @@ import { restrictedMethodPermissionBuilders, selectHooks, } from '@metamask/rpc-methods'; -import { SnapPermissions } from '@metamask/snaps-utils'; +import type { SnapPermissions } from '@metamask/snaps-utils'; import { hasProperty } from '@metamask/utils'; import { diff --git a/packages/snaps-controllers/src/snaps/registry/json.test.ts b/packages/snaps-controllers/src/snaps/registry/json.test.ts index 354d64dd9f..2ad87bb7a4 100644 --- a/packages/snaps-controllers/src/snaps/registry/json.test.ts +++ b/packages/snaps-controllers/src/snaps/registry/json.test.ts @@ -1,13 +1,14 @@ -import { SnapsRegistryDatabase } from '@metamask/snaps-registry'; +import type { SnapsRegistryDatabase } from '@metamask/snaps-registry'; import { DEFAULT_SNAP_SHASUM, MOCK_SNAP_ID, } from '@metamask/snaps-utils/test-utils'; -import { SemVerRange, SemVerVersion } from '@metamask/utils'; +import type { SemVerRange, SemVerVersion } from '@metamask/utils'; import fetchMock from 'jest-fetch-mock'; import { getRestrictedSnapsRegistryControllerMessenger } from '../../test-utils'; -import { JsonSnapsRegistry, JsonSnapsRegistryArgs } from './json'; +import type { JsonSnapsRegistryArgs } from './json'; +import { JsonSnapsRegistry } from './json'; import { SnapsRegistryStatus } from './registry'; const MOCK_PUBLIC_KEY = diff --git a/packages/snaps-controllers/src/snaps/registry/json.ts b/packages/snaps-controllers/src/snaps/registry/json.ts index 58b53025db..a0df996f35 100644 --- a/packages/snaps-controllers/src/snaps/registry/json.ts +++ b/packages/snaps-controllers/src/snaps/registry/json.ts @@ -1,25 +1,24 @@ -import { - BaseControllerV2 as BaseController, - RestrictedControllerMessenger, -} from '@metamask/base-controller'; -import { SnapsRegistryDatabase, verify } from '@metamask/snaps-registry'; -import { SnapId } from '@metamask/snaps-utils'; +import type { RestrictedControllerMessenger } from '@metamask/base-controller'; +import { BaseControllerV2 as BaseController } from '@metamask/base-controller'; +import type { SnapsRegistryDatabase } from '@metamask/snaps-registry'; +import { verify } from '@metamask/snaps-registry'; +import type { SnapId } from '@metamask/snaps-utils'; +import type { Hex } from '@metamask/utils'; import { assert, Duration, - Hex, inMilliseconds, satisfiesVersionRange, } from '@metamask/utils'; -import { +import type { SnapsRegistry, SnapsRegistryInfo, SnapsRegistryMetadata, SnapsRegistryRequest, SnapsRegistryResult, - SnapsRegistryStatus, } from './registry'; +import { SnapsRegistryStatus } from './registry'; // TODO: Replace with a Codefi URL const SNAP_REGISTRY_URL = diff --git a/packages/snaps-controllers/src/snaps/registry/registry.ts b/packages/snaps-controllers/src/snaps/registry/registry.ts index 1be90aaa99..876b7854b0 100644 --- a/packages/snaps-controllers/src/snaps/registry/registry.ts +++ b/packages/snaps-controllers/src/snaps/registry/registry.ts @@ -1,6 +1,9 @@ -import { BlockReason, SnapsRegistryDatabase } from '@metamask/snaps-registry'; -import { SnapId, ValidatedSnapId } from '@metamask/snaps-utils'; -import { SemVerVersion } from '@metamask/utils'; +import type { + BlockReason, + SnapsRegistryDatabase, +} from '@metamask/snaps-registry'; +import type { SnapId, ValidatedSnapId } from '@metamask/snaps-utils'; +import type { SemVerVersion } from '@metamask/utils'; export type SnapsRegistryInfo = { version: SemVerVersion; checksum: string }; export type SnapsRegistryRequest = Record; @@ -9,9 +12,9 @@ export type SnapsRegistryMetadata = // TODO: Decide on names for these export enum SnapsRegistryStatus { - Unverified, - Blocked, - Verified, + Unverified = 0, + Blocked = 1, + Verified = 2, } export type SnapsRegistryResult = { diff --git a/packages/snaps-controllers/src/snaps/selectors.ts b/packages/snaps-controllers/src/snaps/selectors.ts index 14fa9b3c77..3e047cb595 100644 --- a/packages/snaps-controllers/src/snaps/selectors.ts +++ b/packages/snaps-controllers/src/snaps/selectors.ts @@ -1,4 +1,4 @@ -import { TruncatedSnap } from '@metamask/snaps-utils'; +import type { TruncatedSnap } from '@metamask/snaps-utils'; -export const getRunnableSnaps = (snaps: T[]) => +export const getRunnableSnaps = (snaps: Snap[]) => snaps.filter((snap) => snap.enabled && !snap.blocked); diff --git a/packages/snaps-controllers/src/test-utils/controller.ts b/packages/snaps-controllers/src/test-utils/controller.ts index dd5099adc8..eda1d8b7e9 100644 --- a/packages/snaps-controllers/src/test-utils/controller.ts +++ b/packages/snaps-controllers/src/test-utils/controller.ts @@ -1,14 +1,15 @@ -import { ApprovalRequest } from '@metamask/approval-controller'; -import { +import type { ApprovalRequest } from '@metamask/approval-controller'; +import type { PermissionConstraint, SubjectPermissions, ValidPermission, Caveat, SubjectMetadata, - SubjectType, } from '@metamask/permission-controller'; +import { SubjectType } from '@metamask/permission-controller'; import { WALLET_SNAP_PERMISSION_KEY } from '@metamask/rpc-methods'; -import { SnapCaveatType, ValidatedSnapId } from '@metamask/snaps-utils'; +import type { ValidatedSnapId } from '@metamask/snaps-utils'; +import { SnapCaveatType } from '@metamask/snaps-utils'; import { MockControllerMessenger, getPersistedSnapObject, @@ -17,21 +18,23 @@ import { MOCK_ORIGIN, MOCK_SNAP_ID, } from '@metamask/snaps-utils/test-utils'; -import { Json } from '@metamask/utils'; +import type { Json } from '@metamask/utils'; import { ethErrors } from 'eth-rpc-errors'; -import { CronjobControllerActions, CronjobControllerEvents } from '../cronjob'; -import { +import type { + CronjobControllerActions, + CronjobControllerEvents, +} from '../cronjob'; +import type { AllowedActions, AllowedEvents, PersistedSnapControllerState, - SnapController, SnapControllerActions, SnapControllerEvents, - SnapEndowments, SnapsRegistryActions, SnapsRegistryEvents, } from '../snaps'; +import { SnapController, SnapEndowments } from '../snaps'; import { MOCK_CRONJOB_PERMISSION } from './cronjob'; import { getNodeEES, getNodeEESMessenger } from './execution-environment'; import { MockSnapsRegistry } from './registry'; diff --git a/packages/snaps-controllers/src/test-utils/cronjob.ts b/packages/snaps-controllers/src/test-utils/cronjob.ts index 94108fb8ab..db1b61fb05 100644 --- a/packages/snaps-controllers/src/test-utils/cronjob.ts +++ b/packages/snaps-controllers/src/test-utils/cronjob.ts @@ -1,4 +1,4 @@ -import { PermissionConstraint } from '@metamask/permission-controller'; +import type { PermissionConstraint } from '@metamask/permission-controller'; import { SnapCaveatType } from '@metamask/snaps-utils'; import { MOCK_ORIGIN } from '@metamask/snaps-utils/test-utils'; diff --git a/packages/snaps-controllers/src/test-utils/execution-environment.ts b/packages/snaps-controllers/src/test-utils/execution-environment.ts index 32be049f1e..33cec2b79a 100644 --- a/packages/snaps-controllers/src/test-utils/execution-environment.ts +++ b/packages/snaps-controllers/src/test-utils/execution-environment.ts @@ -1,17 +1,16 @@ -import { SnapRpcHookArgs } from '@metamask/snaps-utils'; -import { MockControllerMessenger } from '@metamask/snaps-utils/test-utils'; +import type { SnapRpcHookArgs } from '@metamask/snaps-utils'; +import type { MockControllerMessenger } from '@metamask/snaps-utils/test-utils'; import { JsonRpcEngine } from 'json-rpc-engine'; import { createEngineStream } from 'json-rpc-middleware-stream'; import pump from 'pump'; -import { +import type { ExecutionService, ExecutionServiceActions, ExecutionServiceEvents, - NodeThreadExecutionService, - setupMultiplex, SnapExecutionData, } from '../services'; +import { NodeThreadExecutionService, setupMultiplex } from '../services'; export const MOCK_BLOCK_NUMBER = '0xa70e75'; diff --git a/packages/snaps-controllers/src/test-utils/location.ts b/packages/snaps-controllers/src/test-utils/location.ts index fd3ca8b3e7..7a006238bb 100644 --- a/packages/snaps-controllers/src/test-utils/location.ts +++ b/packages/snaps-controllers/src/test-utils/location.ts @@ -1,6 +1,6 @@ +import type { SnapManifest } from '@metamask/snaps-utils'; import { VirtualFile, - SnapManifest, createSnapManifest, normalizeRelative, } from '@metamask/snaps-utils'; @@ -10,7 +10,7 @@ import { getSnapManifest, } from '@metamask/snaps-utils/test-utils'; import { assert } from '@metamask/utils'; -import { SnapLocation } from 'src/snaps/location'; +import type { SnapLocation } from 'src/snaps/location'; const MANIFEST_PATH = 'snap.manifest.json'; diff --git a/packages/snaps-controllers/src/test-utils/mock.ts b/packages/snaps-controllers/src/test-utils/mock.ts index 5abef0e9ac..cf9e048643 100644 --- a/packages/snaps-controllers/src/test-utils/mock.ts +++ b/packages/snaps-controllers/src/test-utils/mock.ts @@ -20,10 +20,10 @@ import { assert } from '@metamask/utils'; * const fn = mock as jest.MockedFunction; * ``` */ -export function getMockedFunction unknown>( - fn: Fn, -): jest.MockedFunction { - const mock = fn as jest.MockedFunction; +export function getMockedFunction< + FunctionMock extends (...args: any[]) => unknown, +>(fn: FunctionMock): jest.MockedFunction { + const mock = fn as jest.MockedFunction; assert(mock.mock, 'Function is not mocked.'); return mock; } diff --git a/packages/snaps-controllers/src/test-utils/registry.ts b/packages/snaps-controllers/src/test-utils/registry.ts index 1be00509a2..2fbdf35f2f 100644 --- a/packages/snaps-controllers/src/test-utils/registry.ts +++ b/packages/snaps-controllers/src/test-utils/registry.ts @@ -1,4 +1,5 @@ -import { SnapsRegistry, SnapsRegistryStatus } from '../snaps'; +import type { SnapsRegistry } from '../snaps'; +import { SnapsRegistryStatus } from '../snaps'; export class MockSnapsRegistry implements SnapsRegistry { get = jest.fn().mockImplementation(async (snaps) => { diff --git a/packages/snaps-controllers/src/test-utils/service.ts b/packages/snaps-controllers/src/test-utils/service.ts index 25e354aea9..2abb7146cb 100644 --- a/packages/snaps-controllers/src/test-utils/service.ts +++ b/packages/snaps-controllers/src/test-utils/service.ts @@ -2,9 +2,10 @@ import { ControllerMessenger } from '@metamask/base-controller'; import { JsonRpcEngine } from 'json-rpc-engine'; import { createEngineStream } from 'json-rpc-middleware-stream'; import pump from 'pump'; -import { Duplex } from 'stream'; +import type { Duplex } from 'stream'; -import { ErrorMessageEvent, setupMultiplex } from '../services'; +import type { ErrorMessageEvent } from '../services'; +import { setupMultiplex } from '../services'; import { MOCK_BLOCK_NUMBER } from './execution-environment'; export const createService = < diff --git a/packages/snaps-controllers/src/utils.ts b/packages/snaps-controllers/src/utils.ts index 35ee193d04..93ccadce8e 100644 --- a/packages/snaps-controllers/src/utils.ts +++ b/packages/snaps-controllers/src/utils.ts @@ -30,7 +30,7 @@ export function setDiff< } /** - * A Promise that delays it's return for a given amount of milliseconds. + * A Promise that delays its return for a given amount of milliseconds. * * @param ms - Milliseconds to delay the execution for. * @param result - The result to return from the Promise after delay. @@ -90,7 +90,7 @@ export const hasTimedOut = Symbol( * @param timerOrMs - The timer controlling the timeout or a ms value. * @returns The resolved `PromiseValue`, or the hasTimedOut symbol if * returning early. - * @template PromiseValue- - The value of the Promise. + * @template PromiseValue - The value of the Promise. */ export async function withTimeout( promise: Promise, @@ -129,8 +129,8 @@ export async function withTimeout( * // t5 = false; * ``` */ -type IsLiteral = T extends string | number | boolean | symbol - ? Extract extends never +type IsLiteral = Type extends string | number | boolean | symbol + ? Extract extends never ? true : false : false; @@ -145,10 +145,10 @@ type IsLiteral = T extends string | number | boolean | symbol * ``` * @see [Literal types]{@link https://www.typescriptlang.org/docs/handbook/literal-types.html} */ -type LiteralKeys = NonNullable< +type LiteralKeys = NonNullable< { - [Key in keyof T]: IsLiteral extends true ? Key : never; - }[keyof T] + [Key in keyof Type]: IsLiteral extends true ? Key : never; + }[keyof Type] >; /** @@ -161,10 +161,10 @@ type LiteralKeys = NonNullable< * ``` * @see [Literal types]{@link https://www.typescriptlang.org/docs/handbook/literal-types.html} */ -type NonLiteralKeys = NonNullable< +type NonLiteralKeys = NonNullable< { - [Key in keyof T]: IsLiteral extends false ? Key : never; - }[keyof T] + [Key in keyof Type]: IsLiteral extends false ? Key : never; + }[keyof Type] >; /** @@ -181,20 +181,20 @@ type NonLiteralKeys = NonNullable< * ``` * @see {@link setDiff} for the main use-case */ -export type Diff = Omit> & - Partial>>>; +export type Diff = Omit> & + Partial>>>; /** * Makes every specified property of the specified object type mutable. * - * @template T - The object whose readonly properties to make mutable. + * @template Type - The object whose readonly properties to make mutable. * @template TargetKey - The property key(s) to make mutable. */ export type Mutable< - T extends Record, + Type extends Record, TargetKey extends string, > = { - -readonly [Key in keyof Pick]: T[Key]; + -readonly [Key in keyof Pick]: Type[Key]; } & { - [Key in keyof Omit]: T[Key]; + [Key in keyof Omit]: Type[Key]; }; diff --git a/packages/snaps-execution-environments/.eslintrc.js b/packages/snaps-execution-environments/.eslintrc.js index 947cbc272c..57fa38648e 100644 --- a/packages/snaps-execution-environments/.eslintrc.js +++ b/packages/snaps-execution-environments/.eslintrc.js @@ -17,6 +17,13 @@ module.exports = { ], }, }, + { + 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/lavamoat/build-system/policy.json b/packages/snaps-execution-environments/lavamoat/build-system/policy.json index 540533095e..a3a82f5883 100644 --- a/packages/snaps-execution-environments/lavamoat/build-system/policy.json +++ b/packages/snaps-execution-environments/lavamoat/build-system/policy.json @@ -1813,7 +1813,7 @@ "browserify>through2>readable-stream>safe-buffer": true } }, - "eslint-plugin-import>is-core-module": { + "eslint-plugin-n>is-core-module": { "globals": { "process.versions": true }, @@ -2130,7 +2130,7 @@ "process.versions.pnp": true }, "packages": { - "eslint-plugin-import>is-core-module": true, + "eslint-plugin-n>is-core-module": true, "lavamoat>resolve>path-parse": true } }, diff --git a/packages/snaps-execution-environments/package.json b/packages/snaps-execution-environments/package.json index 3ef818ba08..c61acf77b5 100644 --- a/packages/snaps-execution-environments/package.json +++ b/packages/snaps-execution-environments/package.json @@ -68,10 +68,10 @@ "@lavamoat/lavapack": "^5.1.2", "@lavamoat/lavatube": "^0.0.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@swc/cli": "^0.1.62", "@swc/core": "^1.3.66", "@swc/jest": "^0.2.26", @@ -97,8 +97,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "expect-webdriverio": "^4.1.2", "istanbul-lib-coverage": "^3.2.0", "istanbul-lib-report": "^3.0.0", diff --git a/packages/snaps-execution-environments/scripts/build.js b/packages/snaps-execution-environments/scripts/build.js index c1067f724b..f9c3919151 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, node/global-require, node/no-process-exit */ +/* eslint-disable no-console, n/global-require */ const { createResolvePath, } = require('babel-plugin-tsconfig-paths-module-resolver'); @@ -228,5 +228,5 @@ async function main() { main().catch((error) => { console.error(error); - process.exit(1); + process.exitCode = 1; }); diff --git a/packages/snaps-execution-environments/scripts/coverage.ts b/packages/snaps-execution-environments/scripts/coverage.ts index 75c1ac5b71..0619b58c8d 100644 --- a/packages/snaps-execution-environments/scripts/coverage.ts +++ b/packages/snaps-execution-environments/scripts/coverage.ts @@ -1,9 +1,12 @@ /* eslint-disable no-console */ import { promises as fs } from 'fs'; -import { CoverageMap, createCoverageMap } from 'istanbul-lib-coverage'; -import { createContext, ReportBase } from 'istanbul-lib-report'; -import reports, { ReportOptions, ReportType } from 'istanbul-reports'; +import type { CoverageMap } from 'istanbul-lib-coverage'; +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 { resolve } from 'path'; import * as process from 'process'; diff --git a/packages/snaps-execution-environments/src/common/BaseSnapExecutor.ts b/packages/snaps-execution-environments/src/common/BaseSnapExecutor.ts index cd3da687ae..e795268fc6 100644 --- a/packages/snaps-execution-environments/src/common/BaseSnapExecutor.ts +++ b/packages/snaps-execution-environments/src/common/BaseSnapExecutor.ts @@ -1,38 +1,37 @@ // eslint-disable-next-line @typescript-eslint/triple-slash-reference, spaced-comment /// import { StreamProvider } from '@metamask/providers'; -import { RequestArguments } from '@metamask/providers/dist/BaseProvider'; -import { SnapsGlobalObject } from '@metamask/rpc-methods'; -import { +import type { RequestArguments } from '@metamask/providers/dist/BaseProvider'; +import type { SnapsGlobalObject } from '@metamask/rpc-methods'; +import type { SnapExports, HandlerType, SnapExportsParameters, - SNAP_EXPORT_NAMES, - logError, } from '@metamask/snaps-utils'; +import { SNAP_EXPORT_NAMES, logError } from '@metamask/snaps-utils'; +import type { + JsonRpcNotification, + JsonRpcId, + JsonRpcRequest, + Json, +} from '@metamask/utils'; import { isObject, isValidJson, - JsonRpcNotification, assert, isJsonRpcRequest, - JsonRpcId, - JsonRpcRequest, - Json, hasProperty, getSafeJson, } from '@metamask/utils'; import { errorCodes, ethErrors, serializeError } from 'eth-rpc-errors'; import { createIdRemapMiddleware } from 'json-rpc-engine'; -import { Duplex } from 'stream'; +import type { Duplex } from 'stream'; import { validate } from 'superstruct'; import { log } from '../logging'; import EEOpenRPCDocument from '../openrpc.json'; -import { - CommandMethodsMapping, - getCommandMethodImplementations, -} from './commands'; +import type { CommandMethodsMapping } from './commands'; +import { getCommandMethodImplementations } from './commands'; import { createEndowments } from './endowments'; import { addEventListener, removeEventListener } from './globalEvents'; import { sortParamKeys } from './sortParams'; diff --git a/packages/snaps-execution-environments/src/common/commands.test.ts b/packages/snaps-execution-environments/src/common/commands.test.ts index f541a4dfaa..1d4687b557 100644 --- a/packages/snaps-execution-environments/src/common/commands.test.ts +++ b/packages/snaps-execution-environments/src/common/commands.test.ts @@ -1,8 +1,8 @@ import { HandlerType } from '@metamask/snaps-utils'; import { MOCK_ORIGIN } from '@metamask/snaps-utils/test-utils'; +import type { CommandMethodsMapping } from './commands'; import { - CommandMethodsMapping, getCommandMethodImplementations, getHandlerArguments, } from './commands'; diff --git a/packages/snaps-execution-environments/src/common/commands.ts b/packages/snaps-execution-environments/src/common/commands.ts index d6f8130813..ea015e63a5 100644 --- a/packages/snaps-execution-environments/src/common/commands.ts +++ b/packages/snaps-execution-environments/src/common/commands.ts @@ -1,15 +1,15 @@ import { HandlerType } from '@metamask/snaps-utils'; import { assertExhaustive } from '@metamask/utils'; -import { InvokeSnap, InvokeSnapArgs } from './BaseSnapExecutor'; -import { - assertIsOnTransactionRequestArguments, +import type { InvokeSnap, InvokeSnapArgs } from './BaseSnapExecutor'; +import type { ExecuteSnap, JsonRpcRequestWithoutId, Ping, SnapRpc, Terminate, } from './validation'; +import { assertIsOnTransactionRequestArguments } from './validation'; export type CommandMethodsMapping = { ping: Ping; diff --git a/packages/snaps-execution-environments/src/common/endowments/commonEndowmentFactory.ts b/packages/snaps-execution-environments/src/common/endowments/commonEndowmentFactory.ts index 9b7e835723..bccbdb9bf2 100644 --- a/packages/snaps-execution-environments/src/common/endowments/commonEndowmentFactory.ts +++ b/packages/snaps-execution-environments/src/common/endowments/commonEndowmentFactory.ts @@ -1,4 +1,4 @@ -import { SnapId } from '@metamask/snaps-utils'; +import type { SnapId } from '@metamask/snaps-utils'; import { rootRealmGlobal } from '../globalObject'; import consoleEndowment from './console'; diff --git a/packages/snaps-execution-environments/src/common/endowments/console.ts b/packages/snaps-execution-environments/src/common/endowments/console.ts index d6a2fafdb9..72a4dca500 100644 --- a/packages/snaps-execution-environments/src/common/endowments/console.ts +++ b/packages/snaps-execution-environments/src/common/endowments/console.ts @@ -1,8 +1,8 @@ -import { SnapId } from '@metamask/snaps-utils'; +import type { SnapId } from '@metamask/snaps-utils'; import { assert } from '@metamask/utils'; import { rootRealmGlobal } from '../globalObject'; -import { EndowmentFactoryOptions } from './commonEndowmentFactory'; +import type { EndowmentFactoryOptions } from './commonEndowmentFactory'; 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 27fec2107e..44cbda57f3 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, node/global-require */ + /* eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires, n/global-require */ const crypto = require('crypto').webcrypto; return { crypto: harden(crypto), diff --git a/packages/snaps-execution-environments/src/common/endowments/index.ts b/packages/snaps-execution-environments/src/common/endowments/index.ts index 2ddc6cbabe..5ffcf781c7 100644 --- a/packages/snaps-execution-environments/src/common/endowments/index.ts +++ b/packages/snaps-execution-environments/src/common/endowments/index.ts @@ -1,12 +1,12 @@ -import { StreamProvider } from '@metamask/providers'; -import { SnapsGlobalObject } from '@metamask/rpc-methods'; -import { SnapId, logWarning } from '@metamask/snaps-utils'; +import type { StreamProvider } from '@metamask/providers'; +import type { SnapsGlobalObject } from '@metamask/rpc-methods'; +import type { SnapId } from '@metamask/snaps-utils'; +import { logWarning } from '@metamask/snaps-utils'; import { hasProperty } from '@metamask/utils'; import { rootRealmGlobal } from '../globalObject'; -import buildCommonEndowments, { - EndowmentFactoryOptions, -} from './commonEndowmentFactory'; +import type { EndowmentFactoryOptions } from './commonEndowmentFactory'; +import buildCommonEndowments from './commonEndowmentFactory'; type EndowmentFactoryResult = { /** diff --git a/packages/snaps-execution-environments/src/common/sortParams.ts b/packages/snaps-execution-environments/src/common/sortParams.ts index b4e0ca68b6..b3045907f3 100644 --- a/packages/snaps-execution-environments/src/common/sortParams.ts +++ b/packages/snaps-execution-environments/src/common/sortParams.ts @@ -1,6 +1,6 @@ // original source sortParamKeys from: https://github.com/etclabscore/sig.tools/blob/master/src/postMessageServer/postMessageServer.ts#L75-L77 -import { JsonRpcParams } from '@metamask/utils'; +import type { JsonRpcParams } from '@metamask/utils'; /** * Deterministically sort JSON-RPC parameter keys. This makes it possible to 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 61ef0ddf2c..7e4db25ec7 100644 --- a/packages/snaps-execution-environments/src/common/test-utils/endowments.ts +++ b/packages/snaps-execution-environments/src/common/test-utils/endowments.ts @@ -2,7 +2,7 @@ import LavaTube from '@lavamoat/lavatube'; import ObjectMultiplex from '@metamask/object-multiplex'; import { StreamProvider } from '@metamask/providers'; -import { RequestArguments } from '@metamask/providers/dist/BaseProvider'; +import type { RequestArguments } from '@metamask/providers/dist/BaseProvider'; import { SNAP_STREAM_NAMES } from '@metamask/snaps-utils'; import { createIdRemapMiddleware } from 'json-rpc-engine'; 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 9102693d69..dcedc84766 100644 --- a/packages/snaps-execution-environments/src/common/test-utils/executor.ts +++ b/packages/snaps-execution-environments/src/common/test-utils/executor.ts @@ -1,5 +1,6 @@ -import { Json, JsonRpcRequest, JsonRpcResponse } from '@metamask/utils'; -import { Duplex, DuplexOptions, Readable } from 'stream'; +import type { Json, JsonRpcRequest, JsonRpcResponse } from '@metamask/utils'; +import type { DuplexOptions, Readable } from 'stream'; +import { Duplex } from 'stream'; import { BaseSnapExecutor } from '../BaseSnapExecutor'; diff --git a/packages/snaps-execution-environments/src/common/test-utils/logger.ts b/packages/snaps-execution-environments/src/common/test-utils/logger.ts index 5f39411dfd..f86e2a3740 100644 --- a/packages/snaps-execution-environments/src/common/test-utils/logger.ts +++ b/packages/snaps-execution-environments/src/common/test-utils/logger.ts @@ -1,4 +1,4 @@ -import { ConsoleLike } from '@metamask/providers/dist/utils'; +import type { ConsoleLike } from '@metamask/providers/dist/utils'; export const SILENT_LOGGER: ConsoleLike = { log: () => undefined, diff --git a/packages/snaps-execution-environments/src/common/utils.ts b/packages/snaps-execution-environments/src/common/utils.ts index 6a39e802f7..feddf79e1d 100644 --- a/packages/snaps-execution-environments/src/common/utils.ts +++ b/packages/snaps-execution-environments/src/common/utils.ts @@ -1,5 +1,5 @@ -import { StreamProvider } from '@metamask/providers'; -import { RequestArguments } from '@metamask/providers/dist/BaseProvider'; +import type { StreamProvider } from '@metamask/providers'; +import type { RequestArguments } from '@metamask/providers/dist/BaseProvider'; import { assert, assertStruct, JsonStruct } from '@metamask/utils'; import { ethErrors } from 'eth-rpc-errors'; @@ -35,12 +35,12 @@ export function constructError(originalError: unknown) { * @param teardownRef.lastTeardown - Number of the last teardown. * @returns New proxy promise. */ -export async function withTeardown( - originalPromise: Promise, +export async function withTeardown( + originalPromise: Promise, teardownRef: { lastTeardown: number }, -): Promise { +): Promise { const myTeardown = teardownRef.lastTeardown; - return new Promise((resolve, reject) => { + return new Promise((resolve, reject) => { originalPromise .then((value) => { if (teardownRef.lastTeardown === myTeardown) { diff --git a/packages/snaps-execution-environments/src/common/validation.ts b/packages/snaps-execution-environments/src/common/validation.ts index 320586b6d3..aa1ab8345d 100644 --- a/packages/snaps-execution-environments/src/common/validation.ts +++ b/packages/snaps-execution-environments/src/common/validation.ts @@ -1,18 +1,17 @@ import { ChainIdStruct, HandlerType } from '@metamask/snaps-utils'; +import type { Json, JsonRpcSuccess } from '@metamask/utils'; import { assertStruct, - Json, JsonRpcIdStruct, JsonRpcRequestStruct, - JsonRpcSuccess, JsonRpcSuccessStruct, JsonStruct, } from '@metamask/utils'; +import type { Infer } from 'superstruct'; import { array, assign, enums, - Infer, is, literal, nullable, diff --git a/packages/snaps-execution-environments/src/globals.d.ts b/packages/snaps-execution-environments/src/globals.d.ts index f2f58035c5..8e0b7171e5 100644 --- a/packages/snaps-execution-environments/src/globals.d.ts +++ b/packages/snaps-execution-environments/src/globals.d.ts @@ -3,17 +3,17 @@ // But it's supported on all browsers and Node // Note, it's stated that it's not supported on Opera, // But that's not true - https://github.com/mdn/browser-compat-data/issues/12523 -declare class WeakRef { - constructor(target: T); +declare class WeakRef { + constructor(target: Target); - deref(): T | undefined; + deref(): Target | undefined; } // Typescript doesn't type FinalizationRegistry on ES2020, only on ESNext -declare class FinalizationRegistry { - constructor(callbackFn: (value: T) => void); +declare class FinalizationRegistry { + constructor(callbackFn: (value: Value) => void); - register(obj: any, value: T, unregisterToken?: unknown): void; + register(obj: any, value: Value, unregisterToken?: unknown): void; unregister(unregisterToken: unknown): void; } 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 ecd9ae3660..ce5ba43de3 100644 --- a/packages/snaps-execution-environments/src/iframe/IFrameSnapExecutor.test.browser.ts +++ b/packages/snaps-execution-environments/src/iframe/IFrameSnapExecutor.test.browser.ts @@ -6,7 +6,7 @@ import { MOCK_SNAP_ID, MockWindowPostMessageStream, } from '@metamask/snaps-utils/test-utils'; -import { JsonRpcRequest } from '@metamask/utils'; +import type { JsonRpcRequest } from '@metamask/utils'; import { IFrameSnapExecutor } from './IFrameSnapExecutor'; diff --git a/packages/snaps-execution-environments/src/iframe/IFrameSnapExecutor.ts b/packages/snaps-execution-environments/src/iframe/IFrameSnapExecutor.ts index 5fbe0eade8..9154502d9d 100644 --- a/packages/snaps-execution-environments/src/iframe/IFrameSnapExecutor.ts +++ b/packages/snaps-execution-environments/src/iframe/IFrameSnapExecutor.ts @@ -1,8 +1,6 @@ import ObjectMultiplex from '@metamask/object-multiplex'; -import { - BasePostMessageStream, - WindowPostMessageStream, -} from '@metamask/post-message-stream'; +import type { BasePostMessageStream } from '@metamask/post-message-stream'; +import { WindowPostMessageStream } from '@metamask/post-message-stream'; import { logError, SNAP_STREAM_NAMES } from '@metamask/snaps-utils'; import pump from 'pump'; 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 200ce58b74..04aa7e13d5 100644 --- a/packages/snaps-execution-environments/src/node-process/ChildProcessSnapExecutor.test.ts +++ b/packages/snaps-execution-environments/src/node-process/ChildProcessSnapExecutor.test.ts @@ -2,7 +2,7 @@ import 'ses'; import { HandlerType, SNAP_STREAM_NAMES } from '@metamask/snaps-utils'; import { MOCK_ORIGIN, MOCK_SNAP_ID } from '@metamask/snaps-utils/test-utils'; -import { Json, JsonRpcRequest, JsonRpcSuccess } from '@metamask/utils'; +import type { Json, JsonRpcRequest, JsonRpcSuccess } from '@metamask/utils'; import { EventEmitter } from 'stream'; import { ChildProcessSnapExecutor } from './ChildProcessSnapExecutor'; 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 ae60c653fa..0cd9fadf71 100644 --- a/packages/snaps-execution-environments/src/node-thread/ThreadSnapExecutor.test.ts +++ b/packages/snaps-execution-environments/src/node-thread/ThreadSnapExecutor.test.ts @@ -1,7 +1,7 @@ // eslint-disable-next-line import/no-unassigned-import import 'ses'; import { SNAP_STREAM_NAMES, HandlerType } from '@metamask/snaps-utils'; -import { Json, JsonRpcRequest, JsonRpcSuccess } from '@metamask/utils'; +import type { Json, JsonRpcRequest, JsonRpcSuccess } from '@metamask/utils'; import { EventEmitter } from 'stream'; import { parentPort } from 'worker_threads'; diff --git a/packages/snaps-execution-environments/src/offscreen/OffscreenSnapExecutor.ts b/packages/snaps-execution-environments/src/offscreen/OffscreenSnapExecutor.ts index 8ae93b4350..6f12973945 100644 --- a/packages/snaps-execution-environments/src/offscreen/OffscreenSnapExecutor.ts +++ b/packages/snaps-execution-environments/src/offscreen/OffscreenSnapExecutor.ts @@ -1,9 +1,8 @@ -import { - BasePostMessageStream, - WindowPostMessageStream, -} from '@metamask/post-message-stream'; +import type { BasePostMessageStream } from '@metamask/post-message-stream'; +import { WindowPostMessageStream } from '@metamask/post-message-stream'; import { createWindow, logError } from '@metamask/snaps-utils'; -import { JsonRpcRequest, assert } from '@metamask/utils'; +import type { JsonRpcRequest } from '@metamask/utils'; +import { assert } from '@metamask/utils'; type ExecutorJob = { id: string; 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 81139cf920..bb970b947d 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,14 +1,14 @@ // eslint-disable-next-line import/no-unassigned-import import 'ses'; import { HandlerType } from '@metamask/snaps-utils'; +import type { SpyFunction } from '@metamask/snaps-utils/test-utils'; import { MOCK_ORIGIN, MOCK_SNAP_ID, MockWindowPostMessageStream, spy, - SpyFunction, } from '@metamask/snaps-utils/test-utils'; -import { JsonRpcRequest } from '@metamask/utils'; +import type { JsonRpcRequest } from '@metamask/utils'; import { WebWorkerSnapExecutor } from './WebWorkerSnapExecutor'; diff --git a/packages/snaps-execution-environments/src/webworker/executor/WebWorkerSnapExecutor.ts b/packages/snaps-execution-environments/src/webworker/executor/WebWorkerSnapExecutor.ts index e8434421ec..edaedd73bf 100644 --- a/packages/snaps-execution-environments/src/webworker/executor/WebWorkerSnapExecutor.ts +++ b/packages/snaps-execution-environments/src/webworker/executor/WebWorkerSnapExecutor.ts @@ -1,8 +1,6 @@ import ObjectMultiplex from '@metamask/object-multiplex'; -import { - BasePostMessageStream, - WebWorkerPostMessageStream, -} from '@metamask/post-message-stream'; +import type { BasePostMessageStream } from '@metamask/post-message-stream'; +import { WebWorkerPostMessageStream } from '@metamask/post-message-stream'; import { logError, SNAP_STREAM_NAMES } from '@metamask/snaps-utils'; import pump from 'pump'; diff --git a/packages/snaps-execution-environments/src/webworker/pool/WebWorkerPool.ts b/packages/snaps-execution-environments/src/webworker/pool/WebWorkerPool.ts index fcb5ea4b20..ffdb165687 100644 --- a/packages/snaps-execution-environments/src/webworker/pool/WebWorkerPool.ts +++ b/packages/snaps-execution-environments/src/webworker/pool/WebWorkerPool.ts @@ -1,10 +1,11 @@ +import type { BasePostMessageStream } from '@metamask/post-message-stream'; import { - BasePostMessageStream, WebWorkerParentPostMessageStream, WindowPostMessageStream, } from '@metamask/post-message-stream'; import { logError } from '@metamask/snaps-utils'; -import { JsonRpcRequest, assert } from '@metamask/utils'; +import type { JsonRpcRequest } from '@metamask/utils'; +import { assert } from '@metamask/utils'; import { nanoid } from 'nanoid/non-secure'; type ExecutorJob = { diff --git a/packages/snaps-jest/package.json b/packages/snaps-jest/package.json index 9a3a3724ba..a7ec3ce7ac 100644 --- a/packages/snaps-jest/package.json +++ b/packages/snaps-jest/package.json @@ -54,10 +54,10 @@ "devDependencies": { "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@swc/cli": "^0.1.62", "@swc/core": "^1.3.66", "@swc/jest": "^0.2.26", @@ -71,8 +71,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "jest": "^29.0.2", "jest-it-up": "^2.0.0", "prettier": "^2.7.1", diff --git a/packages/snaps-jest/src/environment.ts b/packages/snaps-jest/src/environment.ts index fc66d8c37e..f07337b443 100644 --- a/packages/snaps-jest/src/environment.ts +++ b/packages/snaps-jest/src/environment.ts @@ -1,13 +1,17 @@ -import { EnvironmentContext, JestEnvironmentConfig } from '@jest/environment'; +import type { + EnvironmentContext, + JestEnvironmentConfig, +} from '@jest/environment'; import { assert, createModuleLogger } from '@metamask/utils'; -import { Server } from 'http'; +import type { Server } from 'http'; import NodeEnvironment from 'jest-environment-node'; -import { AddressInfo } from 'net'; -import { Browser } from 'puppeteer'; +import type { AddressInfo } from 'net'; +import type { Browser } from 'puppeteer'; import { remote } from 'webdriverio'; import { rootLogger, startServer } from './internals'; -import { getOptions, SnapsEnvironmentOptions } from './options'; +import type { SnapsEnvironmentOptions } from './options'; +import { getOptions } from './options'; /* eslint-disable */ declare global { diff --git a/packages/snaps-jest/src/internals/interface.ts b/packages/snaps-jest/src/internals/interface.ts index c70cdeff10..5bfbaec1aa 100644 --- a/packages/snaps-jest/src/internals/interface.ts +++ b/packages/snaps-jest/src/internals/interface.ts @@ -1,9 +1,9 @@ import { DialogType } from '@metamask/rpc-methods'; import { assert } from '@metamask/utils'; -import { Page } from 'puppeteer'; +import type { Page } from 'puppeteer'; import { create } from 'superstruct'; -import { SnapInterface, SnapOptions } from '../types'; +import type { SnapInterface, SnapOptions } from '../types'; import { SnapOptionsStruct } from './structs'; import { waitFor } from './wait-for'; diff --git a/packages/snaps-jest/src/internals/network.ts b/packages/snaps-jest/src/internals/network.ts index 6c226199f9..9989eb4cf2 100644 --- a/packages/snaps-jest/src/internals/network.ts +++ b/packages/snaps-jest/src/internals/network.ts @@ -1,25 +1,24 @@ import { JSON_RPC_ENDPOINT } from '@metamask/snaps-simulator'; import { createModuleLogger, UnsafeJsonStruct } from '@metamask/utils'; -import { Page, HTTPRequest } from 'puppeteer'; +import type { Page, HTTPRequest } from 'puppeteer'; +import type { Infer, Struct } from 'superstruct'; import { assign, boolean, create, defaulted, - Infer, number, object, optional, record, regexp, string, - Struct, union, unknown, func, } from 'superstruct'; -import { DeepPartial } from '../types'; +import type { DeepPartial } from '../types'; import { rootLogger } from './logger'; /** diff --git a/packages/snaps-jest/src/internals/request.ts b/packages/snaps-jest/src/internals/request.ts index 74c4b3a13c..f552f64bc4 100644 --- a/packages/snaps-jest/src/internals/request.ts +++ b/packages/snaps-jest/src/internals/request.ts @@ -1,5 +1,6 @@ -import { Component } from '@metamask/snaps-ui'; -import { HandlerType, SnapRpcHookArgs } from '@metamask/snaps-utils'; +import type { Component } from '@metamask/snaps-ui'; +import type { SnapRpcHookArgs } from '@metamask/snaps-utils'; +import { HandlerType } from '@metamask/snaps-utils'; import { assert, createModuleLogger, @@ -7,10 +8,10 @@ import { isPlainObject, } from '@metamask/utils'; import { getDocument, queries } from 'pptr-testing-library'; -import { Page } from 'puppeteer'; +import type { Page } from 'puppeteer'; import { create } from 'superstruct'; -import { +import type { CronjobOptions, RequestOptions, SnapRequest, diff --git a/packages/snaps-jest/src/internals/server.ts b/packages/snaps-jest/src/internals/server.ts index d6907c20e8..e9704efa20 100644 --- a/packages/snaps-jest/src/internals/server.ts +++ b/packages/snaps-jest/src/internals/server.ts @@ -1,16 +1,17 @@ +import type { SnapManifest } from '@metamask/snaps-utils'; import { assertIsSnapManifest, isDirectory, isFile, - SnapManifest, } from '@metamask/snaps-utils'; import { createModuleLogger } from '@metamask/utils'; import express from 'express'; import { promises as fs } from 'fs'; -import { createServer, Server } from 'http'; +import type { Server } from 'http'; +import { createServer } from 'http'; import { resolve as pathResolve, dirname } from 'path'; -import { SnapsEnvironmentOptions } from '../options'; +import type { SnapsEnvironmentOptions } from '../options'; import { rootLogger } from './logger'; const SNAPS_EXECUTION_ENVIRONMENTS_PATH = pathResolve( diff --git a/packages/snaps-jest/src/internals/types.ts b/packages/snaps-jest/src/internals/types.ts index cf179ddfac..88e87ec3ee 100644 --- a/packages/snaps-jest/src/internals/types.ts +++ b/packages/snaps-jest/src/internals/types.ts @@ -1,6 +1,6 @@ -import { NotificationType } from '@metamask/rpc-methods'; -import { ApplicationState, Dispatch } from '@metamask/snaps-simulator'; -import { EnumToUnion } from '@metamask/snaps-utils'; +import type { NotificationType } from '@metamask/rpc-methods'; +import type { ApplicationState, Dispatch } from '@metamask/snaps-simulator'; +import type { EnumToUnion } from '@metamask/snaps-utils'; declare global { // eslint-disable-next-line @typescript-eslint/consistent-type-definitions diff --git a/packages/snaps-jest/src/internals/wait-for.ts b/packages/snaps-jest/src/internals/wait-for.ts index 0816db018c..5f1710b98a 100644 --- a/packages/snaps-jest/src/internals/wait-for.ts +++ b/packages/snaps-jest/src/internals/wait-for.ts @@ -1,9 +1,9 @@ -import { HandlerType } from '@metamask/snaps-utils'; +import type { HandlerType } from '@metamask/snaps-utils'; import { assert, createModuleLogger } from '@metamask/utils'; import { waitFor as waitForPuppeteer } from 'pptr-testing-library'; -import { Page } from 'puppeteer'; +import type { Page } from 'puppeteer'; -import { SnapResponse } from '../types'; +import type { SnapResponse } from '../types'; import { rootLogger } from './logger'; export type WaitForOptions = { diff --git a/packages/snaps-jest/src/matchers.ts b/packages/snaps-jest/src/matchers.ts index ff35f7bd3d..16ecec8ac8 100644 --- a/packages/snaps-jest/src/matchers.ts +++ b/packages/snaps-jest/src/matchers.ts @@ -4,16 +4,17 @@ // a Jest environment. This is why it's not exported from the index file. import { expect } from '@jest/globals'; -import { NotificationType } from '@metamask/rpc-methods'; -import { Component } from '@metamask/snaps-ui'; -import { EnumToUnion } from '@metamask/snaps-utils'; -import { hasProperty, Json } from '@metamask/utils'; +import type { NotificationType } from '@metamask/rpc-methods'; +import type { Component } from '@metamask/snaps-ui'; +import type { EnumToUnion } from '@metamask/snaps-utils'; +import type { Json } from '@metamask/utils'; +import { hasProperty } from '@metamask/utils'; import type { MatcherFunction } from 'expect'; +import type { MatcherHintOptions } from 'jest-matcher-utils'; import { diff, matcherErrorMessage, matcherHint, - MatcherHintOptions, printReceived, printWithType, RECEIVED_COLOR, @@ -21,7 +22,7 @@ import { import { is } from 'superstruct'; import { InterfaceStruct, SnapResponseStruct } from './internals'; -import { SnapResponse } from './types'; +import type { SnapResponse } from './types'; /** * Ensure that the actual value is a response from the `request` function. diff --git a/packages/snaps-jest/src/options.ts b/packages/snaps-jest/src/options.ts index 40ebd1e49e..9982cf2f87 100644 --- a/packages/snaps-jest/src/options.ts +++ b/packages/snaps-jest/src/options.ts @@ -1,8 +1,8 @@ +import type { Infer } from 'superstruct'; import { boolean, create, defaulted, - Infer, number, object, optional, diff --git a/packages/snaps-jest/src/types.ts b/packages/snaps-jest/src/types.ts index 9b37563dfe..27d7bb1b30 100644 --- a/packages/snaps-jest/src/types.ts +++ b/packages/snaps-jest/src/types.ts @@ -1,10 +1,10 @@ -import { NotificationType } from '@metamask/rpc-methods'; -import { Component } from '@metamask/snaps-ui'; -import { EnumToUnion } from '@metamask/snaps-utils'; -import { JsonRpcId, JsonRpcParams } from '@metamask/utils'; -import { Infer } from 'superstruct'; +import type { NotificationType } from '@metamask/rpc-methods'; +import type { Component } from '@metamask/snaps-ui'; +import type { EnumToUnion } from '@metamask/snaps-utils'; +import type { JsonRpcId, JsonRpcParams } from '@metamask/utils'; +import type { Infer } from 'superstruct'; -import { +import type { Mock, MockJsonRpcOptions, MockOptions, @@ -28,6 +28,7 @@ declare module 'expect' { // Ideally we would use `Matchers` instead of `Matchers`, but // TypeScript doesn't allow this: // TS2428: All declarations of 'Matchers' must have identical type parameters. + // eslint-disable-next-line @typescript-eslint/naming-convention interface Matchers { toRespondWith(response: unknown): R; toRespondWithError(error: unknown): R; diff --git a/packages/snaps-rollup-plugin/package.json b/packages/snaps-rollup-plugin/package.json index 72fb2341fb..517a7ffa6d 100644 --- a/packages/snaps-rollup-plugin/package.json +++ b/packages/snaps-rollup-plugin/package.json @@ -44,10 +44,10 @@ "devDependencies": { "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@rollup/plugin-virtual": "^2.1.0", "@swc/cli": "^0.1.62", "@swc/core": "^1.3.66", @@ -61,8 +61,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "jest": "^29.0.2", "jest-it-up": "^2.0.0", "memfs": "^3.4.13", diff --git a/packages/snaps-rollup-plugin/src/plugin.test.ts b/packages/snaps-rollup-plugin/src/plugin.test.ts index f157b290a1..451bbc2967 100644 --- a/packages/snaps-rollup-plugin/src/plugin.test.ts +++ b/packages/snaps-rollup-plugin/src/plugin.test.ts @@ -7,12 +7,15 @@ import { DEFAULT_SNAP_BUNDLE, getSnapManifest, } from '@metamask/snaps-utils/test-utils'; -import virtual, { RollupVirtualOptions } from '@rollup/plugin-virtual'; +import type { RollupVirtualOptions } from '@rollup/plugin-virtual'; +import virtual from '@rollup/plugin-virtual'; import assert from 'assert'; import { promises as fs } from 'fs'; -import { OutputOptions, rollup, RollupOutput } from 'rollup'; +import type { OutputOptions, RollupOutput } from 'rollup'; +import { rollup } from 'rollup'; -import snaps, { Options } from './plugin'; +import type { Options } from './plugin'; +import snaps from './plugin'; jest.mock('fs'); diff --git a/packages/snaps-rollup-plugin/src/plugin.ts b/packages/snaps-rollup-plugin/src/plugin.ts index ee74be625a..cd8d4fbaaf 100644 --- a/packages/snaps-rollup-plugin/src/plugin.ts +++ b/packages/snaps-rollup-plugin/src/plugin.ts @@ -1,13 +1,13 @@ +import type { PostProcessOptions } from '@metamask/snaps-utils'; import { checkManifest, evalBundle, postProcessBundle, - PostProcessOptions, } from '@metamask/snaps-utils'; import { promises as fs } from 'fs'; import pathUtils from 'path'; // eslint-disable-next-line @typescript-eslint/no-shadow -import { Plugin, SourceMapInput } from 'rollup'; +import type { Plugin, SourceMapInput } from 'rollup'; type PluginOptions = { eval?: boolean; diff --git a/packages/snaps-simulator/package.json b/packages/snaps-simulator/package.json index ee27fb4615..6d4b0580a7 100644 --- a/packages/snaps-simulator/package.json +++ b/packages/snaps-simulator/package.json @@ -85,11 +85,11 @@ "devDependencies": { "@babel/core": "^7.20.12", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", "@metamask/eslint-config-browser": "^11.1.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.10", "@redux-saga/is": "^1.1.3", "@redux-saga/symbols": "^1.1.3", @@ -116,8 +116,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "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", "express": "^4.18.2", diff --git a/packages/snaps-simulator/src/App.tsx b/packages/snaps-simulator/src/App.tsx index 89587845b2..e340b9a35b 100644 --- a/packages/snaps-simulator/src/App.tsx +++ b/packages/snaps-simulator/src/App.tsx @@ -1,4 +1,5 @@ -import { FunctionComponent, useEffect } from 'react'; +import type { FunctionComponent } from 'react'; +import { useEffect } from 'react'; import { RouterProvider } from 'react-router-dom'; import { setSnapId } from './features'; diff --git a/packages/snaps-simulator/src/components/Author.tsx b/packages/snaps-simulator/src/components/Author.tsx index b4f0880b70..f942c415a3 100644 --- a/packages/snaps-simulator/src/components/Author.tsx +++ b/packages/snaps-simulator/src/components/Author.tsx @@ -1,5 +1,5 @@ import { Flex, Text } from '@chakra-ui/react'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { SnapIcon } from './SnapIcon'; diff --git a/packages/snaps-simulator/src/components/Delineator.tsx b/packages/snaps-simulator/src/components/Delineator.tsx index af6b9562b5..08210a2d55 100644 --- a/packages/snaps-simulator/src/components/Delineator.tsx +++ b/packages/snaps-simulator/src/components/Delineator.tsx @@ -1,5 +1,5 @@ import { Box, Flex, Text } from '@chakra-ui/react'; -import { FunctionComponent, ReactNode } from 'react'; +import type { FunctionComponent, ReactNode } from 'react'; import { Icon } from './Icon'; diff --git a/packages/snaps-simulator/src/components/Editor.tsx b/packages/snaps-simulator/src/components/Editor.tsx index 81ae82aa91..c1a91bfbc4 100644 --- a/packages/snaps-simulator/src/components/Editor.tsx +++ b/packages/snaps-simulator/src/components/Editor.tsx @@ -1,6 +1,8 @@ -import { Box, BoxProps, useColorMode } from '@chakra-ui/react'; -import { FunctionComponent } from 'react'; -import MonacoEditor, { monaco, MonacoEditorProps } from 'react-monaco-editor'; +import type { BoxProps } from '@chakra-ui/react'; +import { Box, useColorMode } from '@chakra-ui/react'; +import type { FunctionComponent } from 'react'; +import type { monaco, MonacoEditorProps } from 'react-monaco-editor'; +import MonacoEditor from 'react-monaco-editor'; import { JSON_RPC_SCHEMA, diff --git a/packages/snaps-simulator/src/components/Icon.tsx b/packages/snaps-simulator/src/components/Icon.tsx index 0aab1b94c9..0588ec0ead 100644 --- a/packages/snaps-simulator/src/components/Icon.tsx +++ b/packages/snaps-simulator/src/components/Icon.tsx @@ -1,6 +1,8 @@ -import { Image, PropsOf, useColorMode } from '@chakra-ui/react'; +import type { PropsOf } from '@chakra-ui/react'; +import { Image, useColorMode } from '@chakra-ui/react'; import { hasProperty } from '@metamask/utils'; -import { forwardRef, ForwardRefExoticComponent } from 'react'; +import type { ForwardRefExoticComponent } from 'react'; +import { forwardRef } from 'react'; import alertIcon from '../assets/icons/alert.svg'; import arrowDownIcon from '../assets/icons/arrow-down.svg'; diff --git a/packages/snaps-simulator/src/components/Link.tsx b/packages/snaps-simulator/src/components/Link.tsx index 10cf03ce23..026b57f0a0 100644 --- a/packages/snaps-simulator/src/components/Link.tsx +++ b/packages/snaps-simulator/src/components/Link.tsx @@ -1,12 +1,8 @@ -import { - LinkProps as ChakraLinkProps, - Link as ChakraLink, -} from '@chakra-ui/react'; -import { FunctionComponent } from 'react'; -import { - Link as RouterLink, - LinkProps as RouterLinkProps, -} from 'react-router-dom'; +import type { LinkProps as ChakraLinkProps } from '@chakra-ui/react'; +import { Link as ChakraLink } from '@chakra-ui/react'; +import type { FunctionComponent } from 'react'; +import type { LinkProps as RouterLinkProps } from 'react-router-dom'; +import { Link as RouterLink } from 'react-router-dom'; type LinkProps = { to: string; diff --git a/packages/snaps-simulator/src/components/Logo.tsx b/packages/snaps-simulator/src/components/Logo.tsx index 5b7e4038a1..cb995f55b8 100644 --- a/packages/snaps-simulator/src/components/Logo.tsx +++ b/packages/snaps-simulator/src/components/Logo.tsx @@ -1,5 +1,5 @@ import { Image, useColorMode } from '@chakra-ui/react'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import logoDark from '../assets/logo-dark.svg'; import logo from '../assets/logo.svg'; diff --git a/packages/snaps-simulator/src/components/Prefill.tsx b/packages/snaps-simulator/src/components/Prefill.tsx index bd2611eab9..45fd7cd239 100644 --- a/packages/snaps-simulator/src/components/Prefill.tsx +++ b/packages/snaps-simulator/src/components/Prefill.tsx @@ -1,7 +1,10 @@ -import { Tag, TagProps } from '@chakra-ui/react'; -import { forwardRef, ReactNode } from 'react'; +import type { TagProps } from '@chakra-ui/react'; +import { Tag } from '@chakra-ui/react'; +import type { ReactNode } from 'react'; +import { forwardRef } from 'react'; -import { Icon, IconName } from './Icon'; +import type { IconName } from './Icon'; +import { Icon } from './Icon'; type PrefillProps = TagProps & { icon?: IconName; diff --git a/packages/snaps-simulator/src/components/Root.tsx b/packages/snaps-simulator/src/components/Root.tsx index 345bd8e2bb..0a8a5a632b 100644 --- a/packages/snaps-simulator/src/components/Root.tsx +++ b/packages/snaps-simulator/src/components/Root.tsx @@ -1,6 +1,7 @@ import { ChakraProvider, ColorModeScript } from '@chakra-ui/react'; import { getBackendOptions, MultiBackend } from '@minoru/react-dnd-treeview'; -import { FunctionComponent, ReactElement, StrictMode } from 'react'; +import type { FunctionComponent, ReactElement } from 'react'; +import { StrictMode } from 'react'; import { DndProvider } from 'react-dnd'; import { Provider } from 'react-redux'; diff --git a/packages/snaps-simulator/src/components/SnapIcon.tsx b/packages/snaps-simulator/src/components/SnapIcon.tsx index c1cc9b4f56..b65128d4f3 100644 --- a/packages/snaps-simulator/src/components/SnapIcon.tsx +++ b/packages/snaps-simulator/src/components/SnapIcon.tsx @@ -1,5 +1,5 @@ import { Avatar, Box } from '@chakra-ui/react'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { getIcon } from '../features'; import { useSelector } from '../hooks'; diff --git a/packages/snaps-simulator/src/components/TestConditional.tsx b/packages/snaps-simulator/src/components/TestConditional.tsx index db26aa7123..69c3420f2d 100644 --- a/packages/snaps-simulator/src/components/TestConditional.tsx +++ b/packages/snaps-simulator/src/components/TestConditional.tsx @@ -1,4 +1,4 @@ -import { FunctionComponent, ReactNode } from 'react'; +import type { FunctionComponent, ReactNode } from 'react'; import { IS_TEST_BUILD } from '../utils'; diff --git a/packages/snaps-simulator/src/components/Window.tsx b/packages/snaps-simulator/src/components/Window.tsx index b343775402..9c393775c5 100644 --- a/packages/snaps-simulator/src/components/Window.tsx +++ b/packages/snaps-simulator/src/components/Window.tsx @@ -1,5 +1,5 @@ import { Flex } from '@chakra-ui/react'; -import { FunctionComponent, ReactNode } from 'react'; +import type { FunctionComponent, ReactNode } from 'react'; import { Author } from './Author'; diff --git a/packages/snaps-simulator/src/components/dialogs/AlertDialog.tsx b/packages/snaps-simulator/src/components/dialogs/AlertDialog.tsx index 33c57f38d8..cb9db59754 100644 --- a/packages/snaps-simulator/src/components/dialogs/AlertDialog.tsx +++ b/packages/snaps-simulator/src/components/dialogs/AlertDialog.tsx @@ -1,6 +1,6 @@ import { Box, Button, Flex } from '@chakra-ui/react'; -import { Component } from '@metamask/snaps-ui'; -import { FunctionComponent } from 'react'; +import type { Component } from '@metamask/snaps-ui'; +import type { FunctionComponent } from 'react'; import { Renderer } from '../../features/renderer'; import { Delineator } from '../Delineator'; diff --git a/packages/snaps-simulator/src/components/dialogs/ConfirmationDialog.tsx b/packages/snaps-simulator/src/components/dialogs/ConfirmationDialog.tsx index e3559abf80..42825b004b 100644 --- a/packages/snaps-simulator/src/components/dialogs/ConfirmationDialog.tsx +++ b/packages/snaps-simulator/src/components/dialogs/ConfirmationDialog.tsx @@ -1,6 +1,6 @@ import { Box, Button, Flex } from '@chakra-ui/react'; -import { Component } from '@metamask/snaps-ui'; -import { FunctionComponent } from 'react'; +import type { Component } from '@metamask/snaps-ui'; +import type { FunctionComponent } from 'react'; import { Renderer } from '../../features/renderer'; import { Delineator } from '../Delineator'; diff --git a/packages/snaps-simulator/src/components/dialogs/PromptDialog.tsx b/packages/snaps-simulator/src/components/dialogs/PromptDialog.tsx index 15f3fdd5ae..425916c50f 100644 --- a/packages/snaps-simulator/src/components/dialogs/PromptDialog.tsx +++ b/packages/snaps-simulator/src/components/dialogs/PromptDialog.tsx @@ -1,6 +1,6 @@ import { Box, Button, Flex, FormControl, Input } from '@chakra-ui/react'; -import { Component } from '@metamask/snaps-ui'; -import { FunctionComponent } from 'react'; +import type { Component } from '@metamask/snaps-ui'; +import type { FunctionComponent } from 'react'; import { useForm } from 'react-hook-form'; import { Renderer } from '../../features/renderer'; diff --git a/packages/snaps-simulator/src/features/builder/Builder.tsx b/packages/snaps-simulator/src/features/builder/Builder.tsx index 186c1af764..e94847ed37 100644 --- a/packages/snaps-simulator/src/features/builder/Builder.tsx +++ b/packages/snaps-simulator/src/features/builder/Builder.tsx @@ -7,9 +7,11 @@ import { TabPanels, Tabs, } from '@chakra-ui/react'; -import { Component, NodeType } from '@metamask/snaps-ui'; -import { NodeModel } from '@minoru/react-dnd-treeview'; -import { FunctionComponent, useState } from 'react'; +import type { Component } from '@metamask/snaps-ui'; +import { NodeType } from '@metamask/snaps-ui'; +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'; diff --git a/packages/snaps-simulator/src/features/builder/components/BaseNode.tsx b/packages/snaps-simulator/src/features/builder/components/BaseNode.tsx index 81b7cd7a8a..c80c18dce4 100644 --- a/packages/snaps-simulator/src/features/builder/components/BaseNode.tsx +++ b/packages/snaps-simulator/src/features/builder/components/BaseNode.tsx @@ -1,10 +1,11 @@ import { Flex, Text } from '@chakra-ui/react'; -import { Component } from '@metamask/snaps-ui'; +import type { Component } from '@metamask/snaps-ui'; import { assert } from '@metamask/utils'; -import { NodeModel } from '@minoru/react-dnd-treeview'; -import { FunctionComponent, ReactNode } from 'react'; +import type { NodeModel } from '@minoru/react-dnd-treeview'; +import type { FunctionComponent, ReactNode } from 'react'; -import { Icon, IconName } from '../../../components'; +import type { IconName } from '../../../components'; +import { Icon } from '../../../components'; export type BaseNodeProps = { node: NodeModel; diff --git a/packages/snaps-simulator/src/features/builder/components/EditableNode.tsx b/packages/snaps-simulator/src/features/builder/components/EditableNode.tsx index ca46c91a31..1dcc174b9f 100644 --- a/packages/snaps-simulator/src/features/builder/components/EditableNode.tsx +++ b/packages/snaps-simulator/src/features/builder/components/EditableNode.tsx @@ -1,8 +1,9 @@ import { Box, Input } from '@chakra-ui/react'; -import { Component, Heading, Text } from '@metamask/snaps-ui'; +import type { Component, Heading, Text } from '@metamask/snaps-ui'; import { assert } from '@metamask/utils'; -import { NodeModel } from '@minoru/react-dnd-treeview'; -import { ChangeEvent, FunctionComponent, useState } from 'react'; +import type { NodeModel } from '@minoru/react-dnd-treeview'; +import type { ChangeEvent, FunctionComponent } from 'react'; +import { useState } from 'react'; import { getNodeText } from '../utils'; import { BaseNode } from './BaseNode'; diff --git a/packages/snaps-simulator/src/features/builder/components/Node.tsx b/packages/snaps-simulator/src/features/builder/components/Node.tsx index 0480036c21..961853d19f 100644 --- a/packages/snaps-simulator/src/features/builder/components/Node.tsx +++ b/packages/snaps-simulator/src/features/builder/components/Node.tsx @@ -1,11 +1,13 @@ import { Box } from '@chakra-ui/react'; -import { Component, NodeType } from '@metamask/snaps-ui'; +import type { Component } from '@metamask/snaps-ui'; +import { NodeType } from '@metamask/snaps-ui'; import { assert } from '@metamask/utils'; -import { NodeModel } from '@minoru/react-dnd-treeview'; -import { FunctionComponent } from 'react'; +import type { NodeModel } from '@minoru/react-dnd-treeview'; +import type { FunctionComponent } from 'react'; import { BaseNode } from './BaseNode'; -import { EditableComponent, EditableNode } from './EditableNode'; +import type { EditableComponent } from './EditableNode'; +import { EditableNode } from './EditableNode'; export const EDITABLE_NODES = [ NodeType.Heading, diff --git a/packages/snaps-simulator/src/features/builder/components/NodeRenderer.tsx b/packages/snaps-simulator/src/features/builder/components/NodeRenderer.tsx index 133be6e319..7741bb5754 100644 --- a/packages/snaps-simulator/src/features/builder/components/NodeRenderer.tsx +++ b/packages/snaps-simulator/src/features/builder/components/NodeRenderer.tsx @@ -1,7 +1,8 @@ import { Box } from '@chakra-ui/react'; -import { Component } from '@metamask/snaps-ui'; -import { NodeModel } from '@minoru/react-dnd-treeview'; -import { FunctionComponent, useMemo } from 'react'; +import type { Component } from '@metamask/snaps-ui'; +import type { NodeModel } from '@minoru/react-dnd-treeview'; +import type { FunctionComponent } from 'react'; +import { useMemo } from 'react'; import { useSelector } from 'react-redux'; import { Delineator, Window } from '../../../components'; diff --git a/packages/snaps-simulator/src/features/builder/components/NodeTree.tsx b/packages/snaps-simulator/src/features/builder/components/NodeTree.tsx index 77fd4a35c0..5b00b8b2df 100644 --- a/packages/snaps-simulator/src/features/builder/components/NodeTree.tsx +++ b/packages/snaps-simulator/src/features/builder/components/NodeTree.tsx @@ -1,12 +1,13 @@ import { Box, Flex } from '@chakra-ui/react'; -import { Component } from '@metamask/snaps-ui'; -import { +import type { Component } from '@metamask/snaps-ui'; +import type { NodeModel, NodeRender, - Tree, TreeMethods, } from '@minoru/react-dnd-treeview'; -import { FunctionComponent, useEffect, useRef } from 'react'; +import { Tree } from '@minoru/react-dnd-treeview'; +import type { FunctionComponent } from 'react'; +import { useEffect, useRef } from 'react'; import { Node } from './Node'; import { Start } from './Start'; diff --git a/packages/snaps-simulator/src/features/builder/components/Start.tsx b/packages/snaps-simulator/src/features/builder/components/Start.tsx index 263490dd3a..de34a83134 100644 --- a/packages/snaps-simulator/src/features/builder/components/Start.tsx +++ b/packages/snaps-simulator/src/features/builder/components/Start.tsx @@ -1,5 +1,5 @@ import { Flex, Heading, Text } from '@chakra-ui/react'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Icon } from '../../../components'; diff --git a/packages/snaps-simulator/src/features/builder/components/TemplateComponent.tsx b/packages/snaps-simulator/src/features/builder/components/TemplateComponent.tsx index 60e491d9a6..595c106275 100644 --- a/packages/snaps-simulator/src/features/builder/components/TemplateComponent.tsx +++ b/packages/snaps-simulator/src/features/builder/components/TemplateComponent.tsx @@ -1,10 +1,11 @@ import { Box } from '@chakra-ui/react'; -import { Component } from '@metamask/snaps-ui'; -import { NodeModel } from '@minoru/react-dnd-treeview'; -import { FunctionComponent } from 'react'; +import type { Component } from '@metamask/snaps-ui'; +import type { NodeModel } from '@minoru/react-dnd-treeview'; +import type { FunctionComponent } from 'react'; import { useDrag } from 'react-dnd'; -import { IconName, Prefill } from '../../../components'; +import type { IconName } from '../../../components'; +import { Prefill } from '../../../components'; type TemplateComponentProps = { node: NodeModel; diff --git a/packages/snaps-simulator/src/features/builder/components/TemplateComponentList.tsx b/packages/snaps-simulator/src/features/builder/components/TemplateComponentList.tsx index 1433d0372c..6f015de352 100644 --- a/packages/snaps-simulator/src/features/builder/components/TemplateComponentList.tsx +++ b/packages/snaps-simulator/src/features/builder/components/TemplateComponentList.tsx @@ -1,15 +1,9 @@ import { Box, Flex, List, ListItem, Text } from '@chakra-ui/react'; -import { - Component, - copyable, - divider, - heading, - panel, - text, -} from '@metamask/snaps-ui'; -import { FunctionComponent } from 'react'; +import type { Component } from '@metamask/snaps-ui'; +import { copyable, divider, heading, panel, text } from '@metamask/snaps-ui'; +import type { FunctionComponent } from 'react'; -import { IconName } from '../../../components'; +import type { IconName } from '../../../components'; import { TemplateComponent } from './TemplateComponent'; type TemplateComponent = { diff --git a/packages/snaps-simulator/src/features/builder/utils.test.ts b/packages/snaps-simulator/src/features/builder/utils.test.ts index 8435fba353..1641dbe492 100644 --- a/packages/snaps-simulator/src/features/builder/utils.test.ts +++ b/packages/snaps-simulator/src/features/builder/utils.test.ts @@ -1,5 +1,6 @@ -import { Component, panel, text } from '@metamask/snaps-ui'; -import { NodeModel } from '@minoru/react-dnd-treeview'; +import type { Component } from '@metamask/snaps-ui'; +import { panel, text } from '@metamask/snaps-ui'; +import type { NodeModel } from '@minoru/react-dnd-treeview'; import { panelToCode, nodeModelsToComponent } from './utils'; diff --git a/packages/snaps-simulator/src/features/builder/utils.ts b/packages/snaps-simulator/src/features/builder/utils.ts index 3d5a4d0124..a719039c48 100644 --- a/packages/snaps-simulator/src/features/builder/utils.ts +++ b/packages/snaps-simulator/src/features/builder/utils.ts @@ -1,7 +1,8 @@ -import { Component, NodeType, Panel } from '@metamask/snaps-ui'; +import type { Component, Panel } from '@metamask/snaps-ui'; +import { NodeType } from '@metamask/snaps-ui'; import { deepClone } from '@metamask/snaps-utils'; import { assert, hasProperty } from '@metamask/utils'; -import { NodeModel } from '@minoru/react-dnd-treeview'; +import type { NodeModel } from '@minoru/react-dnd-treeview'; import typescript from 'prettier/parser-typescript'; import prettier from 'prettier/standalone'; diff --git a/packages/snaps-simulator/src/features/configuration/Configuration.tsx b/packages/snaps-simulator/src/features/configuration/Configuration.tsx index 905021744e..7b5a9d12d5 100644 --- a/packages/snaps-simulator/src/features/configuration/Configuration.tsx +++ b/packages/snaps-simulator/src/features/configuration/Configuration.tsx @@ -29,7 +29,8 @@ import { getSnapPrefix, stripSnapPrefix, } from '@metamask/snaps-utils'; -import { FormEvent, useEffect, useState } from 'react'; +import type { FormEvent } from 'react'; +import { useEffect, useState } from 'react'; import { useDispatch, useSelector } from '../../hooks'; import { diff --git a/packages/snaps-simulator/src/features/configuration/slice.ts b/packages/snaps-simulator/src/features/configuration/slice.ts index 2320588052..feeb4adf9c 100644 --- a/packages/snaps-simulator/src/features/configuration/slice.ts +++ b/packages/snaps-simulator/src/features/configuration/slice.ts @@ -1,4 +1,5 @@ -import { createSelector, createSlice, PayloadAction } from '@reduxjs/toolkit'; +import type { PayloadAction } from '@reduxjs/toolkit'; +import { createSelector, createSlice } from '@reduxjs/toolkit'; export const DEFAULT_SRP = 'test test test test test test test test test test test ball'; diff --git a/packages/snaps-simulator/src/features/console/Console.tsx b/packages/snaps-simulator/src/features/console/Console.tsx index 7cf28582c7..8273712665 100644 --- a/packages/snaps-simulator/src/features/console/Console.tsx +++ b/packages/snaps-simulator/src/features/console/Console.tsx @@ -6,7 +6,8 @@ import { TabPanels, Tabs, } from '@chakra-ui/react'; -import { FunctionComponent, useEffect, useRef, useState } from 'react'; +import type { FunctionComponent } from 'react'; +import { useEffect, useRef, useState } from 'react'; import { Icon } from '../../components'; import { useSelector } from '../../hooks'; diff --git a/packages/snaps-simulator/src/features/console/slice.ts b/packages/snaps-simulator/src/features/console/slice.ts index 75951a8000..78beba3581 100644 --- a/packages/snaps-simulator/src/features/console/slice.ts +++ b/packages/snaps-simulator/src/features/console/slice.ts @@ -1,8 +1,9 @@ -import { createSelector, createSlice, PayloadAction } from '@reduxjs/toolkit'; +import type { PayloadAction } from '@reduxjs/toolkit'; +import { createSelector, createSlice } from '@reduxjs/toolkit'; export enum ConsoleEntryType { - Log, - Error, + Log = 'log', + Error = 'error', } export type ConsoleEntry = { diff --git a/packages/snaps-simulator/src/features/handlers/components/Handler.tsx b/packages/snaps-simulator/src/features/handlers/components/Handler.tsx index dcaa3733e1..38c0261b44 100644 --- a/packages/snaps-simulator/src/features/handlers/components/Handler.tsx +++ b/packages/snaps-simulator/src/features/handlers/components/Handler.tsx @@ -7,7 +7,8 @@ import { TabPanels, Tabs, } from '@chakra-ui/react'; -import { FunctionComponent, useState } from 'react'; +import type { FunctionComponent } from 'react'; +import { useState } from 'react'; import { Outlet } from 'react-router-dom'; import { TestConditional } from '../../../components'; diff --git a/packages/snaps-simulator/src/features/handlers/components/History.tsx b/packages/snaps-simulator/src/features/handlers/components/History.tsx index 11a4b53cdd..c228999c68 100644 --- a/packages/snaps-simulator/src/features/handlers/components/History.tsx +++ b/packages/snaps-simulator/src/features/handlers/components/History.tsx @@ -1,5 +1,5 @@ import { Center, Heading, List, Text } from '@chakra-ui/react'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Icon } from '../../../components'; import { useHandler, useSelector } from '../../../hooks'; diff --git a/packages/snaps-simulator/src/features/handlers/components/HistoryItem.tsx b/packages/snaps-simulator/src/features/handlers/components/HistoryItem.tsx index 5aea113a3f..37d6d4c739 100644 --- a/packages/snaps-simulator/src/features/handlers/components/HistoryItem.tsx +++ b/packages/snaps-simulator/src/features/handlers/components/HistoryItem.tsx @@ -8,13 +8,13 @@ import { Text, useTabsContext, } from '@chakra-ui/react'; -import { JsonRpcRequest } from '@metamask/utils'; +import type { JsonRpcRequest } from '@metamask/utils'; import { formatDistance } from 'date-fns'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Icon } from '../../../components'; import { useDispatch, useHandler } from '../../../hooks'; -import { HistoryEntry } from '../slice'; +import type { HistoryEntry } from '../slice'; export type HistoryItemProps = { item: HistoryEntry; diff --git a/packages/snaps-simulator/src/features/handlers/components/PlayButton.tsx b/packages/snaps-simulator/src/features/handlers/components/PlayButton.tsx index ea72339a15..fb31ab5d90 100644 --- a/packages/snaps-simulator/src/features/handlers/components/PlayButton.tsx +++ b/packages/snaps-simulator/src/features/handlers/components/PlayButton.tsx @@ -6,11 +6,11 @@ import { Icon } from '../../../components'; import { useHandler, useSelector } from '../../../hooks'; enum PlayButtonState { - Ready, - Disabled, - Loading, - Success, - Error, + Ready = 'ready', + Disabled = 'disabled', + Loading = 'loading', + Success = 'success', + Error = 'error', } export const PlayButton = () => { diff --git a/packages/snaps-simulator/src/features/handlers/components/ResetTab.tsx b/packages/snaps-simulator/src/features/handlers/components/ResetTab.tsx index 8b25c641ad..07682db9d4 100644 --- a/packages/snaps-simulator/src/features/handlers/components/ResetTab.tsx +++ b/packages/snaps-simulator/src/features/handlers/components/ResetTab.tsx @@ -1,5 +1,6 @@ import { useTabsContext } from '@chakra-ui/react'; -import { FunctionComponent, useEffect } from 'react'; +import type { FunctionComponent } from 'react'; +import { useEffect } from 'react'; import { useHandler } from '../../../hooks'; diff --git a/packages/snaps-simulator/src/features/handlers/components/ResetUserInterfaceTab.tsx b/packages/snaps-simulator/src/features/handlers/components/ResetUserInterfaceTab.tsx index d9ada8e7d4..f2b33c971d 100644 --- a/packages/snaps-simulator/src/features/handlers/components/ResetUserInterfaceTab.tsx +++ b/packages/snaps-simulator/src/features/handlers/components/ResetUserInterfaceTab.tsx @@ -1,5 +1,6 @@ import { useTabsContext } from '@chakra-ui/react'; -import { FunctionComponent, useEffect } from 'react'; +import type { FunctionComponent } from 'react'; +import { useEffect } from 'react'; import { useSelector } from '../../../hooks'; import { getUserInterface } from '../../simulation'; diff --git a/packages/snaps-simulator/src/features/handlers/components/UserInterface.tsx b/packages/snaps-simulator/src/features/handlers/components/UserInterface.tsx index 504b8a8e78..4900c140af 100644 --- a/packages/snaps-simulator/src/features/handlers/components/UserInterface.tsx +++ b/packages/snaps-simulator/src/features/handlers/components/UserInterface.tsx @@ -1,6 +1,7 @@ import { useTabsContext } from '@chakra-ui/react'; import { DialogType } from '@metamask/rpc-methods'; -import { FunctionComponent, useEffect } from 'react'; +import type { FunctionComponent } from 'react'; +import { useEffect } from 'react'; import { AlertDialog, diff --git a/packages/snaps-simulator/src/features/handlers/cronjobs/Cronjobs.tsx b/packages/snaps-simulator/src/features/handlers/cronjobs/Cronjobs.tsx index b367bff713..171c2e81d6 100644 --- a/packages/snaps-simulator/src/features/handlers/cronjobs/Cronjobs.tsx +++ b/packages/snaps-simulator/src/features/handlers/cronjobs/Cronjobs.tsx @@ -1,4 +1,4 @@ -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Request } from './components'; diff --git a/packages/snaps-simulator/src/features/handlers/cronjobs/components/CronjobPrefill.tsx b/packages/snaps-simulator/src/features/handlers/cronjobs/components/CronjobPrefill.tsx index e9e2c5cd59..ddb34af982 100644 --- a/packages/snaps-simulator/src/features/handlers/cronjobs/components/CronjobPrefill.tsx +++ b/packages/snaps-simulator/src/features/handlers/cronjobs/components/CronjobPrefill.tsx @@ -1,5 +1,5 @@ -import { Json } from '@metamask/utils'; -import { FunctionComponent } from 'react'; +import type { Json } from '@metamask/utils'; +import type { FunctionComponent } from 'react'; import { Prefill } from '../../../../components/Prefill'; 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 b6f4995137..e045ed44d6 100644 --- a/packages/snaps-simulator/src/features/handlers/cronjobs/components/CronjobPrefills.tsx +++ b/packages/snaps-simulator/src/features/handlers/cronjobs/components/CronjobPrefills.tsx @@ -1,9 +1,10 @@ import { Box, Flex, Text } from '@chakra-ui/react'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { useSelector } from '../../../../hooks'; import { getSnapManifest } from '../../../simulation'; -import { CronjobData, CronjobPrefill } from './CronjobPrefill'; +import type { CronjobData } from './CronjobPrefill'; +import { CronjobPrefill } from './CronjobPrefill'; export type CronjobPrefillsProps = { onClick: (prefill: CronjobData) => void; 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 f66f7923d6..a24c68c783 100644 --- a/packages/snaps-simulator/src/features/handlers/cronjobs/components/Request.tsx +++ b/packages/snaps-simulator/src/features/handlers/cronjobs/components/Request.tsx @@ -6,7 +6,7 @@ import { Input, } from '@chakra-ui/react'; import { HandlerType } from '@metamask/snaps-utils'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Controller, useForm } from 'react-hook-form'; import { Editor } from '../../../../components'; @@ -14,7 +14,7 @@ import { useDispatch, useSelector } from '../../../../hooks'; import { sendRequest } from '../../../simulation'; import { SAMPLE_JSON_RPC_REQUEST } from '../../json-rpc/schema'; import { getCronjobRequest } from '../slice'; -import { CronjobData } from './CronjobPrefill'; +import type { CronjobData } from './CronjobPrefill'; import { CronjobPrefills } from './CronjobPrefills'; type CronjobFormData = { diff --git a/packages/snaps-simulator/src/features/handlers/cronjobs/slice.ts b/packages/snaps-simulator/src/features/handlers/cronjobs/slice.ts index 6d2da386fc..b31cde9dff 100644 --- a/packages/snaps-simulator/src/features/handlers/cronjobs/slice.ts +++ b/packages/snaps-simulator/src/features/handlers/cronjobs/slice.ts @@ -1,5 +1,5 @@ import { HandlerType } from '@metamask/snaps-utils'; -import { JsonRpcRequest, JsonRpcResponse, Json } from '@metamask/utils'; +import type { JsonRpcRequest, JsonRpcResponse, Json } from '@metamask/utils'; import { createSelector } from '@reduxjs/toolkit'; import { createHandlerSlice } from '../slice'; diff --git a/packages/snaps-simulator/src/features/handlers/json-rpc/JsonRpc.tsx b/packages/snaps-simulator/src/features/handlers/json-rpc/JsonRpc.tsx index 7b901efc2a..54729afebd 100644 --- a/packages/snaps-simulator/src/features/handlers/json-rpc/JsonRpc.tsx +++ b/packages/snaps-simulator/src/features/handlers/json-rpc/JsonRpc.tsx @@ -1,4 +1,4 @@ -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Request } from './components'; diff --git a/packages/snaps-simulator/src/features/handlers/json-rpc/components/Request.tsx b/packages/snaps-simulator/src/features/handlers/json-rpc/components/Request.tsx index c6dc8e2731..152a2b0063 100644 --- a/packages/snaps-simulator/src/features/handlers/json-rpc/components/Request.tsx +++ b/packages/snaps-simulator/src/features/handlers/json-rpc/components/Request.tsx @@ -6,7 +6,7 @@ import { Input, } from '@chakra-ui/react'; import { HandlerType } from '@metamask/snaps-utils'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Controller, useForm } from 'react-hook-form'; import { Editor } from '../../../../components'; diff --git a/packages/snaps-simulator/src/features/handlers/json-rpc/slice.ts b/packages/snaps-simulator/src/features/handlers/json-rpc/slice.ts index 7030915ff5..fde6be1dff 100644 --- a/packages/snaps-simulator/src/features/handlers/json-rpc/slice.ts +++ b/packages/snaps-simulator/src/features/handlers/json-rpc/slice.ts @@ -1,5 +1,5 @@ import { HandlerType } from '@metamask/snaps-utils'; -import { Json, JsonRpcRequest, JsonRpcResponse } from '@metamask/utils'; +import type { Json, JsonRpcRequest, JsonRpcResponse } from '@metamask/utils'; import { createSelector } from '@reduxjs/toolkit'; import { createHandlerSlice } from '../slice'; diff --git a/packages/snaps-simulator/src/features/handlers/slice.ts b/packages/snaps-simulator/src/features/handlers/slice.ts index 25d7c54d5b..991cbb1d49 100644 --- a/packages/snaps-simulator/src/features/handlers/slice.ts +++ b/packages/snaps-simulator/src/features/handlers/slice.ts @@ -1,4 +1,5 @@ -import { createSlice, Draft, PayloadAction } from '@reduxjs/toolkit'; +import type { Draft, PayloadAction } from '@reduxjs/toolkit'; +import { createSlice } from '@reduxjs/toolkit'; export type HandlerSliceOptions = { name: string; diff --git a/packages/snaps-simulator/src/features/handlers/transactions/Transactions.tsx b/packages/snaps-simulator/src/features/handlers/transactions/Transactions.tsx index 46fb701830..c147b9091f 100644 --- a/packages/snaps-simulator/src/features/handlers/transactions/Transactions.tsx +++ b/packages/snaps-simulator/src/features/handlers/transactions/Transactions.tsx @@ -1,4 +1,4 @@ -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Request } from './components'; 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 405e86802a..848dc70c4d 100644 --- a/packages/snaps-simulator/src/features/handlers/transactions/components/Request.tsx +++ b/packages/snaps-simulator/src/features/handlers/transactions/components/Request.tsx @@ -10,13 +10,14 @@ import { Textarea, } from '@chakra-ui/react'; import { HandlerType } from '@metamask/snaps-utils'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { useForm } from 'react-hook-form'; import { useDispatch, useSelector } from '../../../../hooks'; import { sendRequest } from '../../../simulation'; import { getTransactionRequest } from '../slice'; -import { TransactionFormData, hexlifyTransactionData } from '../utils'; +import type { TransactionFormData } from '../utils'; +import { hexlifyTransactionData } from '../utils'; import { TransactionPrefills } from './TransactionPrefills'; const PLACEHOLDERS = { diff --git a/packages/snaps-simulator/src/features/handlers/transactions/components/TransactionPrefill.tsx b/packages/snaps-simulator/src/features/handlers/transactions/components/TransactionPrefill.tsx index 5d10a5ceff..df0c15c102 100644 --- a/packages/snaps-simulator/src/features/handlers/transactions/components/TransactionPrefill.tsx +++ b/packages/snaps-simulator/src/features/handlers/transactions/components/TransactionPrefill.tsx @@ -1,7 +1,7 @@ -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Prefill } from '../../../../components'; -import { TransactionFormData } from '../utils'; +import type { TransactionFormData } from '../utils'; export type TransactionPrefillProps = TransactionFormData & { name: string; 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 649e6e7564..b163814858 100644 --- a/packages/snaps-simulator/src/features/handlers/transactions/components/TransactionPrefills.tsx +++ b/packages/snaps-simulator/src/features/handlers/transactions/components/TransactionPrefills.tsx @@ -1,8 +1,8 @@ import { Box, Flex, Text } from '@chakra-ui/react'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { TRANSACTION_PRESETS } from '../presets'; -import { TransactionFormData } from '../utils'; +import type { TransactionFormData } from '../utils'; import { TransactionPrefill } from './TransactionPrefill'; export type TransactionPrefillsProps = { diff --git a/packages/snaps-simulator/src/features/handlers/transactions/presets.ts b/packages/snaps-simulator/src/features/handlers/transactions/presets.ts index 1f2e63d6e1..9c74054364 100644 --- a/packages/snaps-simulator/src/features/handlers/transactions/presets.ts +++ b/packages/snaps-simulator/src/features/handlers/transactions/presets.ts @@ -1,4 +1,4 @@ -import { TransactionFormData } from './utils'; +import type { TransactionFormData } from './utils'; export type TransactionPreset = { name: string; diff --git a/packages/snaps-simulator/src/features/handlers/transactions/slice.ts b/packages/snaps-simulator/src/features/handlers/transactions/slice.ts index 59f261d31c..4d76b0a504 100644 --- a/packages/snaps-simulator/src/features/handlers/transactions/slice.ts +++ b/packages/snaps-simulator/src/features/handlers/transactions/slice.ts @@ -1,5 +1,5 @@ import { HandlerType } from '@metamask/snaps-utils'; -import { JsonRpcRequest, JsonRpcResponse, Json } from '@metamask/utils'; +import type { JsonRpcRequest, JsonRpcResponse, Json } from '@metamask/utils'; import { createSelector } from '@reduxjs/toolkit'; import { createHandlerSlice } from '../slice'; diff --git a/packages/snaps-simulator/src/features/layout/Layout.tsx b/packages/snaps-simulator/src/features/layout/Layout.tsx index ea8f7c2230..34c9d58651 100644 --- a/packages/snaps-simulator/src/features/layout/Layout.tsx +++ b/packages/snaps-simulator/src/features/layout/Layout.tsx @@ -1,5 +1,5 @@ import { Flex } from '@chakra-ui/react'; -import { FunctionComponent, ReactNode } from 'react'; +import type { FunctionComponent, ReactNode } from 'react'; import { Outlet } from 'react-router-dom'; import { Console } from '../console'; diff --git a/packages/snaps-simulator/src/features/layout/components/Header.tsx b/packages/snaps-simulator/src/features/layout/components/Header.tsx index 1cc3a063c6..fe337cf72b 100644 --- a/packages/snaps-simulator/src/features/layout/components/Header.tsx +++ b/packages/snaps-simulator/src/features/layout/components/Header.tsx @@ -1,5 +1,5 @@ import { Container, Stack } from '@chakra-ui/react'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Logo } from '../../../components'; import { Configuration } from '../../configuration'; diff --git a/packages/snaps-simulator/src/features/layout/components/Sidebar.tsx b/packages/snaps-simulator/src/features/layout/components/Sidebar.tsx index 039129867a..77e2df5cbd 100644 --- a/packages/snaps-simulator/src/features/layout/components/Sidebar.tsx +++ b/packages/snaps-simulator/src/features/layout/components/Sidebar.tsx @@ -1,5 +1,5 @@ import { Flex } from '@chakra-ui/react'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Navigation } from '../../navigation'; import { Bottom } from '../../navigation/components'; diff --git a/packages/snaps-simulator/src/features/manifest/Manifest.tsx b/packages/snaps-simulator/src/features/manifest/Manifest.tsx index 5edc05b3ef..ad6d8edc03 100644 --- a/packages/snaps-simulator/src/features/manifest/Manifest.tsx +++ b/packages/snaps-simulator/src/features/manifest/Manifest.tsx @@ -7,7 +7,7 @@ import { TabPanels, Tabs, } from '@chakra-ui/react'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Editor } from '../../components'; import { useSelector } from '../../hooks'; diff --git a/packages/snaps-simulator/src/features/manifest/components/Item.tsx b/packages/snaps-simulator/src/features/manifest/components/Item.tsx index a2593b861a..ec606b10f9 100644 --- a/packages/snaps-simulator/src/features/manifest/components/Item.tsx +++ b/packages/snaps-simulator/src/features/manifest/components/Item.tsx @@ -10,7 +10,7 @@ import { Tag, Text, } from '@chakra-ui/react'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Icon } from '../../../components'; diff --git a/packages/snaps-simulator/src/features/manifest/components/Validation.tsx b/packages/snaps-simulator/src/features/manifest/components/Validation.tsx index e940748a62..ee3977ef85 100644 --- a/packages/snaps-simulator/src/features/manifest/components/Validation.tsx +++ b/packages/snaps-simulator/src/features/manifest/components/Validation.tsx @@ -1,5 +1,5 @@ import { Center, Heading, List, Text } from '@chakra-ui/react'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Icon } from '../../../components'; import { useSelector } from '../../../hooks'; diff --git a/packages/snaps-simulator/src/features/manifest/sagas.ts b/packages/snaps-simulator/src/features/manifest/sagas.ts index 1a1f628718..0fe04fb6c2 100644 --- a/packages/snaps-simulator/src/features/manifest/sagas.ts +++ b/packages/snaps-simulator/src/features/manifest/sagas.ts @@ -1,15 +1,15 @@ -import { SnapManifest, VirtualFile } from '@metamask/snaps-utils'; -import { PayloadAction } from '@reduxjs/toolkit'; -import { SagaIterator } from 'redux-saga'; +import type { SnapManifest, VirtualFile } from '@metamask/snaps-utils'; +import type { PayloadAction } from '@reduxjs/toolkit'; +import type { SagaIterator } from 'redux-saga'; import { all, call, put, select, takeLatest } from 'redux-saga/effects'; import { getIcon, getSourceCode } from '../simulation'; +import type { ValidationResult } from './slice'; import { ManifestStatus, setResults, setValid, validateManifest, - ValidationResult, } from './slice'; import { validators } from './validators'; diff --git a/packages/snaps-simulator/src/features/manifest/slice.ts b/packages/snaps-simulator/src/features/manifest/slice.ts index 6a9884b5d2..8165f03d51 100644 --- a/packages/snaps-simulator/src/features/manifest/slice.ts +++ b/packages/snaps-simulator/src/features/manifest/slice.ts @@ -1,12 +1,8 @@ -import { SnapManifest, VirtualFile } from '@metamask/snaps-utils'; -import { - createAction, - createSelector, - createSlice, - PayloadAction, -} from '@reduxjs/toolkit'; - -import { Validator } from './validators'; +import type { SnapManifest, VirtualFile } from '@metamask/snaps-utils'; +import type { PayloadAction } from '@reduxjs/toolkit'; +import { createAction, createSelector, createSlice } from '@reduxjs/toolkit'; + +import type { Validator } from './validators'; export enum ManifestStatus { Valid = 'valid', diff --git a/packages/snaps-simulator/src/features/manifest/validators.ts b/packages/snaps-simulator/src/features/manifest/validators.ts index 24ff73f0e7..9c911d7e63 100644 --- a/packages/snaps-simulator/src/features/manifest/validators.ts +++ b/packages/snaps-simulator/src/features/manifest/validators.ts @@ -1,9 +1,5 @@ -import { - SnapManifest, - SnapManifestStruct, - VirtualFile, - getSnapChecksum, -} from '@metamask/snaps-utils'; +import type { SnapManifest, VirtualFile } from '@metamask/snaps-utils'; +import { SnapManifestStruct, getSnapChecksum } from '@metamask/snaps-utils'; type ValidatorContext = { sourceCode: VirtualFile; diff --git a/packages/snaps-simulator/src/features/navigation/Navigation.tsx b/packages/snaps-simulator/src/features/navigation/Navigation.tsx index 7bcf1534b9..caf955931b 100644 --- a/packages/snaps-simulator/src/features/navigation/Navigation.tsx +++ b/packages/snaps-simulator/src/features/navigation/Navigation.tsx @@ -1,5 +1,5 @@ import { Box, Container, List, Stack, Text } from '@chakra-ui/react'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Icon } from '../../components'; import { useSelector } from '../../hooks'; diff --git a/packages/snaps-simulator/src/features/navigation/components/Bottom.tsx b/packages/snaps-simulator/src/features/navigation/components/Bottom.tsx index 3b05a88713..10bc574a2d 100644 --- a/packages/snaps-simulator/src/features/navigation/components/Bottom.tsx +++ b/packages/snaps-simulator/src/features/navigation/components/Bottom.tsx @@ -1,5 +1,5 @@ import { Box, List, Text } from '@chakra-ui/react'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Icon } from '../../../components'; import { useDispatch } from '../../../hooks'; diff --git a/packages/snaps-simulator/src/features/navigation/components/Item.tsx b/packages/snaps-simulator/src/features/navigation/components/Item.tsx index 9cd78329e8..5f21a2919b 100644 --- a/packages/snaps-simulator/src/features/navigation/components/Item.tsx +++ b/packages/snaps-simulator/src/features/navigation/components/Item.tsx @@ -1,5 +1,5 @@ import { ListItem, Stack } from '@chakra-ui/react'; -import { FunctionComponent, ReactNode } from 'react'; +import type { FunctionComponent, ReactNode } from 'react'; import { useMatch } from 'react-router-dom'; import { Link } from '../../../components'; diff --git a/packages/snaps-simulator/src/features/navigation/components/ManifestStatusIndicator.tsx b/packages/snaps-simulator/src/features/navigation/components/ManifestStatusIndicator.tsx index 9084d898eb..789df4e8aa 100644 --- a/packages/snaps-simulator/src/features/navigation/components/ManifestStatusIndicator.tsx +++ b/packages/snaps-simulator/src/features/navigation/components/ManifestStatusIndicator.tsx @@ -1,5 +1,5 @@ import { Box } from '@chakra-ui/react'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { useSelector } from '../../../hooks'; import { getManifestStatus, ManifestStatus } from '../../manifest/slice'; diff --git a/packages/snaps-simulator/src/features/navigation/components/NavigationTag.tsx b/packages/snaps-simulator/src/features/navigation/components/NavigationTag.tsx index 4ed7a75552..c8cc050dd6 100644 --- a/packages/snaps-simulator/src/features/navigation/components/NavigationTag.tsx +++ b/packages/snaps-simulator/src/features/navigation/components/NavigationTag.tsx @@ -1,5 +1,5 @@ import { Tag } from '@chakra-ui/react'; -import { FunctionComponent, ReactNode } from 'react'; +import type { FunctionComponent, ReactNode } from 'react'; import { useMatch } from 'react-router-dom'; type NavigationTagProps = { diff --git a/packages/snaps-simulator/src/features/navigation/items.ts b/packages/snaps-simulator/src/features/navigation/items.ts index a17870ed71..adbecfdd29 100644 --- a/packages/snaps-simulator/src/features/navigation/items.ts +++ b/packages/snaps-simulator/src/features/navigation/items.ts @@ -1,7 +1,7 @@ import { HandlerType } from '@metamask/snaps-utils'; -import { IconName } from '../../components'; -import { ApplicationState } from '../../store'; +import type { IconName } from '../../components'; +import type { ApplicationState } from '../../store'; type ConditionFunction = (state: ApplicationState) => boolean; diff --git a/packages/snaps-simulator/src/features/notifications/Notifications.tsx b/packages/snaps-simulator/src/features/notifications/Notifications.tsx index 43cf7c4751..484f5a91e0 100644 --- a/packages/snaps-simulator/src/features/notifications/Notifications.tsx +++ b/packages/snaps-simulator/src/features/notifications/Notifications.tsx @@ -1,5 +1,6 @@ import { useToast } from '@chakra-ui/react'; -import { FunctionComponent, useEffect } from 'react'; +import type { FunctionComponent } from 'react'; +import { useEffect } from 'react'; import { useDispatch, useSelector } from '../../hooks'; import { getNotifications, removeNotification } from './slice'; diff --git a/packages/snaps-simulator/src/features/notifications/slice.ts b/packages/snaps-simulator/src/features/notifications/slice.ts index 4ea5327639..ac7384dc3d 100644 --- a/packages/snaps-simulator/src/features/notifications/slice.ts +++ b/packages/snaps-simulator/src/features/notifications/slice.ts @@ -1,5 +1,6 @@ import { NotificationType } from '@metamask/rpc-methods'; -import { createSelector, createSlice, PayloadAction } from '@reduxjs/toolkit'; +import type { PayloadAction } from '@reduxjs/toolkit'; +import { createSelector, createSlice } from '@reduxjs/toolkit'; export type Notification = { id: string; diff --git a/packages/snaps-simulator/src/features/polling/sagas.ts b/packages/snaps-simulator/src/features/polling/sagas.ts index 6b93b1cddd..a92d64a325 100644 --- a/packages/snaps-simulator/src/features/polling/sagas.ts +++ b/packages/snaps-simulator/src/features/polling/sagas.ts @@ -1,13 +1,12 @@ import { detectSnapLocation } from '@metamask/snaps-controllers'; +import type { SnapManifest, VirtualFile } from '@metamask/snaps-utils'; import { getSnapPrefix, logError, parseJson, SnapIdPrefixes, - SnapManifest, - VirtualFile, } from '@metamask/snaps-utils'; -import { SemVerRange } from '@metamask/utils'; +import type { SemVerRange } from '@metamask/utils'; import equal from 'fast-deep-equal/es6'; import { all, call, delay, put, select, takeLatest } from 'redux-saga/effects'; diff --git a/packages/snaps-simulator/src/features/renderer/Renderer.tsx b/packages/snaps-simulator/src/features/renderer/Renderer.tsx index cf7e26438b..f079c84243 100644 --- a/packages/snaps-simulator/src/features/renderer/Renderer.tsx +++ b/packages/snaps-simulator/src/features/renderer/Renderer.tsx @@ -1,5 +1,6 @@ -import { Component, NodeType } from '@metamask/snaps-ui'; -import { FunctionComponent } from 'react'; +import type { Component } from '@metamask/snaps-ui'; +import { NodeType } from '@metamask/snaps-ui'; +import type { FunctionComponent } from 'react'; import { Copyable, Panel, Text, Divider, Heading, Spinner } from './components'; diff --git a/packages/snaps-simulator/src/features/renderer/components/Copyable.tsx b/packages/snaps-simulator/src/features/renderer/components/Copyable.tsx index d2ae201b36..6c5c4ab90f 100644 --- a/packages/snaps-simulator/src/features/renderer/components/Copyable.tsx +++ b/packages/snaps-simulator/src/features/renderer/components/Copyable.tsx @@ -1,7 +1,8 @@ import { Flex, Text } from '@chakra-ui/react'; import { isComponent } from '@metamask/snaps-ui'; import { assert } from '@metamask/utils'; -import { FunctionComponent, useEffect, useState } from 'react'; +import type { FunctionComponent } from 'react'; +import { useEffect, useState } from 'react'; import { Icon } from '../../../components'; diff --git a/packages/snaps-simulator/src/features/renderer/components/Divider.tsx b/packages/snaps-simulator/src/features/renderer/components/Divider.tsx index 7b4d815d98..226f78b942 100644 --- a/packages/snaps-simulator/src/features/renderer/components/Divider.tsx +++ b/packages/snaps-simulator/src/features/renderer/components/Divider.tsx @@ -1,5 +1,5 @@ import { Divider as ChakraDivider } from '@chakra-ui/react'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; export type DividerProps = { id: string; diff --git a/packages/snaps-simulator/src/features/renderer/components/Heading.tsx b/packages/snaps-simulator/src/features/renderer/components/Heading.tsx index afa18c7cc0..de4f87a933 100644 --- a/packages/snaps-simulator/src/features/renderer/components/Heading.tsx +++ b/packages/snaps-simulator/src/features/renderer/components/Heading.tsx @@ -1,7 +1,7 @@ import { Heading as ChakraHeading } from '@chakra-ui/react'; import { isComponent } from '@metamask/snaps-ui'; import { assert } from '@metamask/utils'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; export type HeadingProps = { id: string; diff --git a/packages/snaps-simulator/src/features/renderer/components/Panel.tsx b/packages/snaps-simulator/src/features/renderer/components/Panel.tsx index be4a841e54..326894911a 100644 --- a/packages/snaps-simulator/src/features/renderer/components/Panel.tsx +++ b/packages/snaps-simulator/src/features/renderer/components/Panel.tsx @@ -1,7 +1,7 @@ import { Box } from '@chakra-ui/react'; import { isComponent } from '@metamask/snaps-ui'; import { assert } from '@metamask/utils'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Renderer } from '../Renderer'; diff --git a/packages/snaps-simulator/src/features/renderer/components/Spinner.tsx b/packages/snaps-simulator/src/features/renderer/components/Spinner.tsx index a643c6d74c..de41205cda 100644 --- a/packages/snaps-simulator/src/features/renderer/components/Spinner.tsx +++ b/packages/snaps-simulator/src/features/renderer/components/Spinner.tsx @@ -1,5 +1,5 @@ import { Spinner as ChakraSpinner } from '@chakra-ui/react'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; export type SpinnerProps = { id: string; diff --git a/packages/snaps-simulator/src/features/renderer/components/Text.tsx b/packages/snaps-simulator/src/features/renderer/components/Text.tsx index 0cc213c76a..1a330bf7dd 100644 --- a/packages/snaps-simulator/src/features/renderer/components/Text.tsx +++ b/packages/snaps-simulator/src/features/renderer/components/Text.tsx @@ -1,7 +1,7 @@ import { Text as ChakraText } from '@chakra-ui/react'; import { isComponent } from '@metamask/snaps-ui'; import { assert } from '@metamask/utils'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import ReactMarkdown from 'react-markdown'; export type TextProps = { diff --git a/packages/snaps-simulator/src/features/simulation/hooks.ts b/packages/snaps-simulator/src/features/simulation/hooks.ts index 54866f0a31..0f74469d82 100644 --- a/packages/snaps-simulator/src/features/simulation/hooks.ts +++ b/packages/snaps-simulator/src/features/simulation/hooks.ts @@ -1,7 +1,7 @@ -import { DialogType, NotificationArgs } from '@metamask/rpc-methods'; -import { Component } from '@metamask/snaps-ui'; +import type { DialogType, NotificationArgs } from '@metamask/rpc-methods'; +import type { Component } from '@metamask/snaps-ui'; import { nanoid } from '@reduxjs/toolkit'; -import { SagaIterator } from 'redux-saga'; +import type { SagaIterator } from 'redux-saga'; import { call, put, select, take } from 'redux-saga/effects'; import { addNativeNotification, addNotification } from '../notifications'; diff --git a/packages/snaps-simulator/src/features/simulation/middleware.ts b/packages/snaps-simulator/src/features/simulation/middleware.ts index 43ad5fae89..219dad762c 100644 --- a/packages/snaps-simulator/src/features/simulation/middleware.ts +++ b/packages/snaps-simulator/src/features/simulation/middleware.ts @@ -1,5 +1,5 @@ import { logError } from '@metamask/snaps-utils'; -import { +import type { JsonRpcEngineEndCallback, JsonRpcEngineNextCallback, JsonRpcMiddleware, diff --git a/packages/snaps-simulator/src/features/simulation/sagas.test.ts b/packages/snaps-simulator/src/features/simulation/sagas.test.ts index 8b7e1ae752..d400c97d64 100644 --- a/packages/snaps-simulator/src/features/simulation/sagas.test.ts +++ b/packages/snaps-simulator/src/features/simulation/sagas.test.ts @@ -1,4 +1,4 @@ -import { GenericPermissionController } from '@metamask/permission-controller'; +import type { GenericPermissionController } from '@metamask/permission-controller'; import { processSnapPermissions } from '@metamask/snaps-controllers'; import { DEFAULT_ENDOWMENTS, HandlerType } from '@metamask/snaps-utils'; import { expectSaga } from 'redux-saga-test-plan'; diff --git a/packages/snaps-simulator/src/features/simulation/sagas.ts b/packages/snaps-simulator/src/features/simulation/sagas.ts index cd26eeafc5..ef158024dc 100644 --- a/packages/snaps-simulator/src/features/simulation/sagas.ts +++ b/packages/snaps-simulator/src/features/simulation/sagas.ts @@ -2,8 +2,8 @@ import { ControllerMessenger } from '@metamask/base-controller'; import { encrypt, decrypt } from '@metamask/browser-passworder'; import { createFetchMiddleware } from '@metamask/eth-json-rpc-middleware'; import { mnemonicPhraseToBytes } from '@metamask/key-tree/dist/utils'; +import type { GenericPermissionController } from '@metamask/permission-controller'; import { - GenericPermissionController, PermissionController, SubjectMetadataController, SubjectType, @@ -18,18 +18,18 @@ import { buildSnapEndowmentSpecifications, buildSnapRestrictedMethodSpecifications, } from '@metamask/snaps-controllers'; -import { - logError, +import type { SnapManifest, SnapRpcHookArgs, VirtualFile, } from '@metamask/snaps-utils'; +import { logError } from '@metamask/snaps-utils'; import { getSafeJson } from '@metamask/utils'; -import { PayloadAction } from '@reduxjs/toolkit'; +import type { PayloadAction } from '@reduxjs/toolkit'; import { JsonRpcEngine } from 'json-rpc-engine'; import { createEngineStream } from 'json-rpc-middleware-stream'; import pump from 'pump'; -import { SagaIterator } from 'redux-saga'; +import type { SagaIterator } from 'redux-saga'; import { all, call, put, select, takeLatest } from 'redux-saga/effects'; import { version } from '../../../package.json'; diff --git a/packages/snaps-simulator/src/features/simulation/slice.test.ts b/packages/snaps-simulator/src/features/simulation/slice.test.ts index 52cfbf2a24..a46024a471 100644 --- a/packages/snaps-simulator/src/features/simulation/slice.test.ts +++ b/packages/snaps-simulator/src/features/simulation/slice.test.ts @@ -1,4 +1,4 @@ -import { IframeExecutionService } from '@metamask/snaps-controllers'; +import type { IframeExecutionService } from '@metamask/snaps-controllers'; import { VirtualFile } from '@metamask/snaps-utils'; import { diff --git a/packages/snaps-simulator/src/features/simulation/slice.ts b/packages/snaps-simulator/src/features/simulation/slice.ts index 0c2cadf0eb..8839a4dad8 100644 --- a/packages/snaps-simulator/src/features/simulation/slice.ts +++ b/packages/snaps-simulator/src/features/simulation/slice.ts @@ -1,27 +1,27 @@ -import { +import type { GenericPermissionController, SubjectMetadataController, } from '@metamask/permission-controller'; -import { DialogType } from '@metamask/rpc-methods'; -import { IframeExecutionService } from '@metamask/snaps-controllers'; -import { Component } from '@metamask/snaps-ui'; -import { +import type { DialogType } from '@metamask/rpc-methods'; +import type { IframeExecutionService } from '@metamask/snaps-controllers'; +import type { Component } from '@metamask/snaps-ui'; +import type { SnapManifest, SnapRpcHookArgs, VirtualFile, } from '@metamask/snaps-utils'; +import type { PayloadAction } from '@reduxjs/toolkit'; import { createAction, createSelector, createSlice, nanoid, - PayloadAction, } from '@reduxjs/toolkit'; export enum SnapStatus { - Ok, - Loading, - Error, + Ok = 'ok', + Loading = 'loading', + Error = 'error', } export type HandlerUserInterface = { diff --git a/packages/snaps-simulator/src/features/simulation/snap-permissions.ts b/packages/snaps-simulator/src/features/simulation/snap-permissions.ts index 0245ffd76f..37664b015e 100644 --- a/packages/snaps-simulator/src/features/simulation/snap-permissions.ts +++ b/packages/snaps-simulator/src/features/simulation/snap-permissions.ts @@ -1,4 +1,4 @@ -import { GenericPermissionController } from '@metamask/permission-controller'; +import type { GenericPermissionController } from '@metamask/permission-controller'; import { endowmentPermissionBuilders } from '@metamask/snaps-controllers'; import { DEFAULT_ENDOWMENTS } from '@metamask/snaps-utils'; diff --git a/packages/snaps-simulator/src/features/simulation/test/mockManifest.ts b/packages/snaps-simulator/src/features/simulation/test/mockManifest.ts index 4f9af91204..c3b10e66b2 100644 --- a/packages/snaps-simulator/src/features/simulation/test/mockManifest.ts +++ b/packages/snaps-simulator/src/features/simulation/test/mockManifest.ts @@ -1,6 +1,8 @@ /* eslint-disable @typescript-eslint/naming-convention */ -import { SnapManifest, VirtualFile } from '@metamask/snaps-utils'; -import { SemVerVersion, stringToBytes } from '@metamask/utils'; +import type { SnapManifest } from '@metamask/snaps-utils'; +import { VirtualFile } from '@metamask/snaps-utils'; +import type { SemVerVersion } from '@metamask/utils'; +import { stringToBytes } from '@metamask/utils'; export const MOCK_MANIFEST = { version: '1.0.0' as SemVerVersion, diff --git a/packages/snaps-simulator/src/hooks/useDispatch.ts b/packages/snaps-simulator/src/hooks/useDispatch.ts index b67f86fdda..21b070c15c 100644 --- a/packages/snaps-simulator/src/hooks/useDispatch.ts +++ b/packages/snaps-simulator/src/hooks/useDispatch.ts @@ -1,6 +1,6 @@ import { useDispatch as useReduxDispatch } from 'react-redux'; -import { Dispatch } from '../store/store'; +import type { Dispatch } from '../store/store'; /** * A hook to access the Redux dispatch function. diff --git a/packages/snaps-simulator/src/hooks/useHandler.tsx b/packages/snaps-simulator/src/hooks/useHandler.tsx index 611a4b1556..91dd25bbab 100644 --- a/packages/snaps-simulator/src/hooks/useHandler.tsx +++ b/packages/snaps-simulator/src/hooks/useHandler.tsx @@ -1,4 +1,4 @@ -import { HandlerType } from '@metamask/snaps-utils'; +import type { HandlerType } from '@metamask/snaps-utils'; import { assert } from '@metamask/utils'; import { useMatch } from 'react-router-dom'; diff --git a/packages/snaps-simulator/src/hooks/useSelector.ts b/packages/snaps-simulator/src/hooks/useSelector.ts index 1a9dfce4c1..493ea36830 100644 --- a/packages/snaps-simulator/src/hooks/useSelector.ts +++ b/packages/snaps-simulator/src/hooks/useSelector.ts @@ -1,9 +1,7 @@ -import { - TypedUseSelectorHook, - useSelector as useReduxSelector, -} from 'react-redux'; +import type { TypedUseSelectorHook } from 'react-redux'; +import { useSelector as useReduxSelector } from 'react-redux'; -import { ApplicationState } from '../store/store'; +import type { ApplicationState } from '../store/store'; /** * A hook to access the Redux store's state. diff --git a/packages/snaps-simulator/src/store/store.ts b/packages/snaps-simulator/src/store/store.ts index 2bfb9e1533..7345dc684f 100644 --- a/packages/snaps-simulator/src/store/store.ts +++ b/packages/snaps-simulator/src/store/store.ts @@ -1,5 +1,5 @@ import { configureStore, createAction } from '@reduxjs/toolkit'; -import { SagaIterator, Saga } from 'redux-saga'; +import type { SagaIterator, Saga } from 'redux-saga'; import { cancel, fork, take } from 'redux-saga/effects'; import { sagaMiddleware } from './middleware'; diff --git a/packages/snaps-simulator/src/theme.ts b/packages/snaps-simulator/src/theme.ts index 1915091950..339390be0c 100644 --- a/packages/snaps-simulator/src/theme.ts +++ b/packages/snaps-simulator/src/theme.ts @@ -7,8 +7,8 @@ import { modalAnatomy, switchAnatomy, } from '@chakra-ui/anatomy'; +import type { ThemeConfig } from '@chakra-ui/react'; import { - ThemeConfig, createMultiStyleConfigHelpers, cssVar, defineStyle, diff --git a/packages/snaps-simulator/src/utils/render.tsx b/packages/snaps-simulator/src/utils/render.tsx index 338cc12954..e014a68838 100644 --- a/packages/snaps-simulator/src/utils/render.tsx +++ b/packages/snaps-simulator/src/utils/render.tsx @@ -1,8 +1,6 @@ -import { - render as testingLibraryRender, - RenderResult, -} from '@testing-library/react'; -import { ReactElement } from 'react'; +import type { RenderResult } from '@testing-library/react'; +import { render as testingLibraryRender } from '@testing-library/react'; +import type { ReactElement } from 'react'; import { MemoryRouter } from 'react-router-dom'; import { Root } from '../components'; diff --git a/packages/snaps-simulator/webpack.config.ts b/packages/snaps-simulator/webpack.config.ts index 024d848374..c66c6df481 100644 --- a/packages/snaps-simulator/webpack.config.ts +++ b/packages/snaps-simulator/webpack.config.ts @@ -8,15 +8,15 @@ import MonacoEditorWebpackPlugin from 'monaco-editor-webpack-plugin'; import { resolve } from 'path'; import TerserPlugin from 'terser-webpack-plugin'; import { TsconfigPathsPlugin } from 'tsconfig-paths-webpack-plugin'; +import type { Configuration } from 'webpack'; import { - Configuration, ProvidePlugin, DllPlugin, DllReferencePlugin, EnvironmentPlugin, NormalModuleReplacementPlugin, } from 'webpack'; -import { Configuration as DevServerConfiguration } from 'webpack-dev-server'; +import type { Configuration as DevServerConfiguration } from 'webpack-dev-server'; import { merge } from 'webpack-merge'; import packageJson from './package.json'; diff --git a/packages/snaps-types/package.json b/packages/snaps-types/package.json index 88560aa3a2..37387ea0e2 100644 --- a/packages/snaps-types/package.json +++ b/packages/snaps-types/package.json @@ -43,10 +43,10 @@ "devDependencies": { "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@swc/cli": "^0.1.62", "@swc/core": "^1.3.66", "@swc/jest": "^0.2.26", @@ -57,8 +57,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "jest": "^29.0.2", "prettier": "^2.7.1", "prettier-plugin-packagejson": "^2.2.11", diff --git a/packages/snaps-types/src/types.ts b/packages/snaps-types/src/types.ts index b24ddd2843..4624d188fb 100644 --- a/packages/snaps-types/src/types.ts +++ b/packages/snaps-types/src/types.ts @@ -1,4 +1,4 @@ -import { StreamProvider } from '@metamask/providers'; +import type { StreamProvider } from '@metamask/providers'; /** * The type of `window.ethereum`. diff --git a/packages/snaps-ui/package.json b/packages/snaps-ui/package.json index 400f00fa7c..ed24bc06f0 100644 --- a/packages/snaps-ui/package.json +++ b/packages/snaps-ui/package.json @@ -41,10 +41,10 @@ "devDependencies": { "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@swc/cli": "^0.1.62", "@swc/core": "^1.3.66", "@swc/jest": "^0.2.26", @@ -58,8 +58,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "jest": "^29.0.2", "jest-it-up": "^2.0.0", "prettier": "^2.7.1", diff --git a/packages/snaps-ui/src/builder.ts b/packages/snaps-ui/src/builder.ts index 5f3c166e65..fae801dbca 100644 --- a/packages/snaps-ui/src/builder.ts +++ b/packages/snaps-ui/src/builder.ts @@ -1,8 +1,8 @@ import { assertStruct, isPlainObject } from '@metamask/utils'; -import { Struct } from 'superstruct'; +import type { Struct } from 'superstruct'; +import type { Component } from './nodes'; import { - Component, CopyableStruct, DividerStruct, HeadingStruct, diff --git a/packages/snaps-ui/src/nodes.ts b/packages/snaps-ui/src/nodes.ts index 98ac8204f3..b7aa8aecc1 100644 --- a/packages/snaps-ui/src/nodes.ts +++ b/packages/snaps-ui/src/nodes.ts @@ -1,14 +1,13 @@ +import type { Infer, Struct } from 'superstruct'; import { array, assign, boolean, - Infer, lazy, literal, object, optional, string, - Struct, union, unknown, } from 'superstruct'; diff --git a/packages/snaps-ui/src/validation.test.ts b/packages/snaps-ui/src/validation.test.ts index 2b1d8c84b7..662a3c85ca 100644 --- a/packages/snaps-ui/src/validation.test.ts +++ b/packages/snaps-ui/src/validation.test.ts @@ -1,4 +1,5 @@ -import { Divider, Heading, NodeType, Panel, Spinner, Text } from './nodes'; +import type { Divider, Heading, Panel, Spinner, Text } from './nodes'; +import { NodeType } from './nodes'; import { assertIsComponent, isComponent } from './validation'; describe('isComponent', () => { diff --git a/packages/snaps-ui/src/validation.ts b/packages/snaps-ui/src/validation.ts index 819ef66c3a..20d20fde55 100644 --- a/packages/snaps-ui/src/validation.ts +++ b/packages/snaps-ui/src/validation.ts @@ -1,7 +1,8 @@ import { assertStruct } from '@metamask/utils'; import { is } from 'superstruct'; -import { Component, ComponentStruct } from './nodes'; +import type { Component } from './nodes'; +import { ComponentStruct } from './nodes'; /** * Check if the given value is a {@link Component}. This performs recursive diff --git a/packages/snaps-utils/package.json b/packages/snaps-utils/package.json index 28c5cc752c..332effe2b3 100644 --- a/packages/snaps-utils/package.json +++ b/packages/snaps-utils/package.json @@ -92,10 +92,10 @@ "@esbuild-plugins/node-modules-polyfill": "^0.2.2", "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@metamask/post-message-stream": "^6.1.2", "@swc/cli": "^0.1.62", "@swc/core": "^1.3.66", @@ -120,8 +120,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "expect-webdriverio": "^4.1.2", "istanbul-lib-coverage": "^3.2.0", "istanbul-lib-report": "^3.0.0", diff --git a/packages/snaps-utils/scripts/coverage.ts b/packages/snaps-utils/scripts/coverage.ts index 75c1ac5b71..0619b58c8d 100644 --- a/packages/snaps-utils/scripts/coverage.ts +++ b/packages/snaps-utils/scripts/coverage.ts @@ -1,9 +1,12 @@ /* eslint-disable no-console */ import { promises as fs } from 'fs'; -import { CoverageMap, createCoverageMap } from 'istanbul-lib-coverage'; -import { createContext, ReportBase } from 'istanbul-lib-report'; -import reports, { ReportOptions, ReportType } from 'istanbul-reports'; +import type { CoverageMap } from 'istanbul-lib-coverage'; +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 { resolve } from 'path'; import * as process from 'process'; diff --git a/packages/snaps-utils/src/cronjob.ts b/packages/snaps-utils/src/cronjob.ts index e3e6f8df79..be4b6db889 100644 --- a/packages/snaps-utils/src/cronjob.ts +++ b/packages/snaps-utils/src/cronjob.ts @@ -1,11 +1,11 @@ import { JsonRpcRequestStruct } from '@metamask/utils'; import { parseExpression } from 'cron-parser'; +import type { Infer } from 'superstruct'; import { array, assign, coerce, create, - Infer, object, omit, optional, diff --git a/packages/snaps-utils/src/enum.ts b/packages/snaps-utils/src/enum.ts index 804a43623e..6455205229 100644 --- a/packages/snaps-utils/src/enum.ts +++ b/packages/snaps-utils/src/enum.ts @@ -1,4 +1,5 @@ -import { literal, Struct } from 'superstruct'; +import type { Struct } from 'superstruct'; +import { literal } from 'superstruct'; /** * Get the enum values as union type. This allows using both the enum string diff --git a/packages/snaps-utils/src/eval-worker.ts b/packages/snaps-utils/src/eval-worker.ts index d14a94384e..8cf4add7d8 100644 --- a/packages/snaps-utils/src/eval-worker.ts +++ b/packages/snaps-utils/src/eval-worker.ts @@ -4,7 +4,8 @@ import 'ses/lockdown'; import { readFileSync } from 'fs'; import { generateMockEndowments } from './mock'; -import { HandlerType, SNAP_EXPORT_NAMES } from './types'; +import type { HandlerType } from './types'; +import { SNAP_EXPORT_NAMES } from './types'; declare let lockdown: any, Compartment: any; diff --git a/packages/snaps-utils/src/fs.test.ts b/packages/snaps-utils/src/fs.test.ts index 202ec74e18..08b9076ef8 100644 --- a/packages/snaps-utils/src/fs.test.ts +++ b/packages/snaps-utils/src/fs.test.ts @@ -12,7 +12,7 @@ import { validateFilePath, validateOutfileName, } from './fs'; -import { SnapManifest } from './manifest/validation'; +import type { SnapManifest } from './manifest/validation'; import { DEFAULT_SNAP_BUNDLE, getSnapManifest } from './test-utils'; import { NpmSnapFileNames } from './types'; diff --git a/packages/snaps-utils/src/fs.ts b/packages/snaps-utils/src/fs.ts index 90183e7d51..c4b5e37ce8 100644 --- a/packages/snaps-utils/src/fs.ts +++ b/packages/snaps-utils/src/fs.ts @@ -1,10 +1,11 @@ -import { Json } from '@metamask/utils'; +import type { Json } from '@metamask/utils'; import { promises as fs } from 'fs'; import os from 'os'; import pathUtils from 'path'; import { parseJson } from './json'; -import { readVirtualFile, VirtualFile } from './virtual-file'; +import type { VirtualFile } from './virtual-file'; +import { readVirtualFile } from './virtual-file'; /** * Checks whether the given path string resolves to an existing directory, and diff --git a/packages/snaps-utils/src/handlers.ts b/packages/snaps-utils/src/handlers.ts index e1bcf8cf89..f8685806a6 100644 --- a/packages/snaps-utils/src/handlers.ts +++ b/packages/snaps-utils/src/handlers.ts @@ -1,5 +1,5 @@ -import { Component } from '@metamask/snaps-ui'; -import { Json, JsonRpcRequest } from '@metamask/utils'; +import type { Component } from '@metamask/snaps-ui'; +import type { Json, JsonRpcRequest } from '@metamask/utils'; /** * The `onRpcRequest` handler. This is called whenever a JSON-RPC request is diff --git a/packages/snaps-utils/src/icon.ts b/packages/snaps-utils/src/icon.ts index 010a8ac76c..17882eab18 100644 --- a/packages/snaps-utils/src/icon.ts +++ b/packages/snaps-utils/src/icon.ts @@ -1,7 +1,7 @@ import { assert } from '@metamask/utils'; import isSvg from 'is-svg'; -import { VirtualFile } from './virtual-file'; +import type { VirtualFile } from './virtual-file'; export const SVG_MAX_BYTE_SIZE = 100_000; export const SVG_MAX_BYTE_SIZE_TEXT = `${Math.floor( diff --git a/packages/snaps-utils/src/json-rpc.ts b/packages/snaps-utils/src/json-rpc.ts index 3b3286ef04..48109f8413 100644 --- a/packages/snaps-utils/src/json-rpc.ts +++ b/packages/snaps-utils/src/json-rpc.ts @@ -1,12 +1,15 @@ -import { - isJsonRpcFailure, - isJsonRpcSuccess, +import type { Json, JsonRpcSuccess, AssertionErrorConstructor, +} from '@metamask/utils'; +import { + isJsonRpcFailure, + isJsonRpcSuccess, assertStruct, } from '@metamask/utils'; -import { boolean, Infer, object, optional, refine } from 'superstruct'; +import type { Infer } from 'superstruct'; +import { boolean, object, optional, refine } from 'superstruct'; export const RpcOriginsStruct = refine( object({ diff --git a/packages/snaps-utils/src/json.ts b/packages/snaps-utils/src/json.ts index d77e49cfeb..01053dca97 100644 --- a/packages/snaps-utils/src/json.ts +++ b/packages/snaps-utils/src/json.ts @@ -1,4 +1,5 @@ -import { getSafeJson, Json } from '@metamask/utils'; +import type { Json } from '@metamask/utils'; +import { getSafeJson } from '@metamask/utils'; // TODO: Upstream this to @metamask/utils diff --git a/packages/snaps-utils/src/manifest/manifest.test.ts b/packages/snaps-utils/src/manifest/manifest.test.ts index ecddeb9dec..6808b4d15d 100644 --- a/packages/snaps-utils/src/manifest/manifest.test.ts +++ b/packages/snaps-utils/src/manifest/manifest.test.ts @@ -13,11 +13,8 @@ import { getSnapFiles, getSnapManifest, } from '../test-utils'; -import { - NpmSnapFileNames, - SnapFiles, - SnapValidationFailureReason, -} from '../types'; +import type { SnapFiles } from '../types'; +import { NpmSnapFileNames, SnapValidationFailureReason } from '../types'; import { checkManifest, fixManifest, @@ -25,7 +22,7 @@ import { getSnapSourceCode, getWritableManifest, } from './manifest'; -import { SnapManifest } from './validation'; +import type { SnapManifest } from './validation'; jest.mock('fs'); jest.mock('../npm', () => ({ diff --git a/packages/snaps-utils/src/manifest/manifest.ts b/packages/snaps-utils/src/manifest/manifest.ts index 02a6b48bb2..c848fe6ef8 100644 --- a/packages/snaps-utils/src/manifest/manifest.ts +++ b/packages/snaps-utils/src/manifest/manifest.ts @@ -1,4 +1,5 @@ -import { Json, assertExhaustive, assert, isPlainObject } from '@metamask/utils'; +import type { Json } from '@metamask/utils'; +import { assertExhaustive, assert, isPlainObject } from '@metamask/utils'; import deepEqual from 'fast-deep-equal'; import { promises as fs } from 'fs'; import pathUtils from 'path'; @@ -11,14 +12,10 @@ import { ProgrammaticallyFixableSnapError, validateSnapShasum, } from '../snaps'; -import { - NpmSnapFileNames, - SnapFiles, - SnapValidationFailureReason, - UnvalidatedSnapFiles, -} from '../types'; +import type { SnapFiles, UnvalidatedSnapFiles } from '../types'; +import { NpmSnapFileNames, SnapValidationFailureReason } from '../types'; import { readVirtualFile, VirtualFile } from '../virtual-file'; -import { SnapManifest } from './validation'; +import type { SnapManifest } from './validation'; const MANIFEST_SORT_ORDER: Record = { $schema: 1, diff --git a/packages/snaps-utils/src/manifest/validation.ts b/packages/snaps-utils/src/manifest/validation.ts index 1127279cca..5ceaa6383a 100644 --- a/packages/snaps-utils/src/manifest/validation.ts +++ b/packages/snaps-utils/src/manifest/validation.ts @@ -5,12 +5,12 @@ import { VersionStruct, isValidSemVerRange, } from '@metamask/utils'; +import type { Infer, Struct } from 'superstruct'; import { array, boolean, create, enums, - Infer, integer, is, literal, @@ -21,7 +21,6 @@ import { record, size, string, - Struct, type, union, } from 'superstruct'; @@ -85,8 +84,11 @@ export const Bip32PathStruct = refine( }, ); -export const bip32entropy = ( - struct: Struct, +export const bip32entropy = < + Type extends { path: string[]; curve: string }, + Schema, +>( + struct: Struct, ) => refine(struct, 'BIP-32 entropy', (value) => { if ( diff --git a/packages/snaps-utils/src/namespace.ts b/packages/snaps-utils/src/namespace.ts index 1f17d17627..77a8b91823 100644 --- a/packages/snaps-utils/src/namespace.ts +++ b/packages/snaps-utils/src/namespace.ts @@ -1,6 +1,6 @@ +import type { Infer } from 'superstruct'; import { array, - Infer, is, object, optional, diff --git a/packages/snaps-utils/src/npm.ts b/packages/snaps-utils/src/npm.ts index 10ff168302..1db1366025 100644 --- a/packages/snaps-utils/src/npm.ts +++ b/packages/snaps-utils/src/npm.ts @@ -1,12 +1,8 @@ import { assertIsSnapIcon } from './icon'; import { validateNpmSnapManifest } from './manifest/manifest'; import { assertIsSnapManifest } from './manifest/validation'; -import { - assertIsNpmSnapPackageJson, - NpmSnapFileNames, - SnapFiles, - UnvalidatedSnapFiles, -} from './types'; +import type { SnapFiles, UnvalidatedSnapFiles } from './types'; +import { assertIsNpmSnapPackageJson, NpmSnapFileNames } from './types'; export const EXPECTED_SNAP_FILES = [ 'manifest', diff --git a/packages/snaps-utils/src/post-process.ts b/packages/snaps-utils/src/post-process.ts index 6e2b975e9f..717c8e5fdf 100644 --- a/packages/snaps-utils/src/post-process.ts +++ b/packages/snaps-utils/src/post-process.ts @@ -1,13 +1,12 @@ // eslint-disable-next-line @typescript-eslint/no-shadow -import { transformSync, Node, Visitor, template, PluginObj } from '@babel/core'; +import type { Node, Visitor, PluginObj } from '@babel/core'; +import { transformSync, template } from '@babel/core'; +import type { Expression, Identifier, TemplateElement } from '@babel/types'; import { binaryExpression, - Expression, - Identifier, isUnaryExpression, isUpdateExpression, stringLiteral, - TemplateElement, templateElement, templateLiteral, } from '@babel/types'; diff --git a/packages/snaps-utils/src/snaps.test.ts b/packages/snaps-utils/src/snaps.test.ts index 33bcfa9dab..588987a7ca 100644 --- a/packages/snaps-utils/src/snaps.test.ts +++ b/packages/snaps-utils/src/snaps.test.ts @@ -1,4 +1,4 @@ -import { +import type { SubjectPermissions, PermissionConstraint, } from '@metamask/permission-controller'; diff --git a/packages/snaps-utils/src/snaps.ts b/packages/snaps-utils/src/snaps.ts index ef5bcaf9c8..7fe032ab01 100644 --- a/packages/snaps-utils/src/snaps.ts +++ b/packages/snaps-utils/src/snaps.ts @@ -1,20 +1,15 @@ -import { +import type { Caveat, SubjectPermissions, PermissionConstraint, } from '@metamask/permission-controller'; -import { BlockReason } from '@metamask/snaps-registry'; -import { - assert, - Json, - SemVerVersion, - isObject, - Opaque, - assertStruct, -} from '@metamask/utils'; +import type { BlockReason } from '@metamask/snaps-registry'; +import type { Json, SemVerVersion, Opaque } from '@metamask/utils'; +import { assert, isObject, assertStruct } from '@metamask/utils'; import { base64 } from '@scure/base'; -import { SerializedEthereumRpcError } from 'eth-rpc-errors/dist/classes'; +import type { SerializedEthereumRpcError } from 'eth-rpc-errors/dist/classes'; import stableStringify from 'fast-json-stable-stringify'; +import type { Struct } from 'superstruct'; import { empty, enums, @@ -23,7 +18,6 @@ import { pattern, refine, string, - Struct, union, validate, } from 'superstruct'; @@ -31,16 +25,10 @@ import validateNPMPackage from 'validate-npm-package-name'; import { SnapCaveatType } from './caveats'; import { checksumFiles } from './checksum'; -import { SnapManifest, SnapPermissions } from './manifest/validation'; -import { - SnapFiles, - SnapId, - SnapIdPrefixes, - SnapsPermissionRequest, - SnapValidationFailureReason, - uri, -} from './types'; -import { VirtualFile } from './virtual-file'; +import type { SnapManifest, SnapPermissions } from './manifest/validation'; +import type { SnapFiles, SnapId, SnapsPermissionRequest } from './types'; +import { SnapIdPrefixes, SnapValidationFailureReason, uri } from './types'; +import type { VirtualFile } from './virtual-file'; // This RegEx matches valid npm package names (with some exceptions) and space- // separated alphanumerical words, optionally with dashes and underscores. diff --git a/packages/snaps-utils/src/test-utils/common.ts b/packages/snaps-utils/src/test-utils/common.ts index 4241ce3739..ac828b0745 100644 --- a/packages/snaps-utils/src/test-utils/common.ts +++ b/packages/snaps-utils/src/test-utils/common.ts @@ -1,6 +1,6 @@ // TODO: Import from root. import { mnemonicPhraseToBytes } from '@metamask/key-tree/dist/utils'; -import { SemVerVersion } from '@metamask/utils'; +import type { SemVerVersion } from '@metamask/utils'; export const TEST_SECRET_RECOVERY_PHRASE = 'test test test test test test test test test test test ball'; @@ -16,6 +16,8 @@ export const TEST_SECRET_RECOVERY_PHRASE_BYTES = mnemonicPhraseToBytes( * We use this function to make creation utils backwards compatible, * until we're ready to update tests. */ -export type MakeSemVer = { - [K in keyof T]: K extends 'version' ? SemVerVersion | string : T[K]; +export type MakeSemVer = { + [Key in keyof Type]: Key extends 'version' + ? SemVerVersion | string + : Type[Key]; }; diff --git a/packages/snaps-utils/src/test-utils/controller.ts b/packages/snaps-utils/src/test-utils/controller.ts index ce476201ea..1091fd5534 100644 --- a/packages/snaps-utils/src/test-utils/controller.ts +++ b/packages/snaps-utils/src/test-utils/controller.ts @@ -1,9 +1,9 @@ -import { +import type { ActionConstraint, ActionHandler, - ControllerMessenger, EventConstraint, } from '@metamask/base-controller'; +import { ControllerMessenger } from '@metamask/base-controller'; export class MockControllerMessenger< Action extends ActionConstraint, @@ -16,9 +16,9 @@ export class MockControllerMessenger< * @param actionType - The action type to register the handler for. * @param handler - The action handler to register. */ - registerActionHandler( - actionType: T, - handler: ActionHandler, + registerActionHandler( + actionType: ActionType, + handler: ActionHandler, ) { super.unregisterActionHandler(actionType); super.registerActionHandler(actionType, handler); diff --git a/packages/snaps-utils/src/test-utils/manifest.ts b/packages/snaps-utils/src/test-utils/manifest.ts index f48f187379..ba19f7ade1 100644 --- a/packages/snaps-utils/src/test-utils/manifest.ts +++ b/packages/snaps-utils/src/test-utils/manifest.ts @@ -1,11 +1,11 @@ -import { SemVerVersion } from '@metamask/utils'; +import type { SemVerVersion } from '@metamask/utils'; -import { SnapManifest } from '../manifest/validation'; -import { Chain, Namespace } from '../namespace'; +import type { SnapManifest } from '../manifest/validation'; +import type { Chain, Namespace } from '../namespace'; import { getSnapChecksum } from '../snaps'; -import { NpmSnapPackageJson, SnapFiles } from '../types'; +import type { NpmSnapPackageJson, SnapFiles } from '../types'; import { VirtualFile } from '../virtual-file'; -import { MakeSemVer } from './common'; +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 20d57ef531..70ee04086a 100644 --- a/packages/snaps-utils/src/test-utils/snap.ts +++ b/packages/snaps-utils/src/test-utils/snap.ts @@ -1,13 +1,13 @@ -import { SemVerVersion } from '@metamask/utils'; +import type { SemVerVersion } from '@metamask/utils'; -import { +import type { PersistedSnap, Snap, - SnapStatus, TruncatedSnap, ValidatedSnapId, } from '../snaps'; -import { MakeSemVer } from './common'; +import { SnapStatus } from '../snaps'; +import type { MakeSemVer } from './common'; import { DEFAULT_SNAP_BUNDLE, DEFAULT_SNAP_SHASUM, diff --git a/packages/snaps-utils/src/types.ts b/packages/snaps-utils/src/types.ts index c5ffab4e7a..da530ac9f4 100644 --- a/packages/snaps-utils/src/types.ts +++ b/packages/snaps-utils/src/types.ts @@ -1,6 +1,7 @@ -import { assertStruct, Json, VersionStruct } from '@metamask/utils'; +import type { Json } from '@metamask/utils'; +import { assertStruct, VersionStruct } from '@metamask/utils'; +import type { Infer, Struct } from 'superstruct'; import { - Infer, instance, is, object, @@ -9,16 +10,15 @@ import { refine, size, string, - Struct, type, union, assert as assertSuperstruct, } from 'superstruct'; -import { SnapCaveatType } from './caveats'; -import { SnapFunctionExports } from './handlers'; -import { SnapManifest } from './manifest'; -import { VirtualFile } from './virtual-file'; +import type { SnapCaveatType } from './caveats'; +import type { SnapFunctionExports } from './handlers'; +import type { SnapManifest } from './manifest'; +import type { VirtualFile } from './virtual-file'; export enum NpmSnapFileNames { PackageJson = 'package.json', @@ -153,14 +153,15 @@ type ObjectParameters< export type SnapExportsParameters = ObjectParameters; -type UriOptions = { - protocol?: Struct; - hash?: Struct; - port?: Struct; - hostname?: Struct; - pathname?: Struct; - search?: Struct; +type UriOptions = { + protocol?: Struct; + hash?: Struct; + port?: Struct; + hostname?: Struct; + pathname?: Struct; + search?: Struct; }; + export const uri = (opts: UriOptions = {}) => refine(union([string(), instance(URL)]), 'uri', (value) => { try { diff --git a/packages/snaps-utils/src/validation.ts b/packages/snaps-utils/src/validation.ts index ea792d446a..e0e3fd6570 100644 --- a/packages/snaps-utils/src/validation.ts +++ b/packages/snaps-utils/src/validation.ts @@ -1,7 +1,7 @@ import { assertIsSnapIcon } from './icon'; import { assertIsSnapManifest } from './manifest/validation'; import { validateSnapShasum } from './snaps'; -import { SnapFiles } from './types'; +import type { SnapFiles } from './types'; /** * Validates the files contained in a fetched snap. diff --git a/packages/snaps-utils/src/versions.test.ts b/packages/snaps-utils/src/versions.test.ts index 9bae2d0d6c..9b7fadd9f9 100644 --- a/packages/snaps-utils/src/versions.test.ts +++ b/packages/snaps-utils/src/versions.test.ts @@ -1,4 +1,5 @@ -import { assert, SemVerRange, SemVerVersion } from '@metamask/utils'; +import type { SemVerRange, SemVerVersion } from '@metamask/utils'; +import { assert } from '@metamask/utils'; import { getSnapPrefix } from './snaps'; import { SnapIdPrefixes } from './types'; diff --git a/packages/snaps-utils/src/versions.ts b/packages/snaps-utils/src/versions.ts index c5b60fbcae..07a9193f16 100644 --- a/packages/snaps-utils/src/versions.ts +++ b/packages/snaps-utils/src/versions.ts @@ -1,9 +1,5 @@ -import { - Json, - SemVerVersion, - SemVerRange, - VersionRangeStruct, -} from '@metamask/utils'; +import type { Json, SemVerVersion, SemVerRange } from '@metamask/utils'; +import { VersionRangeStruct } from '@metamask/utils'; import { maxSatisfying as maxSatisfyingSemver } from 'semver'; import { validate } from 'superstruct'; diff --git a/packages/snaps-webpack-plugin/package.json b/packages/snaps-webpack-plugin/package.json index 7c2310a8be..8dd73aa267 100644 --- a/packages/snaps-webpack-plugin/package.json +++ b/packages/snaps-webpack-plugin/package.json @@ -46,10 +46,10 @@ "devDependencies": { "@lavamoat/allow-scripts": "^2.3.1", "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@swc/cli": "^0.1.62", "@swc/core": "^1.3.66", "@swc/jest": "^0.2.26", @@ -63,8 +63,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "jest": "^29.0.2", "jest-it-up": "^2.0.0", "memfs": "^3.4.13", diff --git a/packages/snaps-webpack-plugin/src/plugin.test.ts b/packages/snaps-webpack-plugin/src/plugin.test.ts index 66bf5799dd..1cc570ef86 100644 --- a/packages/snaps-webpack-plugin/src/plugin.test.ts +++ b/packages/snaps-webpack-plugin/src/plugin.test.ts @@ -10,13 +10,16 @@ import { DEFAULT_SNAP_BUNDLE, getSnapManifest, } from '@metamask/snaps-utils/test-utils'; -import { createFsFromVolume, IFs, Volume } from 'memfs'; -import { IPromisesAPI } from 'memfs/lib/promises'; +import type { IFs } from 'memfs'; +import { createFsFromVolume, Volume } from 'memfs'; +import type { IPromisesAPI } from 'memfs/lib/promises'; import * as os from 'os'; import * as pathUtils from 'path'; -import webpack, { Stats, Configuration } from 'webpack'; +import type { Stats, Configuration } from 'webpack'; +import webpack from 'webpack'; -import SnapsWebpackPlugin, { Options } from './plugin'; +import type { Options } from './plugin'; +import SnapsWebpackPlugin from './plugin'; jest.mock('@metamask/snaps-utils', () => ({ ...jest.requireActual('@metamask/snaps-utils'), diff --git a/packages/snaps-webpack-plugin/src/plugin.ts b/packages/snaps-webpack-plugin/src/plugin.ts index 80a19a191c..94b1386fa9 100644 --- a/packages/snaps-webpack-plugin/src/plugin.ts +++ b/packages/snaps-webpack-plugin/src/plugin.ts @@ -1,15 +1,15 @@ +import type { PostProcessOptions, SourceMap } from '@metamask/snaps-utils'; import { checkManifest, evalBundle, postProcessBundle, - PostProcessOptions, - SourceMap, useTemporaryFile, } from '@metamask/snaps-utils'; import { assert } from '@metamask/utils'; import pathUtils from 'path'; import { promisify } from 'util'; -import { Compiler, WebpackError } from 'webpack'; +import type { Compiler } from 'webpack'; +import { WebpackError } from 'webpack'; import { RawSource, SourceMapSource } from 'webpack-sources'; const PLUGIN_NAME = 'SnapsWebpackPlugin'; diff --git a/packages/test-snaps/package.json b/packages/test-snaps/package.json index 27c614af3f..3cd6c9930a 100644 --- a/packages/test-snaps/package.json +++ b/packages/test-snaps/package.json @@ -42,10 +42,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^3.1.0", - "@metamask/eslint-config": "^11.0.0", - "@metamask/eslint-config-jest": "^11.0.0", - "@metamask/eslint-config-nodejs": "^11.0.1", - "@metamask/eslint-config-typescript": "^11.0.0", + "@metamask/eslint-config": "^12.0.0", + "@metamask/eslint-config-jest": "^12.0.0", + "@metamask/eslint-config-nodejs": "^12.0.0", + "@metamask/eslint-config-typescript": "^12.0.0", "@metamask/providers": "^11.0.0", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.10", "@swc/core": "^1.3.66", @@ -64,8 +64,9 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", "favicons": "^7.1.2", "favicons-webpack-plugin": "^6.0.0", "html-webpack-plugin": "^5.5.0", diff --git a/packages/test-snaps/src/App.tsx b/packages/test-snaps/src/App.tsx index e0fba97ea7..41a4f515cf 100644 --- a/packages/test-snaps/src/App.tsx +++ b/packages/test-snaps/src/App.tsx @@ -1,4 +1,4 @@ -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Container, Row } from 'react-bootstrap'; import { Logo } from './components'; diff --git a/packages/test-snaps/src/api.ts b/packages/test-snaps/src/api.ts index aa32d5b4dd..9f077b1f79 100644 --- a/packages/test-snaps/src/api.ts +++ b/packages/test-snaps/src/api.ts @@ -1,8 +1,9 @@ -import { MetaMaskInpageProvider } from '@metamask/providers'; -import { RequestArguments } from '@metamask/providers/dist/BaseProvider'; +import type { MetaMaskInpageProvider } from '@metamask/providers'; +import type { RequestArguments } from '@metamask/providers/dist/BaseProvider'; import { logError } from '@metamask/snaps-utils'; -import { JsonRpcError, JsonRpcParams } from '@metamask/utils'; -import { BaseQueryFn, createApi } from '@reduxjs/toolkit/query/react'; +import type { JsonRpcError, JsonRpcParams } from '@metamask/utils'; +import type { BaseQueryFn } from '@reduxjs/toolkit/query/react'; +import { createApi } from '@reduxjs/toolkit/query/react'; declare global { // eslint-disable-next-line @typescript-eslint/consistent-type-definitions diff --git a/packages/test-snaps/src/components/ButtonSpinner.tsx b/packages/test-snaps/src/components/ButtonSpinner.tsx index 959623038c..9c6f02ca2e 100644 --- a/packages/test-snaps/src/components/ButtonSpinner.tsx +++ b/packages/test-snaps/src/components/ButtonSpinner.tsx @@ -1,4 +1,4 @@ -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; export type ButtonSpinnerProps = { children?: string; diff --git a/packages/test-snaps/src/components/Connect.tsx b/packages/test-snaps/src/components/Connect.tsx index 8d2eb89b51..1a80cdbb5e 100644 --- a/packages/test-snaps/src/components/Connect.tsx +++ b/packages/test-snaps/src/components/Connect.tsx @@ -1,5 +1,6 @@ import { logError } from '@metamask/snaps-utils'; -import { ChangeEvent, FormEvent, FunctionComponent, useState } from 'react'; +import type { ChangeEvent, FormEvent, FunctionComponent } from 'react'; +import { useState } from 'react'; import { Button, Form } from 'react-bootstrap'; import packageJson from '../../package.json'; diff --git a/packages/test-snaps/src/components/Logo/Logo.tsx b/packages/test-snaps/src/components/Logo/Logo.tsx index e4a0bc2547..bb51e2da70 100644 --- a/packages/test-snaps/src/components/Logo/Logo.tsx +++ b/packages/test-snaps/src/components/Logo/Logo.tsx @@ -1,4 +1,4 @@ -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Container } from 'react-bootstrap'; import { Fox } from './Fox'; diff --git a/packages/test-snaps/src/components/Result.tsx b/packages/test-snaps/src/components/Result.tsx index 39375fb0a7..8a1e8471da 100644 --- a/packages/test-snaps/src/components/Result.tsx +++ b/packages/test-snaps/src/components/Result.tsx @@ -1,5 +1,6 @@ -import { FunctionComponent, ReactNode } from 'react'; -import { Alert, AlertProps } from 'react-bootstrap'; +import type { FunctionComponent, ReactNode } from 'react'; +import type { AlertProps } from 'react-bootstrap'; +import { Alert } from 'react-bootstrap'; export type ResultProps = { children: ReactNode; diff --git a/packages/test-snaps/src/components/Root.tsx b/packages/test-snaps/src/components/Root.tsx index c07d50add1..c9a09f2cd9 100644 --- a/packages/test-snaps/src/components/Root.tsx +++ b/packages/test-snaps/src/components/Root.tsx @@ -1,4 +1,5 @@ -import { FunctionComponent, ReactElement, StrictMode } from 'react'; +import type { FunctionComponent, ReactElement } from 'react'; +import { StrictMode } from 'react'; import { Provider } from 'react-redux'; import type createStore from '../store'; diff --git a/packages/test-snaps/src/components/Snap.tsx b/packages/test-snaps/src/components/Snap.tsx index 73d985ee11..f41f3ed2ca 100644 --- a/packages/test-snaps/src/components/Snap.tsx +++ b/packages/test-snaps/src/components/Snap.tsx @@ -1,4 +1,4 @@ -import { FunctionComponent, ReactNode } from 'react'; +import type { FunctionComponent, ReactNode } from 'react'; import { Card, Col } from 'react-bootstrap'; import CardHeader from 'react-bootstrap/CardHeader'; diff --git a/packages/test-snaps/src/features/installed-snaps/InstalledSnaps.tsx b/packages/test-snaps/src/features/installed-snaps/InstalledSnaps.tsx index 6fe7a544c9..9c18d46091 100644 --- a/packages/test-snaps/src/features/installed-snaps/InstalledSnaps.tsx +++ b/packages/test-snaps/src/features/installed-snaps/InstalledSnaps.tsx @@ -1,4 +1,4 @@ -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { useGetSnapsQuery } from '../../api'; import { Result, Snap } from '../../components'; diff --git a/packages/test-snaps/src/features/snaps/bip32/BIP32.tsx b/packages/test-snaps/src/features/snaps/bip32/BIP32.tsx index 38af3915c6..1f7cbb2c78 100644 --- a/packages/test-snaps/src/features/snaps/bip32/BIP32.tsx +++ b/packages/test-snaps/src/features/snaps/bip32/BIP32.tsx @@ -1,4 +1,4 @@ -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Snap } from '../../../components'; import { PublicKey, SignMessage } from './components'; diff --git a/packages/test-snaps/src/features/snaps/bip32/components/PublicKey.tsx b/packages/test-snaps/src/features/snaps/bip32/components/PublicKey.tsx index 0315e40895..342955a165 100644 --- a/packages/test-snaps/src/features/snaps/bip32/components/PublicKey.tsx +++ b/packages/test-snaps/src/features/snaps/bip32/components/PublicKey.tsx @@ -1,6 +1,6 @@ import { logError } from '@metamask/snaps-utils'; -import { JsonRpcParams } from '@metamask/utils'; -import { FunctionComponent } from 'react'; +import type { JsonRpcParams } from '@metamask/utils'; +import type { FunctionComponent } from 'react'; import { Button, ButtonGroup } from 'react-bootstrap'; import { useInvokeMutation } from '../../../../api'; diff --git a/packages/test-snaps/src/features/snaps/bip32/components/SignMessage.tsx b/packages/test-snaps/src/features/snaps/bip32/components/SignMessage.tsx index ad911710f5..a624271705 100644 --- a/packages/test-snaps/src/features/snaps/bip32/components/SignMessage.tsx +++ b/packages/test-snaps/src/features/snaps/bip32/components/SignMessage.tsx @@ -1,5 +1,6 @@ import { logError } from '@metamask/snaps-utils'; -import { ChangeEvent, FormEvent, FunctionComponent, 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/bip44/BIP44.tsx b/packages/test-snaps/src/features/snaps/bip44/BIP44.tsx index b782ba1014..3d5837b9b3 100644 --- a/packages/test-snaps/src/features/snaps/bip44/BIP44.tsx +++ b/packages/test-snaps/src/features/snaps/bip44/BIP44.tsx @@ -1,5 +1,5 @@ import { logError } from '@metamask/snaps-utils'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Button, ButtonGroup } from 'react-bootstrap'; import { useInvokeMutation } from '../../../api'; diff --git a/packages/test-snaps/src/features/snaps/bip44/components/SignMessage.tsx b/packages/test-snaps/src/features/snaps/bip44/components/SignMessage.tsx index 8ca282105b..48dfa20e60 100644 --- a/packages/test-snaps/src/features/snaps/bip44/components/SignMessage.tsx +++ b/packages/test-snaps/src/features/snaps/bip44/components/SignMessage.tsx @@ -1,5 +1,6 @@ import { logError } from '@metamask/snaps-utils'; -import { ChangeEvent, FormEvent, FunctionComponent, 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/cronjobs/Cronjobs.tsx b/packages/test-snaps/src/features/snaps/cronjobs/Cronjobs.tsx index 12ce52cf12..7f04c1ff8d 100644 --- a/packages/test-snaps/src/features/snaps/cronjobs/Cronjobs.tsx +++ b/packages/test-snaps/src/features/snaps/cronjobs/Cronjobs.tsx @@ -1,4 +1,4 @@ -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Snap } from '../../../components'; import { CRONJOBS_SNAP_ID, CRONJOBS_SNAP_PORT } from './constants'; diff --git a/packages/test-snaps/src/features/snaps/dialogs/Dialogs.tsx b/packages/test-snaps/src/features/snaps/dialogs/Dialogs.tsx index 356d5692a2..d0e41af75c 100644 --- a/packages/test-snaps/src/features/snaps/dialogs/Dialogs.tsx +++ b/packages/test-snaps/src/features/snaps/dialogs/Dialogs.tsx @@ -1,5 +1,5 @@ import { logError } from '@metamask/snaps-utils'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Button, ButtonGroup } from 'react-bootstrap'; import { useInvokeMutation } from '../../../api'; diff --git a/packages/test-snaps/src/features/snaps/errors/Errors.tsx b/packages/test-snaps/src/features/snaps/errors/Errors.tsx index 638d32fd8a..69c800c8a1 100644 --- a/packages/test-snaps/src/features/snaps/errors/Errors.tsx +++ b/packages/test-snaps/src/features/snaps/errors/Errors.tsx @@ -1,5 +1,5 @@ import { logError } from '@metamask/snaps-utils'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Button } from 'react-bootstrap'; import { useInvokeMutation } from '../../../api'; 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 4947b8bd98..53c176afba 100644 --- a/packages/test-snaps/src/features/snaps/ethereum-provider/EthereumProvider.tsx +++ b/packages/test-snaps/src/features/snaps/ethereum-provider/EthereumProvider.tsx @@ -1,5 +1,5 @@ import { logError } from '@metamask/snaps-utils'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Button, ButtonGroup } from 'react-bootstrap'; import { useInvokeMutation } from '../../../api'; 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 56a6574687..e4203c60a1 100644 --- a/packages/test-snaps/src/features/snaps/ethers-js/EthersJs.tsx +++ b/packages/test-snaps/src/features/snaps/ethers-js/EthersJs.tsx @@ -1,4 +1,4 @@ -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Snap } from '../../../components'; import { SignMessage } from './components'; diff --git a/packages/test-snaps/src/features/snaps/ethers-js/components/SignMessage.tsx b/packages/test-snaps/src/features/snaps/ethers-js/components/SignMessage.tsx index af1e74a825..831ddd6ceb 100644 --- a/packages/test-snaps/src/features/snaps/ethers-js/components/SignMessage.tsx +++ b/packages/test-snaps/src/features/snaps/ethers-js/components/SignMessage.tsx @@ -1,5 +1,6 @@ import { logError } from '@metamask/snaps-utils'; -import { ChangeEvent, FormEvent, FunctionComponent, 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/get-entropy/GetEntropy.tsx b/packages/test-snaps/src/features/snaps/get-entropy/GetEntropy.tsx index 6fe437d5d7..dcf1690596 100644 --- a/packages/test-snaps/src/features/snaps/get-entropy/GetEntropy.tsx +++ b/packages/test-snaps/src/features/snaps/get-entropy/GetEntropy.tsx @@ -1,4 +1,4 @@ -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Snap } from '../../../components'; import { SignMessage } from './components'; diff --git a/packages/test-snaps/src/features/snaps/get-entropy/components/SignMessage.tsx b/packages/test-snaps/src/features/snaps/get-entropy/components/SignMessage.tsx index f3a1941992..aefddeec91 100644 --- a/packages/test-snaps/src/features/snaps/get-entropy/components/SignMessage.tsx +++ b/packages/test-snaps/src/features/snaps/get-entropy/components/SignMessage.tsx @@ -1,5 +1,6 @@ import { logError } from '@metamask/snaps-utils'; -import { ChangeEvent, FormEvent, FunctionComponent, 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/json-rpc/JsonRpc.tsx b/packages/test-snaps/src/features/snaps/json-rpc/JsonRpc.tsx index 3e205ca27f..64594fbaf3 100644 --- a/packages/test-snaps/src/features/snaps/json-rpc/JsonRpc.tsx +++ b/packages/test-snaps/src/features/snaps/json-rpc/JsonRpc.tsx @@ -1,5 +1,5 @@ import { logError } from '@metamask/snaps-utils'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Button } from 'react-bootstrap'; import { useInvokeMutation } from '../../../api'; diff --git a/packages/test-snaps/src/features/snaps/manage-state/ManageState.tsx b/packages/test-snaps/src/features/snaps/manage-state/ManageState.tsx index 68208971d7..a28e540685 100644 --- a/packages/test-snaps/src/features/snaps/manage-state/ManageState.tsx +++ b/packages/test-snaps/src/features/snaps/manage-state/ManageState.tsx @@ -1,4 +1,4 @@ -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Result, Snap } from '../../../components'; import { ClearData, SendData } from './components'; diff --git a/packages/test-snaps/src/features/snaps/manage-state/components/ClearData.tsx b/packages/test-snaps/src/features/snaps/manage-state/components/ClearData.tsx index 3e13ddf312..a569b2a6eb 100644 --- a/packages/test-snaps/src/features/snaps/manage-state/components/ClearData.tsx +++ b/packages/test-snaps/src/features/snaps/manage-state/components/ClearData.tsx @@ -1,5 +1,5 @@ import { logError } from '@metamask/snaps-utils'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Button } from 'react-bootstrap'; import { Tag, useInvokeMutation } from '../../../../api'; diff --git a/packages/test-snaps/src/features/snaps/manage-state/components/SendData.tsx b/packages/test-snaps/src/features/snaps/manage-state/components/SendData.tsx index ab99cbee1d..14e654577c 100644 --- a/packages/test-snaps/src/features/snaps/manage-state/components/SendData.tsx +++ b/packages/test-snaps/src/features/snaps/manage-state/components/SendData.tsx @@ -1,5 +1,6 @@ import { logError } from '@metamask/snaps-utils'; -import { ChangeEvent, FormEvent, FunctionComponent, useState } from 'react'; +import type { ChangeEvent, FormEvent, FunctionComponent } from 'react'; +import { useState } from 'react'; import { Button, Form } from 'react-bootstrap'; import { Tag, useInvokeMutation } from '../../../../api'; 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 4c43b8a736..f971fcf9f8 100644 --- a/packages/test-snaps/src/features/snaps/network-access/NetworkAccess.tsx +++ b/packages/test-snaps/src/features/snaps/network-access/NetworkAccess.tsx @@ -1,5 +1,5 @@ import { logError } from '@metamask/snaps-utils'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Button } from 'react-bootstrap'; import { useInvokeMutation } from '../../../api'; diff --git a/packages/test-snaps/src/features/snaps/notifications/Notifications.tsx b/packages/test-snaps/src/features/snaps/notifications/Notifications.tsx index bf7499a203..ad7a842569 100644 --- a/packages/test-snaps/src/features/snaps/notifications/Notifications.tsx +++ b/packages/test-snaps/src/features/snaps/notifications/Notifications.tsx @@ -1,5 +1,5 @@ import { logError } from '@metamask/snaps-utils'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Button, ButtonGroup } from 'react-bootstrap'; import { useInvokeMutation } from '../../../api'; 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 3dbf61ccda..8e9df97d42 100644 --- a/packages/test-snaps/src/features/snaps/transaction-insights/TransactionInsights.tsx +++ b/packages/test-snaps/src/features/snaps/transaction-insights/TransactionInsights.tsx @@ -1,6 +1,6 @@ import { logError } from '@metamask/snaps-utils'; import { assert } from '@metamask/utils'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Button, ButtonGroup } from 'react-bootstrap'; import { useLazyGetAccountsQuery, useLazyRequestQuery } from '../../../api'; diff --git a/packages/test-snaps/src/features/snaps/updates/Updates.tsx b/packages/test-snaps/src/features/snaps/updates/Updates.tsx index 513ea3ea2c..1b1f7df8e7 100644 --- a/packages/test-snaps/src/features/snaps/updates/Updates.tsx +++ b/packages/test-snaps/src/features/snaps/updates/Updates.tsx @@ -1,5 +1,5 @@ import { logError } from '@metamask/snaps-utils'; -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Button, ButtonGroup } from 'react-bootstrap'; import { useGetSnapsQuery, useInstallSnapMutation } from '../../../api'; diff --git a/packages/test-snaps/src/features/snaps/wasm/WebAssembly.tsx b/packages/test-snaps/src/features/snaps/wasm/WebAssembly.tsx index 8789f3fe22..a50499effc 100644 --- a/packages/test-snaps/src/features/snaps/wasm/WebAssembly.tsx +++ b/packages/test-snaps/src/features/snaps/wasm/WebAssembly.tsx @@ -1,4 +1,4 @@ -import { FunctionComponent } from 'react'; +import type { FunctionComponent } from 'react'; import { Snap } from '../../../components'; import { FibonacciInput } from './components'; diff --git a/packages/test-snaps/src/features/snaps/wasm/components/FibonacciInput.tsx b/packages/test-snaps/src/features/snaps/wasm/components/FibonacciInput.tsx index b6af6f76fb..828d4bb308 100644 --- a/packages/test-snaps/src/features/snaps/wasm/components/FibonacciInput.tsx +++ b/packages/test-snaps/src/features/snaps/wasm/components/FibonacciInput.tsx @@ -1,5 +1,6 @@ import { logError } from '@metamask/snaps-utils'; -import { ChangeEvent, FormEvent, FunctionComponent, 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/webpack.config.ts b/packages/test-snaps/webpack.config.ts index a0c269d870..eee7a2653e 100644 --- a/packages/test-snaps/webpack.config.ts +++ b/packages/test-snaps/webpack.config.ts @@ -6,8 +6,9 @@ import HtmlWebpackPlugin from 'html-webpack-plugin'; import { resolve } from 'path'; import TerserPlugin from 'terser-webpack-plugin'; import { TsconfigPathsPlugin } from 'tsconfig-paths-webpack-plugin'; -import { Configuration, EnvironmentPlugin } from 'webpack'; -import { Configuration as DevServerConfiguration } from 'webpack-dev-server'; +import type { Configuration } from 'webpack'; +import { EnvironmentPlugin } from 'webpack'; +import type { Configuration as DevServerConfiguration } from 'webpack-dev-server'; const STATIC_PATH = resolve(__dirname, 'static'); diff --git a/yarn.lock b/yarn.lock index 51450b26b0..da9d768243 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3668,10 +3668,10 @@ __metadata: "@jest/globals": ^29.5.0 "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/key-tree": ^7.1.1 "@metamask/rpc-errors": ^5.1.1 "@metamask/snaps-cli": "workspace:^" @@ -3691,8 +3691,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 jest: ^29.0.2 prettier: ^2.7.1 prettier-plugin-packagejson: ^2.2.11 @@ -3708,10 +3709,10 @@ __metadata: "@jest/globals": ^29.5.0 "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/key-tree": ^7.1.1 "@metamask/rpc-errors": ^5.1.1 "@metamask/snaps-cli": "workspace:^" @@ -3730,8 +3731,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 jest: ^29.0.2 prettier: ^2.7.1 prettier-plugin-packagejson: ^2.2.11 @@ -3755,10 +3757,10 @@ __metadata: "@jest/globals": ^29.5.0 "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/rpc-errors": ^5.1.1 "@metamask/snaps-browserify-plugin": "workspace:^" "@metamask/snaps-jest": "workspace:^" @@ -3775,8 +3777,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 jest: ^29.0.2 prettier: ^2.7.1 prettier-plugin-packagejson: ^2.2.11 @@ -3792,10 +3795,10 @@ __metadata: "@jest/globals": ^29.5.0 "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/key-tree": ^7.1.1 "@metamask/rpc-errors": ^5.1.1 "@metamask/snaps-cli": "workspace:^" @@ -3813,8 +3816,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 jest: ^29.0.2 prettier: ^2.7.1 prettier-plugin-packagejson: ^2.2.11 @@ -3845,10 +3849,10 @@ __metadata: "@jest/globals": ^29.5.0 "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/key-tree": ^7.1.1 "@metamask/rpc-errors": ^5.1.1 "@metamask/snaps-cli": "workspace:^" @@ -3869,8 +3873,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 jest: ^29.0.2 prettier: ^2.7.1 prettier-plugin-packagejson: ^2.2.11 @@ -3892,10 +3897,10 @@ __metadata: "@babel/preset-typescript": ^7.20.12 "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-utils": "workspace:^" "@metamask/utils": ^6.0.1 @@ -3914,8 +3919,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 jest: ^29.0.2 jest-it-up: ^2.0.0 memfs: ^3.4.13 @@ -3938,10 +3944,10 @@ __metadata: "@jest/globals": ^29.5.0 "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/rpc-errors": ^5.1.1 "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" @@ -3957,8 +3963,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 jest: ^29.0.2 prettier: ^2.7.1 prettier-plugin-packagejson: ^2.2.11 @@ -3975,10 +3982,10 @@ __metadata: "@jest/globals": ^29.5.0 "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/rpc-errors": ^5.1.1 "@metamask/rpc-methods": "workspace:^" "@metamask/snaps-cli": "workspace:^" @@ -3996,8 +4003,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 jest: ^29.0.2 prettier: ^2.7.1 prettier-plugin-packagejson: ^2.2.11 @@ -4013,10 +4021,10 @@ __metadata: "@jest/globals": ^29.5.0 "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-types": "workspace:^" @@ -4030,8 +4038,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 jest: ^29.0.2 prettier: ^2.7.1 prettier-plugin-packagejson: ^2.2.11 @@ -4050,52 +4059,53 @@ __metadata: languageName: node linkType: hard -"@metamask/eslint-config-jest@npm:^11.0.0": - version: 11.1.0 - resolution: "@metamask/eslint-config-jest@npm:11.1.0" +"@metamask/eslint-config-jest@npm:^12.0.0": + version: 12.0.0 + resolution: "@metamask/eslint-config-jest@npm:12.0.0" peerDependencies: - "@metamask/eslint-config": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 eslint: ^8.27.0 eslint-plugin-jest: ^27.1.5 - checksum: a649cf317327532d0d18795ac3bc74766e649e821ca3130dac288b16d5243ae72b5bda4eb85c678f1b4f9c073904ac6162b740c237b67921e64ce4f40c6ceb77 + checksum: 80b3366c558f7c466e2cb7a63b9633b8c1fc374a7730f43bb7136a3bb6fe29d473f09473084d8858f0e89970706787d8fae131ee963693b97722e74929e633b2 languageName: node linkType: hard -"@metamask/eslint-config-nodejs@npm:^11.0.1": - version: 11.1.0 - resolution: "@metamask/eslint-config-nodejs@npm:11.1.0" +"@metamask/eslint-config-nodejs@npm:^12.0.0": + version: 12.0.0 + resolution: "@metamask/eslint-config-nodejs@npm:12.0.0" peerDependencies: - "@metamask/eslint-config": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 eslint: ^8.27.0 - eslint-plugin-node: ^11.1.0 - checksum: f672fc4a3269c55ec6189caf4fe1a4d94f375ebd4c72d479530bc561d6afc642999b055ff795398f6ad77e9e7f217baa44499699f3301e149ace316dc3cba861 + eslint-plugin-n: ^15.7.0 + checksum: e9e849f799d96dcb508830aa747d49e5109d7d1a7fa3f3d64c831dea54cf649112a96e4534485ad120fc320805b6142ab205e188e86df36e829c0c3e67007714 languageName: node linkType: hard -"@metamask/eslint-config-typescript@npm:^11.0.0": - version: 11.1.0 - resolution: "@metamask/eslint-config-typescript@npm:11.1.0" +"@metamask/eslint-config-typescript@npm:^12.0.0": + version: 12.0.0 + resolution: "@metamask/eslint-config-typescript@npm:12.0.0" peerDependencies: - "@metamask/eslint-config": ^11.0.0 + "@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 - checksum: 86f20303730fce7a2d6944d133e3d4cf745816bdc202fd17ebd341e4937777c662e80b3c1496a8da7d5e06e39518dec3206c4a4e872d9491f423e792bcdf56db + checksum: 0faaa408b33b9d6141e0db2600580cc746f20b858aacbc5d38e52df5b6644a9c985ab105c59c0304135bb09876daf79cc046b2ef20f71fdc9999785da9bf7d49 languageName: node linkType: hard -"@metamask/eslint-config@npm:^11.0.0": - version: 11.1.0 - resolution: "@metamask/eslint-config@npm:11.1.0" +"@metamask/eslint-config@npm:^12.0.0": + version: 12.0.0 + resolution: "@metamask/eslint-config@npm:12.0.0" peerDependencies: eslint: ^8.27.0 eslint-config-prettier: ^8.5.0 eslint-plugin-import: ^2.26.0 eslint-plugin-jsdoc: ^39.6.2 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 prettier: ^2.7.1 - checksum: 2345eb03821d80d605d60c393a3249b322ae32cee87497b338d81cc723d28d87d44adec92ba657fdc83e7df8599ec9eed06f1ad78f0febd13c318fb5a5ba2a7a + checksum: a2db4368c0a28d2b9cde2dde2432a911208a3b169f26edc880880e78975a14dee653defc04660e6c9b1f710cec96a19beedc2ec99a61286e784383edcbc20c89 languageName: node linkType: hard @@ -4147,10 +4157,10 @@ __metadata: "@jest/globals": ^29.5.0 "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/rpc-errors": ^5.1.1 "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" @@ -4167,8 +4177,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 jest: ^29.0.2 prettier: ^2.7.1 prettier-plugin-packagejson: ^2.2.11 @@ -4184,10 +4195,10 @@ __metadata: "@jest/globals": ^29.5.0 "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/rpc-errors": ^5.1.1 "@metamask/rpc-methods": "workspace:^" "@metamask/snaps-cli": "workspace:^" @@ -4205,8 +4216,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 ethers: ^6.3.0 jest: ^29.0.2 prettier: ^2.7.1 @@ -4222,10 +4234,10 @@ __metadata: dependencies: "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@typescript-eslint/eslint-plugin": ^5.42.1 "@typescript-eslint/parser": ^5.42.1 eslint: ^8.27.0 @@ -4233,8 +4245,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 prettier: ^2.7.1 prettier-plugin-packagejson: ^2.2.11 ts-node: ^10.9.1 @@ -4249,10 +4262,10 @@ __metadata: "@jest/globals": ^29.5.0 "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/rpc-errors": ^5.1.1 "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" @@ -4270,8 +4283,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 jest: ^29.0.2 prettier: ^2.7.1 prettier-plugin-packagejson: ^2.2.11 @@ -4287,10 +4301,10 @@ __metadata: "@jest/globals": ^29.5.0 "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-types": "workspace:^" @@ -4306,8 +4320,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 jest: ^29.0.2 prettier: ^2.7.1 prettier-plugin-packagejson: ^2.2.11 @@ -4322,10 +4337,10 @@ __metadata: dependencies: "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@typescript-eslint/eslint-plugin": ^5.42.1 "@typescript-eslint/parser": ^5.42.1 eslint: ^8.27.0 @@ -4333,8 +4348,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 prettier: ^2.7.1 prettier-plugin-packagejson: ^2.2.11 ts-node: ^10.9.1 @@ -4349,10 +4365,10 @@ __metadata: "@jest/globals": ^29.5.0 "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/rpc-errors": ^5.1.1 "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" @@ -4367,8 +4383,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 jest: ^29.0.2 prettier: ^2.7.1 prettier-plugin-packagejson: ^2.2.11 @@ -4398,10 +4415,10 @@ __metadata: "@jest/globals": ^29.5.0 "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/rpc-errors": ^5.1.1 "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" @@ -4416,8 +4433,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 jest: ^29.0.2 prettier: ^2.7.1 prettier-plugin-packagejson: ^2.2.11 @@ -4433,10 +4451,10 @@ __metadata: "@jest/globals": ^29.5.0 "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/rpc-errors": ^5.1.1 "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" @@ -4451,8 +4469,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 jest: ^29.0.2 prettier: ^2.7.1 prettier-plugin-packagejson: ^2.2.11 @@ -4468,10 +4487,10 @@ __metadata: "@jest/globals": ^29.5.0 "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/rpc-errors": ^5.1.1 "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" @@ -4486,8 +4505,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 jest: ^29.0.2 prettier: ^2.7.1 prettier-plugin-packagejson: ^2.2.11 @@ -4566,10 +4586,10 @@ __metadata: "@jest/globals": ^29.5.0 "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/rpc-errors": ^5.1.1 "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-rollup-plugin": "workspace:^" @@ -4588,8 +4608,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 jest: ^29.0.2 prettier: ^2.7.1 prettier-plugin-packagejson: ^2.2.11 @@ -4616,10 +4637,10 @@ __metadata: "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 "@metamask/browser-passworder": ^4.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/key-tree": ^7.1.1 "@metamask/permission-controller": ^4.0.0 "@metamask/snaps-ui": "workspace:^" @@ -4639,8 +4660,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 eth-rpc-errors: ^4.0.3 expect-type: ^0.15.0 jest: ^29.0.2 @@ -4684,10 +4706,10 @@ __metadata: dependencies: "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/snaps-utils": "workspace:^" "@swc/cli": ^0.1.62 "@swc/core": ^1.3.66 @@ -4706,8 +4728,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 jest: ^29.0.2 jest-it-up: ^2.0.0 memfs: ^3.4.13 @@ -4732,10 +4755,10 @@ __metadata: "@babel/preset-typescript": ^7.20.12 "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/snaps-browserify-plugin": "workspace:^" "@metamask/snaps-utils": "workspace:^" "@metamask/utils": ^6.0.1 @@ -4763,8 +4786,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 execa: ^5.1.1 is-url: ^1.2.4 jest: ^29.0.2 @@ -4796,10 +4820,10 @@ __metadata: "@metamask/approval-controller": ^3.0.0 "@metamask/auto-changelog": ^3.1.0 "@metamask/base-controller": ^3.0.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/object-multiplex": ^1.2.0 "@metamask/permission-controller": ^4.0.0 "@metamask/post-message-stream": ^6.1.2 @@ -4840,8 +4864,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 eth-rpc-errors: ^4.0.3 expect-webdriverio: ^4.1.2 gunzip-maybe: ^1.4.2 @@ -4886,10 +4911,10 @@ __metadata: "@lavamoat/lavapack": ^5.1.2 "@lavamoat/lavatube": ^0.0.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/object-multiplex": ^1.2.0 "@metamask/post-message-stream": ^6.1.2 "@metamask/providers": ^11.0.0 @@ -4921,8 +4946,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 eth-rpc-errors: ^4.0.3 expect-webdriverio: ^4.1.2 istanbul-lib-coverage: ^3.2.0 @@ -4967,10 +4993,10 @@ __metadata: "@jest/types": ^29.5.0 "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/rpc-methods": "workspace:^" "@metamask/snaps-execution-environments": "workspace:^" "@metamask/snaps-simulator": "workspace:^" @@ -4990,8 +5016,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 express: ^4.18.2 jest: ^29.0.2 jest-environment-node: ^29.5.0 @@ -5025,10 +5052,10 @@ __metadata: dependencies: "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/snaps-utils": "workspace:^" "@rollup/plugin-virtual": ^2.1.0 "@swc/cli": ^0.1.62 @@ -5043,8 +5070,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 jest: ^29.0.2 jest-it-up: ^2.0.0 memfs: ^3.4.13 @@ -5069,11 +5097,11 @@ __metadata: "@metamask/auto-changelog": ^3.1.0 "@metamask/base-controller": ^3.0.0 "@metamask/browser-passworder": ^4.1.0 - "@metamask/eslint-config": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 "@metamask/eslint-config-browser": ^11.1.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/eth-json-rpc-middleware": ^11.0.0 "@metamask/key-tree": ^7.1.1 "@metamask/permission-controller": ^4.0.0 @@ -5112,8 +5140,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + 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 express: ^4.18.2 @@ -5170,10 +5199,10 @@ __metadata: dependencies: "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/providers": ^11.0.0 "@metamask/rpc-methods": "workspace:^" "@metamask/snaps-utils": "workspace:^" @@ -5188,8 +5217,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 jest: ^29.0.2 prettier: ^2.7.1 prettier-plugin-packagejson: ^2.2.11 @@ -5204,10 +5234,10 @@ __metadata: dependencies: "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/utils": ^6.0.1 "@swc/cli": ^0.1.62 "@swc/core": ^1.3.66 @@ -5222,8 +5252,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 jest: ^29.0.2 jest-it-up: ^2.0.0 prettier: ^2.7.1 @@ -5245,10 +5276,10 @@ __metadata: "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 "@metamask/base-controller": ^3.0.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/key-tree": ^7.1.1 "@metamask/permission-controller": ^4.0.0 "@metamask/post-message-stream": ^6.1.2 @@ -5282,8 +5313,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 eth-rpc-errors: ^4.0.3 expect-webdriverio: ^4.1.2 fast-deep-equal: ^3.1.3 @@ -5319,10 +5351,10 @@ __metadata: dependencies: "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/snaps-utils": "workspace:^" "@metamask/utils": ^6.0.1 "@swc/cli": ^0.1.62 @@ -5338,8 +5370,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 jest: ^29.0.2 jest-it-up: ^2.0.0 memfs: ^3.4.13 @@ -5364,10 +5397,10 @@ __metadata: resolution: "@metamask/test-snaps@workspace:packages/test-snaps" dependencies: "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/providers": ^11.0.0 "@metamask/snaps-utils": "workspace:^" "@metamask/utils": ^6.0.1 @@ -5391,8 +5424,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 favicons: ^7.1.2 favicons-webpack-plugin: ^6.0.0 gl-matrix: ^3.4.3 @@ -5459,10 +5493,10 @@ __metadata: "@jest/globals": ^29.5.0 "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/rpc-errors": ^5.1.1 "@metamask/snaps-cli": "workspace:^" "@metamask/snaps-jest": "workspace:^" @@ -5484,8 +5518,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 http-server: ^14.1.1 jest: ^29.0.2 prettier: ^2.7.1 @@ -5507,10 +5542,10 @@ __metadata: "@jest/globals": ^29.5.0 "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/rpc-errors": ^5.1.1 "@metamask/snaps-jest": "workspace:^" "@metamask/snaps-rollup-plugin": "workspace:^" @@ -5527,8 +5562,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 jest: ^29.0.2 prettier: ^2.7.1 prettier-plugin-packagejson: ^2.2.11 @@ -9545,7 +9581,7 @@ __metadata: languageName: node linkType: hard -"builtins@npm:^5.0.0": +"builtins@npm:^5.0.0, builtins@npm:^5.0.1": version: 5.0.1 resolution: "builtins@npm:5.0.1" dependencies: @@ -12192,15 +12228,15 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-es@npm:^3.0.0": - version: 3.0.1 - resolution: "eslint-plugin-es@npm:3.0.1" +"eslint-plugin-es@npm:^4.1.0": + version: 4.1.0 + resolution: "eslint-plugin-es@npm:4.1.0" dependencies: eslint-utils: ^2.0.0 regexpp: ^3.0.0 peerDependencies: eslint: ">=4.19.1" - checksum: e57592c52301ee8ddc296ae44216df007f3a870bcb3be8d1fbdb909a1d3a3efe3fa3785de02066f9eba1d6466b722d3eb3cc3f8b75b3cf6a1cbded31ac6298e4 + checksum: 26b87a216d3625612b1d3ca8653ac8a1d261046d2a973bb0eb2759070267d2bfb0509051facdeb5ae03dc8dfb51a434be23aff7309a752ca901d637da535677f languageName: node linkType: hard @@ -12261,19 +12297,21 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-node@npm:^11.1.0": - version: 11.1.0 - resolution: "eslint-plugin-node@npm:11.1.0" +"eslint-plugin-n@npm:^15.7.0": + version: 15.7.0 + resolution: "eslint-plugin-n@npm:15.7.0" dependencies: - eslint-plugin-es: ^3.0.0 - eslint-utils: ^2.0.0 + builtins: ^5.0.1 + eslint-plugin-es: ^4.1.0 + eslint-utils: ^3.0.0 ignore: ^5.1.1 - minimatch: ^3.0.4 - resolve: ^1.10.1 - semver: ^6.1.0 + is-core-module: ^2.11.0 + minimatch: ^3.1.2 + resolve: ^1.22.1 + semver: ^7.3.8 peerDependencies: - eslint: ">=5.16.0" - checksum: 5804c4f8a6e721f183ef31d46fbe3b4e1265832f352810060e0502aeac7de034df83352fc88643b19641bb2163f2587f1bd4119aff0fd21e8d98c57c450e013b + eslint: ">=7.0.0" + checksum: cfbcc67e62adf27712afdeadf13223cb9717f95d4af8442056d9d4c97a8b88af76b7969f75deaac26fa98481023d6b7c9e43a28909e7f0468f40b3024b7bcfae languageName: node linkType: hard @@ -12292,6 +12330,15 @@ __metadata: 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: 46b9a4f79dae5539987922afc27cc17cbccdecf4f0ba19c0ccbf911b0e31853e9f39d9959eefb9637461b52772afa1a482f1f87ff16c1ba38bdb6fcf21897e9a + 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" @@ -14769,7 +14816,7 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.12.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.1, is-core-module@npm:^2.9.0": +"is-core-module@npm:^2.11.0, is-core-module@npm:^2.12.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.1, is-core-module@npm:^2.9.0": version: 2.12.1 resolution: "is-core-module@npm:2.12.1" dependencies: @@ -19914,7 +19961,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.1.4, resolve@npm:^1.10.0, resolve@npm:^1.10.1, 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.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": version: 1.22.3 resolution: "resolve@npm:1.22.3" dependencies: @@ -19940,7 +19987,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.1.4#~builtin, resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.10.1#~builtin, resolve@patch:resolve@^1.13.1#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.17.0#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin, resolve@patch:resolve@^1.22.3#~builtin, resolve@patch:resolve@^1.4.0#~builtin": +"resolve@patch:resolve@^1.1.4#~builtin, resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.13.1#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.17.0#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin, resolve@patch:resolve@^1.22.3#~builtin, resolve@patch:resolve@^1.4.0#~builtin": version: 1.22.3 resolution: "resolve@patch:resolve@npm%3A1.22.3#~builtin::version=1.22.3&hash=c3c19d" dependencies: @@ -20152,10 +20199,10 @@ __metadata: dependencies: "@lavamoat/allow-scripts": ^2.3.1 "@metamask/auto-changelog": ^3.1.0 - "@metamask/eslint-config": ^11.0.0 - "@metamask/eslint-config-jest": ^11.0.0 - "@metamask/eslint-config-nodejs": ^11.0.1 - "@metamask/eslint-config-typescript": ^11.0.0 + "@metamask/eslint-config": ^12.0.0 + "@metamask/eslint-config-jest": ^12.0.0 + "@metamask/eslint-config-nodejs": ^12.0.0 + "@metamask/eslint-config-typescript": ^12.0.0 "@metamask/utils": ^6.0.1 "@swc/cli": ^0.1.62 "@swc/core": ^1.3.66 @@ -20169,8 +20216,9 @@ __metadata: eslint-plugin-import: ^2.26.0 eslint-plugin-jest: ^27.1.5 eslint-plugin-jsdoc: ^39.6.2 - eslint-plugin-node: ^11.1.0 + eslint-plugin-n: ^15.7.0 eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 execa: ^5.1.1 favicons: ^7.1.2 geckodriver: ^3.2.0 @@ -20364,7 +20412,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.0.0, semver@npm:^6.1.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.3.0": +"semver@npm:^6.0.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.3.0": version: 6.3.0 resolution: "semver@npm:6.3.0" bin: