@metamask/selected-network-controller 3.1.2 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [4.0.0]
|
|
10
|
+
### Changed
|
|
11
|
+
- **BREAKING:** Bump `@metamask/base-controller` to ^4.0.0 ([#2063](https://github.com/MetaMask/core/pull/2063))
|
|
12
|
+
- This is breaking because the type of the `messenger` has backward-incompatible changes. See the changelog for this package for more.
|
|
13
|
+
- Bump `@metamask/network-controller` to ^17.0.0 ([#2063](https://github.com/MetaMask/core/pull/2063))
|
|
14
|
+
|
|
9
15
|
## [3.1.2]
|
|
10
16
|
### Changed
|
|
11
17
|
- **BREAKING:** Bump dependency and peer dependency on `@metamask/network-controller` to ^16.0.0
|
|
@@ -44,7 +50,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
44
50
|
### Added
|
|
45
51
|
- Initial Release ([#1643](https://github.com/MetaMask/core/pull/1643))
|
|
46
52
|
|
|
47
|
-
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/selected-network-controller@
|
|
53
|
+
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/selected-network-controller@4.0.0...HEAD
|
|
54
|
+
[4.0.0]: https://github.com/MetaMask/core/compare/@metamask/selected-network-controller@3.1.2...@metamask/selected-network-controller@4.0.0
|
|
48
55
|
[3.1.2]: https://github.com/MetaMask/core/compare/@metamask/selected-network-controller@3.1.1...@metamask/selected-network-controller@3.1.2
|
|
49
56
|
[3.1.1]: https://github.com/MetaMask/core/compare/@metamask/selected-network-controller@3.1.0...@metamask/selected-network-controller@3.1.1
|
|
50
57
|
[3.1.0]: https://github.com/MetaMask/core/compare/@metamask/selected-network-controller@3.0.0...@metamask/selected-network-controller@3.1.0
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { RestrictedControllerMessenger } from '@metamask/base-controller';
|
|
2
|
-
import {
|
|
2
|
+
import { BaseController } from '@metamask/base-controller';
|
|
3
3
|
import type { BlockTrackerProxy, NetworkClientId, NetworkControllerGetNetworkClientByIdAction, NetworkControllerStateChangeEvent, ProviderProxy } from '@metamask/network-controller';
|
|
4
4
|
import type { Patch } from 'immer';
|
|
5
5
|
declare const controllerName = "SelectedNetworkController";
|
|
@@ -50,7 +50,7 @@ export declare type NetworkProxy = {
|
|
|
50
50
|
/**
|
|
51
51
|
* Controller for getting and setting the network for a particular domain.
|
|
52
52
|
*/
|
|
53
|
-
export declare class SelectedNetworkController extends
|
|
53
|
+
export declare class SelectedNetworkController extends BaseController<typeof controllerName, SelectedNetworkControllerState, SelectedNetworkControllerMessenger> {
|
|
54
54
|
#private;
|
|
55
55
|
/**
|
|
56
56
|
* Construct a SelectedNetworkController controller.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectedNetworkController.d.ts","sourceRoot":"","sources":["../src/SelectedNetworkController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"SelectedNetworkController.d.ts","sourceRoot":"","sources":["../src/SelectedNetworkController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,2CAA2C,EAC3C,iCAAiC,EACjC,aAAa,EACd,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEnC,QAAA,MAAM,cAAc,8BAA8B,CAAC;AAYnD,aAAK,MAAM,GAAG,MAAM,CAAC;AAIrB,eAAO,MAAM,oCAAoC;;;;CAMhD,CAAC;AAEF,eAAO,MAAM,mCAAmC;;CAE/C,CAAC;AAEF,oBAAY,8BAA8B,GAAG;IAC3C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACzC;;;;OAIG;IACH,gBAAgB,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,oBAAY,yCAAyC,GAAG;IACtD,IAAI,EAAE,OAAO,mCAAmC,CAAC,WAAW,CAAC;IAC7D,OAAO,EAAE,CAAC,8BAA8B,EAAE,KAAK,EAAE,CAAC,CAAC;CACpD,CAAC;AAEF,oBAAY,sDAAsD,GAAG;IACnE,IAAI,EAAE,OAAO,oCAAoC,CAAC,QAAQ,CAAC;IAC3D,OAAO,EAAE,MAAM,8BAA8B,CAAC;CAC/C,CAAC;AAEF,oBAAY,0DAA0D,GAAG;IACvE,IAAI,EAAE,OAAO,oCAAoC,CAAC,2BAA2B,CAAC;IAC9E,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,eAAe,CAAC;CAC9C,CAAC;AAEF,oBAAY,0DAA0D,GAAG;IACvE,IAAI,EAAE,OAAO,oCAAoC,CAAC,2BAA2B,CAAC;IAC9E,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,KAAK,IAAI,CAAC;CACrE,CAAC;AAEF,oBAAY,+BAA+B,GACvC,sDAAsD,GACtD,0DAA0D,GAC1D,0DAA0D,GAC1D,2CAA2C,CAAC;AAEhD,oBAAY,8BAA8B,GACxC,yCAAyC,CAAC;AAE5C,oBAAY,kCAAkC,GAAG,6BAA6B,CAC5E,OAAO,cAAc,EACrB,+BAA+B,EAC/B,iCAAiC,GAAG,8BAA8B,EAClE,MAAM,EACN,MAAM,CACP,CAAC;AAEF,oBAAY,gCAAgC,GAAG;IAC7C,SAAS,EAAE,kCAAkC,CAAC;CAC/C,CAAC;AAEF,oBAAY,YAAY,GAAG;IACzB,QAAQ,EAAE,aAAa,CAAC;IACxB,YAAY,EAAE,iBAAiB,CAAC;CACjC,CAAC;AAEF;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,cAAc,CAC3D,OAAO,cAAc,EACrB,8BAA8B,EAC9B,kCAAkC,CACnC;;IAGC;;;;;OAKG;gBACS,EAAE,SAAS,EAAE,EAAE,gCAAgC;IAsB3D,6BAA6B,CAAC,eAAe,EAAE,eAAe;IAI9D,2BAA2B,CACzB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe;IA4BlC,2BAA2B,CAAC,MAAM,EAAE,MAAM;IAO1C;;;;;OAKG;IACH,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;CAkBzD"}
|
|
@@ -30,7 +30,7 @@ exports.SelectedNetworkControllerEventTypes = {
|
|
|
30
30
|
/**
|
|
31
31
|
* Controller for getting and setting the network for a particular domain.
|
|
32
32
|
*/
|
|
33
|
-
class SelectedNetworkController extends base_controller_1.
|
|
33
|
+
class SelectedNetworkController extends base_controller_1.BaseController {
|
|
34
34
|
/**
|
|
35
35
|
* Construct a SelectedNetworkController controller.
|
|
36
36
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectedNetworkController.js","sourceRoot":"","sources":["../src/SelectedNetworkController.ts"],"names":[],"mappings":";;;;;;;;;AACA,+
|
|
1
|
+
{"version":3,"file":"SelectedNetworkController.js","sourceRoot":"","sources":["../src/SelectedNetworkController.ts"],"names":[],"mappings":"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","sourcesContent":["import type { RestrictedControllerMessenger } from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport type {\n BlockTrackerProxy,\n NetworkClientId,\n NetworkControllerGetNetworkClientByIdAction,\n NetworkControllerStateChangeEvent,\n ProviderProxy,\n} from '@metamask/network-controller';\nimport { createEventEmitterProxy } from '@metamask/swappable-obj-proxy';\nimport type { Patch } from 'immer';\n\nconst controllerName = 'SelectedNetworkController';\n\nconst stateMetadata = {\n domains: { persist: true, anonymous: false },\n perDomainNetwork: { persist: true, anonymous: false },\n};\n\nconst getDefaultState = () => ({\n domains: {},\n perDomainNetwork: false,\n});\n\ntype Domain = string;\n\nconst METAMASK_DOMAIN = 'metamask' as const;\n\nexport const SelectedNetworkControllerActionTypes = {\n getState: `${controllerName}:getState` as const,\n getNetworkClientIdForDomain:\n `${controllerName}:getNetworkClientIdForDomain` as const,\n setNetworkClientIdForDomain:\n `${controllerName}:setNetworkClientIdForDomain` as const,\n};\n\nexport const SelectedNetworkControllerEventTypes = {\n stateChange: `${controllerName}:stateChange` as const,\n};\n\nexport type SelectedNetworkControllerState = {\n domains: Record<Domain, NetworkClientId>;\n /**\n * Feature flag to start returning networkClientId based on the domain.\n * when the flag is false, the 'metamask' domain will always be used.\n * defaults to false\n */\n perDomainNetwork: boolean;\n};\n\nexport type SelectedNetworkControllerStateChangeEvent = {\n type: typeof SelectedNetworkControllerEventTypes.stateChange;\n payload: [SelectedNetworkControllerState, Patch[]];\n};\n\nexport type SelectedNetworkControllerGetSelectedNetworkStateAction = {\n type: typeof SelectedNetworkControllerActionTypes.getState;\n handler: () => SelectedNetworkControllerState;\n};\n\nexport type SelectedNetworkControllerGetNetworkClientIdForDomainAction = {\n type: typeof SelectedNetworkControllerActionTypes.getNetworkClientIdForDomain;\n handler: (domain: string) => NetworkClientId;\n};\n\nexport type SelectedNetworkControllerSetNetworkClientIdForDomainAction = {\n type: typeof SelectedNetworkControllerActionTypes.setNetworkClientIdForDomain;\n handler: (domain: string, NetworkClientId: NetworkClientId) => void;\n};\n\nexport type SelectedNetworkControllerAction =\n | SelectedNetworkControllerGetSelectedNetworkStateAction\n | SelectedNetworkControllerGetNetworkClientIdForDomainAction\n | SelectedNetworkControllerSetNetworkClientIdForDomainAction\n | NetworkControllerGetNetworkClientByIdAction;\n\nexport type SelectedNetworkControllerEvent =\n SelectedNetworkControllerStateChangeEvent;\n\nexport type SelectedNetworkControllerMessenger = RestrictedControllerMessenger<\n typeof controllerName,\n SelectedNetworkControllerAction,\n NetworkControllerStateChangeEvent | SelectedNetworkControllerEvent,\n string,\n string\n>;\n\nexport type SelectedNetworkControllerOptions = {\n messenger: SelectedNetworkControllerMessenger;\n};\n\nexport type NetworkProxy = {\n provider: ProviderProxy;\n blockTracker: BlockTrackerProxy;\n};\n\n/**\n * Controller for getting and setting the network for a particular domain.\n */\nexport class SelectedNetworkController extends BaseController<\n typeof controllerName,\n SelectedNetworkControllerState,\n SelectedNetworkControllerMessenger\n> {\n #proxies = new Map<Domain, NetworkProxy>();\n\n /**\n * Construct a SelectedNetworkController controller.\n *\n * @param options - The controller options.\n * @param options.messenger - The restricted controller messenger for the EncryptionPublicKey controller.\n */\n constructor({ messenger }: SelectedNetworkControllerOptions) {\n super({\n name: controllerName,\n metadata: stateMetadata,\n messenger,\n state: getDefaultState(),\n });\n this.#registerMessageHandlers();\n }\n\n #registerMessageHandlers(): void {\n this.messagingSystem.registerActionHandler(\n SelectedNetworkControllerActionTypes.getNetworkClientIdForDomain,\n this.getNetworkClientIdForDomain.bind(this),\n );\n\n this.messagingSystem.registerActionHandler(\n SelectedNetworkControllerActionTypes.setNetworkClientIdForDomain,\n this.setNetworkClientIdForDomain.bind(this),\n );\n }\n\n setNetworkClientIdForMetamask(networkClientId: NetworkClientId) {\n this.setNetworkClientIdForDomain(METAMASK_DOMAIN, networkClientId);\n }\n\n setNetworkClientIdForDomain(\n domain: Domain,\n networkClientId: NetworkClientId,\n ) {\n const networkClient = this.messagingSystem.call(\n 'NetworkController:getNetworkClientById',\n networkClientId,\n );\n const networkProxy = this.#proxies.get(domain);\n if (networkProxy === undefined) {\n this.#proxies.set(domain, {\n provider: createEventEmitterProxy(networkClient.provider),\n blockTracker: createEventEmitterProxy(networkClient.blockTracker, {\n eventFilter: 'skipInternal',\n }),\n });\n } else {\n networkProxy.provider.setTarget(networkClient.provider);\n networkProxy.blockTracker.setTarget(networkClient.blockTracker);\n }\n\n this.update((state) => {\n if (state.perDomainNetwork) {\n state.domains[domain] = networkClientId;\n return;\n }\n state.domains[METAMASK_DOMAIN] = networkClientId;\n });\n }\n\n getNetworkClientIdForDomain(domain: Domain) {\n if (this.state.perDomainNetwork) {\n return this.state.domains[domain];\n }\n return this.state.domains[METAMASK_DOMAIN];\n }\n\n /**\n * Accesses the provider and block tracker for the currently selected network.\n *\n * @param domain - the domain for the provider\n * @returns The proxy and block tracker proxies.\n */\n getProviderAndBlockTracker(domain: Domain): NetworkProxy {\n let networkProxy = this.#proxies.get(domain);\n if (networkProxy === undefined) {\n const networkClient = this.messagingSystem.call(\n 'NetworkController:getNetworkClientById',\n this.getNetworkClientIdForDomain(domain),\n );\n networkProxy = {\n provider: createEventEmitterProxy(networkClient.provider),\n blockTracker: createEventEmitterProxy(networkClient.blockTracker, {\n eventFilter: 'skipInternal',\n }),\n };\n this.#proxies.set(domain, networkProxy);\n }\n\n return networkProxy;\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metamask/selected-network-controller",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"description": "Provides an interface to the currently selected networkClientId for a given domain",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"MetaMask",
|
|
@@ -30,9 +30,9 @@
|
|
|
30
30
|
"test:watch": "jest --watch"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@metamask/base-controller": "^
|
|
33
|
+
"@metamask/base-controller": "^4.0.0",
|
|
34
34
|
"@metamask/json-rpc-engine": "^7.3.0",
|
|
35
|
-
"@metamask/network-controller": "^
|
|
35
|
+
"@metamask/network-controller": "^17.0.0",
|
|
36
36
|
"@metamask/swappable-obj-proxy": "^2.1.0"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"typescript": "~4.8.4"
|
|
51
51
|
},
|
|
52
52
|
"peerDependencies": {
|
|
53
|
-
"@metamask/network-controller": "^
|
|
53
|
+
"@metamask/network-controller": "^17.0.0"
|
|
54
54
|
},
|
|
55
55
|
"engines": {
|
|
56
56
|
"node": ">=16.0.0"
|