Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@metamask/eth-json-rpc-provider

MetaMask1.2mISC4.1.7TypeScript support: included

Create an Ethereum provider using a JSON-RPC engine or middleware

MetaMask, Ethereum

readme

Core Monorepo

This monorepo is a collection of packages used across multiple MetaMask clients (e.g. metamask-extension, metamask-mobile).

Contributing

See the Contributor Guide for help on:

  • Setting up your development environment
  • Working with the monorepo
  • Testing changes in clients
  • Issuing new releases
  • Creating a new package

Installation/Usage

Each package in this repository has its own README where you can find installation and usage instructions. See packages/ for more.

Packages

%%{ init: { 'flowchart': { 'curve': 'bumpX' } } }%%
graph LR;
linkStyle default opacity:0.5
  accounts_controller(["@metamask/accounts-controller"]);
  address_book_controller(["@metamask/address-book-controller"]);
  announcement_controller(["@metamask/announcement-controller"]);
  approval_controller(["@metamask/approval-controller"]);
  assets_controllers(["@metamask/assets-controllers"]);
  base_controller(["@metamask/base-controller"]);
  build_utils(["@metamask/build-utils"]);
  chain_controller(["@metamask/chain-controller"]);
  composable_controller(["@metamask/composable-controller"]);
  controller_utils(["@metamask/controller-utils"]);
  ens_controller(["@metamask/ens-controller"]);
  eth_json_rpc_provider(["@metamask/eth-json-rpc-provider"]);
  gas_fee_controller(["@metamask/gas-fee-controller"]);
  json_rpc_engine(["@metamask/json-rpc-engine"]);
  json_rpc_middleware_stream(["@metamask/json-rpc-middleware-stream"]);
  keyring_controller(["@metamask/keyring-controller"]);
  logging_controller(["@metamask/logging-controller"]);
  message_manager(["@metamask/message-manager"]);
  multichain(["@metamask/multichain"]);
  name_controller(["@metamask/name-controller"]);
  network_controller(["@metamask/network-controller"]);
  notification_services_controller(["@metamask/notification-services-controller"]);
  permission_controller(["@metamask/permission-controller"]);
  permission_log_controller(["@metamask/permission-log-controller"]);
  phishing_controller(["@metamask/phishing-controller"]);
  polling_controller(["@metamask/polling-controller"]);
  preferences_controller(["@metamask/preferences-controller"]);
  profile_sync_controller(["@metamask/profile-sync-controller"]);
  queued_request_controller(["@metamask/queued-request-controller"]);
  rate_limit_controller(["@metamask/rate-limit-controller"]);
  selected_network_controller(["@metamask/selected-network-controller"]);
  signature_controller(["@metamask/signature-controller"]);
  transaction_controller(["@metamask/transaction-controller"]);
  user_operation_controller(["@metamask/user-operation-controller"]);
  accounts_controller --> base_controller;
  accounts_controller --> keyring_controller;
  address_book_controller --> base_controller;
  address_book_controller --> controller_utils;
  announcement_controller --> base_controller;
  approval_controller --> base_controller;
  assets_controllers --> base_controller;
  assets_controllers --> controller_utils;
  assets_controllers --> polling_controller;
  assets_controllers --> accounts_controller;
  assets_controllers --> approval_controller;
  assets_controllers --> keyring_controller;
  assets_controllers --> network_controller;
  assets_controllers --> preferences_controller;
  base_controller --> json_rpc_engine;
  chain_controller --> base_controller;
  composable_controller --> base_controller;
  composable_controller --> json_rpc_engine;
  ens_controller --> base_controller;
  ens_controller --> controller_utils;
  ens_controller --> network_controller;
  eth_json_rpc_provider --> json_rpc_engine;
  gas_fee_controller --> base_controller;
  gas_fee_controller --> controller_utils;
  gas_fee_controller --> polling_controller;
  gas_fee_controller --> network_controller;
  json_rpc_middleware_stream --> json_rpc_engine;
  keyring_controller --> base_controller;
  keyring_controller --> message_manager;
  logging_controller --> base_controller;
  logging_controller --> controller_utils;
  message_manager --> base_controller;
  message_manager --> controller_utils;
  multichain --> controller_utils;
  multichain --> network_controller;
  multichain --> permission_controller;
  name_controller --> base_controller;
  name_controller --> controller_utils;
  network_controller --> base_controller;
  network_controller --> controller_utils;
  network_controller --> eth_json_rpc_provider;
  network_controller --> json_rpc_engine;
  notification_services_controller --> base_controller;
  notification_services_controller --> controller_utils;
  notification_services_controller --> keyring_controller;
  notification_services_controller --> profile_sync_controller;
  permission_controller --> base_controller;
  permission_controller --> controller_utils;
  permission_controller --> json_rpc_engine;
  permission_controller --> approval_controller;
  permission_log_controller --> base_controller;
  permission_log_controller --> json_rpc_engine;
  phishing_controller --> base_controller;
  phishing_controller --> controller_utils;
  polling_controller --> base_controller;
  polling_controller --> controller_utils;
  polling_controller --> network_controller;
  preferences_controller --> base_controller;
  preferences_controller --> controller_utils;
  preferences_controller --> keyring_controller;
  profile_sync_controller --> base_controller;
  profile_sync_controller --> keyring_controller;
  profile_sync_controller --> network_controller;
  profile_sync_controller --> accounts_controller;
  queued_request_controller --> base_controller;
  queued_request_controller --> controller_utils;
  queued_request_controller --> json_rpc_engine;
  queued_request_controller --> network_controller;
  queued_request_controller --> selected_network_controller;
  rate_limit_controller --> base_controller;
  selected_network_controller --> base_controller;
  selected_network_controller --> json_rpc_engine;
  selected_network_controller --> network_controller;
  selected_network_controller --> permission_controller;
  signature_controller --> base_controller;
  signature_controller --> controller_utils;
  signature_controller --> approval_controller;
  signature_controller --> keyring_controller;
  signature_controller --> logging_controller;
  signature_controller --> network_controller;
  transaction_controller --> base_controller;
  transaction_controller --> controller_utils;
  transaction_controller --> accounts_controller;
  transaction_controller --> approval_controller;
  transaction_controller --> eth_json_rpc_provider;
  transaction_controller --> gas_fee_controller;
  transaction_controller --> network_controller;
  user_operation_controller --> base_controller;
  user_operation_controller --> controller_utils;
  user_operation_controller --> polling_controller;
  user_operation_controller --> approval_controller;
  user_operation_controller --> gas_fee_controller;
  user_operation_controller --> keyring_controller;
  user_operation_controller --> network_controller;
  user_operation_controller --> transaction_controller;

