@metamask-previews/selected-network-controller 26.1.7-preview-5b293ee50 → 26.1.7-preview-3866c0ff1
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 +4 -0
- package/dist/{SelectedNetworkController-method-action-types.d.mts → SelectedNetworkController-method-action-types.d.ts} +2 -2
- package/dist/SelectedNetworkController-method-action-types.d.ts.map +1 -0
- package/dist/{SelectedNetworkController-method-action-types.mjs → SelectedNetworkController-method-action-types.js} +1 -1
- package/dist/SelectedNetworkController-method-action-types.js.map +1 -0
- package/dist/{SelectedNetworkController.d.cts → SelectedNetworkController.d.ts} +8 -8
- package/dist/SelectedNetworkController.d.ts.map +1 -0
- package/dist/{SelectedNetworkController.mjs → SelectedNetworkController.js} +45 -50
- package/dist/SelectedNetworkController.js.map +1 -0
- package/dist/SelectedNetworkMiddleware.d.ts +10 -0
- package/dist/SelectedNetworkMiddleware.d.ts.map +1 -0
- package/dist/{SelectedNetworkMiddleware.mjs → SelectedNetworkMiddleware.js} +2 -2
- package/dist/SelectedNetworkMiddleware.js.map +1 -0
- package/dist/{index.d.cts → index.d.ts} +6 -6
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/package.json +13 -17
- package/dist/SelectedNetworkController-method-action-types.cjs +0 -7
- package/dist/SelectedNetworkController-method-action-types.cjs.map +0 -1
- package/dist/SelectedNetworkController-method-action-types.d.cts +0 -28
- package/dist/SelectedNetworkController-method-action-types.d.cts.map +0 -1
- package/dist/SelectedNetworkController-method-action-types.d.mts.map +0 -1
- package/dist/SelectedNetworkController-method-action-types.mjs.map +0 -1
- package/dist/SelectedNetworkController.cjs +0 -195
- package/dist/SelectedNetworkController.cjs.map +0 -1
- package/dist/SelectedNetworkController.d.cts.map +0 -1
- package/dist/SelectedNetworkController.d.mts +0 -66
- package/dist/SelectedNetworkController.d.mts.map +0 -1
- package/dist/SelectedNetworkController.mjs.map +0 -1
- package/dist/SelectedNetworkMiddleware.cjs +0 -16
- package/dist/SelectedNetworkMiddleware.cjs.map +0 -1
- package/dist/SelectedNetworkMiddleware.d.cts +0 -10
- package/dist/SelectedNetworkMiddleware.d.cts.map +0 -1
- package/dist/SelectedNetworkMiddleware.d.mts +0 -10
- package/dist/SelectedNetworkMiddleware.d.mts.map +0 -1
- package/dist/SelectedNetworkMiddleware.mjs.map +0 -1
- package/dist/index.cjs +0 -11
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts.map +0 -1
- package/dist/index.d.mts +0 -6
- package/dist/index.d.mts.map +0 -1
- package/dist/index.mjs +0 -3
- package/dist/index.mjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- **BREAKING:** Bump minimum Node.js version to 22 ([#9168](https://github.com/MetaMask/core/pull/9168))
|
|
13
|
+
|
|
10
14
|
## [26.1.7]
|
|
11
15
|
|
|
12
16
|
### Changed
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* This file is auto generated.
|
|
3
3
|
* Do not edit manually.
|
|
4
4
|
*/
|
|
5
|
-
import type { SelectedNetworkController } from
|
|
5
|
+
import type { SelectedNetworkController } from './SelectedNetworkController.js';
|
|
6
6
|
export type SelectedNetworkControllerSetNetworkClientIdForDomainAction = {
|
|
7
7
|
type: `SelectedNetworkController:setNetworkClientIdForDomain`;
|
|
8
8
|
handler: SelectedNetworkController['setNetworkClientIdForDomain'];
|
|
@@ -25,4 +25,4 @@ export type SelectedNetworkControllerGetProviderAndBlockTrackerAction = {
|
|
|
25
25
|
* Union of all SelectedNetworkController action types.
|
|
26
26
|
*/
|
|
27
27
|
export type SelectedNetworkControllerMethodActions = SelectedNetworkControllerSetNetworkClientIdForDomainAction | SelectedNetworkControllerGetNetworkClientIdForDomainAction | SelectedNetworkControllerGetProviderAndBlockTrackerAction;
|
|
28
|
-
//# sourceMappingURL=SelectedNetworkController-method-action-types.d.
|
|
28
|
+
//# sourceMappingURL=SelectedNetworkController-method-action-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectedNetworkController-method-action-types.d.ts","sourceRoot":"","sources":["../src/SelectedNetworkController-method-action-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAEhF,MAAM,MAAM,0DAA0D,GAAG;IACvE,IAAI,EAAE,uDAAuD,CAAC;IAC9D,OAAO,EAAE,yBAAyB,CAAC,6BAA6B,CAAC,CAAC;CACnE,CAAC;AAEF,MAAM,MAAM,0DAA0D,GAAG;IACvE,IAAI,EAAE,uDAAuD,CAAC;IAC9D,OAAO,EAAE,yBAAyB,CAAC,6BAA6B,CAAC,CAAC;CACnE,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,yDAAyD,GAAG;IACtE,IAAI,EAAE,sDAAsD,CAAC;IAC7D,OAAO,EAAE,yBAAyB,CAAC,4BAA4B,CAAC,CAAC;CAClE,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sCAAsC,GAC9C,0DAA0D,GAC1D,0DAA0D,GAC1D,yDAAyD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectedNetworkController-method-action-types.js","sourceRoot":"","sources":["../src/SelectedNetworkController-method-action-types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * This file is auto generated.\n * Do not edit manually.\n */\n\nimport type { SelectedNetworkController } from './SelectedNetworkController.js';\n\nexport type SelectedNetworkControllerSetNetworkClientIdForDomainAction = {\n type: `SelectedNetworkController:setNetworkClientIdForDomain`;\n handler: SelectedNetworkController['setNetworkClientIdForDomain'];\n};\n\nexport type SelectedNetworkControllerGetNetworkClientIdForDomainAction = {\n type: `SelectedNetworkController:getNetworkClientIdForDomain`;\n handler: SelectedNetworkController['getNetworkClientIdForDomain'];\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 */\nexport type SelectedNetworkControllerGetProviderAndBlockTrackerAction = {\n type: `SelectedNetworkController:getProviderAndBlockTracker`;\n handler: SelectedNetworkController['getProviderAndBlockTracker'];\n};\n\n/**\n * Union of all SelectedNetworkController action types.\n */\nexport type SelectedNetworkControllerMethodActions =\n | SelectedNetworkControllerSetNetworkClientIdForDomainAction\n | SelectedNetworkControllerGetNetworkClientIdForDomainAction\n | SelectedNetworkControllerGetProviderAndBlockTrackerAction;\n"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { BaseController } from
|
|
2
|
-
import type { ControllerGetStateAction, ControllerStateChangeEvent } from
|
|
3
|
-
import type { Messenger } from
|
|
4
|
-
import type { BlockTrackerProxy, NetworkClientId, NetworkControllerGetNetworkClientByIdAction, NetworkControllerGetSelectedNetworkClientAction, NetworkControllerGetStateAction, NetworkControllerStateChangeEvent, ProviderProxy } from
|
|
5
|
-
import type { PermissionControllerStateChange, PermissionControllerGetSubjectNamesAction as PermissionControllerGetSubjectsAction, PermissionControllerHasPermissionsAction as PermissionControllerHasPermissions } from
|
|
6
|
-
import type { SelectedNetworkControllerMethodActions } from
|
|
1
|
+
import { BaseController } from '@metamask/base-controller';
|
|
2
|
+
import type { ControllerGetStateAction, ControllerStateChangeEvent } from '@metamask/base-controller';
|
|
3
|
+
import type { Messenger } from '@metamask/messenger';
|
|
4
|
+
import type { BlockTrackerProxy, NetworkClientId, NetworkControllerGetNetworkClientByIdAction, NetworkControllerGetSelectedNetworkClientAction, NetworkControllerGetStateAction, NetworkControllerStateChangeEvent, ProviderProxy } from '@metamask/network-controller';
|
|
5
|
+
import type { PermissionControllerStateChange, PermissionControllerGetSubjectNamesAction as PermissionControllerGetSubjectsAction, PermissionControllerHasPermissionsAction as PermissionControllerHasPermissions } from '@metamask/permission-controller';
|
|
6
|
+
import type { SelectedNetworkControllerMethodActions } from './SelectedNetworkController-method-action-types.js';
|
|
7
7
|
declare const controllerName = "SelectedNetworkController";
|
|
8
8
|
export type Domain = string;
|
|
9
|
-
export declare const METAMASK_DOMAIN:
|
|
9
|
+
export declare const METAMASK_DOMAIN: 'metamask';
|
|
10
10
|
export declare const SelectedNetworkControllerActionTypes: {
|
|
11
11
|
getState: "SelectedNetworkController:getState";
|
|
12
12
|
getNetworkClientIdForDomain: "SelectedNetworkController:getNetworkClientIdForDomain";
|
|
@@ -63,4 +63,4 @@ export declare class SelectedNetworkController extends BaseController<typeof con
|
|
|
63
63
|
getProviderAndBlockTracker(domain: Domain): NetworkProxy;
|
|
64
64
|
}
|
|
65
65
|
export {};
|
|
66
|
-
//# sourceMappingURL=SelectedNetworkController.d.
|
|
66
|
+
//# sourceMappingURL=SelectedNetworkController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectedNetworkController.d.ts","sourceRoot":"","sources":["../src/SelectedNetworkController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,2CAA2C,EAC3C,+CAA+C,EAC/C,+BAA+B,EAC/B,iCAAiC,EACjC,aAAa,EACd,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EACV,+BAA+B,EAC/B,yCAAyC,IAAI,qCAAqC,EAClF,wCAAwC,IAAI,kCAAkC,EAC/E,MAAM,iCAAiC,CAAC;AAOzC,OAAO,KAAK,EAAE,sCAAsC,EAAE,MAAM,oDAAoD,CAAC;AAEjH,QAAA,MAAM,cAAc,8BAA8B,CAAC;AAmBnD,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC;AAE5B,eAAO,MAAM,eAAe,EAAG,UAAmB,CAAC;AAEnD,eAAO,MAAM,oCAAoC;IAC/C,QAAQ;IACR,2BAA2B;IAE3B,2BAA2B;CAE5B,CAAC;AAEF,eAAO,MAAM,mCAAmC;IAC9C,WAAW;CACZ,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,yCAAyC,GACnD,0BAA0B,CACxB,OAAO,cAAc,EACrB,8BAA8B,CAC/B,CAAC;AAEJ,MAAM,MAAM,uCAAuC,GAAG,wBAAwB,CAC5E,OAAO,cAAc,EACrB,8BAA8B,CAC/B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sDAAsD,GAChE,uCAAuC,CAAC;AAE1C,MAAM,MAAM,gCAAgC,GACxC,uCAAuC,GACvC,sCAAsC,CAAC;AAE3C,KAAK,cAAc,GACf,2CAA2C,GAC3C,+CAA+C,GAC/C,+BAA+B,GAC/B,kCAAkC,GAClC,qCAAqC,CAAC;AAE1C,MAAM,MAAM,+BAA+B,GACzC,yCAAyC,CAAC;AAE5C,KAAK,aAAa,GACd,iCAAiC,GACjC,+BAA+B,CAAC;AAEpC,MAAM,MAAM,kCAAkC,GAAG,SAAS,CACxD,OAAO,cAAc,EACrB,gCAAgC,GAAG,cAAc,EACjD,+BAA+B,GAAG,aAAa,CAChD,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,KAAK,CAAC,EAAE,8BAA8B,CAAC;IACvC,SAAS,EAAE,kCAAkC,CAAC;IAC9C,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,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;;;;;;;OAOG;IACH,YAAY,EACV,SAAS,EACT,KAAyB,EACzB,cAAc,GACf,EAAE,gCAAgC,EA0GlC;IAkDD,2BAA2B,CACzB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,QAejC;IAED,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAK3D;IAED;;;;;OAKG;IACH,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAsCvD;CACF"}
|
|
@@ -1,17 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
-
};
|
|
7
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
-
};
|
|
12
|
-
var _SelectedNetworkController_instances, _SelectedNetworkController_domainProxyMap, _SelectedNetworkController_setNetworkClientIdForDomain, _SelectedNetworkController_unsetNetworkClientIdForDomain, _SelectedNetworkController_domainHasPermissions;
|
|
13
|
-
import { BaseController } from "@metamask/base-controller";
|
|
14
|
-
import { createEventEmitterProxy, createSwappableProxy } from "@metamask/swappable-obj-proxy";
|
|
1
|
+
import { BaseController } from '@metamask/base-controller';
|
|
2
|
+
import { createEventEmitterProxy, createSwappableProxy, } from '@metamask/swappable-obj-proxy';
|
|
15
3
|
const controllerName = 'SelectedNetworkController';
|
|
16
4
|
const MESSENGER_EXPOSED_METHODS = [
|
|
17
5
|
'setNetworkClientIdForDomain',
|
|
@@ -40,6 +28,7 @@ export const SelectedNetworkControllerEventTypes = {
|
|
|
40
28
|
* Controller for getting and setting the network for a particular domain.
|
|
41
29
|
*/
|
|
42
30
|
export class SelectedNetworkController extends BaseController {
|
|
31
|
+
#domainProxyMap;
|
|
43
32
|
/**
|
|
44
33
|
* Construct a SelectedNetworkController controller.
|
|
45
34
|
*
|
|
@@ -55,9 +44,7 @@ export class SelectedNetworkController extends BaseController {
|
|
|
55
44
|
messenger,
|
|
56
45
|
state,
|
|
57
46
|
});
|
|
58
|
-
|
|
59
|
-
_SelectedNetworkController_domainProxyMap.set(this, void 0);
|
|
60
|
-
__classPrivateFieldSet(this, _SelectedNetworkController_domainProxyMap, domainProxyMap, "f");
|
|
47
|
+
this.#domainProxyMap = domainProxyMap;
|
|
61
48
|
this.messenger.registerMethodActionHandlers(this, MESSENGER_EXPOSED_METHODS);
|
|
62
49
|
// this is fetching all the dapp permissions from the PermissionsController and looking for any domains that are not in domains state in this controller. Then we take any missing domains and add them to state here, setting it with the globally selected networkClientId (fetched from the NetworkController)
|
|
63
50
|
this.messenger
|
|
@@ -76,7 +63,7 @@ export class SelectedNetworkController extends BaseController {
|
|
|
76
63
|
}
|
|
77
64
|
else if (op === 'remove' &&
|
|
78
65
|
this.state.domains[domain] !== undefined) {
|
|
79
|
-
|
|
66
|
+
this.#unsetNetworkClientIdForDomain(domain);
|
|
80
67
|
}
|
|
81
68
|
}
|
|
82
69
|
});
|
|
@@ -110,14 +97,48 @@ export class SelectedNetworkController extends BaseController {
|
|
|
110
97
|
}
|
|
111
98
|
});
|
|
112
99
|
}
|
|
100
|
+
#setNetworkClientIdForDomain(domain, networkClientId) {
|
|
101
|
+
const networkClient = this.messenger.call('NetworkController:getNetworkClientById', networkClientId);
|
|
102
|
+
// This needs to happen before getProviderAndBlockTracker,
|
|
103
|
+
// otherwise we may be referencing a network client ID that no longer exists.
|
|
104
|
+
this.update((state) => {
|
|
105
|
+
state.domains[domain] = networkClientId;
|
|
106
|
+
});
|
|
107
|
+
const networkProxy = this.getProviderAndBlockTracker(domain);
|
|
108
|
+
networkProxy.provider.setTarget(networkClient.provider);
|
|
109
|
+
networkProxy.blockTracker.setTarget(networkClient.blockTracker);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* This method is used when a domain is removed from the PermissionsController.
|
|
113
|
+
* It will remove re-point the network proxy to the globally selected network in the domainProxyMap or, if no globally selected network client is available, delete the proxy.
|
|
114
|
+
*
|
|
115
|
+
* @param domain - The domain for which to unset the network client ID.
|
|
116
|
+
*/
|
|
117
|
+
#unsetNetworkClientIdForDomain(domain) {
|
|
118
|
+
const globallySelectedNetworkClient = this.messenger.call('NetworkController:getSelectedNetworkClient');
|
|
119
|
+
const networkProxy = this.#domainProxyMap.get(domain);
|
|
120
|
+
if (networkProxy && globallySelectedNetworkClient) {
|
|
121
|
+
networkProxy.provider.setTarget(globallySelectedNetworkClient.provider);
|
|
122
|
+
networkProxy.blockTracker.setTarget(globallySelectedNetworkClient.blockTracker);
|
|
123
|
+
}
|
|
124
|
+
else if (networkProxy) {
|
|
125
|
+
this.#domainProxyMap.delete(domain);
|
|
126
|
+
}
|
|
127
|
+
this.update((state) => {
|
|
128
|
+
delete state.domains[domain];
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
#domainHasPermissions(domain) {
|
|
132
|
+
return this.messenger.call('PermissionController:hasPermissions', domain);
|
|
133
|
+
}
|
|
113
134
|
setNetworkClientIdForDomain(domain, networkClientId) {
|
|
114
135
|
if (domain === METAMASK_DOMAIN) {
|
|
115
136
|
throw new Error(`NetworkClientId for domain "${METAMASK_DOMAIN}" cannot be set on the SelectedNetworkController`);
|
|
116
137
|
}
|
|
117
|
-
if (!
|
|
138
|
+
if (!this.#domainHasPermissions(domain)) {
|
|
118
139
|
throw new Error('NetworkClientId for domain cannot be called with a domain that has not yet been granted permissions');
|
|
119
140
|
}
|
|
120
|
-
|
|
141
|
+
this.#setNetworkClientIdForDomain(domain, networkClientId);
|
|
121
142
|
}
|
|
122
143
|
getNetworkClientIdForDomain(domain) {
|
|
123
144
|
const { selectedNetworkClientId: metamaskSelectedNetworkClientId } = this.messenger.call('NetworkController:getState');
|
|
@@ -138,10 +159,10 @@ export class SelectedNetworkController extends BaseController {
|
|
|
138
159
|
}
|
|
139
160
|
return networkClient;
|
|
140
161
|
}
|
|
141
|
-
let networkProxy =
|
|
162
|
+
let networkProxy = this.#domainProxyMap.get(domain);
|
|
142
163
|
if (networkProxy === undefined) {
|
|
143
164
|
let networkClient;
|
|
144
|
-
if (
|
|
165
|
+
if (this.#domainHasPermissions(domain)) {
|
|
145
166
|
const networkClientId = this.getNetworkClientIdForDomain(domain);
|
|
146
167
|
networkClient = this.messenger.call('NetworkController:getNetworkClientById', networkClientId);
|
|
147
168
|
}
|
|
@@ -157,35 +178,9 @@ export class SelectedNetworkController extends BaseController {
|
|
|
157
178
|
eventFilter: 'skipInternal',
|
|
158
179
|
}),
|
|
159
180
|
};
|
|
160
|
-
|
|
181
|
+
this.#domainProxyMap.set(domain, networkProxy);
|
|
161
182
|
}
|
|
162
183
|
return networkProxy;
|
|
163
184
|
}
|
|
164
185
|
}
|
|
165
|
-
|
|
166
|
-
const networkClient = this.messenger.call('NetworkController:getNetworkClientById', networkClientId);
|
|
167
|
-
// This needs to happen before getProviderAndBlockTracker,
|
|
168
|
-
// otherwise we may be referencing a network client ID that no longer exists.
|
|
169
|
-
this.update((state) => {
|
|
170
|
-
state.domains[domain] = networkClientId;
|
|
171
|
-
});
|
|
172
|
-
const networkProxy = this.getProviderAndBlockTracker(domain);
|
|
173
|
-
networkProxy.provider.setTarget(networkClient.provider);
|
|
174
|
-
networkProxy.blockTracker.setTarget(networkClient.blockTracker);
|
|
175
|
-
}, _SelectedNetworkController_unsetNetworkClientIdForDomain = function _SelectedNetworkController_unsetNetworkClientIdForDomain(domain) {
|
|
176
|
-
const globallySelectedNetworkClient = this.messenger.call('NetworkController:getSelectedNetworkClient');
|
|
177
|
-
const networkProxy = __classPrivateFieldGet(this, _SelectedNetworkController_domainProxyMap, "f").get(domain);
|
|
178
|
-
if (networkProxy && globallySelectedNetworkClient) {
|
|
179
|
-
networkProxy.provider.setTarget(globallySelectedNetworkClient.provider);
|
|
180
|
-
networkProxy.blockTracker.setTarget(globallySelectedNetworkClient.blockTracker);
|
|
181
|
-
}
|
|
182
|
-
else if (networkProxy) {
|
|
183
|
-
__classPrivateFieldGet(this, _SelectedNetworkController_domainProxyMap, "f").delete(domain);
|
|
184
|
-
}
|
|
185
|
-
this.update((state) => {
|
|
186
|
-
delete state.domains[domain];
|
|
187
|
-
});
|
|
188
|
-
}, _SelectedNetworkController_domainHasPermissions = function _SelectedNetworkController_domainHasPermissions(domain) {
|
|
189
|
-
return this.messenger.call('PermissionController:hasPermissions', domain);
|
|
190
|
-
};
|
|
191
|
-
//# sourceMappingURL=SelectedNetworkController.mjs.map
|
|
186
|
+
//# sourceMappingURL=SelectedNetworkController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectedNetworkController.js","sourceRoot":"","sources":["../src/SelectedNetworkController.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseController } from '@metamask/base-controller';\nimport type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n} from '@metamask/base-controller';\nimport type { Messenger } from '@metamask/messenger';\nimport type {\n BlockTrackerProxy,\n NetworkClientId,\n NetworkControllerGetNetworkClientByIdAction,\n NetworkControllerGetSelectedNetworkClientAction,\n NetworkControllerGetStateAction,\n NetworkControllerStateChangeEvent,\n ProviderProxy,\n} from '@metamask/network-controller';\nimport type {\n PermissionControllerStateChange,\n PermissionControllerGetSubjectNamesAction as PermissionControllerGetSubjectsAction,\n PermissionControllerHasPermissionsAction as PermissionControllerHasPermissions,\n} from '@metamask/permission-controller';\nimport {\n createEventEmitterProxy,\n createSwappableProxy,\n} from '@metamask/swappable-obj-proxy';\nimport type { Hex } from '@metamask/utils';\n\nimport type { SelectedNetworkControllerMethodActions } from './SelectedNetworkController-method-action-types.js';\n\nconst controllerName = 'SelectedNetworkController';\n\nconst MESSENGER_EXPOSED_METHODS = [\n 'setNetworkClientIdForDomain',\n 'getNetworkClientIdForDomain',\n 'getProviderAndBlockTracker',\n] as const;\n\nconst stateMetadata = {\n domains: {\n includeInStateLogs: true,\n persist: true,\n includeInDebugSnapshot: false,\n usedInUi: true,\n },\n};\n\nconst getDefaultState = () => ({ domains: {} });\n\nexport type Domain = string;\n\nexport const 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\nexport type SelectedNetworkControllerStateChangeEvent =\n ControllerStateChangeEvent<\n typeof controllerName,\n SelectedNetworkControllerState\n >;\n\nexport type SelectedNetworkControllerGetStateAction = ControllerGetStateAction<\n typeof controllerName,\n SelectedNetworkControllerState\n>;\n\n/**\n * @deprecated Use `SelectedNetworkControllerGetStateAction` instead.\n */\nexport type SelectedNetworkControllerGetSelectedNetworkStateAction =\n SelectedNetworkControllerGetStateAction;\n\nexport type SelectedNetworkControllerActions =\n | SelectedNetworkControllerGetStateAction\n | SelectedNetworkControllerMethodActions;\n\ntype AllowedActions =\n | NetworkControllerGetNetworkClientByIdAction\n | NetworkControllerGetSelectedNetworkClientAction\n | NetworkControllerGetStateAction\n | PermissionControllerHasPermissions\n | PermissionControllerGetSubjectsAction;\n\nexport type SelectedNetworkControllerEvents =\n SelectedNetworkControllerStateChangeEvent;\n\ntype AllowedEvents =\n | NetworkControllerStateChangeEvent\n | PermissionControllerStateChange;\n\nexport type SelectedNetworkControllerMessenger = Messenger<\n typeof controllerName,\n SelectedNetworkControllerActions | AllowedActions,\n SelectedNetworkControllerEvents | AllowedEvents\n>;\n\nexport type SelectedNetworkControllerOptions = {\n state?: SelectedNetworkControllerState;\n messenger: SelectedNetworkControllerMessenger;\n domainProxyMap: Map<Domain, NetworkProxy>;\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 readonly #domainProxyMap: Map<Domain, NetworkProxy>;\n\n /**\n * Construct a SelectedNetworkController controller.\n *\n * @param options - The controller options.\n * @param options.messenger - The messenger for the SelectedNetworkController controller.\n * @param options.state - The controllers initial state.\n * @param options.domainProxyMap - A map for storing domain-specific proxies that are held in memory only during use.\n */\n constructor({\n messenger,\n state = getDefaultState(),\n domainProxyMap,\n }: SelectedNetworkControllerOptions) {\n super({\n name: controllerName,\n metadata: stateMetadata,\n messenger,\n state,\n });\n this.#domainProxyMap = domainProxyMap;\n this.messenger.registerMethodActionHandlers(\n this,\n MESSENGER_EXPOSED_METHODS,\n );\n\n // this is fetching all the dapp permissions from the PermissionsController and looking for any domains that are not in domains state in this controller. Then we take any missing domains and add them to state here, setting it with the globally selected networkClientId (fetched from the NetworkController)\n this.messenger\n .call('PermissionController:getSubjectNames')\n .filter((domain) => this.state.domains[domain] === undefined)\n .forEach((domain) =>\n this.setNetworkClientIdForDomain(\n domain,\n this.messenger.call('NetworkController:getState')\n .selectedNetworkClientId,\n ),\n );\n\n this.messenger.subscribe(\n 'PermissionController:stateChange',\n (_, patches) => {\n patches.forEach(({ op, path }) => {\n const isChangingSubject =\n path[0] === 'subjects' && path[1] !== undefined;\n if (isChangingSubject && typeof path[1] === 'string') {\n const domain = path[1];\n if (op === 'add' && this.state.domains[domain] === undefined) {\n this.setNetworkClientIdForDomain(\n domain,\n this.messenger.call('NetworkController:getState')\n .selectedNetworkClientId,\n );\n } else if (\n op === 'remove' &&\n this.state.domains[domain] !== undefined\n ) {\n this.#unsetNetworkClientIdForDomain(domain);\n }\n }\n });\n },\n );\n\n this.messenger.subscribe(\n 'NetworkController:stateChange',\n (\n { selectedNetworkClientId, networkConfigurationsByChainId },\n patches,\n ) => {\n const patch = patches.find(\n ({ op, path }) =>\n (op === 'replace' || op === 'remove') &&\n path[0] === 'networkConfigurationsByChainId',\n );\n\n if (patch) {\n const networkClientIdToChainId = Object.values(\n networkConfigurationsByChainId,\n ).reduce<Record<string, Hex>>((acc, network) => {\n network.rpcEndpoints.forEach(\n ({ networkClientId }) => (acc[networkClientId] = network.chainId),\n );\n return acc;\n }, {});\n\n Object.entries(this.state.domains).forEach(\n ([domain, networkClientIdForDomain]) => {\n const chainIdForDomain =\n networkClientIdToChainId[networkClientIdForDomain];\n\n if (patch.op === 'remove' && !chainIdForDomain) {\n // If the network was removed, fall back to the globally selected network\n this.setNetworkClientIdForDomain(\n domain,\n selectedNetworkClientId,\n );\n } else if (patch.op === 'replace') {\n // If the network was updated, redirect to the network's default endpoint\n const updatedChainId = patch.path[1] as Hex;\n if (!chainIdForDomain || chainIdForDomain === updatedChainId) {\n const network =\n networkConfigurationsByChainId[updatedChainId];\n\n const { networkClientId: defaultNetworkClientId } =\n network.rpcEndpoints[network.defaultRpcEndpointIndex];\n\n if (networkClientIdForDomain !== defaultNetworkClientId) {\n this.setNetworkClientIdForDomain(\n domain,\n defaultNetworkClientId,\n );\n }\n }\n }\n },\n );\n }\n },\n );\n }\n\n #setNetworkClientIdForDomain(\n domain: Domain,\n networkClientId: NetworkClientId,\n ) {\n const networkClient = this.messenger.call(\n 'NetworkController:getNetworkClientById',\n networkClientId,\n );\n\n // This needs to happen before getProviderAndBlockTracker,\n // otherwise we may be referencing a network client ID that no longer exists.\n this.update((state) => {\n state.domains[domain] = networkClientId;\n });\n\n const networkProxy = this.getProviderAndBlockTracker(domain);\n networkProxy.provider.setTarget(networkClient.provider);\n networkProxy.blockTracker.setTarget(networkClient.blockTracker);\n }\n\n /**\n * This method is used when a domain is removed from the PermissionsController.\n * It will remove re-point the network proxy to the globally selected network in the domainProxyMap or, if no globally selected network client is available, delete the proxy.\n *\n * @param domain - The domain for which to unset the network client ID.\n */\n #unsetNetworkClientIdForDomain(domain: Domain) {\n const globallySelectedNetworkClient = this.messenger.call(\n 'NetworkController:getSelectedNetworkClient',\n );\n const networkProxy = this.#domainProxyMap.get(domain);\n if (networkProxy && globallySelectedNetworkClient) {\n networkProxy.provider.setTarget(globallySelectedNetworkClient.provider);\n networkProxy.blockTracker.setTarget(\n globallySelectedNetworkClient.blockTracker,\n );\n } else if (networkProxy) {\n this.#domainProxyMap.delete(domain);\n }\n this.update((state) => {\n delete state.domains[domain];\n });\n }\n\n #domainHasPermissions(domain: Domain): boolean {\n return this.messenger.call('PermissionController:hasPermissions', domain);\n }\n\n setNetworkClientIdForDomain(\n domain: Domain,\n networkClientId: NetworkClientId,\n ) {\n if (domain === METAMASK_DOMAIN) {\n throw new Error(\n `NetworkClientId for domain \"${METAMASK_DOMAIN}\" cannot be set on the SelectedNetworkController`,\n );\n }\n\n if (!this.#domainHasPermissions(domain)) {\n throw new Error(\n 'NetworkClientId for domain cannot be called with a domain that has not yet been granted permissions',\n );\n }\n\n this.#setNetworkClientIdForDomain(domain, networkClientId);\n }\n\n getNetworkClientIdForDomain(domain: Domain): NetworkClientId {\n const { selectedNetworkClientId: metamaskSelectedNetworkClientId } =\n this.messenger.call('NetworkController:getState');\n\n return this.state.domains[domain] ?? metamaskSelectedNetworkClientId;\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 // If the domain is 'metamask', return the NetworkController's globally selected network client proxy\n if (domain === METAMASK_DOMAIN) {\n const networkClient = this.messenger.call(\n 'NetworkController:getSelectedNetworkClient',\n );\n if (networkClient === undefined) {\n throw new Error('Selected network not initialized');\n }\n return networkClient;\n }\n\n let networkProxy = this.#domainProxyMap.get(domain);\n if (networkProxy === undefined) {\n let networkClient;\n if (this.#domainHasPermissions(domain)) {\n const networkClientId = this.getNetworkClientIdForDomain(domain);\n networkClient = this.messenger.call(\n 'NetworkController:getNetworkClientById',\n networkClientId,\n );\n } else {\n networkClient = this.messenger.call(\n 'NetworkController:getSelectedNetworkClient',\n );\n if (networkClient === undefined) {\n throw new Error('Selected network not initialized');\n }\n }\n networkProxy = {\n provider: createSwappableProxy(networkClient.provider),\n blockTracker: createEventEmitterProxy(networkClient.blockTracker, {\n eventFilter: 'skipInternal',\n }),\n };\n this.#domainProxyMap.set(domain, networkProxy);\n }\n return networkProxy;\n }\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine';
|
|
2
|
+
import type { NetworkClientId } from '@metamask/network-controller';
|
|
3
|
+
import type { Json, JsonRpcParams, JsonRpcRequest } from '@metamask/utils';
|
|
4
|
+
import type { SelectedNetworkControllerMessenger } from './SelectedNetworkController.js';
|
|
5
|
+
export type SelectedNetworkMiddlewareJsonRpcRequest = JsonRpcRequest & {
|
|
6
|
+
networkClientId?: NetworkClientId;
|
|
7
|
+
origin?: string;
|
|
8
|
+
};
|
|
9
|
+
export declare const createSelectedNetworkMiddleware: (messenger: SelectedNetworkControllerMessenger) => JsonRpcMiddleware<JsonRpcParams, Json>;
|
|
10
|
+
//# sourceMappingURL=SelectedNetworkMiddleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectedNetworkMiddleware.d.ts","sourceRoot":"","sources":["../src/SelectedNetworkMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE3E,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,gCAAgC,CAAC;AAGzF,MAAM,MAAM,uCAAuC,GAAG,cAAc,GAAG;IACrE,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,+BAA+B,cAC/B,kCAAkC,KAC5C,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAevC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SelectedNetworkControllerActionTypes } from
|
|
1
|
+
import { SelectedNetworkControllerActionTypes } from './SelectedNetworkController.js';
|
|
2
2
|
export const createSelectedNetworkMiddleware = (messenger) => {
|
|
3
3
|
const getNetworkClientIdForDomain = (origin) => messenger.call(SelectedNetworkControllerActionTypes.getNetworkClientIdForDomain, origin);
|
|
4
4
|
return (req, _, next) => {
|
|
@@ -9,4 +9,4 @@ export const createSelectedNetworkMiddleware = (messenger) => {
|
|
|
9
9
|
return next();
|
|
10
10
|
};
|
|
11
11
|
};
|
|
12
|
-
//# sourceMappingURL=SelectedNetworkMiddleware.
|
|
12
|
+
//# sourceMappingURL=SelectedNetworkMiddleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectedNetworkMiddleware.js","sourceRoot":"","sources":["../src/SelectedNetworkMiddleware.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oCAAoC,EAAE,MAAM,gCAAgC,CAAC;AAOtF,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAC7C,SAA6C,EACL,EAAE;IAC1C,MAAM,2BAA2B,GAAG,CAAC,MAAc,EAAE,EAAE,CACrD,SAAS,CAAC,IAAI,CACZ,oCAAoC,CAAC,2BAA2B,EAChE,MAAM,CACP,CAAC;IAEJ,OAAO,CAAC,GAA4C,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QAC/D,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QAED,GAAG,CAAC,eAAe,GAAG,2BAA2B,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9D,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine';\nimport type { NetworkClientId } from '@metamask/network-controller';\nimport type { Json, JsonRpcParams, JsonRpcRequest } from '@metamask/utils';\n\nimport type { SelectedNetworkControllerMessenger } from './SelectedNetworkController.js';\nimport { SelectedNetworkControllerActionTypes } from './SelectedNetworkController.js';\n\nexport type SelectedNetworkMiddlewareJsonRpcRequest = JsonRpcRequest & {\n networkClientId?: NetworkClientId;\n origin?: string;\n};\n\nexport const createSelectedNetworkMiddleware = (\n messenger: SelectedNetworkControllerMessenger,\n): JsonRpcMiddleware<JsonRpcParams, Json> => {\n const getNetworkClientIdForDomain = (origin: string) =>\n messenger.call(\n SelectedNetworkControllerActionTypes.getNetworkClientIdForDomain,\n origin,\n );\n\n return (req: SelectedNetworkMiddlewareJsonRpcRequest, _, next) => {\n if (!req.origin) {\n throw new Error(\"Request object is lacking an 'origin'\");\n }\n\n req.networkClientId = getNetworkClientIdForDomain(req.origin);\n return next();\n };\n};\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export type { SelectedNetworkControllerState, SelectedNetworkControllerStateChangeEvent, SelectedNetworkControllerGetStateAction, SelectedNetworkControllerGetSelectedNetworkStateAction, SelectedNetworkControllerActions, SelectedNetworkControllerEvents, SelectedNetworkControllerMessenger, SelectedNetworkControllerOptions, NetworkProxy, Domain, } from
|
|
2
|
-
export { SelectedNetworkControllerActionTypes, SelectedNetworkControllerEventTypes, SelectedNetworkController, METAMASK_DOMAIN, } from
|
|
3
|
-
export type { SelectedNetworkControllerSetNetworkClientIdForDomainAction, SelectedNetworkControllerGetNetworkClientIdForDomainAction, SelectedNetworkControllerGetProviderAndBlockTrackerAction, } from
|
|
4
|
-
export type { SelectedNetworkMiddlewareJsonRpcRequest } from
|
|
5
|
-
export { createSelectedNetworkMiddleware } from
|
|
6
|
-
//# sourceMappingURL=index.d.
|
|
1
|
+
export type { SelectedNetworkControllerState, SelectedNetworkControllerStateChangeEvent, SelectedNetworkControllerGetStateAction, SelectedNetworkControllerGetSelectedNetworkStateAction, SelectedNetworkControllerActions, SelectedNetworkControllerEvents, SelectedNetworkControllerMessenger, SelectedNetworkControllerOptions, NetworkProxy, Domain, } from './SelectedNetworkController.js';
|
|
2
|
+
export { SelectedNetworkControllerActionTypes, SelectedNetworkControllerEventTypes, SelectedNetworkController, METAMASK_DOMAIN, } from './SelectedNetworkController.js';
|
|
3
|
+
export type { SelectedNetworkControllerSetNetworkClientIdForDomainAction, SelectedNetworkControllerGetNetworkClientIdForDomainAction, SelectedNetworkControllerGetProviderAndBlockTrackerAction, } from './SelectedNetworkController-method-action-types.js';
|
|
4
|
+
export type { SelectedNetworkMiddlewareJsonRpcRequest } from './SelectedNetworkMiddleware.js';
|
|
5
|
+
export { createSelectedNetworkMiddleware } from './SelectedNetworkMiddleware.js';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,8BAA8B,EAC9B,yCAAyC,EACzC,uCAAuC,EACvC,sDAAsD,EACtD,gCAAgC,EAChC,+BAA+B,EAC/B,kCAAkC,EAClC,gCAAgC,EAChC,YAAY,EACZ,MAAM,GACP,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,oCAAoC,EACpC,mCAAmC,EACnC,yBAAyB,EACzB,eAAe,GAChB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EACV,0DAA0D,EAC1D,0DAA0D,EAC1D,yDAAyD,GAC1D,MAAM,oDAAoD,CAAC;AAC5D,YAAY,EAAE,uCAAuC,EAAE,MAAM,gCAAgC,CAAC;AAC9F,OAAO,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { SelectedNetworkControllerActionTypes, SelectedNetworkControllerEventTypes, SelectedNetworkController, METAMASK_DOMAIN, } from './SelectedNetworkController.js';
|
|
2
|
+
export { createSelectedNetworkMiddleware } from './SelectedNetworkMiddleware.js';
|
|
3
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,oCAAoC,EACpC,mCAAmC,EACnC,yBAAyB,EACzB,eAAe,GAChB,MAAM,gCAAgC,CAAC;AAOxC,OAAO,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC","sourcesContent":["export type {\n SelectedNetworkControllerState,\n SelectedNetworkControllerStateChangeEvent,\n SelectedNetworkControllerGetStateAction,\n SelectedNetworkControllerGetSelectedNetworkStateAction,\n SelectedNetworkControllerActions,\n SelectedNetworkControllerEvents,\n SelectedNetworkControllerMessenger,\n SelectedNetworkControllerOptions,\n NetworkProxy,\n Domain,\n} from './SelectedNetworkController.js';\nexport {\n SelectedNetworkControllerActionTypes,\n SelectedNetworkControllerEventTypes,\n SelectedNetworkController,\n METAMASK_DOMAIN,\n} from './SelectedNetworkController.js';\nexport type {\n SelectedNetworkControllerSetNetworkClientIdForDomainAction,\n SelectedNetworkControllerGetNetworkClientIdForDomainAction,\n SelectedNetworkControllerGetProviderAndBlockTrackerAction,\n} from './SelectedNetworkController-method-action-types.js';\nexport type { SelectedNetworkMiddlewareJsonRpcRequest } from './SelectedNetworkMiddleware.js';\nexport { createSelectedNetworkMiddleware } from './SelectedNetworkMiddleware.js';\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metamask-previews/selected-network-controller",
|
|
3
|
-
"version": "26.1.7-preview-
|
|
3
|
+
"version": "26.1.7-preview-3866c0ff1",
|
|
4
4
|
"description": "Provides an interface to the currently selected networkClientId for a given domain",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Ethereum",
|
|
@@ -18,19 +18,12 @@
|
|
|
18
18
|
"files": [
|
|
19
19
|
"dist/"
|
|
20
20
|
],
|
|
21
|
+
"type": "module",
|
|
21
22
|
"sideEffects": false,
|
|
22
|
-
"main": "./dist/index.cjs",
|
|
23
|
-
"types": "./dist/index.d.cts",
|
|
24
23
|
"exports": {
|
|
25
24
|
".": {
|
|
26
|
-
"
|
|
27
|
-
|
|
28
|
-
"default": "./dist/index.mjs"
|
|
29
|
-
},
|
|
30
|
-
"require": {
|
|
31
|
-
"types": "./dist/index.d.cts",
|
|
32
|
-
"default": "./dist/index.cjs"
|
|
33
|
-
}
|
|
25
|
+
"types": "./dist/index.d.ts",
|
|
26
|
+
"default": "./dist/index.js"
|
|
34
27
|
},
|
|
35
28
|
"./package.json": "./package.json"
|
|
36
29
|
},
|
|
@@ -39,9 +32,11 @@
|
|
|
39
32
|
"registry": "https://registry.npmjs.org/"
|
|
40
33
|
},
|
|
41
34
|
"scripts": {
|
|
42
|
-
"build": "
|
|
43
|
-
"build:all": "
|
|
35
|
+
"build": "tsc --project tsconfig.build.json",
|
|
36
|
+
"build:all": "tsc --build tsconfig.build.json --verbose",
|
|
37
|
+
"build:clean": "yarn build:only-clean && yarn build",
|
|
44
38
|
"build:docs": "typedoc",
|
|
39
|
+
"build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'",
|
|
45
40
|
"changelog:update": "../../scripts/update-changelog.sh @metamask/selected-network-controller",
|
|
46
41
|
"changelog:validate": "../../scripts/validate-changelog.sh @metamask/selected-network-controller",
|
|
47
42
|
"lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts",
|
|
@@ -65,21 +60,22 @@
|
|
|
65
60
|
},
|
|
66
61
|
"devDependencies": {
|
|
67
62
|
"@metamask/auto-changelog": "^6.1.0",
|
|
68
|
-
"@ts-bridge/cli": "^0.6.4",
|
|
69
63
|
"@types/jest": "^30.0.0",
|
|
64
|
+
"@typescript/native": "npm:typescript@^7.0.2",
|
|
70
65
|
"deepmerge": "^4.2.2",
|
|
71
66
|
"immer": "^9.0.6",
|
|
72
67
|
"jest": "^30.4.2",
|
|
73
68
|
"jest-environment-jsdom": "^30.4.1",
|
|
74
|
-
"lodash": "^4.17.21",
|
|
69
|
+
"lodash-es": "^4.17.21",
|
|
75
70
|
"nock": "^13.3.1",
|
|
71
|
+
"rimraf": "^5.0.5",
|
|
76
72
|
"ts-jest": "^29.4.11",
|
|
77
73
|
"tsx": "^4.20.5",
|
|
78
74
|
"typedoc": "^0.25.13",
|
|
79
75
|
"typedoc-plugin-missing-exports": "^2.0.0",
|
|
80
|
-
"typescript": "
|
|
76
|
+
"typescript": "npm:@typescript/typescript6@^6.0.2"
|
|
81
77
|
},
|
|
82
78
|
"engines": {
|
|
83
|
-
"node": "^
|
|
79
|
+
"node": "^22.14.0 || ^24"
|
|
84
80
|
}
|
|
85
81
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectedNetworkController-method-action-types.cjs","sourceRoot":"","sources":["../src/SelectedNetworkController-method-action-types.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/**\n * This file is auto generated.\n * Do not edit manually.\n */\n\nimport type { SelectedNetworkController } from './SelectedNetworkController.js';\n\nexport type SelectedNetworkControllerSetNetworkClientIdForDomainAction = {\n type: `SelectedNetworkController:setNetworkClientIdForDomain`;\n handler: SelectedNetworkController['setNetworkClientIdForDomain'];\n};\n\nexport type SelectedNetworkControllerGetNetworkClientIdForDomainAction = {\n type: `SelectedNetworkController:getNetworkClientIdForDomain`;\n handler: SelectedNetworkController['getNetworkClientIdForDomain'];\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 */\nexport type SelectedNetworkControllerGetProviderAndBlockTrackerAction = {\n type: `SelectedNetworkController:getProviderAndBlockTracker`;\n handler: SelectedNetworkController['getProviderAndBlockTracker'];\n};\n\n/**\n * Union of all SelectedNetworkController action types.\n */\nexport type SelectedNetworkControllerMethodActions =\n | SelectedNetworkControllerSetNetworkClientIdForDomainAction\n | SelectedNetworkControllerGetNetworkClientIdForDomainAction\n | SelectedNetworkControllerGetProviderAndBlockTrackerAction;\n"]}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This file is auto generated.
|
|
3
|
-
* Do not edit manually.
|
|
4
|
-
*/
|
|
5
|
-
import type { SelectedNetworkController } from "./SelectedNetworkController.cjs";
|
|
6
|
-
export type SelectedNetworkControllerSetNetworkClientIdForDomainAction = {
|
|
7
|
-
type: `SelectedNetworkController:setNetworkClientIdForDomain`;
|
|
8
|
-
handler: SelectedNetworkController['setNetworkClientIdForDomain'];
|
|
9
|
-
};
|
|
10
|
-
export type SelectedNetworkControllerGetNetworkClientIdForDomainAction = {
|
|
11
|
-
type: `SelectedNetworkController:getNetworkClientIdForDomain`;
|
|
12
|
-
handler: SelectedNetworkController['getNetworkClientIdForDomain'];
|
|
13
|
-
};
|
|
14
|
-
/**
|
|
15
|
-
* Accesses the provider and block tracker for the currently selected network.
|
|
16
|
-
*
|
|
17
|
-
* @param domain - the domain for the provider
|
|
18
|
-
* @returns The proxy and block tracker proxies.
|
|
19
|
-
*/
|
|
20
|
-
export type SelectedNetworkControllerGetProviderAndBlockTrackerAction = {
|
|
21
|
-
type: `SelectedNetworkController:getProviderAndBlockTracker`;
|
|
22
|
-
handler: SelectedNetworkController['getProviderAndBlockTracker'];
|
|
23
|
-
};
|
|
24
|
-
/**
|
|
25
|
-
* Union of all SelectedNetworkController action types.
|
|
26
|
-
*/
|
|
27
|
-
export type SelectedNetworkControllerMethodActions = SelectedNetworkControllerSetNetworkClientIdForDomainAction | SelectedNetworkControllerGetNetworkClientIdForDomainAction | SelectedNetworkControllerGetProviderAndBlockTrackerAction;
|
|
28
|
-
//# sourceMappingURL=SelectedNetworkController-method-action-types.d.cts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectedNetworkController-method-action-types.d.cts","sourceRoot":"","sources":["../src/SelectedNetworkController-method-action-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,yBAAyB,EAAE,wCAAuC;AAEhF,MAAM,MAAM,0DAA0D,GAAG;IACvE,IAAI,EAAE,uDAAuD,CAAC;IAC9D,OAAO,EAAE,yBAAyB,CAAC,6BAA6B,CAAC,CAAC;CACnE,CAAC;AAEF,MAAM,MAAM,0DAA0D,GAAG;IACvE,IAAI,EAAE,uDAAuD,CAAC;IAC9D,OAAO,EAAE,yBAAyB,CAAC,6BAA6B,CAAC,CAAC;CACnE,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,yDAAyD,GAAG;IACtE,IAAI,EAAE,sDAAsD,CAAC;IAC7D,OAAO,EAAE,yBAAyB,CAAC,4BAA4B,CAAC,CAAC;CAClE,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sCAAsC,GAC9C,0DAA0D,GAC1D,0DAA0D,GAC1D,yDAAyD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectedNetworkController-method-action-types.d.mts","sourceRoot":"","sources":["../src/SelectedNetworkController-method-action-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,yBAAyB,EAAE,wCAAuC;AAEhF,MAAM,MAAM,0DAA0D,GAAG;IACvE,IAAI,EAAE,uDAAuD,CAAC;IAC9D,OAAO,EAAE,yBAAyB,CAAC,6BAA6B,CAAC,CAAC;CACnE,CAAC;AAEF,MAAM,MAAM,0DAA0D,GAAG;IACvE,IAAI,EAAE,uDAAuD,CAAC;IAC9D,OAAO,EAAE,yBAAyB,CAAC,6BAA6B,CAAC,CAAC;CACnE,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,yDAAyD,GAAG;IACtE,IAAI,EAAE,sDAAsD,CAAC;IAC7D,OAAO,EAAE,yBAAyB,CAAC,4BAA4B,CAAC,CAAC;CAClE,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sCAAsC,GAC9C,0DAA0D,GAC1D,0DAA0D,GAC1D,yDAAyD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectedNetworkController-method-action-types.mjs","sourceRoot":"","sources":["../src/SelectedNetworkController-method-action-types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * This file is auto generated.\n * Do not edit manually.\n */\n\nimport type { SelectedNetworkController } from './SelectedNetworkController.js';\n\nexport type SelectedNetworkControllerSetNetworkClientIdForDomainAction = {\n type: `SelectedNetworkController:setNetworkClientIdForDomain`;\n handler: SelectedNetworkController['setNetworkClientIdForDomain'];\n};\n\nexport type SelectedNetworkControllerGetNetworkClientIdForDomainAction = {\n type: `SelectedNetworkController:getNetworkClientIdForDomain`;\n handler: SelectedNetworkController['getNetworkClientIdForDomain'];\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 */\nexport type SelectedNetworkControllerGetProviderAndBlockTrackerAction = {\n type: `SelectedNetworkController:getProviderAndBlockTracker`;\n handler: SelectedNetworkController['getProviderAndBlockTracker'];\n};\n\n/**\n * Union of all SelectedNetworkController action types.\n */\nexport type SelectedNetworkControllerMethodActions =\n | SelectedNetworkControllerSetNetworkClientIdForDomainAction\n | SelectedNetworkControllerGetNetworkClientIdForDomainAction\n | SelectedNetworkControllerGetProviderAndBlockTrackerAction;\n"]}
|
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
|
-
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
6
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
7
|
-
};
|
|
8
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
10
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
|
-
};
|
|
13
|
-
var _SelectedNetworkController_instances, _SelectedNetworkController_domainProxyMap, _SelectedNetworkController_setNetworkClientIdForDomain, _SelectedNetworkController_unsetNetworkClientIdForDomain, _SelectedNetworkController_domainHasPermissions;
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.SelectedNetworkController = exports.SelectedNetworkControllerEventTypes = exports.SelectedNetworkControllerActionTypes = exports.METAMASK_DOMAIN = void 0;
|
|
16
|
-
const base_controller_1 = require("@metamask/base-controller");
|
|
17
|
-
const swappable_obj_proxy_1 = require("@metamask/swappable-obj-proxy");
|
|
18
|
-
const controllerName = 'SelectedNetworkController';
|
|
19
|
-
const MESSENGER_EXPOSED_METHODS = [
|
|
20
|
-
'setNetworkClientIdForDomain',
|
|
21
|
-
'getNetworkClientIdForDomain',
|
|
22
|
-
'getProviderAndBlockTracker',
|
|
23
|
-
];
|
|
24
|
-
const stateMetadata = {
|
|
25
|
-
domains: {
|
|
26
|
-
includeInStateLogs: true,
|
|
27
|
-
persist: true,
|
|
28
|
-
includeInDebugSnapshot: false,
|
|
29
|
-
usedInUi: true,
|
|
30
|
-
},
|
|
31
|
-
};
|
|
32
|
-
const getDefaultState = () => ({ domains: {} });
|
|
33
|
-
exports.METAMASK_DOMAIN = 'metamask';
|
|
34
|
-
exports.SelectedNetworkControllerActionTypes = {
|
|
35
|
-
getState: `${controllerName}:getState`,
|
|
36
|
-
getNetworkClientIdForDomain: `${controllerName}:getNetworkClientIdForDomain`,
|
|
37
|
-
setNetworkClientIdForDomain: `${controllerName}:setNetworkClientIdForDomain`,
|
|
38
|
-
};
|
|
39
|
-
exports.SelectedNetworkControllerEventTypes = {
|
|
40
|
-
stateChange: `${controllerName}:stateChange`,
|
|
41
|
-
};
|
|
42
|
-
/**
|
|
43
|
-
* Controller for getting and setting the network for a particular domain.
|
|
44
|
-
*/
|
|
45
|
-
class SelectedNetworkController extends base_controller_1.BaseController {
|
|
46
|
-
/**
|
|
47
|
-
* Construct a SelectedNetworkController controller.
|
|
48
|
-
*
|
|
49
|
-
* @param options - The controller options.
|
|
50
|
-
* @param options.messenger - The messenger for the SelectedNetworkController controller.
|
|
51
|
-
* @param options.state - The controllers initial state.
|
|
52
|
-
* @param options.domainProxyMap - A map for storing domain-specific proxies that are held in memory only during use.
|
|
53
|
-
*/
|
|
54
|
-
constructor({ messenger, state = getDefaultState(), domainProxyMap, }) {
|
|
55
|
-
super({
|
|
56
|
-
name: controllerName,
|
|
57
|
-
metadata: stateMetadata,
|
|
58
|
-
messenger,
|
|
59
|
-
state,
|
|
60
|
-
});
|
|
61
|
-
_SelectedNetworkController_instances.add(this);
|
|
62
|
-
_SelectedNetworkController_domainProxyMap.set(this, void 0);
|
|
63
|
-
__classPrivateFieldSet(this, _SelectedNetworkController_domainProxyMap, domainProxyMap, "f");
|
|
64
|
-
this.messenger.registerMethodActionHandlers(this, MESSENGER_EXPOSED_METHODS);
|
|
65
|
-
// this is fetching all the dapp permissions from the PermissionsController and looking for any domains that are not in domains state in this controller. Then we take any missing domains and add them to state here, setting it with the globally selected networkClientId (fetched from the NetworkController)
|
|
66
|
-
this.messenger
|
|
67
|
-
.call('PermissionController:getSubjectNames')
|
|
68
|
-
.filter((domain) => this.state.domains[domain] === undefined)
|
|
69
|
-
.forEach((domain) => this.setNetworkClientIdForDomain(domain, this.messenger.call('NetworkController:getState')
|
|
70
|
-
.selectedNetworkClientId));
|
|
71
|
-
this.messenger.subscribe('PermissionController:stateChange', (_, patches) => {
|
|
72
|
-
patches.forEach(({ op, path }) => {
|
|
73
|
-
const isChangingSubject = path[0] === 'subjects' && path[1] !== undefined;
|
|
74
|
-
if (isChangingSubject && typeof path[1] === 'string') {
|
|
75
|
-
const domain = path[1];
|
|
76
|
-
if (op === 'add' && this.state.domains[domain] === undefined) {
|
|
77
|
-
this.setNetworkClientIdForDomain(domain, this.messenger.call('NetworkController:getState')
|
|
78
|
-
.selectedNetworkClientId);
|
|
79
|
-
}
|
|
80
|
-
else if (op === 'remove' &&
|
|
81
|
-
this.state.domains[domain] !== undefined) {
|
|
82
|
-
__classPrivateFieldGet(this, _SelectedNetworkController_instances, "m", _SelectedNetworkController_unsetNetworkClientIdForDomain).call(this, domain);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
this.messenger.subscribe('NetworkController:stateChange', ({ selectedNetworkClientId, networkConfigurationsByChainId }, patches) => {
|
|
88
|
-
const patch = patches.find(({ op, path }) => (op === 'replace' || op === 'remove') &&
|
|
89
|
-
path[0] === 'networkConfigurationsByChainId');
|
|
90
|
-
if (patch) {
|
|
91
|
-
const networkClientIdToChainId = Object.values(networkConfigurationsByChainId).reduce((acc, network) => {
|
|
92
|
-
network.rpcEndpoints.forEach(({ networkClientId }) => (acc[networkClientId] = network.chainId));
|
|
93
|
-
return acc;
|
|
94
|
-
}, {});
|
|
95
|
-
Object.entries(this.state.domains).forEach(([domain, networkClientIdForDomain]) => {
|
|
96
|
-
const chainIdForDomain = networkClientIdToChainId[networkClientIdForDomain];
|
|
97
|
-
if (patch.op === 'remove' && !chainIdForDomain) {
|
|
98
|
-
// If the network was removed, fall back to the globally selected network
|
|
99
|
-
this.setNetworkClientIdForDomain(domain, selectedNetworkClientId);
|
|
100
|
-
}
|
|
101
|
-
else if (patch.op === 'replace') {
|
|
102
|
-
// If the network was updated, redirect to the network's default endpoint
|
|
103
|
-
const updatedChainId = patch.path[1];
|
|
104
|
-
if (!chainIdForDomain || chainIdForDomain === updatedChainId) {
|
|
105
|
-
const network = networkConfigurationsByChainId[updatedChainId];
|
|
106
|
-
const { networkClientId: defaultNetworkClientId } = network.rpcEndpoints[network.defaultRpcEndpointIndex];
|
|
107
|
-
if (networkClientIdForDomain !== defaultNetworkClientId) {
|
|
108
|
-
this.setNetworkClientIdForDomain(domain, defaultNetworkClientId);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
setNetworkClientIdForDomain(domain, networkClientId) {
|
|
117
|
-
if (domain === exports.METAMASK_DOMAIN) {
|
|
118
|
-
throw new Error(`NetworkClientId for domain "${exports.METAMASK_DOMAIN}" cannot be set on the SelectedNetworkController`);
|
|
119
|
-
}
|
|
120
|
-
if (!__classPrivateFieldGet(this, _SelectedNetworkController_instances, "m", _SelectedNetworkController_domainHasPermissions).call(this, domain)) {
|
|
121
|
-
throw new Error('NetworkClientId for domain cannot be called with a domain that has not yet been granted permissions');
|
|
122
|
-
}
|
|
123
|
-
__classPrivateFieldGet(this, _SelectedNetworkController_instances, "m", _SelectedNetworkController_setNetworkClientIdForDomain).call(this, domain, networkClientId);
|
|
124
|
-
}
|
|
125
|
-
getNetworkClientIdForDomain(domain) {
|
|
126
|
-
const { selectedNetworkClientId: metamaskSelectedNetworkClientId } = this.messenger.call('NetworkController:getState');
|
|
127
|
-
return this.state.domains[domain] ?? metamaskSelectedNetworkClientId;
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Accesses the provider and block tracker for the currently selected network.
|
|
131
|
-
*
|
|
132
|
-
* @param domain - the domain for the provider
|
|
133
|
-
* @returns The proxy and block tracker proxies.
|
|
134
|
-
*/
|
|
135
|
-
getProviderAndBlockTracker(domain) {
|
|
136
|
-
// If the domain is 'metamask', return the NetworkController's globally selected network client proxy
|
|
137
|
-
if (domain === exports.METAMASK_DOMAIN) {
|
|
138
|
-
const networkClient = this.messenger.call('NetworkController:getSelectedNetworkClient');
|
|
139
|
-
if (networkClient === undefined) {
|
|
140
|
-
throw new Error('Selected network not initialized');
|
|
141
|
-
}
|
|
142
|
-
return networkClient;
|
|
143
|
-
}
|
|
144
|
-
let networkProxy = __classPrivateFieldGet(this, _SelectedNetworkController_domainProxyMap, "f").get(domain);
|
|
145
|
-
if (networkProxy === undefined) {
|
|
146
|
-
let networkClient;
|
|
147
|
-
if (__classPrivateFieldGet(this, _SelectedNetworkController_instances, "m", _SelectedNetworkController_domainHasPermissions).call(this, domain)) {
|
|
148
|
-
const networkClientId = this.getNetworkClientIdForDomain(domain);
|
|
149
|
-
networkClient = this.messenger.call('NetworkController:getNetworkClientById', networkClientId);
|
|
150
|
-
}
|
|
151
|
-
else {
|
|
152
|
-
networkClient = this.messenger.call('NetworkController:getSelectedNetworkClient');
|
|
153
|
-
if (networkClient === undefined) {
|
|
154
|
-
throw new Error('Selected network not initialized');
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
networkProxy = {
|
|
158
|
-
provider: (0, swappable_obj_proxy_1.createSwappableProxy)(networkClient.provider),
|
|
159
|
-
blockTracker: (0, swappable_obj_proxy_1.createEventEmitterProxy)(networkClient.blockTracker, {
|
|
160
|
-
eventFilter: 'skipInternal',
|
|
161
|
-
}),
|
|
162
|
-
};
|
|
163
|
-
__classPrivateFieldGet(this, _SelectedNetworkController_domainProxyMap, "f").set(domain, networkProxy);
|
|
164
|
-
}
|
|
165
|
-
return networkProxy;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
exports.SelectedNetworkController = SelectedNetworkController;
|
|
169
|
-
_SelectedNetworkController_domainProxyMap = new WeakMap(), _SelectedNetworkController_instances = new WeakSet(), _SelectedNetworkController_setNetworkClientIdForDomain = function _SelectedNetworkController_setNetworkClientIdForDomain(domain, networkClientId) {
|
|
170
|
-
const networkClient = this.messenger.call('NetworkController:getNetworkClientById', networkClientId);
|
|
171
|
-
// This needs to happen before getProviderAndBlockTracker,
|
|
172
|
-
// otherwise we may be referencing a network client ID that no longer exists.
|
|
173
|
-
this.update((state) => {
|
|
174
|
-
state.domains[domain] = networkClientId;
|
|
175
|
-
});
|
|
176
|
-
const networkProxy = this.getProviderAndBlockTracker(domain);
|
|
177
|
-
networkProxy.provider.setTarget(networkClient.provider);
|
|
178
|
-
networkProxy.blockTracker.setTarget(networkClient.blockTracker);
|
|
179
|
-
}, _SelectedNetworkController_unsetNetworkClientIdForDomain = function _SelectedNetworkController_unsetNetworkClientIdForDomain(domain) {
|
|
180
|
-
const globallySelectedNetworkClient = this.messenger.call('NetworkController:getSelectedNetworkClient');
|
|
181
|
-
const networkProxy = __classPrivateFieldGet(this, _SelectedNetworkController_domainProxyMap, "f").get(domain);
|
|
182
|
-
if (networkProxy && globallySelectedNetworkClient) {
|
|
183
|
-
networkProxy.provider.setTarget(globallySelectedNetworkClient.provider);
|
|
184
|
-
networkProxy.blockTracker.setTarget(globallySelectedNetworkClient.blockTracker);
|
|
185
|
-
}
|
|
186
|
-
else if (networkProxy) {
|
|
187
|
-
__classPrivateFieldGet(this, _SelectedNetworkController_domainProxyMap, "f").delete(domain);
|
|
188
|
-
}
|
|
189
|
-
this.update((state) => {
|
|
190
|
-
delete state.domains[domain];
|
|
191
|
-
});
|
|
192
|
-
}, _SelectedNetworkController_domainHasPermissions = function _SelectedNetworkController_domainHasPermissions(domain) {
|
|
193
|
-
return this.messenger.call('PermissionController:hasPermissions', domain);
|
|
194
|
-
};
|
|
195
|
-
//# sourceMappingURL=SelectedNetworkController.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectedNetworkController.cjs","sourceRoot":"","sources":["../src/SelectedNetworkController.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseController } from '@metamask/base-controller';\nimport type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n} from '@metamask/base-controller';\nimport type { Messenger } from '@metamask/messenger';\nimport type {\n BlockTrackerProxy,\n NetworkClientId,\n NetworkControllerGetNetworkClientByIdAction,\n NetworkControllerGetSelectedNetworkClientAction,\n NetworkControllerGetStateAction,\n NetworkControllerStateChangeEvent,\n ProviderProxy,\n} from '@metamask/network-controller';\nimport type {\n PermissionControllerStateChange,\n PermissionControllerGetSubjectNamesAction as PermissionControllerGetSubjectsAction,\n PermissionControllerHasPermissionsAction as PermissionControllerHasPermissions,\n} from '@metamask/permission-controller';\nimport {\n createEventEmitterProxy,\n createSwappableProxy,\n} from '@metamask/swappable-obj-proxy';\nimport type { Hex } from '@metamask/utils';\n\nimport type { SelectedNetworkControllerMethodActions } from './SelectedNetworkController-method-action-types.js';\n\nconst controllerName = 'SelectedNetworkController';\n\nconst MESSENGER_EXPOSED_METHODS = [\n 'setNetworkClientIdForDomain',\n 'getNetworkClientIdForDomain',\n 'getProviderAndBlockTracker',\n] as const;\n\nconst stateMetadata = {\n domains: {\n includeInStateLogs: true,\n persist: true,\n includeInDebugSnapshot: false,\n usedInUi: true,\n },\n};\n\nconst getDefaultState = () => ({ domains: {} });\n\nexport type Domain = string;\n\nexport const 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\nexport type SelectedNetworkControllerStateChangeEvent =\n ControllerStateChangeEvent<\n typeof controllerName,\n SelectedNetworkControllerState\n >;\n\nexport type SelectedNetworkControllerGetStateAction = ControllerGetStateAction<\n typeof controllerName,\n SelectedNetworkControllerState\n>;\n\n/**\n * @deprecated Use `SelectedNetworkControllerGetStateAction` instead.\n */\nexport type SelectedNetworkControllerGetSelectedNetworkStateAction =\n SelectedNetworkControllerGetStateAction;\n\nexport type SelectedNetworkControllerActions =\n | SelectedNetworkControllerGetStateAction\n | SelectedNetworkControllerMethodActions;\n\ntype AllowedActions =\n | NetworkControllerGetNetworkClientByIdAction\n | NetworkControllerGetSelectedNetworkClientAction\n | NetworkControllerGetStateAction\n | PermissionControllerHasPermissions\n | PermissionControllerGetSubjectsAction;\n\nexport type SelectedNetworkControllerEvents =\n SelectedNetworkControllerStateChangeEvent;\n\ntype AllowedEvents =\n | NetworkControllerStateChangeEvent\n | PermissionControllerStateChange;\n\nexport type SelectedNetworkControllerMessenger = Messenger<\n typeof controllerName,\n SelectedNetworkControllerActions | AllowedActions,\n SelectedNetworkControllerEvents | AllowedEvents\n>;\n\nexport type SelectedNetworkControllerOptions = {\n state?: SelectedNetworkControllerState;\n messenger: SelectedNetworkControllerMessenger;\n domainProxyMap: Map<Domain, NetworkProxy>;\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 readonly #domainProxyMap: Map<Domain, NetworkProxy>;\n\n /**\n * Construct a SelectedNetworkController controller.\n *\n * @param options - The controller options.\n * @param options.messenger - The messenger for the SelectedNetworkController controller.\n * @param options.state - The controllers initial state.\n * @param options.domainProxyMap - A map for storing domain-specific proxies that are held in memory only during use.\n */\n constructor({\n messenger,\n state = getDefaultState(),\n domainProxyMap,\n }: SelectedNetworkControllerOptions) {\n super({\n name: controllerName,\n metadata: stateMetadata,\n messenger,\n state,\n });\n this.#domainProxyMap = domainProxyMap;\n this.messenger.registerMethodActionHandlers(\n this,\n MESSENGER_EXPOSED_METHODS,\n );\n\n // this is fetching all the dapp permissions from the PermissionsController and looking for any domains that are not in domains state in this controller. Then we take any missing domains and add them to state here, setting it with the globally selected networkClientId (fetched from the NetworkController)\n this.messenger\n .call('PermissionController:getSubjectNames')\n .filter((domain) => this.state.domains[domain] === undefined)\n .forEach((domain) =>\n this.setNetworkClientIdForDomain(\n domain,\n this.messenger.call('NetworkController:getState')\n .selectedNetworkClientId,\n ),\n );\n\n this.messenger.subscribe(\n 'PermissionController:stateChange',\n (_, patches) => {\n patches.forEach(({ op, path }) => {\n const isChangingSubject =\n path[0] === 'subjects' && path[1] !== undefined;\n if (isChangingSubject && typeof path[1] === 'string') {\n const domain = path[1];\n if (op === 'add' && this.state.domains[domain] === undefined) {\n this.setNetworkClientIdForDomain(\n domain,\n this.messenger.call('NetworkController:getState')\n .selectedNetworkClientId,\n );\n } else if (\n op === 'remove' &&\n this.state.domains[domain] !== undefined\n ) {\n this.#unsetNetworkClientIdForDomain(domain);\n }\n }\n });\n },\n );\n\n this.messenger.subscribe(\n 'NetworkController:stateChange',\n (\n { selectedNetworkClientId, networkConfigurationsByChainId },\n patches,\n ) => {\n const patch = patches.find(\n ({ op, path }) =>\n (op === 'replace' || op === 'remove') &&\n path[0] === 'networkConfigurationsByChainId',\n );\n\n if (patch) {\n const networkClientIdToChainId = Object.values(\n networkConfigurationsByChainId,\n ).reduce<Record<string, Hex>>((acc, network) => {\n network.rpcEndpoints.forEach(\n ({ networkClientId }) => (acc[networkClientId] = network.chainId),\n );\n return acc;\n }, {});\n\n Object.entries(this.state.domains).forEach(\n ([domain, networkClientIdForDomain]) => {\n const chainIdForDomain =\n networkClientIdToChainId[networkClientIdForDomain];\n\n if (patch.op === 'remove' && !chainIdForDomain) {\n // If the network was removed, fall back to the globally selected network\n this.setNetworkClientIdForDomain(\n domain,\n selectedNetworkClientId,\n );\n } else if (patch.op === 'replace') {\n // If the network was updated, redirect to the network's default endpoint\n const updatedChainId = patch.path[1] as Hex;\n if (!chainIdForDomain || chainIdForDomain === updatedChainId) {\n const network =\n networkConfigurationsByChainId[updatedChainId];\n\n const { networkClientId: defaultNetworkClientId } =\n network.rpcEndpoints[network.defaultRpcEndpointIndex];\n\n if (networkClientIdForDomain !== defaultNetworkClientId) {\n this.setNetworkClientIdForDomain(\n domain,\n defaultNetworkClientId,\n );\n }\n }\n }\n },\n );\n }\n },\n );\n }\n\n #setNetworkClientIdForDomain(\n domain: Domain,\n networkClientId: NetworkClientId,\n ) {\n const networkClient = this.messenger.call(\n 'NetworkController:getNetworkClientById',\n networkClientId,\n );\n\n // This needs to happen before getProviderAndBlockTracker,\n // otherwise we may be referencing a network client ID that no longer exists.\n this.update((state) => {\n state.domains[domain] = networkClientId;\n });\n\n const networkProxy = this.getProviderAndBlockTracker(domain);\n networkProxy.provider.setTarget(networkClient.provider);\n networkProxy.blockTracker.setTarget(networkClient.blockTracker);\n }\n\n /**\n * This method is used when a domain is removed from the PermissionsController.\n * It will remove re-point the network proxy to the globally selected network in the domainProxyMap or, if no globally selected network client is available, delete the proxy.\n *\n * @param domain - The domain for which to unset the network client ID.\n */\n #unsetNetworkClientIdForDomain(domain: Domain) {\n const globallySelectedNetworkClient = this.messenger.call(\n 'NetworkController:getSelectedNetworkClient',\n );\n const networkProxy = this.#domainProxyMap.get(domain);\n if (networkProxy && globallySelectedNetworkClient) {\n networkProxy.provider.setTarget(globallySelectedNetworkClient.provider);\n networkProxy.blockTracker.setTarget(\n globallySelectedNetworkClient.blockTracker,\n );\n } else if (networkProxy) {\n this.#domainProxyMap.delete(domain);\n }\n this.update((state) => {\n delete state.domains[domain];\n });\n }\n\n #domainHasPermissions(domain: Domain): boolean {\n return this.messenger.call('PermissionController:hasPermissions', domain);\n }\n\n setNetworkClientIdForDomain(\n domain: Domain,\n networkClientId: NetworkClientId,\n ) {\n if (domain === METAMASK_DOMAIN) {\n throw new Error(\n `NetworkClientId for domain \"${METAMASK_DOMAIN}\" cannot be set on the SelectedNetworkController`,\n );\n }\n\n if (!this.#domainHasPermissions(domain)) {\n throw new Error(\n 'NetworkClientId for domain cannot be called with a domain that has not yet been granted permissions',\n );\n }\n\n this.#setNetworkClientIdForDomain(domain, networkClientId);\n }\n\n getNetworkClientIdForDomain(domain: Domain): NetworkClientId {\n const { selectedNetworkClientId: metamaskSelectedNetworkClientId } =\n this.messenger.call('NetworkController:getState');\n\n return this.state.domains[domain] ?? metamaskSelectedNetworkClientId;\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 // If the domain is 'metamask', return the NetworkController's globally selected network client proxy\n if (domain === METAMASK_DOMAIN) {\n const networkClient = this.messenger.call(\n 'NetworkController:getSelectedNetworkClient',\n );\n if (networkClient === undefined) {\n throw new Error('Selected network not initialized');\n }\n return networkClient;\n }\n\n let networkProxy = this.#domainProxyMap.get(domain);\n if (networkProxy === undefined) {\n let networkClient;\n if (this.#domainHasPermissions(domain)) {\n const networkClientId = this.getNetworkClientIdForDomain(domain);\n networkClient = this.messenger.call(\n 'NetworkController:getNetworkClientById',\n networkClientId,\n );\n } else {\n networkClient = this.messenger.call(\n 'NetworkController:getSelectedNetworkClient',\n );\n if (networkClient === undefined) {\n throw new Error('Selected network not initialized');\n }\n }\n networkProxy = {\n provider: createSwappableProxy(networkClient.provider),\n blockTracker: createEventEmitterProxy(networkClient.blockTracker, {\n eventFilter: 'skipInternal',\n }),\n };\n this.#domainProxyMap.set(domain, networkProxy);\n }\n return networkProxy;\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectedNetworkController.d.cts","sourceRoot":"","sources":["../src/SelectedNetworkController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAC3B,kCAAkC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AACrD,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,2CAA2C,EAC3C,+CAA+C,EAC/C,+BAA+B,EAC/B,iCAAiC,EACjC,aAAa,EACd,qCAAqC;AACtC,OAAO,KAAK,EACV,+BAA+B,EAC/B,yCAAyC,IAAI,qCAAqC,EAClF,wCAAwC,IAAI,kCAAkC,EAC/E,wCAAwC;AAOzC,OAAO,KAAK,EAAE,sCAAsC,EAAE,4DAA2D;AAEjH,QAAA,MAAM,cAAc,8BAA8B,CAAC;AAmBnD,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC;AAE5B,eAAO,MAAM,eAAe,YAAsB,CAAC;AAEnD,eAAO,MAAM,oCAAoC;;;;CAMhD,CAAC;AAEF,eAAO,MAAM,mCAAmC;;CAE/C,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,yCAAyC,GACnD,0BAA0B,CACxB,OAAO,cAAc,EACrB,8BAA8B,CAC/B,CAAC;AAEJ,MAAM,MAAM,uCAAuC,GAAG,wBAAwB,CAC5E,OAAO,cAAc,EACrB,8BAA8B,CAC/B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sDAAsD,GAChE,uCAAuC,CAAC;AAE1C,MAAM,MAAM,gCAAgC,GACxC,uCAAuC,GACvC,sCAAsC,CAAC;AAE3C,KAAK,cAAc,GACf,2CAA2C,GAC3C,+CAA+C,GAC/C,+BAA+B,GAC/B,kCAAkC,GAClC,qCAAqC,CAAC;AAE1C,MAAM,MAAM,+BAA+B,GACzC,yCAAyC,CAAC;AAE5C,KAAK,aAAa,GACd,iCAAiC,GACjC,+BAA+B,CAAC;AAEpC,MAAM,MAAM,kCAAkC,GAAG,SAAS,CACxD,OAAO,cAAc,EACrB,gCAAgC,GAAG,cAAc,EACjD,+BAA+B,GAAG,aAAa,CAChD,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,KAAK,CAAC,EAAE,8BAA8B,CAAC;IACvC,SAAS,EAAE,kCAAkC,CAAC;IAC9C,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,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;;;;;;;OAOG;gBACS,EACV,SAAS,EACT,KAAyB,EACzB,cAAc,GACf,EAAE,gCAAgC;IA4JnC,2BAA2B,CACzB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe;IAiBlC,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe;IAO5D;;;;;OAKG;IACH,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;CAuCzD"}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { BaseController } from "@metamask/base-controller";
|
|
2
|
-
import type { ControllerGetStateAction, ControllerStateChangeEvent } from "@metamask/base-controller";
|
|
3
|
-
import type { Messenger } from "@metamask/messenger";
|
|
4
|
-
import type { BlockTrackerProxy, NetworkClientId, NetworkControllerGetNetworkClientByIdAction, NetworkControllerGetSelectedNetworkClientAction, NetworkControllerGetStateAction, NetworkControllerStateChangeEvent, ProviderProxy } from "@metamask/network-controller";
|
|
5
|
-
import type { PermissionControllerStateChange, PermissionControllerGetSubjectNamesAction as PermissionControllerGetSubjectsAction, PermissionControllerHasPermissionsAction as PermissionControllerHasPermissions } from "@metamask/permission-controller";
|
|
6
|
-
import type { SelectedNetworkControllerMethodActions } from "./SelectedNetworkController-method-action-types.mjs";
|
|
7
|
-
declare const controllerName = "SelectedNetworkController";
|
|
8
|
-
export type Domain = string;
|
|
9
|
-
export declare const METAMASK_DOMAIN: "metamask";
|
|
10
|
-
export declare const SelectedNetworkControllerActionTypes: {
|
|
11
|
-
getState: "SelectedNetworkController:getState";
|
|
12
|
-
getNetworkClientIdForDomain: "SelectedNetworkController:getNetworkClientIdForDomain";
|
|
13
|
-
setNetworkClientIdForDomain: "SelectedNetworkController:setNetworkClientIdForDomain";
|
|
14
|
-
};
|
|
15
|
-
export declare const SelectedNetworkControllerEventTypes: {
|
|
16
|
-
stateChange: "SelectedNetworkController:stateChange";
|
|
17
|
-
};
|
|
18
|
-
export type SelectedNetworkControllerState = {
|
|
19
|
-
domains: Record<Domain, NetworkClientId>;
|
|
20
|
-
};
|
|
21
|
-
export type SelectedNetworkControllerStateChangeEvent = ControllerStateChangeEvent<typeof controllerName, SelectedNetworkControllerState>;
|
|
22
|
-
export type SelectedNetworkControllerGetStateAction = ControllerGetStateAction<typeof controllerName, SelectedNetworkControllerState>;
|
|
23
|
-
/**
|
|
24
|
-
* @deprecated Use `SelectedNetworkControllerGetStateAction` instead.
|
|
25
|
-
*/
|
|
26
|
-
export type SelectedNetworkControllerGetSelectedNetworkStateAction = SelectedNetworkControllerGetStateAction;
|
|
27
|
-
export type SelectedNetworkControllerActions = SelectedNetworkControllerGetStateAction | SelectedNetworkControllerMethodActions;
|
|
28
|
-
type AllowedActions = NetworkControllerGetNetworkClientByIdAction | NetworkControllerGetSelectedNetworkClientAction | NetworkControllerGetStateAction | PermissionControllerHasPermissions | PermissionControllerGetSubjectsAction;
|
|
29
|
-
export type SelectedNetworkControllerEvents = SelectedNetworkControllerStateChangeEvent;
|
|
30
|
-
type AllowedEvents = NetworkControllerStateChangeEvent | PermissionControllerStateChange;
|
|
31
|
-
export type SelectedNetworkControllerMessenger = Messenger<typeof controllerName, SelectedNetworkControllerActions | AllowedActions, SelectedNetworkControllerEvents | AllowedEvents>;
|
|
32
|
-
export type SelectedNetworkControllerOptions = {
|
|
33
|
-
state?: SelectedNetworkControllerState;
|
|
34
|
-
messenger: SelectedNetworkControllerMessenger;
|
|
35
|
-
domainProxyMap: Map<Domain, NetworkProxy>;
|
|
36
|
-
};
|
|
37
|
-
export type NetworkProxy = {
|
|
38
|
-
provider: ProviderProxy;
|
|
39
|
-
blockTracker: BlockTrackerProxy;
|
|
40
|
-
};
|
|
41
|
-
/**
|
|
42
|
-
* Controller for getting and setting the network for a particular domain.
|
|
43
|
-
*/
|
|
44
|
-
export declare class SelectedNetworkController extends BaseController<typeof controllerName, SelectedNetworkControllerState, SelectedNetworkControllerMessenger> {
|
|
45
|
-
#private;
|
|
46
|
-
/**
|
|
47
|
-
* Construct a SelectedNetworkController controller.
|
|
48
|
-
*
|
|
49
|
-
* @param options - The controller options.
|
|
50
|
-
* @param options.messenger - The messenger for the SelectedNetworkController controller.
|
|
51
|
-
* @param options.state - The controllers initial state.
|
|
52
|
-
* @param options.domainProxyMap - A map for storing domain-specific proxies that are held in memory only during use.
|
|
53
|
-
*/
|
|
54
|
-
constructor({ messenger, state, domainProxyMap, }: SelectedNetworkControllerOptions);
|
|
55
|
-
setNetworkClientIdForDomain(domain: Domain, networkClientId: NetworkClientId): void;
|
|
56
|
-
getNetworkClientIdForDomain(domain: Domain): NetworkClientId;
|
|
57
|
-
/**
|
|
58
|
-
* Accesses the provider and block tracker for the currently selected network.
|
|
59
|
-
*
|
|
60
|
-
* @param domain - the domain for the provider
|
|
61
|
-
* @returns The proxy and block tracker proxies.
|
|
62
|
-
*/
|
|
63
|
-
getProviderAndBlockTracker(domain: Domain): NetworkProxy;
|
|
64
|
-
}
|
|
65
|
-
export {};
|
|
66
|
-
//# sourceMappingURL=SelectedNetworkController.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectedNetworkController.d.mts","sourceRoot":"","sources":["../src/SelectedNetworkController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAC3B,kCAAkC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AACrD,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,2CAA2C,EAC3C,+CAA+C,EAC/C,+BAA+B,EAC/B,iCAAiC,EACjC,aAAa,EACd,qCAAqC;AACtC,OAAO,KAAK,EACV,+BAA+B,EAC/B,yCAAyC,IAAI,qCAAqC,EAClF,wCAAwC,IAAI,kCAAkC,EAC/E,wCAAwC;AAOzC,OAAO,KAAK,EAAE,sCAAsC,EAAE,4DAA2D;AAEjH,QAAA,MAAM,cAAc,8BAA8B,CAAC;AAmBnD,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC;AAE5B,eAAO,MAAM,eAAe,YAAsB,CAAC;AAEnD,eAAO,MAAM,oCAAoC;;;;CAMhD,CAAC;AAEF,eAAO,MAAM,mCAAmC;;CAE/C,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,yCAAyC,GACnD,0BAA0B,CACxB,OAAO,cAAc,EACrB,8BAA8B,CAC/B,CAAC;AAEJ,MAAM,MAAM,uCAAuC,GAAG,wBAAwB,CAC5E,OAAO,cAAc,EACrB,8BAA8B,CAC/B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sDAAsD,GAChE,uCAAuC,CAAC;AAE1C,MAAM,MAAM,gCAAgC,GACxC,uCAAuC,GACvC,sCAAsC,CAAC;AAE3C,KAAK,cAAc,GACf,2CAA2C,GAC3C,+CAA+C,GAC/C,+BAA+B,GAC/B,kCAAkC,GAClC,qCAAqC,CAAC;AAE1C,MAAM,MAAM,+BAA+B,GACzC,yCAAyC,CAAC;AAE5C,KAAK,aAAa,GACd,iCAAiC,GACjC,+BAA+B,CAAC;AAEpC,MAAM,MAAM,kCAAkC,GAAG,SAAS,CACxD,OAAO,cAAc,EACrB,gCAAgC,GAAG,cAAc,EACjD,+BAA+B,GAAG,aAAa,CAChD,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,KAAK,CAAC,EAAE,8BAA8B,CAAC;IACvC,SAAS,EAAE,kCAAkC,CAAC;IAC9C,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,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;;;;;;;OAOG;gBACS,EACV,SAAS,EACT,KAAyB,EACzB,cAAc,GACf,EAAE,gCAAgC;IA4JnC,2BAA2B,CACzB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe;IAiBlC,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe;IAO5D;;;;;OAKG;IACH,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;CAuCzD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectedNetworkController.mjs","sourceRoot":"","sources":["../src/SelectedNetworkController.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseController } from '@metamask/base-controller';\nimport type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n} from '@metamask/base-controller';\nimport type { Messenger } from '@metamask/messenger';\nimport type {\n BlockTrackerProxy,\n NetworkClientId,\n NetworkControllerGetNetworkClientByIdAction,\n NetworkControllerGetSelectedNetworkClientAction,\n NetworkControllerGetStateAction,\n NetworkControllerStateChangeEvent,\n ProviderProxy,\n} from '@metamask/network-controller';\nimport type {\n PermissionControllerStateChange,\n PermissionControllerGetSubjectNamesAction as PermissionControllerGetSubjectsAction,\n PermissionControllerHasPermissionsAction as PermissionControllerHasPermissions,\n} from '@metamask/permission-controller';\nimport {\n createEventEmitterProxy,\n createSwappableProxy,\n} from '@metamask/swappable-obj-proxy';\nimport type { Hex } from '@metamask/utils';\n\nimport type { SelectedNetworkControllerMethodActions } from './SelectedNetworkController-method-action-types.js';\n\nconst controllerName = 'SelectedNetworkController';\n\nconst MESSENGER_EXPOSED_METHODS = [\n 'setNetworkClientIdForDomain',\n 'getNetworkClientIdForDomain',\n 'getProviderAndBlockTracker',\n] as const;\n\nconst stateMetadata = {\n domains: {\n includeInStateLogs: true,\n persist: true,\n includeInDebugSnapshot: false,\n usedInUi: true,\n },\n};\n\nconst getDefaultState = () => ({ domains: {} });\n\nexport type Domain = string;\n\nexport const 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\nexport type SelectedNetworkControllerStateChangeEvent =\n ControllerStateChangeEvent<\n typeof controllerName,\n SelectedNetworkControllerState\n >;\n\nexport type SelectedNetworkControllerGetStateAction = ControllerGetStateAction<\n typeof controllerName,\n SelectedNetworkControllerState\n>;\n\n/**\n * @deprecated Use `SelectedNetworkControllerGetStateAction` instead.\n */\nexport type SelectedNetworkControllerGetSelectedNetworkStateAction =\n SelectedNetworkControllerGetStateAction;\n\nexport type SelectedNetworkControllerActions =\n | SelectedNetworkControllerGetStateAction\n | SelectedNetworkControllerMethodActions;\n\ntype AllowedActions =\n | NetworkControllerGetNetworkClientByIdAction\n | NetworkControllerGetSelectedNetworkClientAction\n | NetworkControllerGetStateAction\n | PermissionControllerHasPermissions\n | PermissionControllerGetSubjectsAction;\n\nexport type SelectedNetworkControllerEvents =\n SelectedNetworkControllerStateChangeEvent;\n\ntype AllowedEvents =\n | NetworkControllerStateChangeEvent\n | PermissionControllerStateChange;\n\nexport type SelectedNetworkControllerMessenger = Messenger<\n typeof controllerName,\n SelectedNetworkControllerActions | AllowedActions,\n SelectedNetworkControllerEvents | AllowedEvents\n>;\n\nexport type SelectedNetworkControllerOptions = {\n state?: SelectedNetworkControllerState;\n messenger: SelectedNetworkControllerMessenger;\n domainProxyMap: Map<Domain, NetworkProxy>;\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 readonly #domainProxyMap: Map<Domain, NetworkProxy>;\n\n /**\n * Construct a SelectedNetworkController controller.\n *\n * @param options - The controller options.\n * @param options.messenger - The messenger for the SelectedNetworkController controller.\n * @param options.state - The controllers initial state.\n * @param options.domainProxyMap - A map for storing domain-specific proxies that are held in memory only during use.\n */\n constructor({\n messenger,\n state = getDefaultState(),\n domainProxyMap,\n }: SelectedNetworkControllerOptions) {\n super({\n name: controllerName,\n metadata: stateMetadata,\n messenger,\n state,\n });\n this.#domainProxyMap = domainProxyMap;\n this.messenger.registerMethodActionHandlers(\n this,\n MESSENGER_EXPOSED_METHODS,\n );\n\n // this is fetching all the dapp permissions from the PermissionsController and looking for any domains that are not in domains state in this controller. Then we take any missing domains and add them to state here, setting it with the globally selected networkClientId (fetched from the NetworkController)\n this.messenger\n .call('PermissionController:getSubjectNames')\n .filter((domain) => this.state.domains[domain] === undefined)\n .forEach((domain) =>\n this.setNetworkClientIdForDomain(\n domain,\n this.messenger.call('NetworkController:getState')\n .selectedNetworkClientId,\n ),\n );\n\n this.messenger.subscribe(\n 'PermissionController:stateChange',\n (_, patches) => {\n patches.forEach(({ op, path }) => {\n const isChangingSubject =\n path[0] === 'subjects' && path[1] !== undefined;\n if (isChangingSubject && typeof path[1] === 'string') {\n const domain = path[1];\n if (op === 'add' && this.state.domains[domain] === undefined) {\n this.setNetworkClientIdForDomain(\n domain,\n this.messenger.call('NetworkController:getState')\n .selectedNetworkClientId,\n );\n } else if (\n op === 'remove' &&\n this.state.domains[domain] !== undefined\n ) {\n this.#unsetNetworkClientIdForDomain(domain);\n }\n }\n });\n },\n );\n\n this.messenger.subscribe(\n 'NetworkController:stateChange',\n (\n { selectedNetworkClientId, networkConfigurationsByChainId },\n patches,\n ) => {\n const patch = patches.find(\n ({ op, path }) =>\n (op === 'replace' || op === 'remove') &&\n path[0] === 'networkConfigurationsByChainId',\n );\n\n if (patch) {\n const networkClientIdToChainId = Object.values(\n networkConfigurationsByChainId,\n ).reduce<Record<string, Hex>>((acc, network) => {\n network.rpcEndpoints.forEach(\n ({ networkClientId }) => (acc[networkClientId] = network.chainId),\n );\n return acc;\n }, {});\n\n Object.entries(this.state.domains).forEach(\n ([domain, networkClientIdForDomain]) => {\n const chainIdForDomain =\n networkClientIdToChainId[networkClientIdForDomain];\n\n if (patch.op === 'remove' && !chainIdForDomain) {\n // If the network was removed, fall back to the globally selected network\n this.setNetworkClientIdForDomain(\n domain,\n selectedNetworkClientId,\n );\n } else if (patch.op === 'replace') {\n // If the network was updated, redirect to the network's default endpoint\n const updatedChainId = patch.path[1] as Hex;\n if (!chainIdForDomain || chainIdForDomain === updatedChainId) {\n const network =\n networkConfigurationsByChainId[updatedChainId];\n\n const { networkClientId: defaultNetworkClientId } =\n network.rpcEndpoints[network.defaultRpcEndpointIndex];\n\n if (networkClientIdForDomain !== defaultNetworkClientId) {\n this.setNetworkClientIdForDomain(\n domain,\n defaultNetworkClientId,\n );\n }\n }\n }\n },\n );\n }\n },\n );\n }\n\n #setNetworkClientIdForDomain(\n domain: Domain,\n networkClientId: NetworkClientId,\n ) {\n const networkClient = this.messenger.call(\n 'NetworkController:getNetworkClientById',\n networkClientId,\n );\n\n // This needs to happen before getProviderAndBlockTracker,\n // otherwise we may be referencing a network client ID that no longer exists.\n this.update((state) => {\n state.domains[domain] = networkClientId;\n });\n\n const networkProxy = this.getProviderAndBlockTracker(domain);\n networkProxy.provider.setTarget(networkClient.provider);\n networkProxy.blockTracker.setTarget(networkClient.blockTracker);\n }\n\n /**\n * This method is used when a domain is removed from the PermissionsController.\n * It will remove re-point the network proxy to the globally selected network in the domainProxyMap or, if no globally selected network client is available, delete the proxy.\n *\n * @param domain - The domain for which to unset the network client ID.\n */\n #unsetNetworkClientIdForDomain(domain: Domain) {\n const globallySelectedNetworkClient = this.messenger.call(\n 'NetworkController:getSelectedNetworkClient',\n );\n const networkProxy = this.#domainProxyMap.get(domain);\n if (networkProxy && globallySelectedNetworkClient) {\n networkProxy.provider.setTarget(globallySelectedNetworkClient.provider);\n networkProxy.blockTracker.setTarget(\n globallySelectedNetworkClient.blockTracker,\n );\n } else if (networkProxy) {\n this.#domainProxyMap.delete(domain);\n }\n this.update((state) => {\n delete state.domains[domain];\n });\n }\n\n #domainHasPermissions(domain: Domain): boolean {\n return this.messenger.call('PermissionController:hasPermissions', domain);\n }\n\n setNetworkClientIdForDomain(\n domain: Domain,\n networkClientId: NetworkClientId,\n ) {\n if (domain === METAMASK_DOMAIN) {\n throw new Error(\n `NetworkClientId for domain \"${METAMASK_DOMAIN}\" cannot be set on the SelectedNetworkController`,\n );\n }\n\n if (!this.#domainHasPermissions(domain)) {\n throw new Error(\n 'NetworkClientId for domain cannot be called with a domain that has not yet been granted permissions',\n );\n }\n\n this.#setNetworkClientIdForDomain(domain, networkClientId);\n }\n\n getNetworkClientIdForDomain(domain: Domain): NetworkClientId {\n const { selectedNetworkClientId: metamaskSelectedNetworkClientId } =\n this.messenger.call('NetworkController:getState');\n\n return this.state.domains[domain] ?? metamaskSelectedNetworkClientId;\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 // If the domain is 'metamask', return the NetworkController's globally selected network client proxy\n if (domain === METAMASK_DOMAIN) {\n const networkClient = this.messenger.call(\n 'NetworkController:getSelectedNetworkClient',\n );\n if (networkClient === undefined) {\n throw new Error('Selected network not initialized');\n }\n return networkClient;\n }\n\n let networkProxy = this.#domainProxyMap.get(domain);\n if (networkProxy === undefined) {\n let networkClient;\n if (this.#domainHasPermissions(domain)) {\n const networkClientId = this.getNetworkClientIdForDomain(domain);\n networkClient = this.messenger.call(\n 'NetworkController:getNetworkClientById',\n networkClientId,\n );\n } else {\n networkClient = this.messenger.call(\n 'NetworkController:getSelectedNetworkClient',\n );\n if (networkClient === undefined) {\n throw new Error('Selected network not initialized');\n }\n }\n networkProxy = {\n provider: createSwappableProxy(networkClient.provider),\n blockTracker: createEventEmitterProxy(networkClient.blockTracker, {\n eventFilter: 'skipInternal',\n }),\n };\n this.#domainProxyMap.set(domain, networkProxy);\n }\n return networkProxy;\n }\n}\n"]}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createSelectedNetworkMiddleware = void 0;
|
|
4
|
-
const SelectedNetworkController_js_1 = require("./SelectedNetworkController.cjs");
|
|
5
|
-
const createSelectedNetworkMiddleware = (messenger) => {
|
|
6
|
-
const getNetworkClientIdForDomain = (origin) => messenger.call(SelectedNetworkController_js_1.SelectedNetworkControllerActionTypes.getNetworkClientIdForDomain, origin);
|
|
7
|
-
return (req, _, next) => {
|
|
8
|
-
if (!req.origin) {
|
|
9
|
-
throw new Error("Request object is lacking an 'origin'");
|
|
10
|
-
}
|
|
11
|
-
req.networkClientId = getNetworkClientIdForDomain(req.origin);
|
|
12
|
-
return next();
|
|
13
|
-
};
|
|
14
|
-
};
|
|
15
|
-
exports.createSelectedNetworkMiddleware = createSelectedNetworkMiddleware;
|
|
16
|
-
//# sourceMappingURL=SelectedNetworkMiddleware.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectedNetworkMiddleware.cjs","sourceRoot":"","sources":["../src/SelectedNetworkMiddleware.ts"],"names":[],"mappings":";;;AAKA,kFAAsF;AAO/E,MAAM,+BAA+B,GAAG,CAC7C,SAA6C,EACL,EAAE;IAC1C,MAAM,2BAA2B,GAAG,CAAC,MAAc,EAAE,EAAE,CACrD,SAAS,CAAC,IAAI,CACZ,mEAAoC,CAAC,2BAA2B,EAChE,MAAM,CACP,CAAC;IAEJ,OAAO,CAAC,GAA4C,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QAC/D,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QAED,GAAG,CAAC,eAAe,GAAG,2BAA2B,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9D,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC,CAAC;AAjBW,QAAA,+BAA+B,mCAiB1C","sourcesContent":["import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine';\nimport type { NetworkClientId } from '@metamask/network-controller';\nimport type { Json, JsonRpcParams, JsonRpcRequest } from '@metamask/utils';\n\nimport type { SelectedNetworkControllerMessenger } from './SelectedNetworkController.js';\nimport { SelectedNetworkControllerActionTypes } from './SelectedNetworkController.js';\n\nexport type SelectedNetworkMiddlewareJsonRpcRequest = JsonRpcRequest & {\n networkClientId?: NetworkClientId;\n origin?: string;\n};\n\nexport const createSelectedNetworkMiddleware = (\n messenger: SelectedNetworkControllerMessenger,\n): JsonRpcMiddleware<JsonRpcParams, Json> => {\n const getNetworkClientIdForDomain = (origin: string) =>\n messenger.call(\n SelectedNetworkControllerActionTypes.getNetworkClientIdForDomain,\n origin,\n );\n\n return (req: SelectedNetworkMiddlewareJsonRpcRequest, _, next) => {\n if (!req.origin) {\n throw new Error(\"Request object is lacking an 'origin'\");\n }\n\n req.networkClientId = getNetworkClientIdForDomain(req.origin);\n return next();\n };\n};\n"]}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { JsonRpcMiddleware } from "@metamask/json-rpc-engine";
|
|
2
|
-
import type { NetworkClientId } from "@metamask/network-controller";
|
|
3
|
-
import type { Json, JsonRpcParams, JsonRpcRequest } from "@metamask/utils";
|
|
4
|
-
import type { SelectedNetworkControllerMessenger } from "./SelectedNetworkController.cjs";
|
|
5
|
-
export type SelectedNetworkMiddlewareJsonRpcRequest = JsonRpcRequest & {
|
|
6
|
-
networkClientId?: NetworkClientId;
|
|
7
|
-
origin?: string;
|
|
8
|
-
};
|
|
9
|
-
export declare const createSelectedNetworkMiddleware: (messenger: SelectedNetworkControllerMessenger) => JsonRpcMiddleware<JsonRpcParams, Json>;
|
|
10
|
-
//# sourceMappingURL=SelectedNetworkMiddleware.d.cts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectedNetworkMiddleware.d.cts","sourceRoot":"","sources":["../src/SelectedNetworkMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kCAAkC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,qCAAqC;AACpE,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,EAAE,wBAAwB;AAE3E,OAAO,KAAK,EAAE,kCAAkC,EAAE,wCAAuC;AAGzF,MAAM,MAAM,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,CAevC,CAAC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { JsonRpcMiddleware } from "@metamask/json-rpc-engine";
|
|
2
|
-
import type { NetworkClientId } from "@metamask/network-controller";
|
|
3
|
-
import type { Json, JsonRpcParams, JsonRpcRequest } from "@metamask/utils";
|
|
4
|
-
import type { SelectedNetworkControllerMessenger } from "./SelectedNetworkController.mjs";
|
|
5
|
-
export type SelectedNetworkMiddlewareJsonRpcRequest = JsonRpcRequest & {
|
|
6
|
-
networkClientId?: NetworkClientId;
|
|
7
|
-
origin?: string;
|
|
8
|
-
};
|
|
9
|
-
export declare const createSelectedNetworkMiddleware: (messenger: SelectedNetworkControllerMessenger) => JsonRpcMiddleware<JsonRpcParams, Json>;
|
|
10
|
-
//# sourceMappingURL=SelectedNetworkMiddleware.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectedNetworkMiddleware.d.mts","sourceRoot":"","sources":["../src/SelectedNetworkMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kCAAkC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,qCAAqC;AACpE,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,EAAE,wBAAwB;AAE3E,OAAO,KAAK,EAAE,kCAAkC,EAAE,wCAAuC;AAGzF,MAAM,MAAM,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,CAevC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectedNetworkMiddleware.mjs","sourceRoot":"","sources":["../src/SelectedNetworkMiddleware.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oCAAoC,EAAE,wCAAuC;AAOtF,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAC7C,SAA6C,EACL,EAAE;IAC1C,MAAM,2BAA2B,GAAG,CAAC,MAAc,EAAE,EAAE,CACrD,SAAS,CAAC,IAAI,CACZ,oCAAoC,CAAC,2BAA2B,EAChE,MAAM,CACP,CAAC;IAEJ,OAAO,CAAC,GAA4C,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QAC/D,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QAED,GAAG,CAAC,eAAe,GAAG,2BAA2B,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9D,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine';\nimport type { NetworkClientId } from '@metamask/network-controller';\nimport type { Json, JsonRpcParams, JsonRpcRequest } from '@metamask/utils';\n\nimport type { SelectedNetworkControllerMessenger } from './SelectedNetworkController.js';\nimport { SelectedNetworkControllerActionTypes } from './SelectedNetworkController.js';\n\nexport type SelectedNetworkMiddlewareJsonRpcRequest = JsonRpcRequest & {\n networkClientId?: NetworkClientId;\n origin?: string;\n};\n\nexport const createSelectedNetworkMiddleware = (\n messenger: SelectedNetworkControllerMessenger,\n): JsonRpcMiddleware<JsonRpcParams, Json> => {\n const getNetworkClientIdForDomain = (origin: string) =>\n messenger.call(\n SelectedNetworkControllerActionTypes.getNetworkClientIdForDomain,\n origin,\n );\n\n return (req: SelectedNetworkMiddlewareJsonRpcRequest, _, next) => {\n if (!req.origin) {\n throw new Error(\"Request object is lacking an 'origin'\");\n }\n\n req.networkClientId = getNetworkClientIdForDomain(req.origin);\n return next();\n };\n};\n"]}
|
package/dist/index.cjs
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createSelectedNetworkMiddleware = exports.METAMASK_DOMAIN = exports.SelectedNetworkController = exports.SelectedNetworkControllerEventTypes = exports.SelectedNetworkControllerActionTypes = void 0;
|
|
4
|
-
var SelectedNetworkController_js_1 = require("./SelectedNetworkController.cjs");
|
|
5
|
-
Object.defineProperty(exports, "SelectedNetworkControllerActionTypes", { enumerable: true, get: function () { return SelectedNetworkController_js_1.SelectedNetworkControllerActionTypes; } });
|
|
6
|
-
Object.defineProperty(exports, "SelectedNetworkControllerEventTypes", { enumerable: true, get: function () { return SelectedNetworkController_js_1.SelectedNetworkControllerEventTypes; } });
|
|
7
|
-
Object.defineProperty(exports, "SelectedNetworkController", { enumerable: true, get: function () { return SelectedNetworkController_js_1.SelectedNetworkController; } });
|
|
8
|
-
Object.defineProperty(exports, "METAMASK_DOMAIN", { enumerable: true, get: function () { return SelectedNetworkController_js_1.METAMASK_DOMAIN; } });
|
|
9
|
-
var SelectedNetworkMiddleware_js_1 = require("./SelectedNetworkMiddleware.cjs");
|
|
10
|
-
Object.defineProperty(exports, "createSelectedNetworkMiddleware", { enumerable: true, get: function () { return SelectedNetworkMiddleware_js_1.createSelectedNetworkMiddleware; } });
|
|
11
|
-
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAYA,gFAKwC;AAJtC,oJAAA,oCAAoC,OAAA;AACpC,mJAAA,mCAAmC,OAAA;AACnC,yIAAA,yBAAyB,OAAA;AACzB,+HAAA,eAAe,OAAA;AAQjB,gFAAiF;AAAxE,+IAAA,+BAA+B,OAAA","sourcesContent":["export type {\n SelectedNetworkControllerState,\n SelectedNetworkControllerStateChangeEvent,\n SelectedNetworkControllerGetStateAction,\n SelectedNetworkControllerGetSelectedNetworkStateAction,\n SelectedNetworkControllerActions,\n SelectedNetworkControllerEvents,\n SelectedNetworkControllerMessenger,\n SelectedNetworkControllerOptions,\n NetworkProxy,\n Domain,\n} from './SelectedNetworkController.js';\nexport {\n SelectedNetworkControllerActionTypes,\n SelectedNetworkControllerEventTypes,\n SelectedNetworkController,\n METAMASK_DOMAIN,\n} from './SelectedNetworkController.js';\nexport type {\n SelectedNetworkControllerSetNetworkClientIdForDomainAction,\n SelectedNetworkControllerGetNetworkClientIdForDomainAction,\n SelectedNetworkControllerGetProviderAndBlockTrackerAction,\n} from './SelectedNetworkController-method-action-types.js';\nexport type { SelectedNetworkMiddlewareJsonRpcRequest } from './SelectedNetworkMiddleware.js';\nexport { createSelectedNetworkMiddleware } from './SelectedNetworkMiddleware.js';\n"]}
|
package/dist/index.d.cts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,8BAA8B,EAC9B,yCAAyC,EACzC,uCAAuC,EACvC,sDAAsD,EACtD,gCAAgC,EAChC,+BAA+B,EAC/B,kCAAkC,EAClC,gCAAgC,EAChC,YAAY,EACZ,MAAM,GACP,wCAAuC;AACxC,OAAO,EACL,oCAAoC,EACpC,mCAAmC,EACnC,yBAAyB,EACzB,eAAe,GAChB,wCAAuC;AACxC,YAAY,EACV,0DAA0D,EAC1D,0DAA0D,EAC1D,yDAAyD,GAC1D,4DAA2D;AAC5D,YAAY,EAAE,uCAAuC,EAAE,wCAAuC;AAC9F,OAAO,EAAE,+BAA+B,EAAE,wCAAuC"}
|
package/dist/index.d.mts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export type { SelectedNetworkControllerState, SelectedNetworkControllerStateChangeEvent, SelectedNetworkControllerGetStateAction, SelectedNetworkControllerGetSelectedNetworkStateAction, SelectedNetworkControllerActions, SelectedNetworkControllerEvents, SelectedNetworkControllerMessenger, SelectedNetworkControllerOptions, NetworkProxy, Domain, } from "./SelectedNetworkController.mjs";
|
|
2
|
-
export { SelectedNetworkControllerActionTypes, SelectedNetworkControllerEventTypes, SelectedNetworkController, METAMASK_DOMAIN, } from "./SelectedNetworkController.mjs";
|
|
3
|
-
export type { SelectedNetworkControllerSetNetworkClientIdForDomainAction, SelectedNetworkControllerGetNetworkClientIdForDomainAction, SelectedNetworkControllerGetProviderAndBlockTrackerAction, } from "./SelectedNetworkController-method-action-types.mjs";
|
|
4
|
-
export type { SelectedNetworkMiddlewareJsonRpcRequest } from "./SelectedNetworkMiddleware.mjs";
|
|
5
|
-
export { createSelectedNetworkMiddleware } from "./SelectedNetworkMiddleware.mjs";
|
|
6
|
-
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,8BAA8B,EAC9B,yCAAyC,EACzC,uCAAuC,EACvC,sDAAsD,EACtD,gCAAgC,EAChC,+BAA+B,EAC/B,kCAAkC,EAClC,gCAAgC,EAChC,YAAY,EACZ,MAAM,GACP,wCAAuC;AACxC,OAAO,EACL,oCAAoC,EACpC,mCAAmC,EACnC,yBAAyB,EACzB,eAAe,GAChB,wCAAuC;AACxC,YAAY,EACV,0DAA0D,EAC1D,0DAA0D,EAC1D,yDAAyD,GAC1D,4DAA2D;AAC5D,YAAY,EAAE,uCAAuC,EAAE,wCAAuC;AAC9F,OAAO,EAAE,+BAA+B,EAAE,wCAAuC"}
|
package/dist/index.mjs
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export { SelectedNetworkControllerActionTypes, SelectedNetworkControllerEventTypes, SelectedNetworkController, METAMASK_DOMAIN } from "./SelectedNetworkController.mjs";
|
|
2
|
-
export { createSelectedNetworkMiddleware } from "./SelectedNetworkMiddleware.mjs";
|
|
3
|
-
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,oCAAoC,EACpC,mCAAmC,EACnC,yBAAyB,EACzB,eAAe,EAChB,wCAAuC;AAOxC,OAAO,EAAE,+BAA+B,EAAE,wCAAuC","sourcesContent":["export type {\n SelectedNetworkControllerState,\n SelectedNetworkControllerStateChangeEvent,\n SelectedNetworkControllerGetStateAction,\n SelectedNetworkControllerGetSelectedNetworkStateAction,\n SelectedNetworkControllerActions,\n SelectedNetworkControllerEvents,\n SelectedNetworkControllerMessenger,\n SelectedNetworkControllerOptions,\n NetworkProxy,\n Domain,\n} from './SelectedNetworkController.js';\nexport {\n SelectedNetworkControllerActionTypes,\n SelectedNetworkControllerEventTypes,\n SelectedNetworkController,\n METAMASK_DOMAIN,\n} from './SelectedNetworkController.js';\nexport type {\n SelectedNetworkControllerSetNetworkClientIdForDomainAction,\n SelectedNetworkControllerGetNetworkClientIdForDomainAction,\n SelectedNetworkControllerGetProviderAndBlockTrackerAction,\n} from './SelectedNetworkController-method-action-types.js';\nexport type { SelectedNetworkMiddlewareJsonRpcRequest } from './SelectedNetworkMiddleware.js';\nexport { createSelectedNetworkMiddleware } from './SelectedNetworkMiddleware.js';\n"]}
|