From d2b79b1bab3c50bf46d7f3d2e00b26d131b49396 Mon Sep 17 00:00:00 2001 From: Salah-Eddine Saakoun Date: Fri, 27 Mar 2026 12:12:47 +0100 Subject: [PATCH 1/2] chore: remove @metamask/error-reporting-service package --- .github/CODEOWNERS | 1 - README.md | 2 - eslint-suppressions.json | 5 - packages/error-reporting-service/CHANGELOG.md | 81 ------- packages/error-reporting-service/LICENSE | 20 -- packages/error-reporting-service/README.md | 209 ------------------ .../error-reporting-service/jest.config.js | 26 --- packages/error-reporting-service/package.json | 74 ------- ...r-reporting-service-method-action-types.ts | 24 -- .../src/error-reporting-service.test.ts | 65 ------ .../src/error-reporting-service.ts | 182 --------------- packages/error-reporting-service/src/index.ts | 10 - .../tsconfig.build.json | 10 - .../error-reporting-service/tsconfig.json | 8 - packages/error-reporting-service/typedoc.json | 7 - .../tsconfig.build.json | 3 - .../eth-json-rpc-middleware/tsconfig.json | 3 - .../network-controller/tsconfig.build.json | 1 - packages/network-controller/tsconfig.json | 1 - teams.json | 1 - tsconfig.build.json | 3 - tsconfig.json | 3 - yarn.lock | 22 +- 23 files changed, 1 insertion(+), 760 deletions(-) delete mode 100644 packages/error-reporting-service/CHANGELOG.md delete mode 100644 packages/error-reporting-service/LICENSE delete mode 100644 packages/error-reporting-service/README.md delete mode 100644 packages/error-reporting-service/jest.config.js delete mode 100644 packages/error-reporting-service/package.json delete mode 100644 packages/error-reporting-service/src/error-reporting-service-method-action-types.ts delete mode 100644 packages/error-reporting-service/src/error-reporting-service.test.ts delete mode 100644 packages/error-reporting-service/src/error-reporting-service.ts delete mode 100644 packages/error-reporting-service/src/index.ts delete mode 100644 packages/error-reporting-service/tsconfig.build.json delete mode 100644 packages/error-reporting-service/tsconfig.json delete mode 100644 packages/error-reporting-service/typedoc.json diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 331f1487491..801746e8beb 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -82,7 +82,6 @@ /packages/connectivity-controller @MetaMask/core-platform /packages/geolocation-controller @MetaMask/core-platform /packages/controller-utils @MetaMask/core-platform -/packages/error-reporting-service @MetaMask/core-platform /packages/eth-json-rpc-middleware @MetaMask/core-platform /packages/messenger @MetaMask/core-platform /packages/sample-controllers @MetaMask/core-platform diff --git a/README.md b/README.md index 80c0514440c..fe142a74dc7 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,6 @@ Each package in this repository has its own README where you can find installati - [`@metamask/eip-7702-internal-rpc-middleware`](packages/eip-7702-internal-rpc-middleware) - [`@metamask/eip1193-permission-middleware`](packages/eip1193-permission-middleware) - [`@metamask/ens-controller`](packages/ens-controller) -- [`@metamask/error-reporting-service`](packages/error-reporting-service) - [`@metamask/eth-block-tracker`](packages/eth-block-tracker) - [`@metamask/eth-json-rpc-middleware`](packages/eth-json-rpc-middleware) - [`@metamask/eth-json-rpc-provider`](packages/eth-json-rpc-provider) @@ -135,7 +134,6 @@ linkStyle default opacity:0.5 eip_7702_internal_rpc_middleware(["@metamask/eip-7702-internal-rpc-middleware"]); eip1193_permission_middleware(["@metamask/eip1193-permission-middleware"]); ens_controller(["@metamask/ens-controller"]); - error_reporting_service(["@metamask/error-reporting-service"]); eth_block_tracker(["@metamask/eth-block-tracker"]); eth_json_rpc_middleware(["@metamask/eth-json-rpc-middleware"]); eth_json_rpc_provider(["@metamask/eth-json-rpc-provider"]); diff --git a/eslint-suppressions.json b/eslint-suppressions.json index b5f5675bede..215478769e8 100644 --- a/eslint-suppressions.json +++ b/eslint-suppressions.json @@ -834,11 +834,6 @@ "count": 6 } }, - "packages/error-reporting-service/src/index.ts": { - "no-restricted-syntax": { - "count": 1 - } - }, "packages/foundryup/src/cli.ts": { "no-restricted-globals": { "count": 1 diff --git a/packages/error-reporting-service/CHANGELOG.md b/packages/error-reporting-service/CHANGELOG.md deleted file mode 100644 index 52560082d16..00000000000 --- a/packages/error-reporting-service/CHANGELOG.md +++ /dev/null @@ -1,81 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [Unreleased] - -## [3.0.2] - -### Changed - -- Bump `@metamask/base-controller` from `^9.0.0` to `^9.0.1` ([#8317](https://github.com/MetaMask/core/pull/8317)) -- Bump `@metamask/messenger` from `^0.3.0` to `^1.0.0` ([#8317](https://github.com/MetaMask/core/pull/8317)) - -## [3.0.1] - -### Changed - -- Add deprecation notice ([#7427](https://github.com/MetaMask/core/pull/7427)) - - This package is deprecated, and can be replaced with the - `Messenger.captureException` method from `@metamask/messenger`. - -## [3.0.0] - -### Changed - -- **BREAKING:** Use new `Messenger` from `@metamask/messenger` ([#6462](https://github.com/MetaMask/core/pull/6462)) - - Previously, `ErrorReportingService` accepted a `RestrictedMessenger` instance from `@metamask/base-controller`. -- **BREAKING:** Metadata property `anonymous` renamed to `includeInDebugSnapshot` ([#6462](https://github.com/MetaMask/core/pull/6462)) -- Bump `@metamask/base-controller` from `^8.4.2` to `^9.0.0` ([#6962](https://github.com/MetaMask/core/pull/6962)) - -## [2.2.2] - -### Changed - -- Bump `@metamask/base-controller` from `^8.4.1` to `^8.4.2` ([#6917](https://github.com/MetaMask/core/pull/6917)) - -## [2.2.1] - -### Changed - -- Bump `@metamask/base-controller` from `^8.4.0` to `^8.4.1` ([#6807](https://github.com/MetaMask/core/pull/6807)) - -## [2.2.0] - -### Added - -- Add `name` and `state` properties to support modular initialization ([#6781](https://github.com/MetaMask/core/pull/6781)) - -## [2.1.0] - -### Changed - -- Bump `@metamask/base-controller` from `^8.0.1` to `^8.4.0` ([#6284](https://github.com/MetaMask/core/pull/6284), [#6355](https://github.com/MetaMask/core/pull/6355), [#6465](https://github.com/MetaMask/core/pull/6465), [#6632](https://github.com/MetaMask/core/pull/6632)) - -## [2.0.0] - -### Changed - -- **BREAKING:** Adjust function signature of `captureException` option so it expects an `Error` instead of `unknown` ([#5968](https://github.com/MetaMask/core/pull/5968)) - - This matches the patched version of `captureException` from `@sentry/react-native` that mobile uses - - It also matches the type of the `captureException` method and action that the service exports - -## [1.0.0] - -### Added - -- Initial release ([#5882](https://github.com/MetaMask/core/pull/5882)) - -[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/error-reporting-service@3.0.2...HEAD -[3.0.2]: https://github.com/MetaMask/core/compare/@metamask/error-reporting-service@3.0.1...@metamask/error-reporting-service@3.0.2 -[3.0.1]: https://github.com/MetaMask/core/compare/@metamask/error-reporting-service@3.0.0...@metamask/error-reporting-service@3.0.1 -[3.0.0]: https://github.com/MetaMask/core/compare/@metamask/error-reporting-service@2.2.2...@metamask/error-reporting-service@3.0.0 -[2.2.2]: https://github.com/MetaMask/core/compare/@metamask/error-reporting-service@2.2.1...@metamask/error-reporting-service@2.2.2 -[2.2.1]: https://github.com/MetaMask/core/compare/@metamask/error-reporting-service@2.2.0...@metamask/error-reporting-service@2.2.1 -[2.2.0]: https://github.com/MetaMask/core/compare/@metamask/error-reporting-service@2.1.0...@metamask/error-reporting-service@2.2.0 -[2.1.0]: https://github.com/MetaMask/core/compare/@metamask/error-reporting-service@2.0.0...@metamask/error-reporting-service@2.1.0 -[2.0.0]: https://github.com/MetaMask/core/compare/@metamask/error-reporting-service@1.0.0...@metamask/error-reporting-service@2.0.0 -[1.0.0]: https://github.com/MetaMask/core/releases/tag/@metamask/error-reporting-service@1.0.0 diff --git a/packages/error-reporting-service/LICENSE b/packages/error-reporting-service/LICENSE deleted file mode 100644 index 7d002dced3a..00000000000 --- a/packages/error-reporting-service/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -MIT License - -Copyright (c) 2025 MetaMask - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE diff --git a/packages/error-reporting-service/README.md b/packages/error-reporting-service/README.md deleted file mode 100644 index 500326f9cff..00000000000 --- a/packages/error-reporting-service/README.md +++ /dev/null @@ -1,209 +0,0 @@ -# `@metamask/error-reporting-service` - -> [!WARNING] -> This package is deprecated. To report errors, please use -> [`Messenger.captureException`](https://github.com/MetaMask/core/blob/8b3ad82c35d9d75c9a5096d847e7e8651e29cc5e/packages/messenger/src/Messenger.ts#L258-L263) -> instead. - -Reports errors to an external app such as Sentry but in an agnostic fashion. - -## Installation - -`yarn add @metamask/error-reporting-service` - -or - -`npm install @metamask/error-reporting-service` - -## Usage - -This package is designed to be used in another module via a messenger, but can also be used on its own if needed. - -### Using the service via a messenger - -In most cases, you will want to use the error reporting service in your module via a messenger object. - -In this example, we have a controller, and something bad happens, but we want to report an error instead of throwing it. - -#### 1. Controller file - -```typescript -// We need to get the type for the `ErrorReportingService:captureException` -// action. -import type { ErrorReportingServiceCaptureExceptionAction } from '@metamask/error-reporting-service'; - -// Now let's set up our controller, starting with the messenger. -// Note that we grant the `ErrorReportingService:captureException` action to the -// messenger. -type AllowedActions = ErrorReportingServiceCaptureExceptionAction; -type ExampleControllerMessenger = RestrictedMessenger< - 'ExampleController', - AllowedActions, - never, - AllowedActions['type'], - never ->; - -// Finally, we define our controller. -class ExampleController extends BaseController< - 'ExampleController', - ExampleControllerState, - ExampleControllerMessenger -> { - doSomething() { - // Now imagine that we do something that produces an error and we want to - // report the error. - this.messagingSystem.call( - 'ErrorReportingService:captureException', - new Error('Something went wrong'), - ); - } -} -``` - -#### 2A. Initialization file (browser) - -```typescript -// We need a version of `captureException` from somewhere. Here, we are getting -// it from `@sentry/browser`. -import { captureException } from '@sentry/browser'; - -// We also need to get the ErrorReportingService. -import { ErrorReportingService } from '@metamask/error-reporting-service'; - -// And we need our controller. -import { ExampleController } from './example-controller'; - -// We need to have a global messenger. -const globalMessenger = new Messenger(); - -// We need to create a restricted messenger for the ErrorReportingService, and -// then we can create the service itself. -const errorReportingServiceMessenger = globalMessenger.getRestricted({ - allowedActions: [], - allowedEvents: [], -}); -const errorReportingService = new ErrorReportingService({ - messenger: errorReportingServiceMessenger, - captureException, -}); - -// Now we can create a restricted messenger for our controller, and then -// we can create the controller too. -// Note that we grant the `ErrorReportingService:captureException` action to the -// messenger. -const exampleControllerMessenger = globalMessenger.getRestricted({ - allowedActions: ['ErrorReportingService:captureException'], - allowedEvents: [], -}); -const exampleController = new ExampleController({ - messenger: exampleControllerMessenger, -}); -``` - -#### 2B. Initialization file (React Native) - -```typescript -// We need a version of `captureException` from somewhere. Here, we are getting -// it from `@sentry/react-native`. -import { captureException } from '@sentry/react-native'; - -// We also need to get the ErrorReportingService. -import { ErrorReportingService } from '@metamask/error-reporting-service'; - -// And we need our controller. -import { ExampleController } from './example-controller'; - -// We need to have a global messenger. -const globalMessenger = new Messenger(); - -// We need to create a restricted messenger for the ErrorReportingService, and -// then we can create the service itself. -const errorReportingServiceMessenger = globalMessenger.getRestricted({ - allowedActions: [], - allowedEvents: [], -}); -const errorReportingService = new ErrorReportingService({ - messenger: errorReportingServiceMessenger, - captureException, -}); - -// Now we can create a restricted messenger for our controller, and then -// we can create the controller too. -// Note that we grant the `ErrorReportingService:captureException` action to the -// messenger. -const exampleControllerMessenger = globalMessenger.getRestricted({ - allowedActions: ['ErrorReportingService:captureException'], - allowedEvents: [], -}); -const exampleController = new ExampleController({ - messenger: exampleControllerMessenger, -}); -``` - -#### 3. Using the controller - -```typescript -// Now this will report an error without throwing it. -exampleController.doSomething(); -``` - -### Using the service directly - -You probably don't need to use the service directly, but if you do, here's how. - -In this example, we have a function, and we use the error reporting service there. - -#### 1. Function file - -```typescript -export function doSomething( - errorReportingService: AbstractErrorReportingService, -) { - errorReportingService.captureException(new Error('Something went wrong')); -} -``` - -#### 2A. Calling file (browser) - -```typescript -// We need a version of `captureException` from somewhere. Here, we are getting -it from `@sentry/browser`. -import { captureException } from '@sentry/browser'; - -// We also need to get the ErrorReportingService. -import { ErrorReportingService } from '@metamask/error-reporting-service'; - -// We also bring in our function. -import { doSomething } from './do-something'; - -// We create a new instance of the ErrorReportingService. -const errorReportingService = new ErrorReportingService({ captureException }); - -// Now we call our function, and it will report the error in Sentry. -doSomething(errorReportingService); -``` - -#### 2A. Calling file (React Native) - -```typescript -// We need a version of `captureException` from somewhere. Here, we are getting -it from `@sentry/react-native`. -import { captureException } from '@sentry/react-native'; - -// We also need to get the ErrorReportingService. -import { ErrorReportingService } from '@metamask/error-reporting-service'; - -// We also bring in our function. -import { doSomething } from './do-something'; - -// We create a new instance of the ErrorReportingService. -const errorReportingService = new ErrorReportingService({ captureException }); - -// Now we call our function, and it will report the error in Sentry. -doSomething(errorReportingService); -``` - -## Contributing - -This package is part of a monorepo. Instructions for contributing can be found in the [monorepo README](https://github.com/MetaMask/core#readme). diff --git a/packages/error-reporting-service/jest.config.js b/packages/error-reporting-service/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/error-reporting-service/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/error-reporting-service/package.json b/packages/error-reporting-service/package.json deleted file mode 100644 index 67beba1fa37..00000000000 --- a/packages/error-reporting-service/package.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "name": "@metamask/error-reporting-service", - "version": "3.0.2", - "description": "Logs errors to an error reporting service such as Sentry", - "keywords": [ - "MetaMask", - "Ethereum" - ], - "homepage": "https://github.com/MetaMask/core/tree/main/packages/error-reporting-service#readme", - "bugs": { - "url": "https://github.com/MetaMask/core/issues" - }, - "repository": { - "type": "git", - "url": "https://github.com/MetaMask/core.git" - }, - "license": "MIT", - "sideEffects": false, - "exports": { - ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } - }, - "./package.json": "./package.json" - }, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", - "files": [ - "dist/" - ], - "scripts": { - "build": "ts-bridge --project tsconfig.build.json --verbose --clean --no-references", - "build:all": "ts-bridge --project tsconfig.build.json --verbose --clean", - "build:docs": "typedoc", - "changelog:update": "../../scripts/update-changelog.sh @metamask/error-reporting-service", - "changelog:validate": "../../scripts/validate-changelog.sh @metamask/error-reporting-service", - "generate-method-action-types": "tsx ../../scripts/generate-method-action-types.ts", - "since-latest-release": "../../scripts/since-latest-release.sh", - "test": "NODE_OPTIONS=--experimental-vm-modules jest --reporters=jest-silent-reporter", - "test:clean": "NODE_OPTIONS=--experimental-vm-modules jest --clearCache", - "test:verbose": "NODE_OPTIONS=--experimental-vm-modules jest --verbose", - "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch" - }, - "dependencies": { - "@metamask/base-controller": "^9.0.1", - "@metamask/messenger": "^1.0.0" - }, - "devDependencies": { - "@metamask/auto-changelog": "^3.4.4", - "@sentry/core": "^9.22.0", - "@ts-bridge/cli": "^0.6.4", - "@types/jest": "^29.5.14", - "deepmerge": "^4.2.2", - "jest": "^29.7.0", - "ts-jest": "^29.2.5", - "tsx": "^4.20.5", - "typedoc": "^0.25.13", - "typedoc-plugin-missing-exports": "^2.0.0", - "typescript": "~5.3.3" - }, - "engines": { - "node": "^18.18 || >=20" - }, - "publishConfig": { - "access": "public", - "registry": "https://registry.npmjs.org/" - } -} diff --git a/packages/error-reporting-service/src/error-reporting-service-method-action-types.ts b/packages/error-reporting-service/src/error-reporting-service-method-action-types.ts deleted file mode 100644 index d4038d7d6f3..00000000000 --- a/packages/error-reporting-service/src/error-reporting-service-method-action-types.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * This file is auto generated. - * Do not edit manually. - */ - -import type { ErrorReportingService } from './error-reporting-service'; - -/** - * Reports the given error to an external location. - * - * @param error - The error to report. - * @deprecated This function is deprecated and will be removed in a future - * release. Please use `Messenger.captureException` directly instead. - */ -export type ErrorReportingServiceCaptureExceptionAction = { - type: `ErrorReportingService:captureException`; - handler: ErrorReportingService['captureException']; -}; - -/** - * Union of all ErrorReportingService action types. - */ -export type ErrorReportingServiceMethodActions = - ErrorReportingServiceCaptureExceptionAction; diff --git a/packages/error-reporting-service/src/error-reporting-service.test.ts b/packages/error-reporting-service/src/error-reporting-service.test.ts deleted file mode 100644 index 9c973663748..00000000000 --- a/packages/error-reporting-service/src/error-reporting-service.test.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { Messenger } from '@metamask/messenger'; -import type { MessengerActions, MessengerEvents } from '@metamask/messenger'; -import { captureException as sentryCaptureException } from '@sentry/core'; - -import type { ErrorReportingServiceMessenger } from './error-reporting-service'; -import { ErrorReportingService } from './error-reporting-service'; - -describe('ErrorReportingService', () => { - describe('constructor', () => { - it('takes a `captureException` option that expects an Error to be passed', () => { - const messenger = buildMessenger(); - const errorReportingService = new ErrorReportingService({ - messenger, - captureException: (error: Error): string => - sentryCaptureException(error), - }); - - // This assertion is just here to appease the ESLint Jest rules - expect(errorReportingService).toBeInstanceOf(ErrorReportingService); - }); - - it('allows the Sentry `captureException` function to be passed as the `captureException` option', () => { - const messenger = buildMessenger(); - const errorReportingService = new ErrorReportingService({ - messenger, - captureException: sentryCaptureException, - }); - - // This assertion is just here to appease the ESLint Jest rules - expect(errorReportingService).toBeInstanceOf(ErrorReportingService); - }); - }); - - describe('captureException', () => { - it('calls the `captureException` function supplied to the constructor with the given arguments', () => { - const messenger = buildMessenger(); - const captureExceptionMock = jest.fn(); - // eslint-disable-next-line no-new - new ErrorReportingService({ - messenger, - captureException: captureExceptionMock, - }); - const error = new Error('some error'); - - messenger.call('ErrorReportingService:captureException', error); - - expect(captureExceptionMock).toHaveBeenCalledWith(error); - }); - }); -}); - -/** - * Builds a messenger suited to the ErrorReportingService. - * - * @returns The messenger. - */ -function buildMessenger(): ErrorReportingServiceMessenger { - return new Messenger< - 'ErrorReportingService', - MessengerActions, - MessengerEvents - >({ - namespace: 'ErrorReportingService', - }); -} diff --git a/packages/error-reporting-service/src/error-reporting-service.ts b/packages/error-reporting-service/src/error-reporting-service.ts deleted file mode 100644 index 69714519794..00000000000 --- a/packages/error-reporting-service/src/error-reporting-service.ts +++ /dev/null @@ -1,182 +0,0 @@ -import type { Messenger } from '@metamask/messenger'; - -import type { ErrorReportingServiceMethodActions } from './error-reporting-service-method-action-types'; - -const MESSENGER_EXPOSED_METHODS = ['captureException'] as const; - -/** - * All actions that {@link ErrorReportingService} registers so that other - * modules can call them. - */ -export type ErrorReportingServiceActions = ErrorReportingServiceMethodActions; - -/** - * All events that {@link ErrorReportingService} publishes so that other modules - * can subscribe to them. - */ -export type ErrorReportingServiceEvents = never; - -/** - * All actions registered by other modules that {@link ErrorReportingService} - * calls. - */ -type AllowedActions = never; - -/** - * All events published by other modules that {@link ErrorReportingService} - * subscribes to. - */ -type AllowedEvents = never; - -/** - * The messenger restricted to actions and events that - * {@link ErrorReportingService} needs to access. - */ -export type ErrorReportingServiceMessenger = Messenger< - 'ErrorReportingService', - ErrorReportingServiceActions | AllowedActions, - ErrorReportingServiceEvents | AllowedEvents ->; - -/** - * The options that {@link ErrorReportingService} takes. - */ -type ErrorReportingServiceOptions = { - captureException: ErrorReportingService['captureException']; - messenger: ErrorReportingServiceMessenger; -}; - -/** - * `ErrorReportingService` is designed to log an error to an error reporting app - * such as Sentry, but in an agnostic fashion. - * - * @example - * - * In this example, we have a controller, and something bad happens, but we want - * to report an error instead of throwing it. - * - * ``` ts - * // === Controller file === - * - * import type { ErrorReportingServiceCaptureExceptionAction } from '@metamask/error-reporting-service'; - * - * // Define the messenger type for the controller. - * type AllowedActions = ErrorReportingServiceCaptureExceptionAction; - * type ExampleControllerMessenger = Messenger< - * 'ExampleController', - * AllowedActions, - * never, - * >; - * - * // Define the controller. - * class ExampleController extends BaseController< - * 'ExampleController', - * ExampleControllerState, - * ExampleControllerMessenger - * > { - * doSomething() { - * // Imagine that we do something that produces an error and we want to - * // report the error. - * this.messenger.call( - * 'ErrorReportingService:captureException', - * new Error('Something went wrong'), - * ); - * } - * } - * - * // === Initialization file === - * - * import { captureException } from '@sentry/browser'; - * import { ErrorReportingService } from '@metamask/error-reporting-service'; - * import { ExampleController } from './example-controller'; - * - * type RootMessenger = Messenger< - * 'Root', - * MessengerActions, - * MessengerEvents - * >; - * - * // Create a root messenger. - * const rootMessenger = new Messenger(); - * - * // Register handler for the `ErrorReportingService:captureException` - * // action in the root messenger. - * const errorReportingServiceMessenger = new Messenger< - * 'ErrorReportingService', - * MessengerActions, - * MessengerEvents, - * RootMessenger - * >({ - * namespace: 'ErrorReportingService', - * parent: rootMessenger, - * }); - * const errorReportingService = new ErrorReportingService({ - * messenger: errorReportingServiceMessenger, - * captureException, - * }); - * - * const exampleControllerMessenger = new Messenger< - * 'ExampleController', - * MessengerActions, - * MessengerEvents, - * RootMessenger - * >({ - * namespace: 'ExampleController', - * parent: rootMessenger, - * }); - * rootMessenger.delegate({ - * messenger: exampleControllerMessenger, - * actions: ['ErrorReportingService:captureException'], - * }); - * const exampleController = new ExampleController({ - * messenger: exampleControllerMessenger, - * }); - * - * // === Somewhere else === - * - * // Now this will report an error without throwing it. - * exampleController.doSomething(); - * ``` - * - * @deprecated This service is deprecated and will be removed in a future - * release. Please use `Messenger.captureException` directly instead. - */ -export class ErrorReportingService { - name: 'ErrorReportingService' = 'ErrorReportingService' as const; - - state = null; - - readonly #captureException: ErrorReportingServiceOptions['captureException']; - - readonly #messenger: ErrorReportingServiceMessenger; - - /** - * Constructs a new ErrorReportingService. - * - * @param options - The options. - * @param options.messenger - The messenger suited to this - * ErrorReportingService. - * @param options.captureException - A function that stores the given error in - * the error reporting service. - */ - constructor({ messenger, captureException }: ErrorReportingServiceOptions) { - this.#messenger = messenger; - this.#captureException = captureException; - - this.#messenger.registerMethodActionHandlers( - this, - MESSENGER_EXPOSED_METHODS, - ); - } - - /** - * Reports the given error to an external location. - * - * @param error - The error to report. - * @deprecated This function is deprecated and will be removed in a future - * release. Please use `Messenger.captureException` directly instead. - */ - captureException(error: Error): void { - this.#captureException(error); - } -} diff --git a/packages/error-reporting-service/src/index.ts b/packages/error-reporting-service/src/index.ts deleted file mode 100644 index 175d111e19e..00000000000 --- a/packages/error-reporting-service/src/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -export { ErrorReportingService } from './error-reporting-service'; -export type { - ErrorReportingServiceActions, - ErrorReportingServiceEvents, - ErrorReportingServiceMessenger, -} from './error-reporting-service'; -export type { - ErrorReportingServiceCaptureExceptionAction, - ErrorReportingServiceMethodActions, -} from './error-reporting-service-method-action-types'; diff --git a/packages/error-reporting-service/tsconfig.build.json b/packages/error-reporting-service/tsconfig.build.json deleted file mode 100644 index e5fd7422b9a..00000000000 --- a/packages/error-reporting-service/tsconfig.build.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../tsconfig.packages.build.json", - "compilerOptions": { - "baseUrl": "./", - "outDir": "./dist", - "rootDir": "./src" - }, - "references": [{ "path": "../base-controller/tsconfig.build.json" }], - "include": ["../../types", "./src"] -} diff --git a/packages/error-reporting-service/tsconfig.json b/packages/error-reporting-service/tsconfig.json deleted file mode 100644 index 34354c4b09d..00000000000 --- a/packages/error-reporting-service/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "../../tsconfig.packages.json", - "compilerOptions": { - "baseUrl": "./" - }, - "references": [{ "path": "../base-controller" }], - "include": ["../../types", "./src"] -} diff --git a/packages/error-reporting-service/typedoc.json b/packages/error-reporting-service/typedoc.json deleted file mode 100644 index c9da015dbf8..00000000000 --- a/packages/error-reporting-service/typedoc.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "entryPoints": ["./src/index.ts"], - "excludePrivate": true, - "hideGenerator": true, - "out": "docs", - "tsconfig": "./tsconfig.build.json" -} diff --git a/packages/eth-json-rpc-middleware/tsconfig.build.json b/packages/eth-json-rpc-middleware/tsconfig.build.json index 8aacbb0393f..58262a318e9 100644 --- a/packages/eth-json-rpc-middleware/tsconfig.build.json +++ b/packages/eth-json-rpc-middleware/tsconfig.build.json @@ -6,9 +6,6 @@ "rootDir": "./src" }, "references": [ - { - "path": "../error-reporting-service/tsconfig.build.json" - }, { "path": "../eth-block-tracker/tsconfig.build.json" }, diff --git a/packages/eth-json-rpc-middleware/tsconfig.json b/packages/eth-json-rpc-middleware/tsconfig.json index 240743caf93..63dacbec477 100644 --- a/packages/eth-json-rpc-middleware/tsconfig.json +++ b/packages/eth-json-rpc-middleware/tsconfig.json @@ -4,9 +4,6 @@ "baseUrl": "./" }, "references": [ - { - "path": "../error-reporting-service" - }, { "path": "../eth-block-tracker" }, diff --git a/packages/network-controller/tsconfig.build.json b/packages/network-controller/tsconfig.build.json index a81948ea66a..0ebc69f899c 100644 --- a/packages/network-controller/tsconfig.build.json +++ b/packages/network-controller/tsconfig.build.json @@ -13,7 +13,6 @@ { "path": "../eth-json-rpc-middleware/tsconfig.build.json" }, { "path": "../eth-json-rpc-provider/tsconfig.build.json" }, { "path": "../json-rpc-engine/tsconfig.build.json" }, - { "path": "../error-reporting-service/tsconfig.build.json" }, { "path": "../messenger/tsconfig.build.json" } ], "include": ["../../types", "./src"] diff --git a/packages/network-controller/tsconfig.json b/packages/network-controller/tsconfig.json index e5a54a5785b..37d8a33ef51 100644 --- a/packages/network-controller/tsconfig.json +++ b/packages/network-controller/tsconfig.json @@ -12,7 +12,6 @@ { "path": "../eth-json-rpc-middleware" }, { "path": "../eth-json-rpc-provider" }, { "path": "../json-rpc-engine" }, - { "path": "../error-reporting-service" }, { "path": "../messenger" } ], "include": ["../../types", "../../tests", "./src", "./tests"] diff --git a/teams.json b/teams.json index 4a3f6902d14..807945d99f0 100644 --- a/teams.json +++ b/teams.json @@ -44,7 +44,6 @@ "metamask/connectivity-controller": "team-core-platform", "metamask/geolocation-controller": "team-core-platform", "metamask/controller-utils": "team-core-platform", - "metamask/error-reporting-service": "team-core-platform", "metamask/messenger": "team-core-platform", "metamask/sample-controllers": "team-core-platform", "metamask/polling-controller": "team-core-platform", diff --git a/tsconfig.build.json b/tsconfig.build.json index 0b4716238fb..93e7269f842 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -100,9 +100,6 @@ { "path": "./packages/ens-controller/tsconfig.build.json" }, - { - "path": "./packages/error-reporting-service/tsconfig.build.json" - }, { "path": "./packages/eth-block-tracker/tsconfig.build.json" }, diff --git a/tsconfig.json b/tsconfig.json index a177726dfba..298a2ea3f27 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -95,9 +95,6 @@ { "path": "./packages/ens-controller" }, - { - "path": "./packages/error-reporting-service" - }, { "path": "./packages/eth-block-tracker" }, diff --git a/yarn.lock b/yarn.lock index 540f525e9ca..5341f810bfe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3574,26 +3574,6 @@ __metadata: languageName: unknown linkType: soft -"@metamask/error-reporting-service@workspace:packages/error-reporting-service": - version: 0.0.0-use.local - resolution: "@metamask/error-reporting-service@workspace:packages/error-reporting-service" - dependencies: - "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/base-controller": "npm:^9.0.1" - "@metamask/messenger": "npm:^1.0.0" - "@sentry/core": "npm:^9.22.0" - "@ts-bridge/cli": "npm:^0.6.4" - "@types/jest": "npm:^29.5.14" - deepmerge: "npm:^4.2.2" - jest: "npm:^29.7.0" - 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/eslint-config-jest@npm:^15.0.0": version: 15.0.0 resolution: "@metamask/eslint-config-jest@npm:15.0.0" @@ -6074,7 +6054,7 @@ __metadata: languageName: node linkType: hard -"@sentry/core@npm:^9.10.0, @sentry/core@npm:^9.22.0": +"@sentry/core@npm:^9.10.0": version: 9.23.0 resolution: "@sentry/core@npm:9.23.0" checksum: 10/4ee771098d4ce4f4d2f7bd62cacb41ee2993780f4cab0eea600e73de3a3803cb953ac47ac015c23bcd7a9919e2220fd6cdc5a9a22a3663440296336d8df959b7 From e9bfd812d7f8ad3b2df6702c69937c6da94338b5 Mon Sep 17 00:00:00 2001 From: Salah-Eddine Saakoun Date: Fri, 27 Mar 2026 14:44:45 +0100 Subject: [PATCH 2/2] chore: remove error-reporting-service from README dependency graph --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index fe142a74dc7..98ebdb47653 100644 --- a/README.md +++ b/README.md @@ -311,8 +311,6 @@ linkStyle default opacity:0.5 ens_controller --> controller_utils; ens_controller --> messenger; ens_controller --> network_controller; - error_reporting_service --> base_controller; - error_reporting_service --> messenger; eth_block_tracker --> eth_json_rpc_provider; eth_block_tracker --> json_rpc_engine; eth_json_rpc_middleware --> eth_block_tracker;