diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 7625784448..f5c519f5b9 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -36,6 +36,9 @@ /packages/transaction-pay-controller @MetaMask/confirmations /packages/user-operation-controller @MetaMask/confirmations +## Transactions Team +/packages/smart-transactions-controller @MetaMask/transactions + ## Delegation Team /packages/delegation-controller @MetaMask/delegation /packages/gator-permissions-controller @MetaMask/delegation @@ -213,6 +216,8 @@ /packages/selected-network-controller/CHANGELOG.md @MetaMask/wallet-integrations @MetaMask/core-platform /packages/signature-controller/package.json @MetaMask/confirmations @MetaMask/core-platform /packages/signature-controller/CHANGELOG.md @MetaMask/confirmations @MetaMask/core-platform +/packages/smart-transactions-controller/package.json @MetaMask/transactions @MetaMask/core-platform +/packages/smart-transactions-controller/CHANGELOG.md @MetaMask/transactions @MetaMask/core-platform /packages/transaction-controller/package.json @MetaMask/confirmations @MetaMask/core-platform /packages/transaction-controller/CHANGELOG.md @MetaMask/confirmations @MetaMask/core-platform /packages/transaction-pay-controller/package.json @MetaMask/confirmations @MetaMask/core-platform diff --git a/README.md b/README.md index f4a317c926..80ff31cbae 100644 --- a/README.md +++ b/README.md @@ -116,6 +116,7 @@ yarn skills --reset # clear saved local selection - [`@metamask/selected-network-controller`](packages/selected-network-controller) - [`@metamask/shield-controller`](packages/shield-controller) - [`@metamask/signature-controller`](packages/signature-controller) +- [`@metamask/smart-transactions-controller`](packages/smart-transactions-controller) - [`@metamask/snap-account-service`](packages/snap-account-service) - [`@metamask/social-controllers`](packages/social-controllers) - [`@metamask/storage-service`](packages/storage-service) @@ -210,6 +211,7 @@ linkStyle default opacity:0.5 selected_network_controller(["@metamask/selected-network-controller"]); shield_controller(["@metamask/shield-controller"]); signature_controller(["@metamask/signature-controller"]); + smart_transactions_controller(["@metamask/smart-transactions-controller"]); snap_account_service(["@metamask/snap-account-service"]); social_controllers(["@metamask/social-controllers"]); storage_service(["@metamask/storage-service"]); @@ -537,6 +539,16 @@ linkStyle default opacity:0.5 signature_controller --> logging_controller; signature_controller --> messenger; signature_controller --> network_controller; + smart_transactions_controller --> base_controller; + smart_transactions_controller --> controller_utils; + smart_transactions_controller --> eth_json_rpc_provider; + smart_transactions_controller --> messenger; + smart_transactions_controller --> network_controller; + smart_transactions_controller --> polling_controller; + smart_transactions_controller --> profile_sync_controller; + smart_transactions_controller --> remote_feature_flag_controller; + smart_transactions_controller --> transaction_controller; + smart_transactions_controller --> json_rpc_engine; snap_account_service --> account_tree_controller; snap_account_service --> keyring_controller; snap_account_service --> messenger; diff --git a/eslint-suppressions.json b/eslint-suppressions.json index 4b9a2704a4..85127a3df6 100644 --- a/eslint-suppressions.json +++ b/eslint-suppressions.json @@ -2136,6 +2136,82 @@ "count": 2 } }, + "packages/smart-transactions-controller/src/SmartTransactionsController.test.ts": { + "@typescript-eslint/explicit-function-return-type": { + "count": 12 + }, + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "no-restricted-syntax": { + "count": 12 + } + }, + "packages/smart-transactions-controller/src/SmartTransactionsController.ts": { + "@typescript-eslint/explicit-function-return-type": { + "count": 10 + }, + "@typescript-eslint/no-base-to-string": { + "count": 1 + }, + "@typescript-eslint/no-floating-promises": { + "count": 4 + }, + "@typescript-eslint/restrict-template-expressions": { + "count": 1 + }, + "no-restricted-syntax": { + "count": 4 + } + }, + "packages/smart-transactions-controller/src/featureFlags/feature-flags.ts": { + "@typescript-eslint/naming-convention": { + "count": 1 + } + }, + "packages/smart-transactions-controller/src/selectors.ts": { + "@typescript-eslint/explicit-function-return-type": { + "count": 2 + } + }, + "packages/smart-transactions-controller/src/types.ts": { + "@typescript-eslint/naming-convention": { + "count": 25 + }, + "@typescript-eslint/no-explicit-any": { + "count": 7 + }, + "@typescript-eslint/prefer-enum-initializers": { + "count": 6 + } + }, + "packages/smart-transactions-controller/src/utils.test.ts": { + "@typescript-eslint/explicit-function-return-type": { + "count": 7 + } + }, + "packages/smart-transactions-controller/src/utils.ts": { + "@typescript-eslint/explicit-function-return-type": { + "count": 10 + }, + "@typescript-eslint/naming-convention": { + "count": 1 + }, + "@typescript-eslint/no-explicit-any": { + "count": 4 + }, + "@typescript-eslint/prefer-nullish-coalescing": { + "count": 1 + }, + "jsdoc/require-param-description": { + "count": 1 + } + }, + "packages/smart-transactions-controller/tests/helpers.ts": { + "@typescript-eslint/explicit-function-return-type": { + "count": 2 + } + }, "packages/snap-account-service/src/SnapAccountService.test.ts": { "no-restricted-syntax": { "count": 2 diff --git a/eslint.config.mjs b/eslint.config.mjs index 05b9a4f3d5..c417e7b8f6 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -77,6 +77,7 @@ const config = createConfig([ '**/coverage/**', '**/dist/**', '**/docs/**', + '.skills-cache/**', '.yarn/**', 'merged-packages/**', 'scripts/create-package/package-template/**', diff --git a/merged-packages/smart-transactions-controller/setupJest.js b/merged-packages/smart-transactions-controller/setupJest.js deleted file mode 100644 index 19c0b2eae9..0000000000 --- a/merged-packages/smart-transactions-controller/setupJest.js +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line import-x/no-unassigned-import -require('isomorphic-fetch'); diff --git a/merged-packages/smart-transactions-controller/CHANGELOG.md b/packages/smart-transactions-controller/CHANGELOG.md similarity index 78% rename from merged-packages/smart-transactions-controller/CHANGELOG.md rename to packages/smart-transactions-controller/CHANGELOG.md index 21f7596c35..f1ee39a621 100644 --- a/merged-packages/smart-transactions-controller/CHANGELOG.md +++ b/packages/smart-transactions-controller/CHANGELOG.md @@ -7,4 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -- This package was migrated to the core monorepo from [`MetaMask/smart-transactions-controller`](https://github.com/MetaMask/smart-transactions-controller). For the changelog up to and including v24.2.1 (the last release from the original repo), see the [historical changelog](https://github.com/MetaMask/smart-transactions-controller/blob/v24.2.1/CHANGELOG.md). +### Changed + +- This package was migrated to the core monorepo from [`MetaMask/smart-transactions-controller`](https://github.com/MetaMask/smart-transactions-controller). For the changelog up to and including v24.2.1 (the last release from the original repo), see the [historical changelog](https://github.com/MetaMask/smart-transactions-controller/blob/v24.2.1/CHANGELOG.md) ([#9139](https://github.com/MetaMask/core/pull/9139)). + +[Unreleased]: https://github.com/MetaMask/core/ diff --git a/merged-packages/smart-transactions-controller/LICENSE b/packages/smart-transactions-controller/LICENSE similarity index 100% rename from merged-packages/smart-transactions-controller/LICENSE rename to packages/smart-transactions-controller/LICENSE diff --git a/merged-packages/smart-transactions-controller/README.md b/packages/smart-transactions-controller/README.md similarity index 100% rename from merged-packages/smart-transactions-controller/README.md rename to packages/smart-transactions-controller/README.md diff --git a/merged-packages/smart-transactions-controller/jest.config.js b/packages/smart-transactions-controller/jest.config.js similarity index 91% rename from merged-packages/smart-transactions-controller/jest.config.js rename to packages/smart-transactions-controller/jest.config.js index 06c4cd8d64..f4ec849294 100644 --- a/merged-packages/smart-transactions-controller/jest.config.js +++ b/packages/smart-transactions-controller/jest.config.js @@ -23,8 +23,4 @@ module.exports = merge(baseConfig, { statements: 91.89, }, }, - - setupFiles: ['./setupJest.js'], - - testTimeout: 2500, }); diff --git a/merged-packages/smart-transactions-controller/package.json b/packages/smart-transactions-controller/package.json similarity index 93% rename from merged-packages/smart-transactions-controller/package.json rename to packages/smart-transactions-controller/package.json index b8a2e3bb6f..4d23086f8d 100644 --- a/merged-packages/smart-transactions-controller/package.json +++ b/packages/smart-transactions-controller/package.json @@ -1,7 +1,7 @@ { "name": "@metamask/smart-transactions-controller", "version": "24.2.1", - "description": "Improves success rates for swaps by trialing transactions privately and finding minimum fees.", + "description": "Improves success rates for swaps by trialing transactions privately and finding minimum fees", "keywords": [ "Ethereum", "MetaMask" @@ -15,7 +15,12 @@ "type": "git", "url": "https://github.com/MetaMask/core.git" }, + "files": [ + "dist/" + ], "sideEffects": false, + "main": "./dist/index.cjs", + "types": "./dist/index.d.cts", "exports": { ".": { "import": { @@ -29,11 +34,10 @@ }, "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", - "files": [ - "dist/" - ], + "publishConfig": { + "access": "public", + "registry": "https://registry.npmjs.org/" + }, "scripts": { "build": "ts-bridge --project tsconfig.build.json --verbose --clean --no-references", "build:all": "ts-bridge --project tsconfig.build.json --verbose --clean", @@ -50,8 +54,6 @@ }, "dependencies": { "@babel/runtime": "^7.23.9", - "@ethereumjs/tx": "^5.4.0", - "@ethereumjs/util": "^9.1.0", "@ethersproject/bytes": "^5.7.0", "@ethersproject/keccak256": "^5.8.0", "@ethersproject/transactions": "^5.7.0", @@ -68,28 +70,22 @@ "@metamask/transaction-controller": "^68.0.0", "@metamask/utils": "^11.11.0", "bignumber.js": "^9.1.2", - "fast-json-patch": "^3.1.1", "lodash": "^4.17.21", "reselect": "^5.1.1" }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@metamask/gas-fee-controller": "^26.2.2", "@metamask/json-rpc-engine": "^10.5.0", "@ts-bridge/cli": "^0.6.4", "deepmerge": "^4.2.2", "jest": "^29.7.0", - "nock": "^14.0.0-beta.7", + "nock": "^13.3.1", "ts-jest": "^29.2.5", "tsx": "^4.20.5", "typedoc": "^0.25.13", "typedoc-plugin-missing-exports": "^2.0.0", "typescript": "~5.3.3" }, - "publishConfig": { - "access": "public", - "registry": "https://registry.npmjs.org/" - }, "engines": { "node": "^18.18 || >=20" } diff --git a/merged-packages/smart-transactions-controller/src/SmartTransactionsController-method-action-types.ts b/packages/smart-transactions-controller/src/SmartTransactionsController-method-action-types.ts similarity index 100% rename from merged-packages/smart-transactions-controller/src/SmartTransactionsController-method-action-types.ts rename to packages/smart-transactions-controller/src/SmartTransactionsController-method-action-types.ts diff --git a/merged-packages/smart-transactions-controller/src/SmartTransactionsController.test.ts b/packages/smart-transactions-controller/src/SmartTransactionsController.test.ts similarity index 100% rename from merged-packages/smart-transactions-controller/src/SmartTransactionsController.test.ts rename to packages/smart-transactions-controller/src/SmartTransactionsController.test.ts index 0ec5a462ee..8b2b2fdf5c 100644 --- a/merged-packages/smart-transactions-controller/src/SmartTransactionsController.test.ts +++ b/packages/smart-transactions-controller/src/SmartTransactionsController.test.ts @@ -26,6 +26,7 @@ import type { Hex } from '@metamask/utils'; import nock from 'nock'; import packageJson from '../package.json'; +import { advanceTime, flushPromises, getFakeProvider } from '../tests/helpers'; import { API_BASE_URL, SENTINEL_API_BASE_URL_MAP, @@ -40,7 +41,6 @@ import type { SmartTransactionsControllerMessenger } from './SmartTransactionsCo import type { SmartTransaction, UnsignedTransaction } from './types'; import { SmartTransactionStatuses, ClientId } from './types'; import * as utils from './utils'; -import { advanceTime, flushPromises, getFakeProvider } from '../tests/helpers'; type AllActions = MessengerActions; diff --git a/merged-packages/smart-transactions-controller/src/SmartTransactionsController.ts b/packages/smart-transactions-controller/src/SmartTransactionsController.ts similarity index 100% rename from merged-packages/smart-transactions-controller/src/SmartTransactionsController.ts rename to packages/smart-transactions-controller/src/SmartTransactionsController.ts diff --git a/merged-packages/smart-transactions-controller/src/constants.ts b/packages/smart-transactions-controller/src/constants.ts similarity index 97% rename from merged-packages/smart-transactions-controller/src/constants.ts rename to packages/smart-transactions-controller/src/constants.ts index 8e0c23e73f..236bd0c23b 100644 --- a/merged-packages/smart-transactions-controller/src/constants.ts +++ b/packages/smart-transactions-controller/src/constants.ts @@ -24,7 +24,6 @@ export enum MetaMetricsEventName { export enum MetaMetricsEventCategory { Transactions = 'Transactions', - // eslint-disable-next-line @typescript-eslint/no-shadow Navigation = 'Navigation', } diff --git a/merged-packages/smart-transactions-controller/src/featureFlags/feature-flags.test.ts b/packages/smart-transactions-controller/src/featureFlags/feature-flags.test.ts similarity index 100% rename from merged-packages/smart-transactions-controller/src/featureFlags/feature-flags.test.ts rename to packages/smart-transactions-controller/src/featureFlags/feature-flags.test.ts diff --git a/merged-packages/smart-transactions-controller/src/featureFlags/feature-flags.ts b/packages/smart-transactions-controller/src/featureFlags/feature-flags.ts similarity index 100% rename from merged-packages/smart-transactions-controller/src/featureFlags/feature-flags.ts rename to packages/smart-transactions-controller/src/featureFlags/feature-flags.ts diff --git a/merged-packages/smart-transactions-controller/src/featureFlags/index.ts b/packages/smart-transactions-controller/src/featureFlags/index.ts similarity index 100% rename from merged-packages/smart-transactions-controller/src/featureFlags/index.ts rename to packages/smart-transactions-controller/src/featureFlags/index.ts diff --git a/merged-packages/smart-transactions-controller/src/featureFlags/validators.test.ts b/packages/smart-transactions-controller/src/featureFlags/validators.test.ts similarity index 100% rename from merged-packages/smart-transactions-controller/src/featureFlags/validators.test.ts rename to packages/smart-transactions-controller/src/featureFlags/validators.test.ts diff --git a/merged-packages/smart-transactions-controller/src/featureFlags/validators.ts b/packages/smart-transactions-controller/src/featureFlags/validators.ts similarity index 100% rename from merged-packages/smart-transactions-controller/src/featureFlags/validators.ts rename to packages/smart-transactions-controller/src/featureFlags/validators.ts diff --git a/merged-packages/smart-transactions-controller/src/index.ts b/packages/smart-transactions-controller/src/index.ts similarity index 100% rename from merged-packages/smart-transactions-controller/src/index.ts rename to packages/smart-transactions-controller/src/index.ts diff --git a/merged-packages/smart-transactions-controller/src/selectors.test.ts b/packages/smart-transactions-controller/src/selectors.test.ts similarity index 100% rename from merged-packages/smart-transactions-controller/src/selectors.test.ts rename to packages/smart-transactions-controller/src/selectors.test.ts diff --git a/merged-packages/smart-transactions-controller/src/selectors.ts b/packages/smart-transactions-controller/src/selectors.ts similarity index 100% rename from merged-packages/smart-transactions-controller/src/selectors.ts rename to packages/smart-transactions-controller/src/selectors.ts diff --git a/merged-packages/smart-transactions-controller/src/types.ts b/packages/smart-transactions-controller/src/types.ts similarity index 100% rename from merged-packages/smart-transactions-controller/src/types.ts rename to packages/smart-transactions-controller/src/types.ts diff --git a/merged-packages/smart-transactions-controller/src/utils.test.ts b/packages/smart-transactions-controller/src/utils.test.ts similarity index 100% rename from merged-packages/smart-transactions-controller/src/utils.test.ts rename to packages/smart-transactions-controller/src/utils.test.ts diff --git a/merged-packages/smart-transactions-controller/src/utils.ts b/packages/smart-transactions-controller/src/utils.ts similarity index 99% rename from merged-packages/smart-transactions-controller/src/utils.ts rename to packages/smart-transactions-controller/src/utils.ts index 2e2f61cb48..533c732b4d 100644 --- a/merged-packages/smart-transactions-controller/src/utils.ts +++ b/packages/smart-transactions-controller/src/utils.ts @@ -131,6 +131,7 @@ export const calculateStatus = (stxStatus: SmartTransactionsStatus) => { /** * Returns processing time for an STX in seconds. + * * @param smartTransactionSubmittedtime * @returns Processing time in seconds. */ diff --git a/merged-packages/smart-transactions-controller/tests/helpers.ts b/packages/smart-transactions-controller/tests/helpers.ts similarity index 99% rename from merged-packages/smart-transactions-controller/tests/helpers.ts rename to packages/smart-transactions-controller/tests/helpers.ts index ce8acfb966..31f81e95f0 100644 --- a/merged-packages/smart-transactions-controller/tests/helpers.ts +++ b/packages/smart-transactions-controller/tests/helpers.ts @@ -17,6 +17,7 @@ export const flushPromises = async () => { * promises or other asynchronous operations that may get enqueued during the timer's duration. * By advancing time in incremental steps and flushing promises between each step, * this function ensures that both timers and promises are comprehensively processed. + * * @param options - The options object. * @param options.duration - The total amount of time (in milliseconds) to advance the timer by. * @param options.stepSize - The incremental step size (in milliseconds) by which the timer is advanced in each iteration. Default is 1/4 of the duration. diff --git a/merged-packages/smart-transactions-controller/tsconfig.build.json b/packages/smart-transactions-controller/tsconfig.build.json similarity index 100% rename from merged-packages/smart-transactions-controller/tsconfig.build.json rename to packages/smart-transactions-controller/tsconfig.build.json diff --git a/merged-packages/smart-transactions-controller/tsconfig.json b/packages/smart-transactions-controller/tsconfig.json similarity index 100% rename from merged-packages/smart-transactions-controller/tsconfig.json rename to packages/smart-transactions-controller/tsconfig.json diff --git a/merged-packages/smart-transactions-controller/typedoc.json b/packages/smart-transactions-controller/typedoc.json similarity index 100% rename from merged-packages/smart-transactions-controller/typedoc.json rename to packages/smart-transactions-controller/typedoc.json diff --git a/teams.json b/teams.json index 571fe2d410..f16045176a 100644 --- a/teams.json +++ b/teams.json @@ -83,5 +83,6 @@ "metamask/config-registry-controller": "team-networks", "metamask/money-account-controller": "team-accounts-framework", "metamask/money-account-upgrade-controller": "team-earn", - "metamask/snap-account-service": "team-accounts-framework" + "metamask/snap-account-service": "team-accounts-framework", + "metamask/smart-transactions-controller": "team-transactions" } diff --git a/tsconfig.build.json b/tsconfig.build.json index 00ea5a9aec..89c3707a45 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -235,6 +235,9 @@ { "path": "./packages/signature-controller/tsconfig.build.json" }, + { + "path": "./packages/smart-transactions-controller/tsconfig.build.json" + }, { "path": "./packages/snap-account-service/tsconfig.build.json" }, diff --git a/tsconfig.json b/tsconfig.json index 1bdf352a2f..c67aa45d06 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -227,6 +227,9 @@ { "path": "./packages/signature-controller" }, + { + "path": "./packages/smart-transactions-controller" + }, { "path": "./packages/snap-account-service" }, diff --git a/yarn.config.cjs b/yarn.config.cjs index c73d56a0dc..378edbeb71 100644 --- a/yarn.config.cjs +++ b/yarn.config.cjs @@ -534,6 +534,7 @@ async function expectWorkspaceLicense(workspace) { '@metamask/permission-log-controller', '@metamask/eth-json-rpc-middleware', '@metamask/eth-json-rpc-provider', + '@metamask/smart-transactions-controller', ].includes(workspace.manifest.name) ) { expectWorkspaceField(workspace, 'license'); diff --git a/yarn.lock b/yarn.lock index a22201eb7e..d4617f39bc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8338,6 +8338,43 @@ __metadata: languageName: node linkType: hard +"@metamask/smart-transactions-controller@workspace:packages/smart-transactions-controller": + version: 0.0.0-use.local + resolution: "@metamask/smart-transactions-controller@workspace:packages/smart-transactions-controller" + dependencies: + "@babel/runtime": "npm:^7.23.9" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/keccak256": "npm:^5.8.0" + "@ethersproject/transactions": "npm:^5.7.0" + "@metamask/auto-changelog": "npm:^6.1.0" + "@metamask/base-controller": "npm:^9.1.0" + "@metamask/controller-utils": "npm:^12.2.0" + "@metamask/eth-json-rpc-provider": "npm:^6.0.1" + "@metamask/eth-query": "npm:^4.0.0" + "@metamask/json-rpc-engine": "npm:^10.5.0" + "@metamask/messenger": "npm:^1.2.0" + "@metamask/network-controller": "npm:^32.0.0" + "@metamask/polling-controller": "npm:^16.0.6" + "@metamask/profile-sync-controller": "npm:^28.2.0" + "@metamask/remote-feature-flag-controller": "npm:^4.2.2" + "@metamask/superstruct": "npm:^3.1.0" + "@metamask/transaction-controller": "npm:^68.0.0" + "@metamask/utils": "npm:^11.11.0" + "@ts-bridge/cli": "npm:^0.6.4" + bignumber.js: "npm:^9.1.2" + deepmerge: "npm:^4.2.2" + jest: "npm:^29.7.0" + lodash: "npm:^4.17.21" + nock: "npm:^13.3.1" + reselect: "npm:^5.1.1" + ts-jest: "npm:^29.2.5" + tsx: "npm:^4.20.5" + typedoc: "npm:^0.25.13" + typedoc-plugin-missing-exports: "npm:^2.0.0" + typescript: "npm:~5.3.3" + languageName: unknown + linkType: soft + "@metamask/snap-account-service@npm:^0.3.1, @metamask/snap-account-service@workspace:packages/snap-account-service": version: 0.0.0-use.local resolution: "@metamask/snap-account-service@workspace:packages/snap-account-service"