Skip to content

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

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

rekmarks merged 3 commits into
mainfrom
rekm/remove-ee-provider-data-event

Conversation

@rekmarks

@rekmarks rekmarks commented Aug 15, 2025 •

Copy link
Copy Markdown
Contributor

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

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

Gudahtt commented Aug 27, 2025

Copy link
Copy Markdown
Member

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

Gudahtt commented Aug 27, 2025

Copy link
Copy Markdown
Member

@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"
}

@Gudahtt Gudahtt left a comment

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.

LGTM!

@rekmarks
rekmarks enabled auto-merge (squash) September 4, 2025 22:08
@rekmarks
rekmarks merged commit 761cd35 into main Sep 4, 2025
@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