Détail du package

@metamask/json-rpc-middleware-stream

MetaMask1.2mISC8.0.7

A small toolset for streaming JSON-RPC data and matching requests and responses

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"]);
  composable_controller(["@metamask/composable-controller"]);
  controller_utils(["@metamask/controller-utils"]);
  earn_controller(["@metamask/earn-controller"]);
  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"]);
  multichain_transactions_controller(["@metamask/multichain-transactions-controller"]);
  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"]);
  remote_feature_flag_controller(["@metamask/remote-feature-flag-controller"]);
  selected_network_controller(["@metamask/selected-network-controller"]);
  signature_controller(["@metamask/signature-controller"]);
  token_search_discovery_controller(["@metamask/token-search-discovery-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;
  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;
  remote_feature_flag_controller --> base_controller;
  remote_feature_flag_controller --> controller_utils;
  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

8.0.7

Changed

  • Bump @metamask/json-rpc-engine from ^10.0.2 to ^10.0.3 (#5272)
  • Bump @metamask/utils from ^11.0.1 to ^11.1.0 (#5223)

8.0.6

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)

8.0.5

Changed

  • Bump @metamask/utils from ^9.1.0 to ^10.0.0 (#4831)

8.0.4

Fixed

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

8.0.3

Changed

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

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.

8.0.2

Changed

  • Bump TypeScript version to ~5.0.4 and set moduleResolution option to Node16 (#3645)
  • Bump @metamask/utils from ^9.0.0 to ^9.1.0 (#4529)

8.0.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)

Fixed

  • Fix incorrect notification detection logic (#4427)
    • Previously, response objects with a falsy id property were detected as notifications. Now, we check for the absence of the id property.

8.0.0

Changed

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

7.0.2

Changed

  • Bump @metamask/json-rpc-engine to ^8.0.2 (#4234)

7.0.1

Fixed

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

7.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)

6.0.2

Changed

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

6.0.1

Changed

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

6.0.0

Added

  • Migrate @metamask/json-rpc-engine into the core monorepo (#1762)

Changed

  • BREAKING: Rename package from json-rpc-middleware-stream to @metamask/json-rpc-middleware-stream (#1762)
  • Bump @metamask/json-rpc-engine from ^7.1.0 to ^7.2.0 (#1762)
  • Bump @metamask/utils from ^8.1.0 to ^8.2.0 (#1762)

5.0.1

Changed

  • Upgrade typescript version to 4.8.4 (#68)

5.0.0

Changed

  • BREAKING: Increase minimum Node.js version to 16 (#59)
  • BREAKING: Update readable-stream from ^2.3.3 to ^3.6.2 (#55)
  • BREAKING: Switch from legacy json-rpc-engine@^6.1.0 to @metamask/json-rpc-engine@^7.1.1 (#54)
  • Add dependency @metamask/utils (#54)

4.2.3

Fixed

  • Moved json-rpc-engine from devDependencies to dependencies (#56)

4.2.2

Changed

  • Bump @metamask/safe-event-emitter from 2.0.0 to 3.0.0 (#44)

Fixed

  • Fix race condition in createStreamMiddleware (#47)
    • Previously this middleware would fail to process synchronous responses on initialized streams

4.2.1

Fixed

  • Add early return in createStreamMiddleware.processsResponse method if JSON RPC request is not found (#35)

4.2.0

Changed

  • Change error throw when response is seen for unknown request into warning displayed in console (#32)

4.1.0

Changed

  • Added retry limit of 3 to requests (#30)

4.0.0 - 2022-10-03

Changed

  • BREAKING: Add Node 12 as minimum required version #15
  • Retry pending requests when notification to reconnect is received (#27)

Security

  • Add @lavamoat/allow-scripts to make dependency install scripts opt-in (#25)

3.0.0 - 2020-12-08

Added

  • TypeScript typings (#11)