Skip to content

refactor!: Remove "data" event from SafeEventEmitterProvider#6328

Merged
rekmarks merged 3 commits intomainfrom
rekm/remove-ee-provider-data-event
Sep 4, 2025
Merged

refactor!: Remove "data" event from SafeEventEmitterProvider#6328
rekmarks merged 3 commits intomainfrom
rekm/remove-ee-provider-data-event

Conversation

@rekmarks
Copy link
Copy Markdown
Member

@rekmarks rekmarks commented Aug 15, 2025

Explanation

The SafeEventEmitterProvider 'data' event relies on the JsonRpcEngine 'notification' event, which per #6327 we are trying to get rid of. After failing to find an instance outside of tests where we actually use the 'data' event, we assess that it can be removed.

References

Checklist

@rekmarks rekmarks marked this pull request as ready for review August 25, 2025 22:58
@rekmarks rekmarks requested review from a team as code owners August 25, 2025 22:58
@rekmarks rekmarks force-pushed the rekm/remove-ee-provider-data-event branch from 9fa91bd to f0f63aa Compare August 25, 2025 22:59
@rekmarks rekmarks enabled auto-merge (squash) August 25, 2025 23:01
@rekmarks rekmarks requested a review from Gudahtt August 26, 2025 06:27
this.#engine = engine;

