@metamask/selected-network-controller 4.0.0 → 5.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 +12 -1
- package/dist/SelectedNetworkController.d.ts +10 -5
- package/dist/SelectedNetworkController.d.ts.map +1 -1
- package/dist/SelectedNetworkController.js +23 -13
- package/dist/SelectedNetworkController.js.map +1 -1
- package/dist/SelectedNetworkMiddleware.d.ts +10 -2
- package/dist/SelectedNetworkMiddleware.d.ts.map +1 -1
- package/dist/SelectedNetworkMiddleware.js +3 -0
- package/dist/SelectedNetworkMiddleware.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -16
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [5.0.0]
|
|
10
|
+
### Added
|
|
11
|
+
- Add `SelectedNetworkMiddlewareJsonRpcRequest` type ([#1970](https://github.com/MetaMask/core/pull/1970)).
|
|
12
|
+
- Add `setPerDomainNetwork` method to reset proxies when flag toggled ([#3593](https://github.com/MetaMask/core/pull/3593)).
|
|
13
|
+
- Add `state` as a constructor argument ([#3585](https://github.com/MetaMask/core/pull/3585)).
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
- **BREAKING:** Rename `SelectedNetworkControllerAction` to `SelectedNetworkControllerActions` and `SelectedNetworkControllerEvent` to `SelectedNetworkControllerEvents` for consistency with corresponding type exports from other controllers ([#1970](https://github.com/MetaMask/core/pull/1970)).
|
|
17
|
+
- **BREAKING:** `createSelectedNetworkMiddleware` return type is constrained to satisfy `JsonRpcMiddleware<JsonRpcParams, Json>`, and its `req` parameter is constrained to satisfy `SelectedNetworkMiddlewareJsonRpcRequest` ([#1970](https://github.com/MetaMask/core/pull/1970)).
|
|
18
|
+
|
|
9
19
|
## [4.0.0]
|
|
10
20
|
### Changed
|
|
11
21
|
- **BREAKING:** Bump `@metamask/base-controller` to ^4.0.0 ([#2063](https://github.com/MetaMask/core/pull/2063))
|
|
@@ -50,7 +60,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
50
60
|
### Added
|
|
51
61
|
- Initial Release ([#1643](https://github.com/MetaMask/core/pull/1643))
|
|
52
62
|
|
|
53
|
-
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/selected-network-controller@
|
|
63
|
+
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/selected-network-controller@5.0.0...HEAD
|
|
64
|
+
[5.0.0]: https://github.com/MetaMask/core/compare/@metamask/selected-network-controller@4.0.0...@metamask/selected-network-controller@5.0.0
|
|
54
65
|
[4.0.0]: https://github.com/MetaMask/core/compare/@metamask/selected-network-controller@3.1.2...@metamask/selected-network-controller@4.0.0
|
|
55
66
|
[3.1.2]: https://github.com/MetaMask/core/compare/@metamask/selected-network-controller@3.1.1...@metamask/selected-network-controller@3.1.2
|
|
56
67
|
[3.1.1]: https://github.com/MetaMask/core/compare/@metamask/selected-network-controller@3.1.0...@metamask/selected-network-controller@3.1.1
|
|
@@ -2,7 +2,7 @@ import type { RestrictedControllerMessenger } from '@metamask/base-controller';
|
|
|
2
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
|
-
declare const controllerName = "SelectedNetworkController";
|
|
5
|
+
export declare const controllerName = "SelectedNetworkController";
|
|
6
6
|
declare type Domain = string;
|
|
7
7
|
export declare const SelectedNetworkControllerActionTypes: {
|
|
8
8
|
getState: "SelectedNetworkController:getState";
|
|
@@ -37,10 +37,13 @@ export declare type SelectedNetworkControllerSetNetworkClientIdForDomainAction =
|
|
|
37
37
|
type: typeof SelectedNetworkControllerActionTypes.setNetworkClientIdForDomain;
|
|
38
38
|
handler: (domain: string, NetworkClientId: NetworkClientId) => void;
|
|
39
39
|
};
|
|
40
|
-
export declare type
|
|
41
|
-
export declare type
|
|
42
|
-
export declare type
|
|
40
|
+
export declare type SelectedNetworkControllerActions = SelectedNetworkControllerGetSelectedNetworkStateAction | SelectedNetworkControllerGetNetworkClientIdForDomainAction | SelectedNetworkControllerSetNetworkClientIdForDomainAction;
|
|
41
|
+
export declare type AllowedActions = NetworkControllerGetNetworkClientByIdAction;
|
|
42
|
+
export declare type SelectedNetworkControllerEvents = SelectedNetworkControllerStateChangeEvent;
|
|
43
|
+
export declare type AllowedEvents = NetworkControllerStateChangeEvent;
|
|
44
|
+
export declare type SelectedNetworkControllerMessenger = RestrictedControllerMessenger<typeof controllerName, SelectedNetworkControllerActions | AllowedActions, SelectedNetworkControllerEvents | AllowedEvents, AllowedActions['type'], AllowedEvents['type']>;
|
|
43
45
|
export declare type SelectedNetworkControllerOptions = {
|
|
46
|
+
state?: SelectedNetworkControllerState;
|
|
44
47
|
messenger: SelectedNetworkControllerMessenger;
|
|
45
48
|
};
|
|
46
49
|
export declare type NetworkProxy = {
|
|
@@ -57,8 +60,9 @@ export declare class SelectedNetworkController extends BaseController<typeof con
|
|
|
57
60
|
*
|
|
58
61
|
* @param options - The controller options.
|
|
59
62
|
* @param options.messenger - The restricted controller messenger for the EncryptionPublicKey controller.
|
|
63
|
+
* @param options.state - The controllers initial state.
|
|
60
64
|
*/
|
|
61
|
-
constructor({ messenger }: SelectedNetworkControllerOptions);
|
|
65
|
+
constructor({ messenger, state, }: SelectedNetworkControllerOptions);
|
|
62
66
|
setNetworkClientIdForMetamask(networkClientId: NetworkClientId): void;
|
|
63
67
|
setNetworkClientIdForDomain(domain: Domain, networkClientId: NetworkClientId): void;
|
|
64
68
|
getNetworkClientIdForDomain(domain: Domain): string;
|
|
@@ -69,6 +73,7 @@ export declare class SelectedNetworkController extends BaseController<typeof con
|
|
|
69
73
|
* @returns The proxy and block tracker proxies.
|
|
70
74
|
*/
|
|
71
75
|
getProviderAndBlockTracker(domain: Domain): NetworkProxy;
|
|
76
|
+
setPerDomainNetwork(enabled: boolean): void;
|
|
72
77
|
}
|
|
73
78
|
export {};
|
|
74
79
|
//# sourceMappingURL=SelectedNetworkController.d.ts.map
|
|
@@ -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,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,
|
|
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,eAAO,MAAM,cAAc,8BAA8B,CAAC;AAY1D,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,gCAAgC,GACxC,sDAAsD,GACtD,0DAA0D,GAC1D,0DAA0D,CAAC;AAE/D,oBAAY,cAAc,GAAG,2CAA2C,CAAC;AAEzE,oBAAY,+BAA+B,GACzC,yCAAyC,CAAC;AAE5C,oBAAY,aAAa,GAAG,iCAAiC,CAAC;AAE9D,oBAAY,kCAAkC,GAAG,6BAA6B,CAC5E,OAAO,cAAc,EACrB,gCAAgC,GAAG,cAAc,EACjD,+BAA+B,GAAG,aAAa,EAC/C,cAAc,CAAC,MAAM,CAAC,EACtB,aAAa,CAAC,MAAM,CAAC,CACtB,CAAC;AAEF,oBAAY,gCAAgC,GAAG;IAC7C,KAAK,CAAC,EAAE,8BAA8B,CAAC;IACvC,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;;;;;;OAMG;gBACS,EACV,SAAS,EACT,KAAyB,GAC1B,EAAE,gCAAgC;IAsBnC,6BAA6B,CAAC,eAAe,EAAE,eAAe;IAI9D,2BAA2B,CACzB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe;IA2BlC,2BAA2B,CAAC,MAAM,EAAE,MAAM;IAO1C;;;;;OAKG;IACH,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAmBxD,mBAAmB,CAAC,OAAO,EAAE,OAAO;CAarC"}
|
|
@@ -6,10 +6,10 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
6
6
|
};
|
|
7
7
|
var _SelectedNetworkController_instances, _SelectedNetworkController_proxies, _SelectedNetworkController_registerMessageHandlers;
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.SelectedNetworkController = exports.SelectedNetworkControllerEventTypes = exports.SelectedNetworkControllerActionTypes = void 0;
|
|
9
|
+
exports.SelectedNetworkController = exports.SelectedNetworkControllerEventTypes = exports.SelectedNetworkControllerActionTypes = exports.controllerName = void 0;
|
|
10
10
|
const base_controller_1 = require("@metamask/base-controller");
|
|
11
11
|
const swappable_obj_proxy_1 = require("@metamask/swappable-obj-proxy");
|
|
12
|
-
|
|
12
|
+
exports.controllerName = 'SelectedNetworkController';
|
|
13
13
|
const stateMetadata = {
|
|
14
14
|
domains: { persist: true, anonymous: false },
|
|
15
15
|
perDomainNetwork: { persist: true, anonymous: false },
|
|
@@ -20,12 +20,12 @@ const getDefaultState = () => ({
|
|
|
20
20
|
});
|
|
21
21
|
const METAMASK_DOMAIN = 'metamask';
|
|
22
22
|
exports.SelectedNetworkControllerActionTypes = {
|
|
23
|
-
getState: `${controllerName}:getState`,
|
|
24
|
-
getNetworkClientIdForDomain: `${controllerName}:getNetworkClientIdForDomain`,
|
|
25
|
-
setNetworkClientIdForDomain: `${controllerName}:setNetworkClientIdForDomain`,
|
|
23
|
+
getState: `${exports.controllerName}:getState`,
|
|
24
|
+
getNetworkClientIdForDomain: `${exports.controllerName}:getNetworkClientIdForDomain`,
|
|
25
|
+
setNetworkClientIdForDomain: `${exports.controllerName}:setNetworkClientIdForDomain`,
|
|
26
26
|
};
|
|
27
27
|
exports.SelectedNetworkControllerEventTypes = {
|
|
28
|
-
stateChange: `${controllerName}:stateChange`,
|
|
28
|
+
stateChange: `${exports.controllerName}:stateChange`,
|
|
29
29
|
};
|
|
30
30
|
/**
|
|
31
31
|
* Controller for getting and setting the network for a particular domain.
|
|
@@ -36,13 +36,14 @@ class SelectedNetworkController extends base_controller_1.BaseController {
|
|
|
36
36
|
*
|
|
37
37
|
* @param options - The controller options.
|
|
38
38
|
* @param options.messenger - The restricted controller messenger for the EncryptionPublicKey controller.
|
|
39
|
+
* @param options.state - The controllers initial state.
|
|
39
40
|
*/
|
|
40
|
-
constructor({ messenger }) {
|
|
41
|
+
constructor({ messenger, state = getDefaultState(), }) {
|
|
41
42
|
super({
|
|
42
|
-
name: controllerName,
|
|
43
|
+
name: exports.controllerName,
|
|
43
44
|
metadata: stateMetadata,
|
|
44
45
|
messenger,
|
|
45
|
-
state
|
|
46
|
+
state,
|
|
46
47
|
});
|
|
47
48
|
_SelectedNetworkController_instances.add(this);
|
|
48
49
|
_SelectedNetworkController_proxies.set(this, new Map());
|
|
@@ -67,11 +68,10 @@ class SelectedNetworkController extends base_controller_1.BaseController {
|
|
|
67
68
|
networkProxy.blockTracker.setTarget(networkClient.blockTracker);
|
|
68
69
|
}
|
|
69
70
|
this.update((state) => {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
state.domains[domain] = networkClientId;
|
|
72
|
+
if (!state.perDomainNetwork) {
|
|
73
|
+
state.domains[METAMASK_DOMAIN] = networkClientId;
|
|
73
74
|
}
|
|
74
|
-
state.domains[METAMASK_DOMAIN] = networkClientId;
|
|
75
75
|
});
|
|
76
76
|
}
|
|
77
77
|
getNetworkClientIdForDomain(domain) {
|
|
@@ -100,6 +100,16 @@ class SelectedNetworkController extends base_controller_1.BaseController {
|
|
|
100
100
|
}
|
|
101
101
|
return networkProxy;
|
|
102
102
|
}
|
|
103
|
+
setPerDomainNetwork(enabled) {
|
|
104
|
+
this.update((state) => {
|
|
105
|
+
state.perDomainNetwork = enabled;
|
|
106
|
+
return state;
|
|
107
|
+
});
|
|
108
|
+
Object.keys(this.state.domains).forEach((domain) => {
|
|
109
|
+
// when perDomainNetwork is false, getNetworkClientIdForDomain always returns the networkClientId for the domain 'metamask'
|
|
110
|
+
this.setNetworkClientIdForDomain(domain, this.getNetworkClientIdForDomain(domain));
|
|
111
|
+
});
|
|
112
|
+
}
|
|
103
113
|
}
|
|
104
114
|
exports.SelectedNetworkController = SelectedNetworkController;
|
|
105
115
|
_SelectedNetworkController_proxies = new WeakMap(), _SelectedNetworkController_instances = new WeakSet(), _SelectedNetworkController_registerMessageHandlers = function _SelectedNetworkController_registerMessageHandlers() {
|
|
@@ -1 +1 @@
|
|
|
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"]}
|
|
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\nexport const 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 SelectedNetworkControllerActions =\n | SelectedNetworkControllerGetSelectedNetworkStateAction\n | SelectedNetworkControllerGetNetworkClientIdForDomainAction\n | SelectedNetworkControllerSetNetworkClientIdForDomainAction;\n\nexport type AllowedActions = NetworkControllerGetNetworkClientByIdAction;\n\nexport type SelectedNetworkControllerEvents =\n SelectedNetworkControllerStateChangeEvent;\n\nexport type AllowedEvents = NetworkControllerStateChangeEvent;\n\nexport type SelectedNetworkControllerMessenger = RestrictedControllerMessenger<\n typeof controllerName,\n SelectedNetworkControllerActions | AllowedActions,\n SelectedNetworkControllerEvents | AllowedEvents,\n AllowedActions['type'],\n AllowedEvents['type']\n>;\n\nexport type SelectedNetworkControllerOptions = {\n state?: SelectedNetworkControllerState;\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 * @param options.state - The controllers initial state.\n */\n constructor({\n messenger,\n state = getDefaultState(),\n }: SelectedNetworkControllerOptions) {\n super({\n name: controllerName,\n metadata: stateMetadata,\n messenger,\n state,\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 state.domains[domain] = networkClientId;\n if (!state.perDomainNetwork) {\n state.domains[METAMASK_DOMAIN] = networkClientId;\n }\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 setPerDomainNetwork(enabled: boolean) {\n this.update((state) => {\n state.perDomainNetwork = enabled;\n return state;\n });\n Object.keys(this.state.domains).forEach((domain) => {\n // when perDomainNetwork is false, getNetworkClientIdForDomain always returns the networkClientId for the domain 'metamask'\n this.setNetworkClientIdForDomain(\n domain,\n this.getNetworkClientIdForDomain(domain),\n );\n });\n }\n}\n"]}
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import type { ControllerMessenger } from '@metamask/base-controller';
|
|
2
2
|
import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine';
|
|
3
|
-
import type { NetworkControllerGetStateAction } from '@metamask/network-controller';
|
|
3
|
+
import type { NetworkClientId, NetworkControllerGetStateAction, NetworkControllerStateChangeEvent } from '@metamask/network-controller';
|
|
4
|
+
import type { Json, JsonRpcParams, JsonRpcRequest } from '@metamask/utils';
|
|
4
5
|
import type { SelectedNetworkControllerGetNetworkClientIdForDomainAction, SelectedNetworkControllerSetNetworkClientIdForDomainAction } from './SelectedNetworkController';
|
|
5
|
-
export declare
|
|
6
|
+
export declare type MiddlewareAllowedActions = NetworkControllerGetStateAction;
|
|
7
|
+
export declare type MiddlewareAllowedEvents = NetworkControllerStateChangeEvent;
|
|
8
|
+
export declare type SelectedNetworkMiddlewareMessenger = ControllerMessenger<SelectedNetworkControllerGetNetworkClientIdForDomainAction | SelectedNetworkControllerSetNetworkClientIdForDomainAction | MiddlewareAllowedActions, MiddlewareAllowedEvents>;
|
|
9
|
+
export declare type SelectedNetworkMiddlewareJsonRpcRequest = JsonRpcRequest & {
|
|
10
|
+
networkClientId?: NetworkClientId;
|
|
11
|
+
origin?: string;
|
|
12
|
+
};
|
|
13
|
+
export declare const createSelectedNetworkMiddleware: (messenger: SelectedNetworkMiddlewareMessenger) => JsonRpcMiddleware<JsonRpcParams, Json>;
|
|
6
14
|
//# sourceMappingURL=SelectedNetworkMiddleware.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectedNetworkMiddleware.d.ts","sourceRoot":"","sources":["../src/SelectedNetworkMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"SelectedNetworkMiddleware.d.ts","sourceRoot":"","sources":["../src/SelectedNetworkMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EACV,eAAe,EACf,+BAA+B,EAC/B,iCAAiC,EAClC,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE3E,OAAO,KAAK,EACV,0DAA0D,EAC1D,0DAA0D,EAC3D,MAAM,6BAA6B,CAAC;AAGrC,oBAAY,wBAAwB,GAAG,+BAA+B,CAAC;AACvE,oBAAY,uBAAuB,GAAG,iCAAiC,CAAC;AAExE,oBAAY,kCAAkC,GAAG,mBAAmB,CAChE,0DAA0D,GAC1D,0DAA0D,GAC1D,wBAAwB,EAC1B,uBAAuB,CACxB,CAAC;AAEF,oBAAY,uCAAuC,GAAG,cAAc,GAAG;IACrE,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,+BAA+B,qDAEzC,kBAAkB,aAAa,EAAE,IAAI,CAgCvC,CAAC"}
|
|
@@ -7,6 +7,9 @@ const createSelectedNetworkMiddleware = (messenger) => {
|
|
|
7
7
|
const setNetworkClientIdForDomain = (origin, networkClientId) => messenger.call(SelectedNetworkController_1.SelectedNetworkControllerActionTypes.setNetworkClientIdForDomain, origin, networkClientId);
|
|
8
8
|
const getDefaultNetworkClientId = () => messenger.call('NetworkController:getState').selectedNetworkClientId;
|
|
9
9
|
return (req, _, next) => {
|
|
10
|
+
if (!req.origin) {
|
|
11
|
+
throw new Error("Request object is lacking an 'origin'");
|
|
12
|
+
}
|
|
10
13
|
if (getNetworkClientIdForDomain(req.origin) === undefined) {
|
|
11
14
|
setNetworkClientIdForDomain(req.origin, getDefaultNetworkClientId());
|
|
12
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectedNetworkMiddleware.js","sourceRoot":"","sources":["../src/SelectedNetworkMiddleware.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"SelectedNetworkMiddleware.js","sourceRoot":"","sources":["../src/SelectedNetworkMiddleware.ts"],"names":[],"mappings":";;;AAaA,2EAAmF;AAiB5E,MAAM,+BAA+B,GAAG,CAC7C,SAA6C,EACL,EAAE;IAC1C,MAAM,2BAA2B,GAAG,CAAC,MAAc,EAAE,EAAE,CACrD,SAAS,CAAC,IAAI,CACZ,gEAAoC,CAAC,2BAA2B,EAChE,MAAM,CACP,CAAC;IAEJ,MAAM,2BAA2B,GAAG,CAClC,MAAc,EACd,eAAgC,EAChC,EAAE,CACF,SAAS,CAAC,IAAI,CACZ,gEAAoC,CAAC,2BAA2B,EAChE,MAAM,EACN,eAAe,CAChB,CAAC;IAEJ,MAAM,yBAAyB,GAAG,GAAG,EAAE,CACrC,SAAS,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,uBAAuB,CAAC;IAEvE,OAAO,CAAC,GAA4C,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QAC/D,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;YACf,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;SAC1D;QAED,IAAI,2BAA2B,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE;YACzD,2BAA2B,CAAC,GAAG,CAAC,MAAM,EAAE,yBAAyB,EAAE,CAAC,CAAC;SACtE;QAED,GAAG,CAAC,eAAe,GAAG,2BAA2B,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9D,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC,CAAC;AAlCW,QAAA,+BAA+B,mCAkC1C","sourcesContent":["import type { ControllerMessenger } from '@metamask/base-controller';\nimport type { JsonRpcMiddleware } from '@metamask/json-rpc-engine';\nimport type {\n NetworkClientId,\n NetworkControllerGetStateAction,\n NetworkControllerStateChangeEvent,\n} from '@metamask/network-controller';\nimport type { Json, JsonRpcParams, JsonRpcRequest } from '@metamask/utils';\n\nimport type {\n SelectedNetworkControllerGetNetworkClientIdForDomainAction,\n SelectedNetworkControllerSetNetworkClientIdForDomainAction,\n} from './SelectedNetworkController';\nimport { SelectedNetworkControllerActionTypes } from './SelectedNetworkController';\n\nexport type MiddlewareAllowedActions = NetworkControllerGetStateAction;\nexport type MiddlewareAllowedEvents = NetworkControllerStateChangeEvent;\n\nexport type SelectedNetworkMiddlewareMessenger = ControllerMessenger<\n | SelectedNetworkControllerGetNetworkClientIdForDomainAction\n | SelectedNetworkControllerSetNetworkClientIdForDomainAction\n | MiddlewareAllowedActions,\n MiddlewareAllowedEvents\n>;\n\nexport type SelectedNetworkMiddlewareJsonRpcRequest = JsonRpcRequest & {\n networkClientId?: NetworkClientId;\n origin?: string;\n};\n\nexport const createSelectedNetworkMiddleware = (\n messenger: SelectedNetworkMiddlewareMessenger,\n): JsonRpcMiddleware<JsonRpcParams, Json> => {\n const getNetworkClientIdForDomain = (origin: string) =>\n messenger.call(\n SelectedNetworkControllerActionTypes.getNetworkClientIdForDomain,\n origin,\n );\n\n const setNetworkClientIdForDomain = (\n origin: string,\n networkClientId: NetworkClientId,\n ) =>\n messenger.call(\n SelectedNetworkControllerActionTypes.setNetworkClientIdForDomain,\n origin,\n networkClientId,\n );\n\n const getDefaultNetworkClientId = () =>\n messenger.call('NetworkController:getState').selectedNetworkClientId;\n\n return (req: SelectedNetworkMiddlewareJsonRpcRequest, _, next) => {\n if (!req.origin) {\n throw new Error(\"Request object is lacking an 'origin'\");\n }\n\n if (getNetworkClientIdForDomain(req.origin) === undefined) {\n setNetworkClientIdForDomain(req.origin, getDefaultNetworkClientId());\n }\n\n req.networkClientId = getNetworkClientIdForDomain(req.origin);\n return next();\n };\n};\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
1
|
+
export type { SelectedNetworkControllerState, SelectedNetworkControllerStateChangeEvent, SelectedNetworkControllerGetSelectedNetworkStateAction, SelectedNetworkControllerGetNetworkClientIdForDomainAction, SelectedNetworkControllerSetNetworkClientIdForDomainAction, SelectedNetworkControllerActions, SelectedNetworkControllerEvents, SelectedNetworkControllerMessenger, SelectedNetworkControllerOptions, NetworkProxy, } from './SelectedNetworkController';
|
|
2
|
+
export { SelectedNetworkControllerActionTypes, SelectedNetworkControllerEventTypes, SelectedNetworkController, } from './SelectedNetworkController';
|
|
3
|
+
export type { SelectedNetworkMiddlewareJsonRpcRequest } from './SelectedNetworkMiddleware';
|
|
4
|
+
export { createSelectedNetworkMiddleware } from './SelectedNetworkMiddleware';
|
|
3
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,8BAA8B,EAC9B,yCAAyC,EACzC,sDAAsD,EACtD,0DAA0D,EAC1D,0DAA0D,EAC1D,gCAAgC,EAChC,+BAA+B,EAC/B,kCAAkC,EAClC,gCAAgC,EAChC,YAAY,GACb,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,oCAAoC,EACpC,mCAAmC,EACnC,yBAAyB,GAC1B,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,uCAAuC,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,19 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
|
|
18
|
-
|
|
3
|
+
exports.createSelectedNetworkMiddleware = exports.SelectedNetworkController = exports.SelectedNetworkControllerEventTypes = exports.SelectedNetworkControllerActionTypes = void 0;
|
|
4
|
+
var SelectedNetworkController_1 = require("./SelectedNetworkController");
|
|
5
|
+
Object.defineProperty(exports, "SelectedNetworkControllerActionTypes", { enumerable: true, get: function () { return SelectedNetworkController_1.SelectedNetworkControllerActionTypes; } });
|
|
6
|
+
Object.defineProperty(exports, "SelectedNetworkControllerEventTypes", { enumerable: true, get: function () { return SelectedNetworkController_1.SelectedNetworkControllerEventTypes; } });
|
|
7
|
+
Object.defineProperty(exports, "SelectedNetworkController", { enumerable: true, get: function () { return SelectedNetworkController_1.SelectedNetworkController; } });
|
|
8
|
+
var SelectedNetworkMiddleware_1 = require("./SelectedNetworkMiddleware");
|
|
9
|
+
Object.defineProperty(exports, "createSelectedNetworkMiddleware", { enumerable: true, get: function () { return SelectedNetworkMiddleware_1.createSelectedNetworkMiddleware; } });
|
|
19
10
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAYA,yEAIqC;AAHnC,iJAAA,oCAAoC,OAAA;AACpC,gJAAA,mCAAmC,OAAA;AACnC,sIAAA,yBAAyB,OAAA;AAG3B,yEAA8E;AAArE,4IAAA,+BAA+B,OAAA","sourcesContent":["export type {\n SelectedNetworkControllerState,\n SelectedNetworkControllerStateChangeEvent,\n SelectedNetworkControllerGetSelectedNetworkStateAction,\n SelectedNetworkControllerGetNetworkClientIdForDomainAction,\n SelectedNetworkControllerSetNetworkClientIdForDomainAction,\n SelectedNetworkControllerActions,\n SelectedNetworkControllerEvents,\n SelectedNetworkControllerMessenger,\n SelectedNetworkControllerOptions,\n NetworkProxy,\n} from './SelectedNetworkController';\nexport {\n SelectedNetworkControllerActionTypes,\n SelectedNetworkControllerEventTypes,\n SelectedNetworkController,\n} from './SelectedNetworkController';\nexport type { SelectedNetworkMiddlewareJsonRpcRequest } from './SelectedNetworkMiddleware';\nexport { createSelectedNetworkMiddleware } from './SelectedNetworkMiddleware';\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metamask/selected-network-controller",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "Provides an interface to the currently selected networkClientId for a given domain",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"MetaMask",
|
|
@@ -33,7 +33,8 @@
|
|
|
33
33
|
"@metamask/base-controller": "^4.0.0",
|
|
34
34
|
"@metamask/json-rpc-engine": "^7.3.0",
|
|
35
35
|
"@metamask/network-controller": "^17.0.0",
|
|
36
|
-
"@metamask/swappable-obj-proxy": "^2.1.0"
|
|
36
|
+
"@metamask/swappable-obj-proxy": "^2.1.0",
|
|
37
|
+
"@metamask/utils": "^8.2.0"
|
|
37
38
|
},
|
|
38
39
|
"devDependencies": {
|
|
39
40
|
"@metamask/auto-changelog": "^3.4.3",
|