(This section may be regenerated at any time by running yarn update-readme-content.)

changelog

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

4.1.7

Changed

  • Bump @metamask/json-rpc-engine from ^10.0.1 to ^10.0.2 (#5082)
  • Bump @metamask/utils from ^10.0.0 to ^11.0.1 (#5080)
  • Bump @metamask/rpc-errors from ^7.0.0 to ^7.0.2 (#5080)

4.1.6

Changed

  • Bump @metamask/utils from ^9.1.0 to ^10.0.0 (#4831)
  • Bump @metamask/rpc-errors from ^6.3.1 to ^7.0.0 (#4769)

4.1.5

Fixed

  • Bump @metamask/json-rpc-engine to ^10.0.0 (#4798)

4.1.4

Fixed

  • Produce and export ESM-compatible TypeScript type declaration files in addition to CommonJS-compatible declaration files (#4648)
    • Previously, this package shipped with only one variant of type declaration files, and these files were only CommonJS-compatible, and the exports field in package.json linked to these files. This is an anti-pattern and was rightfully flagged by the "Are the Types Wrong?" tool as "masquerading as CJS". All of the ATTW checks now pass.
  • Remove chunk files (#4648).
    • Previously, the build tool we used to generate JavaScript files extracted common code to "chunk" files. While this was intended to make this package more tree-shakeable, it also made debugging more difficult for our development teams. These chunk files are no longer present.

4.1.3

Changed

  • Bump typescript from ~5.0.4 to ~5.2.2 (#4576, #4584)

Fixed

  • Fix SafeEventEmitterProvider invalid default params (#4603)

4.1.2

Changed

  • Upgrade TypeScript version to ~5.0.4 and set moduleResolution option to Node16 (#3645)
  • Bump @metamask/json-rpc-engine from ^9.0.1 to ^9.0.2 (#4544)
  • Bump @metamask/utils from ^9.0.0 to ^9.1.0 (#4529)

4.1.1

Changed

  • Bump @metamask/json-rpc-engine to ^9.0.1 (#4517)
  • Bump @metamask/rpc-errors to ^6.3.1 (#4516)
  • Bump @metamask/utils to ^9.0.0 (#4516)

4.1.0

Added

  • Make SafeEventEmitterProvider EIP-1193 compatible by adding a request method (#4422)
    • Now SafeEventEmitterProvider is compatible with @metamask/eth-query, @metamask/ethjs-query, BrowserProvider from Ethers v6 and Web3Provider from Ethers v5

Deprecated

  • Mark sendAsync method as deprecated in favor of request method (#4422)

4.0.0

Changed

  • BREAKING: Bump minimum Node version to 18.18 (#3611)
  • Bump @metamask/json-rpc-engine to ^9.0.0 (#4352)

3.0.2

Changed

  • Bump TypeScript version to ~4.9.5 (#4084)
  • Bump @metamask/json-rpc-engine to ^8.0.2 (#4234)

3.0.1

Fixed

  • Fix types field in package.json (#4047)

3.0.0

Added

  • BREAKING: Add ESM build (#3998)
    • It's no longer possible to import files from ./dist directly.

Changed

  • Bump @metamask/json-rpc-engine to ^8.0.0 (#4039)

2.3.2

Changed

  • Bump @metamask/utils to ^8.3.0 (#3769)
  • Bump @metamask/json-rpc-engine to ^7.3.2 (#3821)

2.3.1

Changed

  • Bump @metamask/json-rpc-engine to ^7.3.1 (#3695)

2.3.0

Added

  • Migrate @metamask/eth-json-rpc-provider into the core monorepo (#1738)

Changed

  • Export SafeEventEmitterProvider as class instead of type (#1738)
  • Bump @metamask/json-rpc-engine from ^7.1.0 to ^7.2.0 (#1895)
  • Bump @metamask/utils from ^8.1.0 to ^8.2.0 (#1895)
  • Bump @metamask/auto-changelog from ^3.2.0 to ^3.4.3 (#1870, #1905, #1997)

2.2.0

Changed

  • Add missing ISC license information (#24)

2.1.0

Changed

  • Bump @metamask/json-rpc-engine from ^7.0.0 to ^7.1.0 (#25)
  • Bump @metamask/utils from ^5.0.1 to ^8.1.0 (#25)

2.0.0

Fixed

  • BREAKING: Update minimum Node.js version to 16 (#20)
  • Switched json-rpc-engine@^6.1.0 -> @metamask/json-rpc-engine@^7.0.0 (#16)
    • BREAKING: Typescript type updates
  • Updated dependencies: (#16)

Release v2.0.0 is identical to v1.0.1 aside from Node.js version requirement imposed by a dependency updates has been made explicit.

1.0.1 [RETRACTED]

Changed

  • BREAKING: Update minimum Node.js version to 16 (#20)
  • Switched json-rpc-engine@^6.1.0 -> @metamask/json-rpc-engine@^7.0.0 (#16)
    • BREAKING: Typescript type updates
  • Updated dependencies: (#16)

1.0.0

Added

  • Initial release, including providerFromEngine and providerFromMiddleware.