if (engine.on) {
engine.on('notification', (message: string) => {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your PR seems to imply that this isn't in use. Have you tested the extension with these lines stripped out?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We searched for examples in all of our repos. We found a couple of uses, but only in test helpers.

I don't think it has been tested, that is a good idea though. We could probably delete this quickly in a patch, put it up as a draft, then see if CI passes.

@Gudahtt
Copy link
Copy Markdown
Member

Gudahtt commented Aug 27, 2025

Changes look good! Note this requirement from the PR template though:

I've prepared draft pull requests for clients and consumer packages to resolve any breaking changes

If you could create a preview build, and a draft in each client that uses it, that would be greatly appreciated

@Gudahtt Gudahtt force-pushed the rekm/remove-ee-provider-data-event branch from 0f4e2d4 to 789d703 Compare August 27, 2025 19:11
@Gudahtt
Copy link
Copy Markdown
Member

Gudahtt commented Aug 27, 2025

@metamaskbot publish-preview

@github-actions
Copy link
Copy Markdown
Contributor

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/account-tree-controller": "0.10.0-preview-789d703",
  "@metamask-previews/accounts-controller": "33.0.0-preview-789d703",
  "@metamask-previews/address-book-controller": "6.1.1-preview-789d703",
  "@metamask-previews/announcement-controller": "7.0.3-preview-789d703",
  "@metamask-previews/app-metadata-controller": "1.0.0-preview-789d703",
  "@metamask-previews/approval-controller": "7.1.3-preview-789d703",
  "@metamask-previews/assets-controllers": "74.2.0-preview-789d703",
  "@metamask-previews/base-controller": "8.2.0-preview-789d703",
  "@metamask-previews/bridge-controller": "41.4.0-preview-789d703",
  "@metamask-previews/bridge-status-controller": "40.2.0-preview-789d703",
  "@metamask-previews/build-utils": "3.0.3-preview-789d703",
  "@metamask-previews/chain-agnostic-permission": "1.1.1-preview-789d703",
  "@metamask-previews/composable-controller": "11.0.0-preview-789d703",
  "@metamask-previews/controller-utils": "11.12.0-preview-789d703",
  "@metamask-previews/delegation-controller": "0.7.0-preview-789d703",
  "@metamask-previews/earn-controller": "6.0.0-preview-789d703",
  "@metamask-previews/eip1193-permission-middleware": "1.0.0-preview-789d703",
  "@metamask-previews/ens-controller": "17.0.1-preview-789d703",
  "@metamask-previews/error-reporting-service": "2.0.0-preview-789d703",
  "@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-789d703",
  "@metamask-previews/foundryup": "1.0.1-preview-789d703",
  "@metamask-previews/gas-fee-controller": "24.0.0-preview-789d703",
  "@metamask-previews/gator-permissions-controller": "0.0.0-preview-789d703",
  "@metamask-previews/json-rpc-engine": "10.0.3-preview-789d703",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-789d703",
  "@metamask-previews/keyring-controller": "23.0.0-preview-789d703",
  "@metamask-previews/logging-controller": "6.0.4-preview-789d703",
  "@metamask-previews/message-manager": "12.0.2-preview-789d703",
  "@metamask-previews/messenger": "0.1.0-preview-789d703",
  "@metamask-previews/multichain-account-service": "0.5.0-preview-789d703",
  "@metamask-previews/multichain-api-middleware": "1.0.0-preview-789d703",
  "@metamask-previews/multichain-network-controller": "0.12.0-preview-789d703",
  "@metamask-previews/multichain-transactions-controller": "5.0.0-preview-789d703",
  "@metamask-previews/name-controller": "8.0.3-preview-789d703",
  "@metamask-previews/network-controller": "24.1.0-preview-789d703",
  "@metamask-previews/network-enablement-controller": "0.4.0-preview-789d703",
  "@metamask-previews/notification-services-controller": "17.0.0-preview-789d703",
  "@metamask-previews/permission-controller": "11.0.6-preview-789d703",
  "@metamask-previews/permission-log-controller": "4.0.0-preview-789d703",
  "@metamask-previews/phishing-controller": "13.1.0-preview-789d703",
  "@metamask-previews/polling-controller": "14.0.0-preview-789d703",
  "@metamask-previews/preferences-controller": "19.0.0-preview-789d703",
  "@metamask-previews/profile-sync-controller": "24.0.0-preview-789d703",
  "@metamask-previews/rate-limit-controller": "6.0.3-preview-789d703",
  "@metamask-previews/remote-feature-flag-controller": "1.7.0-preview-789d703",
  "@metamask-previews/sample-controllers": "1.0.0-preview-789d703",
  "@metamask-previews/seedless-onboarding-controller": "3.0.0-preview-789d703",
  "@metamask-previews/selected-network-controller": "23.0.0-preview-789d703",
  "@metamask-previews/shield-controller": "0.1.0-preview-789d703",
  "@metamask-previews/signature-controller": "33.0.0-preview-789d703",
  "@metamask-previews/token-search-discovery-controller": "3.3.0-preview-789d703",
  "@metamask-previews/transaction-controller": "60.1.0-preview-789d703",
  "@metamask-previews/user-operation-controller": "39.0.0-preview-789d703"
}

Copy link
Copy Markdown
Member

@Gudahtt Gudahtt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@rekmarks rekmarks enabled auto-merge (squash) September 4, 2025 22:08
@rekmarks rekmarks merged commit 761cd35 into main Sep 4, 2025
239 checks passed
@rekmarks rekmarks deleted the rekm/remove-ee-provider-data-event branch September 4, 2025 22:13
rekmarks added a commit that referenced this pull request Oct 31, 2025
…#6796)

## Explanation

As of #6328 `SafeEventEmitterProvider` no longer used the `EventEmitter`
API, making its name misleading. Consequently, this PR renames it to
`InternalProvider` and stops extending `SafeEventEmitter`. This new name
better reflects its use as an internal-only provider that does not
conform to any particular standard.

`SafeEventEmitterProvider` is still exported as a deprecated alias of
`InternalProvider` in order to circumvent build failures due to
repo-external packages that use this alias. Once we have updated
external packages to use `InternalProvider` instead, the old alias can
be removed.

## References

Closes #6594

## Checklist

- [x] I've updated the test suite for new or updated code as appropriate
- [x] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [x] I've communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/contributing.md#updating-changelogs),
highlighting breaking changes as necessary
- [x] I've prepared draft pull requests for clients and consumer
packages to resolve any breaking changes

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Renames and replaces SafeEventEmitterProvider with InternalProvider
across packages, updates proxies and types, adds a deprecated alias, and
adjusts tests/changelogs accordingly.
> 
> - **Provider (eth-json-rpc-provider)**:
> - Add `InternalProvider` (no longer extends SafeEventEmitter); update
`providerFromEngine`/`providerFromMiddleware` to return it.
> - Export `SafeEventEmitterProvider` as a deprecated alias; update
tests/exports; drop `@metamask/safe-event-emitter` dep.
> - **Middleware (eth-json-rpc-middleware)**:
> - Change provider types to `InternalProvider` in `block-ref`,
`retryOnEmpty`, and `providerAsMiddleware`.
> - **Block Tracker (eth-block-tracker)**:
> - Expect `InternalProvider` in `PollingBlockTracker` and tests; update
CHANGELOG (BREAKING).
> - **Network Controller**:
>   - Switch provider type to `InternalProvider` across types/clients.
> - Use `createSwappableProxy` for provider proxies; keep
`createEventEmitterProxy` for block tracker; adjust handlers/comments
and tests.
> - **Selected Network Controller**:
> - Use `createSwappableProxy` for provider proxy; align with
`InternalProvider`; update tests.
> - **Tests/Utilities**:
> - Update `FakeProvider`/`FakeBlockTracker` and various tests to
`InternalProvider`.
> - **Changelogs**:
>   - Note BREAKING change across affected packages.
> - **Misc**:
> - Update ESLint thresholds and snapshots; lockfile changes reflect
dependency removal.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
e1faf35. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: Elliot Winkler <elliot.winkler@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants