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.
- BREAKING: Move stream functionality from
BaseProviderto newStreamProvider(#209)BaseProvideris now a transport-agnostic abstract class.StreamProvideraccepts a stream and relies on MetaMask's internal JSON-RPC API for its behavior. See theStreamProviderclass for more details.MetaMaskInpageProvidershould be completely unaffected except that its prototype chain now includes a class namedAbstractStreamProvider.
8.1.1 - 2021-05-12
- Rename package to
@metamask/providers(#168)
- Restore
networkChangedevent inMetaMaskInpageProvider(#171)
8.1.0 - 2021-05-05
BaseProvider, implementing EIP-1193 without any legacy features (#144)createExternalExtensionProvider, from the extension-provider package (#152)
8.0.4 - 2021-02-04
- Fix warning on second
currentProvideraccess (#138)
8.0.3 - 2021-01-20
- Restore 'data' provider event (#135)
8.0.2 - 2021-01-12
- Reduce
window.web3shim console noise (#133)
8.0.1 - 2020-12-08
- Fix
8.0.0types (#127)
8.0.0 - 2020-12-07
- Add
loggerparameter toinitializeProvider(#116) - Add
window.web3shim,shimWeb3export (#113, #115)- This is to maintain
window.web3.currentProvideronce MetaMask stops injectingwindow.web3(very soon), and to log attempts to access any properties on the shim other thancurrentProvider. initializeWeb3now has ashouldShimWeb3argument, which causes the shim to be set aswindow.web3iftrue.
- This is to maintain
- BREAKING: Rename
initProviderexport toinitializeProvider(#114) - BREAKING: Replace
ethereum.publicConfigStorewith new set of JSON-RPC notifications (#109)
- BREAKING: Remove
_metamask.isEnabledand_metamask.isApproved(#112) - BREAKING: Remove the
chainIdChangedevent (#111) - BREAKING: Remove
ethereum.publicConfigStore(#109) - BREAKING: Remove
web3.js-related functionality (#106)- This functionality caused the page to reload if there was a
web3.jsinstance atwindow.web3, and keptweb3.eth.defaultAccountin sync withethereum.selectedAddress. - This functionality is replicated in @metamask/legacy-web3.
- This functionality caused the page to reload if there was a
- Correctly implement
connectanddisconnectevents (#120)- See EIP-1193 for the specification of these events.
disconnectemits with an RPC error. Like all such errors emitted by this module, they have acodeproperty with anumbervalue. There are currently two codes:1013indicates that MetaMask is attempting to reestablish the connection1011indicates that a page reload is required
- Send page metadata even if page is already loaded (#119)
- Convert
MetaMaskInpageProviderloggerto instance variable (#118)- Previously, it was erroneously a singleton across all class instances.
- Stop emitting state change events on initialization (#117)
- Includes
accountsChanged,chainChanged, andnetworkChanged. - This prevents sites that handle any of these events by reloading the page from entering into a reload loop.
- Includes
7.0.0 - 2020-09-08
- BREAKING: Changed casing of
Metamaskin all exports toMetaMask- A brand is a brand ¯\_(ツ)_/¯
6.3.0 - 2020-09-04
- Types
ethereum.networkVersionand.chainIdnow default tonullinstead ofundefined- Improved JSDoc comments and tags
6.2.0 - 2020-08-04
- Package consumers can now provide a
loggerobject to the provider constructor, to override the default logger- The default logger is the
consoleglobal - The following methods are required:
debug,error,info,log,trace
- The default logger is the
6.1.1 - 2020-07-28
- Updated dependencies, which produces a smaller bundle size
6.1.0 - 2020-07-21
- Only emit
dataevent for notifications present in^4.0.0(#73)- Some consumers make assumptions about the shape of the object emitted with the event that do not hold for all notifications in
^6.0.0.
- Some consumers make assumptions about the shape of the object emitted with the event that do not hold for all notifications in
- Select icon using
rel~="icon"when retrieving site metadata (#76)- This is instead of defaulting to
rel="shortcut icon".
- This is instead of defaulting to
- Emit
accountsChangedevent after all related state has been updated (#72)- For example,
ethereum.selectedAddresswill now have been updated by the time the event is emitted.
- For example,
- Enable retrieval of site icons not hosted on the same origin
(#78)
- For example, icons hosted on
assets.foo.comthat are used onfoo.comwill now be retrieved successfully.
- For example, icons hosted on
6.0.1 - 2020-07-15
- Warning message for the
dataevent- This deprecated event was added back in
6.0.0, but the warning message was not defined.
- This deprecated event was added back in
- Restore
publicConfigStoreproperty as alias for_publicConfigStore- The
_publicConfigStorewas namedpublicConfigStorebefore4.0.0. The original property turned out to be used by consumers. The store is scheduled to be removed completely, and accessingpublicConfigStoreemits a warning.
- The
6.0.0 - 2020-07-04
- The
dataevent- This event was removed in
4.0.0, as it was thought to only be used internally. This assumption was incorrect, and the event is now restored.
- This event was removed in
- BREAKING: Restore the
notificationevent value to its pre-4.0.0state- Prior to
4.0.0this event was emitted by code in the MetaMask extension. Its value was inadvertently changed when it was moved to this package.
- Prior to
5.2.1 - 2020-06-29
- Un-deprecate
isConnectedmethod.
5.2.0 - 2020-06-24
- Remove property protections
- Unless we lock down the entire provide object, which we can't do, a determined consumer can break our provider. Thus, protected properties are pointless.
- Fix
requestsparamstype checks - Update deprecation warning messages per most recent deprecation plans
5.1.0 - 2020-06-01
- Update
requestparamstype tounknown[] | object- This is not breaking in practice, since no RPC methods with other
paramsvalues exist.
- This is not breaking in practice, since no RPC methods with other
5.0.2 - 2020-05-22
- Fix
ethereum.sendreturn value for certain argument combination- Reverted to pre-
4.0.0state
- Reverted to pre-
- Stop protecting overwrites of the following properties, that existed prior to
4.0.0:ethereum.isMetaMaskethereum._metamask
- Protect the following new, private properties required for
ethereum.requestto work:ethereum._rpcRequestethereum._rpcEngine
5.0.1 - 2020-05-11
- Rename package to @metamask/inpage-provider
- Prevent overwrite of certain properties on the Provider
ethereum.requestethereum.isMetaMaskethereum._metamask
5.0.0 - 2020-04-22
- The most recent EIP 1193 API (#30)
- The method
request - The events
disconnectandmessage
- The method
- A global initialization event,
ethereum#initialized, for asynchronous injection (#31) - Helper methods for initializing the provider (#31)
- BREAKING: Use named instead of default exports (#31)
- BREAKING:
MetaMaskInpageconstructor now takes aconnectionStreamand an options object (#31) - BREAKING:
_metamask.sendBatch->_metamask.requestBatch(#30) - BREAKING: Revert
sendto match provider in v7.7.8 ofmetamask-extension(#29) - The
connectevent now emits with aProviderConnectInfoobject per EIP 1193 (#30) - Deprecated the
sendmethod (#30) - Deprecated the events
close,networkChanged, andnotification, and added deprecation warnings for them (#30) - Un-deprecated
sendAsync(#29)