@metamask/profile-sync-controller 20.0.0 → 22.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -1
- package/dist/controllers/authentication/AuthenticationController.cjs +16 -9
- package/dist/controllers/authentication/AuthenticationController.cjs.map +1 -1
- package/dist/controllers/authentication/AuthenticationController.d.cts +6 -1
- package/dist/controllers/authentication/AuthenticationController.d.cts.map +1 -1
- package/dist/controllers/authentication/AuthenticationController.d.mts +6 -1
- package/dist/controllers/authentication/AuthenticationController.d.mts.map +1 -1
- package/dist/controllers/authentication/AuthenticationController.mjs +16 -9
- package/dist/controllers/authentication/AuthenticationController.mjs.map +1 -1
- package/dist/controllers/user-storage/UserStorageController.cjs +24 -47
- package/dist/controllers/user-storage/UserStorageController.cjs.map +1 -1
- package/dist/controllers/user-storage/UserStorageController.d.cts +16 -49
- package/dist/controllers/user-storage/UserStorageController.d.cts.map +1 -1
- package/dist/controllers/user-storage/UserStorageController.d.mts +16 -49
- package/dist/controllers/user-storage/UserStorageController.d.mts.map +1 -1
- package/dist/controllers/user-storage/UserStorageController.mjs +24 -47
- package/dist/controllers/user-storage/UserStorageController.mjs.map +1 -1
- package/dist/controllers/user-storage/account-syncing/controller-integration.cjs +185 -166
- package/dist/controllers/user-storage/account-syncing/controller-integration.cjs.map +1 -1
- package/dist/controllers/user-storage/account-syncing/controller-integration.d.cts +3 -0
- package/dist/controllers/user-storage/account-syncing/controller-integration.d.cts.map +1 -1
- package/dist/controllers/user-storage/account-syncing/controller-integration.d.mts +3 -0
- package/dist/controllers/user-storage/account-syncing/controller-integration.d.mts.map +1 -1
- package/dist/controllers/user-storage/account-syncing/controller-integration.mjs +185 -166
- package/dist/controllers/user-storage/account-syncing/controller-integration.mjs.map +1 -1
- package/dist/controllers/user-storage/account-syncing/types.cjs.map +1 -1
- package/dist/controllers/user-storage/account-syncing/types.d.cts +2 -0
- package/dist/controllers/user-storage/account-syncing/types.d.cts.map +1 -1
- package/dist/controllers/user-storage/account-syncing/types.d.mts +2 -0
- package/dist/controllers/user-storage/account-syncing/types.d.mts.map +1 -1
- package/dist/controllers/user-storage/account-syncing/types.mjs.map +1 -1
- package/dist/controllers/user-storage/constants.cjs +14 -1
- package/dist/controllers/user-storage/constants.cjs.map +1 -1
- package/dist/controllers/user-storage/constants.d.cts +11 -0
- package/dist/controllers/user-storage/constants.d.cts.map +1 -1
- package/dist/controllers/user-storage/constants.d.mts +11 -0
- package/dist/controllers/user-storage/constants.d.mts.map +1 -1
- package/dist/controllers/user-storage/constants.mjs +13 -0
- package/dist/controllers/user-storage/constants.mjs.map +1 -1
- package/dist/controllers/user-storage/contact-syncing/controller-integration.cjs +227 -162
- package/dist/controllers/user-storage/contact-syncing/controller-integration.cjs.map +1 -1
- package/dist/controllers/user-storage/contact-syncing/controller-integration.d.cts +3 -0
- package/dist/controllers/user-storage/contact-syncing/controller-integration.d.cts.map +1 -1
- package/dist/controllers/user-storage/contact-syncing/controller-integration.d.mts +3 -0
- package/dist/controllers/user-storage/contact-syncing/controller-integration.d.mts.map +1 -1
- package/dist/controllers/user-storage/contact-syncing/controller-integration.mjs +227 -162
- package/dist/controllers/user-storage/contact-syncing/controller-integration.mjs.map +1 -1
- package/dist/controllers/user-storage/contact-syncing/types.cjs.map +1 -1
- package/dist/controllers/user-storage/contact-syncing/types.d.cts +2 -0
- package/dist/controllers/user-storage/contact-syncing/types.d.cts.map +1 -1
- package/dist/controllers/user-storage/contact-syncing/types.d.mts +2 -0
- package/dist/controllers/user-storage/contact-syncing/types.d.mts.map +1 -1
- package/dist/controllers/user-storage/contact-syncing/types.mjs.map +1 -1
- package/dist/controllers/user-storage/mocks/mockResponses.cjs +1 -1
- package/dist/controllers/user-storage/mocks/mockResponses.cjs.map +1 -1
- package/dist/controllers/user-storage/mocks/mockResponses.d.cts +9 -9
- package/dist/controllers/user-storage/mocks/mockResponses.d.cts.map +1 -1
- package/dist/controllers/user-storage/mocks/mockResponses.d.mts +9 -9
- package/dist/controllers/user-storage/mocks/mockResponses.d.mts.map +1 -1
- package/dist/controllers/user-storage/mocks/mockResponses.mjs +1 -1
- package/dist/controllers/user-storage/mocks/mockResponses.mjs.map +1 -1
- package/dist/controllers/user-storage/types.cjs.map +1 -1
- package/dist/controllers/user-storage/types.d.cts +3 -3
- package/dist/controllers/user-storage/types.d.cts.map +1 -1
- package/dist/controllers/user-storage/types.d.mts +3 -3
- package/dist/controllers/user-storage/types.d.mts.map +1 -1
- package/dist/controllers/user-storage/types.mjs.map +1 -1
- package/dist/sdk/user-storage.cjs +3 -9
- package/dist/sdk/user-storage.cjs.map +1 -1
- package/dist/sdk/user-storage.d.cts +0 -1
- package/dist/sdk/user-storage.d.cts.map +1 -1
- package/dist/sdk/user-storage.d.mts +0 -1
- package/dist/sdk/user-storage.d.mts.map +1 -1
- package/dist/sdk/user-storage.mjs +3 -9
- package/dist/sdk/user-storage.mjs.map +1 -1
- package/dist/shared/storage-schema.cjs +9 -32
- package/dist/shared/storage-schema.cjs.map +1 -1
- package/dist/shared/storage-schema.d.cts +10 -42
- package/dist/shared/storage-schema.d.cts.map +1 -1
- package/dist/shared/storage-schema.d.mts +10 -42
- package/dist/shared/storage-schema.d.mts.map +1 -1
- package/dist/shared/storage-schema.mjs +8 -31
- package/dist/shared/storage-schema.mjs.map +1 -1
- package/package.json +5 -7
- package/dist/controllers/user-storage/network-syncing/add-network-utils.cjs +0 -36
- package/dist/controllers/user-storage/network-syncing/add-network-utils.cjs.map +0 -1
- package/dist/controllers/user-storage/network-syncing/add-network-utils.d.cts +0 -22
- package/dist/controllers/user-storage/network-syncing/add-network-utils.d.cts.map +0 -1
- package/dist/controllers/user-storage/network-syncing/add-network-utils.d.mts +0 -22
- package/dist/controllers/user-storage/network-syncing/add-network-utils.d.mts.map +0 -1
- package/dist/controllers/user-storage/network-syncing/add-network-utils.mjs +0 -31
- package/dist/controllers/user-storage/network-syncing/add-network-utils.mjs.map +0 -1
- package/dist/controllers/user-storage/network-syncing/controller-integration.cjs +0 -193
- package/dist/controllers/user-storage/network-syncing/controller-integration.cjs.map +0 -1
- package/dist/controllers/user-storage/network-syncing/controller-integration.d.cts +0 -57
- package/dist/controllers/user-storage/network-syncing/controller-integration.d.cts.map +0 -1
- package/dist/controllers/user-storage/network-syncing/controller-integration.d.mts +0 -57
- package/dist/controllers/user-storage/network-syncing/controller-integration.d.mts.map +0 -1
- package/dist/controllers/user-storage/network-syncing/controller-integration.mjs +0 -191
- package/dist/controllers/user-storage/network-syncing/controller-integration.mjs.map +0 -1
- package/dist/controllers/user-storage/network-syncing/services.cjs +0 -79
- package/dist/controllers/user-storage/network-syncing/services.cjs.map +0 -1
- package/dist/controllers/user-storage/network-syncing/services.d.cts +0 -34
- package/dist/controllers/user-storage/network-syncing/services.d.cts.map +0 -1
- package/dist/controllers/user-storage/network-syncing/services.d.mts +0 -34
- package/dist/controllers/user-storage/network-syncing/services.d.mts.map +0 -1
- package/dist/controllers/user-storage/network-syncing/services.mjs +0 -73
- package/dist/controllers/user-storage/network-syncing/services.mjs.map +0 -1
- package/dist/controllers/user-storage/network-syncing/sync-all.cjs +0 -153
- package/dist/controllers/user-storage/network-syncing/sync-all.cjs.map +0 -1
- package/dist/controllers/user-storage/network-syncing/sync-all.d.cts +0 -32
- package/dist/controllers/user-storage/network-syncing/sync-all.d.cts.map +0 -1
- package/dist/controllers/user-storage/network-syncing/sync-all.d.mts +0 -32
- package/dist/controllers/user-storage/network-syncing/sync-all.d.mts.map +0 -1
- package/dist/controllers/user-storage/network-syncing/sync-all.mjs +0 -145
- package/dist/controllers/user-storage/network-syncing/sync-all.mjs.map +0 -1
- package/dist/controllers/user-storage/network-syncing/sync-mutations.cjs +0 -28
- package/dist/controllers/user-storage/network-syncing/sync-mutations.cjs.map +0 -1
- package/dist/controllers/user-storage/network-syncing/sync-mutations.d.cts +0 -17
- package/dist/controllers/user-storage/network-syncing/sync-mutations.d.cts.map +0 -1
- package/dist/controllers/user-storage/network-syncing/sync-mutations.d.mts +0 -17
- package/dist/controllers/user-storage/network-syncing/sync-mutations.d.mts.map +0 -1
- package/dist/controllers/user-storage/network-syncing/sync-mutations.mjs +0 -22
- package/dist/controllers/user-storage/network-syncing/sync-mutations.mjs.map +0 -1
- package/dist/controllers/user-storage/network-syncing/types.cjs +0 -16
- package/dist/controllers/user-storage/network-syncing/types.cjs.map +0 -1
- package/dist/controllers/user-storage/network-syncing/types.d.cts +0 -15
- package/dist/controllers/user-storage/network-syncing/types.d.cts.map +0 -1
- package/dist/controllers/user-storage/network-syncing/types.d.mts +0 -15
- package/dist/controllers/user-storage/network-syncing/types.d.mts.map +0 -1
- package/dist/controllers/user-storage/network-syncing/types.mjs +0 -11
- package/dist/controllers/user-storage/network-syncing/types.mjs.map +0 -1
- package/dist/controllers/user-storage/network-syncing/update-network-utils.cjs +0 -129
- package/dist/controllers/user-storage/network-syncing/update-network-utils.cjs.map +0 -1
- package/dist/controllers/user-storage/network-syncing/update-network-utils.d.cts +0 -59
- package/dist/controllers/user-storage/network-syncing/update-network-utils.d.cts.map +0 -1
- package/dist/controllers/user-storage/network-syncing/update-network-utils.d.mts +0 -59
- package/dist/controllers/user-storage/network-syncing/update-network-utils.d.mts.map +0 -1
- package/dist/controllers/user-storage/network-syncing/update-network-utils.mjs +0 -122
- package/dist/controllers/user-storage/network-syncing/update-network-utils.mjs.map +0 -1
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { type UpdateNetworkFields, type NetworkConfiguration } from "@metamask/network-controller";
|
|
2
|
-
/**
|
|
3
|
-
* Will map the network configuration we want to update into something valid that `updateNetwork` accepts
|
|
4
|
-
* Exported for testability
|
|
5
|
-
*
|
|
6
|
-
* @param props - properties
|
|
7
|
-
* @param props.originalNetworkConfiguration - original network configuration we will override
|
|
8
|
-
* @param props.newNetworkConfiguration - new network configuration
|
|
9
|
-
* @returns NetworkConfiguration to dispatch to `NetworkController:updateNetwork`
|
|
10
|
-
*/
|
|
11
|
-
export declare const getMappedNetworkConfiguration: (props: {
|
|
12
|
-
originalNetworkConfiguration: NetworkConfiguration;
|
|
13
|
-
newNetworkConfiguration: NetworkConfiguration;
|
|
14
|
-
}) => UpdateNetworkFields;
|
|
15
|
-
/**
|
|
16
|
-
* Will insert any missing infura RPCs, as we cannot remove infura RPC
|
|
17
|
-
* Exported for testability
|
|
18
|
-
*
|
|
19
|
-
* @param props - properties
|
|
20
|
-
* @param props.originalNetworkConfiguration - original network configuration
|
|
21
|
-
* @param props.updateNetworkConfiguration - the updated network configuration to use when dispatching `NetworkController:updateNetwork`
|
|
22
|
-
* @returns mutates and returns the updateNetworkConfiguration
|
|
23
|
-
*/
|
|
24
|
-
export declare const appendMissingInfuraNetworks: (props: {
|
|
25
|
-
originalNetworkConfiguration: NetworkConfiguration;
|
|
26
|
-
updateNetworkConfiguration: UpdateNetworkFields;
|
|
27
|
-
}) => UpdateNetworkFields;
|
|
28
|
-
/**
|
|
29
|
-
* The `NetworkController:updateNetwork` method will require us to pass in a `replacementSelectedRpcEndpointIndex` if the selected RPC is removed or modified
|
|
30
|
-
*
|
|
31
|
-
* @param props - properties
|
|
32
|
-
* @param props.originalNetworkConfiguration - the original network configuration
|
|
33
|
-
* @param props.updateNetworkConfiguration - the new network configuration we will use to update
|
|
34
|
-
* @param props.selectedNetworkClientId - the NetworkController's selected network id.
|
|
35
|
-
* @returns the new RPC index if it needs modification
|
|
36
|
-
*/
|
|
37
|
-
export declare const getNewRPCIndex: (props: {
|
|
38
|
-
originalNetworkConfiguration: NetworkConfiguration;
|
|
39
|
-
updateNetworkConfiguration: UpdateNetworkFields;
|
|
40
|
-
selectedNetworkClientId: string;
|
|
41
|
-
}) => number | undefined;
|
|
42
|
-
/**
|
|
43
|
-
* create the correct `NetworkController:updateNetwork` parameters
|
|
44
|
-
*
|
|
45
|
-
* @param props - properties
|
|
46
|
-
* @param props.originalNetworkConfiguration - original config
|
|
47
|
-
* @param props.newNetworkConfiguration - new config (from remote)
|
|
48
|
-
* @param props.selectedNetworkClientId - the current selected network client id
|
|
49
|
-
* @returns parameters to be used for `NetworkController:updateNetwork` call
|
|
50
|
-
*/
|
|
51
|
-
export declare const createUpdateNetworkProps: (props: {
|
|
52
|
-
originalNetworkConfiguration: NetworkConfiguration;
|
|
53
|
-
newNetworkConfiguration: NetworkConfiguration;
|
|
54
|
-
selectedNetworkClientId: string;
|
|
55
|
-
}) => {
|
|
56
|
-
updateNetworkFields: UpdateNetworkFields;
|
|
57
|
-
newSelectedRpcEndpointIndex: number | undefined;
|
|
58
|
-
};
|
|
59
|
-
//# sourceMappingURL=update-network-utils.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update-network-utils.d.mts","sourceRoot":"","sources":["../../../../src/controllers/user-storage/network-syncing/update-network-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EAC1B,qCAAqC;AAItC;;;;;;;;GAQG;AACH,eAAO,MAAM,6BAA6B,UAAW;IACnD,4BAA4B,EAAE,oBAAoB,CAAC;IACnD,uBAAuB,EAAE,oBAAoB,CAAC;CAC/C,KAAG,mBA6BH,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,UAAW;IACjD,4BAA4B,EAAE,oBAAoB,CAAC;IACnD,0BAA0B,EAAE,mBAAmB,CAAC;CACjD,wBAiCA,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,UAAW;IACpC,4BAA4B,EAAE,oBAAoB,CAAC;IACnD,0BAA0B,EAAE,mBAAmB,CAAC;IAChD,uBAAuB,EAAE,MAAM,CAAC;CACjC,uBAuCA,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,UAAW;IAC9C,4BAA4B,EAAE,oBAAoB,CAAC;IACnD,uBAAuB,EAAE,oBAAoB,CAAC;IAC9C,uBAAuB,EAAE,MAAM,CAAC;CACjC;;;CAmCA,CAAC"}
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import { RpcEndpointType } from "@metamask/network-controller";
|
|
2
|
-
import { setDifference } from "../utils.mjs";
|
|
3
|
-
/**
|
|
4
|
-
* Will map the network configuration we want to update into something valid that `updateNetwork` accepts
|
|
5
|
-
* Exported for testability
|
|
6
|
-
*
|
|
7
|
-
* @param props - properties
|
|
8
|
-
* @param props.originalNetworkConfiguration - original network configuration we will override
|
|
9
|
-
* @param props.newNetworkConfiguration - new network configuration
|
|
10
|
-
* @returns NetworkConfiguration to dispatch to `NetworkController:updateNetwork`
|
|
11
|
-
*/
|
|
12
|
-
export const getMappedNetworkConfiguration = (props) => {
|
|
13
|
-
const { originalNetworkConfiguration, newNetworkConfiguration } = props;
|
|
14
|
-
// Map of URL <> clientId (url is unique)
|
|
15
|
-
const originalRPCUrlMap = new Map(originalNetworkConfiguration.rpcEndpoints.map((r) => [r.url, r.networkClientId]));
|
|
16
|
-
const updateNetworkConfig = newNetworkConfiguration;
|
|
17
|
-
updateNetworkConfig.rpcEndpoints = updateNetworkConfig.rpcEndpoints.map((r) => {
|
|
18
|
-
const originalRPCClientId = originalRPCUrlMap.get(r.url);
|
|
19
|
-
// This is an existing RPC, so use the clients networkClientId
|
|
20
|
-
if (originalRPCClientId) {
|
|
21
|
-
r.networkClientId = originalRPCClientId;
|
|
22
|
-
return r;
|
|
23
|
-
}
|
|
24
|
-
// This is a new RPC, so remove the remote networkClientId
|
|
25
|
-
r.networkClientId = undefined;
|
|
26
|
-
return r;
|
|
27
|
-
});
|
|
28
|
-
return updateNetworkConfig;
|
|
29
|
-
};
|
|
30
|
-
/**
|
|
31
|
-
* Will insert any missing infura RPCs, as we cannot remove infura RPC
|
|
32
|
-
* Exported for testability
|
|
33
|
-
*
|
|
34
|
-
* @param props - properties
|
|
35
|
-
* @param props.originalNetworkConfiguration - original network configuration
|
|
36
|
-
* @param props.updateNetworkConfiguration - the updated network configuration to use when dispatching `NetworkController:updateNetwork`
|
|
37
|
-
* @returns mutates and returns the updateNetworkConfiguration
|
|
38
|
-
*/
|
|
39
|
-
export const appendMissingInfuraNetworks = (props) => {
|
|
40
|
-
const { originalNetworkConfiguration, updateNetworkConfiguration } = props;
|
|
41
|
-
// Ensure we have not removed any infura networks (and add them back if they were removed)
|
|
42
|
-
const origInfuraRPCMap = new Map(originalNetworkConfiguration.rpcEndpoints
|
|
43
|
-
.filter((r) => r.type === RpcEndpointType.Infura)
|
|
44
|
-
.map((r) => [r.networkClientId, r]));
|
|
45
|
-
const newInfuraRPCMap = new Map(updateNetworkConfiguration.rpcEndpoints
|
|
46
|
-
.filter((r) => r.type === RpcEndpointType.Infura && r.networkClientId)
|
|
47
|
-
.map((r) => [r.networkClientId, r]));
|
|
48
|
-
const missingOrigInfuraRPCs = setDifference(new Set(origInfuraRPCMap.keys()), new Set(newInfuraRPCMap.keys()));
|
|
49
|
-
if (missingOrigInfuraRPCs.size > 0) {
|
|
50
|
-
const missingRPCs = [];
|
|
51
|
-
missingOrigInfuraRPCs.forEach((clientId) => {
|
|
52
|
-
missingRPCs.push(origInfuraRPCMap.get(clientId));
|
|
53
|
-
});
|
|
54
|
-
updateNetworkConfiguration.rpcEndpoints.unshift(...missingRPCs);
|
|
55
|
-
}
|
|
56
|
-
return updateNetworkConfiguration;
|
|
57
|
-
};
|
|
58
|
-
/**
|
|
59
|
-
* The `NetworkController:updateNetwork` method will require us to pass in a `replacementSelectedRpcEndpointIndex` if the selected RPC is removed or modified
|
|
60
|
-
*
|
|
61
|
-
* @param props - properties
|
|
62
|
-
* @param props.originalNetworkConfiguration - the original network configuration
|
|
63
|
-
* @param props.updateNetworkConfiguration - the new network configuration we will use to update
|
|
64
|
-
* @param props.selectedNetworkClientId - the NetworkController's selected network id.
|
|
65
|
-
* @returns the new RPC index if it needs modification
|
|
66
|
-
*/
|
|
67
|
-
export const getNewRPCIndex = (props) => {
|
|
68
|
-
const { originalNetworkConfiguration, updateNetworkConfiguration, selectedNetworkClientId, } = props;
|
|
69
|
-
const isRPCInNewList = updateNetworkConfiguration.rpcEndpoints.some((r) => r.networkClientId === selectedNetworkClientId);
|
|
70
|
-
const isRPCInOldList = originalNetworkConfiguration.rpcEndpoints.some((r) => r.networkClientId === selectedNetworkClientId);
|
|
71
|
-
const getAnyRPCIndex = () => Math.max(updateNetworkConfiguration.rpcEndpoints.findIndex((r) => Boolean(r.networkClientId)), 0);
|
|
72
|
-
// We have removed the selected RPC, so we must point to a new RPC index
|
|
73
|
-
if (isRPCInOldList && !isRPCInNewList) {
|
|
74
|
-
// Try finding an existing index, or default to first RPC.
|
|
75
|
-
const newIndex = getAnyRPCIndex();
|
|
76
|
-
return newIndex;
|
|
77
|
-
}
|
|
78
|
-
// We have updated the selected RPC, so we must point to the same RPC index (or a new one)
|
|
79
|
-
if (isRPCInOldList && isRPCInNewList) {
|
|
80
|
-
const existingIndex = updateNetworkConfiguration.rpcEndpoints.findIndex((r) => r.networkClientId === selectedNetworkClientId);
|
|
81
|
-
/* istanbul ignore next - the `getAnyRPCIndex` should not be reachable since this is an existing network */
|
|
82
|
-
return existingIndex !== -1 ? existingIndex : getAnyRPCIndex();
|
|
83
|
-
}
|
|
84
|
-
return undefined;
|
|
85
|
-
};
|
|
86
|
-
/**
|
|
87
|
-
* create the correct `NetworkController:updateNetwork` parameters
|
|
88
|
-
*
|
|
89
|
-
* @param props - properties
|
|
90
|
-
* @param props.originalNetworkConfiguration - original config
|
|
91
|
-
* @param props.newNetworkConfiguration - new config (from remote)
|
|
92
|
-
* @param props.selectedNetworkClientId - the current selected network client id
|
|
93
|
-
* @returns parameters to be used for `NetworkController:updateNetwork` call
|
|
94
|
-
*/
|
|
95
|
-
export const createUpdateNetworkProps = (props) => {
|
|
96
|
-
const { originalNetworkConfiguration, newNetworkConfiguration, selectedNetworkClientId, } = props;
|
|
97
|
-
// The `NetworkController:updateNetwork` has a strict set of rules to follow
|
|
98
|
-
// New RPCs that we are adding must not have a networkClientId
|
|
99
|
-
// Existing RPCs must point to the correct networkClientId (so we must convert and use this client clientIds set)
|
|
100
|
-
// Removing RPCs are omitted from the list
|
|
101
|
-
// We cannot remove infura RPCs - so ensure that they stay populated
|
|
102
|
-
// If we are removing a selected RPC - then we need to provide `replacementSelectedRpcEndpointIndex` to an index in the new list
|
|
103
|
-
// If we are updating a selected RPC - then we need to provide `replacementSelectedRpcEndpointIndex` to the index in the new list
|
|
104
|
-
const mappedNetworkConfiguration = getMappedNetworkConfiguration({
|
|
105
|
-
originalNetworkConfiguration,
|
|
106
|
-
newNetworkConfiguration,
|
|
107
|
-
});
|
|
108
|
-
appendMissingInfuraNetworks({
|
|
109
|
-
originalNetworkConfiguration,
|
|
110
|
-
updateNetworkConfiguration: mappedNetworkConfiguration,
|
|
111
|
-
});
|
|
112
|
-
const updatedRPCIndex = getNewRPCIndex({
|
|
113
|
-
originalNetworkConfiguration,
|
|
114
|
-
updateNetworkConfiguration: mappedNetworkConfiguration,
|
|
115
|
-
selectedNetworkClientId,
|
|
116
|
-
});
|
|
117
|
-
return {
|
|
118
|
-
updateNetworkFields: mappedNetworkConfiguration,
|
|
119
|
-
newSelectedRpcEndpointIndex: updatedRPCIndex,
|
|
120
|
-
};
|
|
121
|
-
};
|
|
122
|
-
//# sourceMappingURL=update-network-utils.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update-network-utils.mjs","sourceRoot":"","sources":["../../../../src/controllers/user-storage/network-syncing/update-network-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n RpcEndpointType,\n type UpdateNetworkFields,\n type NetworkConfiguration,\n} from '@metamask/network-controller';\n\nimport { setDifference } from '../utils';\n\n/**\n * Will map the network configuration we want to update into something valid that `updateNetwork` accepts\n * Exported for testability\n *\n * @param props - properties\n * @param props.originalNetworkConfiguration - original network configuration we will override\n * @param props.newNetworkConfiguration - new network configuration\n * @returns NetworkConfiguration to dispatch to `NetworkController:updateNetwork`\n */\nexport const getMappedNetworkConfiguration = (props: {\n originalNetworkConfiguration: NetworkConfiguration;\n newNetworkConfiguration: NetworkConfiguration;\n}): UpdateNetworkFields => {\n const { originalNetworkConfiguration, newNetworkConfiguration } = props;\n\n // Map of URL <> clientId (url is unique)\n const originalRPCUrlMap = new Map(\n originalNetworkConfiguration.rpcEndpoints.map(\n (r) => [r.url, r.networkClientId] as const,\n ),\n );\n\n const updateNetworkConfig = newNetworkConfiguration as UpdateNetworkFields;\n\n updateNetworkConfig.rpcEndpoints = updateNetworkConfig.rpcEndpoints.map(\n (r) => {\n const originalRPCClientId = originalRPCUrlMap.get(r.url);\n\n // This is an existing RPC, so use the clients networkClientId\n if (originalRPCClientId) {\n r.networkClientId = originalRPCClientId;\n return r;\n }\n\n // This is a new RPC, so remove the remote networkClientId\n r.networkClientId = undefined;\n return r;\n },\n );\n\n return updateNetworkConfig;\n};\n\n/**\n * Will insert any missing infura RPCs, as we cannot remove infura RPC\n * Exported for testability\n *\n * @param props - properties\n * @param props.originalNetworkConfiguration - original network configuration\n * @param props.updateNetworkConfiguration - the updated network configuration to use when dispatching `NetworkController:updateNetwork`\n * @returns mutates and returns the updateNetworkConfiguration\n */\nexport const appendMissingInfuraNetworks = (props: {\n originalNetworkConfiguration: NetworkConfiguration;\n updateNetworkConfiguration: UpdateNetworkFields;\n}) => {\n const { originalNetworkConfiguration, updateNetworkConfiguration } = props;\n\n // Ensure we have not removed any infura networks (and add them back if they were removed)\n const origInfuraRPCMap = new Map(\n originalNetworkConfiguration.rpcEndpoints\n .filter((r) => r.type === RpcEndpointType.Infura)\n .map((r) => [r.networkClientId, r] as const),\n );\n const newInfuraRPCMap = new Map(\n updateNetworkConfiguration.rpcEndpoints\n .filter((r) => r.type === RpcEndpointType.Infura && r.networkClientId)\n .map((r) => [r.networkClientId as string, r]),\n );\n const missingOrigInfuraRPCs = setDifference(\n new Set(origInfuraRPCMap.keys()),\n new Set(newInfuraRPCMap.keys()),\n );\n\n if (missingOrigInfuraRPCs.size > 0) {\n const missingRPCs: UpdateNetworkFields['rpcEndpoints'] = [];\n missingOrigInfuraRPCs.forEach((clientId) => {\n missingRPCs.push(\n origInfuraRPCMap.get(\n clientId,\n ) as UpdateNetworkFields['rpcEndpoints'][number],\n );\n });\n\n updateNetworkConfiguration.rpcEndpoints.unshift(...missingRPCs);\n }\n\n return updateNetworkConfiguration;\n};\n\n/**\n * The `NetworkController:updateNetwork` method will require us to pass in a `replacementSelectedRpcEndpointIndex` if the selected RPC is removed or modified\n *\n * @param props - properties\n * @param props.originalNetworkConfiguration - the original network configuration\n * @param props.updateNetworkConfiguration - the new network configuration we will use to update\n * @param props.selectedNetworkClientId - the NetworkController's selected network id.\n * @returns the new RPC index if it needs modification\n */\nexport const getNewRPCIndex = (props: {\n originalNetworkConfiguration: NetworkConfiguration;\n updateNetworkConfiguration: UpdateNetworkFields;\n selectedNetworkClientId: string;\n}) => {\n const {\n originalNetworkConfiguration,\n updateNetworkConfiguration,\n selectedNetworkClientId,\n } = props;\n\n const isRPCInNewList = updateNetworkConfiguration.rpcEndpoints.some(\n (r) => r.networkClientId === selectedNetworkClientId,\n );\n const isRPCInOldList = originalNetworkConfiguration.rpcEndpoints.some(\n (r) => r.networkClientId === selectedNetworkClientId,\n );\n\n const getAnyRPCIndex = () =>\n Math.max(\n updateNetworkConfiguration.rpcEndpoints.findIndex((r) =>\n Boolean(r.networkClientId),\n ),\n 0,\n );\n\n // We have removed the selected RPC, so we must point to a new RPC index\n if (isRPCInOldList && !isRPCInNewList) {\n // Try finding an existing index, or default to first RPC.\n const newIndex = getAnyRPCIndex();\n return newIndex;\n }\n\n // We have updated the selected RPC, so we must point to the same RPC index (or a new one)\n if (isRPCInOldList && isRPCInNewList) {\n const existingIndex = updateNetworkConfiguration.rpcEndpoints.findIndex(\n (r) => r.networkClientId === selectedNetworkClientId,\n );\n /* istanbul ignore next - the `getAnyRPCIndex` should not be reachable since this is an existing network */\n return existingIndex !== -1 ? existingIndex : getAnyRPCIndex();\n }\n\n return undefined;\n};\n\n/**\n * create the correct `NetworkController:updateNetwork` parameters\n *\n * @param props - properties\n * @param props.originalNetworkConfiguration - original config\n * @param props.newNetworkConfiguration - new config (from remote)\n * @param props.selectedNetworkClientId - the current selected network client id\n * @returns parameters to be used for `NetworkController:updateNetwork` call\n */\nexport const createUpdateNetworkProps = (props: {\n originalNetworkConfiguration: NetworkConfiguration;\n newNetworkConfiguration: NetworkConfiguration;\n selectedNetworkClientId: string;\n}) => {\n const {\n originalNetworkConfiguration,\n newNetworkConfiguration,\n selectedNetworkClientId,\n } = props;\n\n // The `NetworkController:updateNetwork` has a strict set of rules to follow\n // New RPCs that we are adding must not have a networkClientId\n // Existing RPCs must point to the correct networkClientId (so we must convert and use this client clientIds set)\n // Removing RPCs are omitted from the list\n // We cannot remove infura RPCs - so ensure that they stay populated\n // If we are removing a selected RPC - then we need to provide `replacementSelectedRpcEndpointIndex` to an index in the new list\n // If we are updating a selected RPC - then we need to provide `replacementSelectedRpcEndpointIndex` to the index in the new list\n\n const mappedNetworkConfiguration = getMappedNetworkConfiguration({\n originalNetworkConfiguration,\n newNetworkConfiguration,\n });\n\n appendMissingInfuraNetworks({\n originalNetworkConfiguration,\n updateNetworkConfiguration: mappedNetworkConfiguration,\n });\n\n const updatedRPCIndex = getNewRPCIndex({\n originalNetworkConfiguration,\n updateNetworkConfiguration: mappedNetworkConfiguration,\n selectedNetworkClientId,\n });\n\n return {\n updateNetworkFields: mappedNetworkConfiguration,\n newSelectedRpcEndpointIndex: updatedRPCIndex,\n };\n};\n"]}
|