@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.
Files changed (140) hide show
  1. package/CHANGELOG.md +25 -1
  2. package/dist/controllers/authentication/AuthenticationController.cjs +16 -9
  3. package/dist/controllers/authentication/AuthenticationController.cjs.map +1 -1
  4. package/dist/controllers/authentication/AuthenticationController.d.cts +6 -1
  5. package/dist/controllers/authentication/AuthenticationController.d.cts.map +1 -1
  6. package/dist/controllers/authentication/AuthenticationController.d.mts +6 -1
  7. package/dist/controllers/authentication/AuthenticationController.d.mts.map +1 -1
  8. package/dist/controllers/authentication/AuthenticationController.mjs +16 -9
  9. package/dist/controllers/authentication/AuthenticationController.mjs.map +1 -1
  10. package/dist/controllers/user-storage/UserStorageController.cjs +24 -47
  11. package/dist/controllers/user-storage/UserStorageController.cjs.map +1 -1
  12. package/dist/controllers/user-storage/UserStorageController.d.cts +16 -49
  13. package/dist/controllers/user-storage/UserStorageController.d.cts.map +1 -1
  14. package/dist/controllers/user-storage/UserStorageController.d.mts +16 -49
  15. package/dist/controllers/user-storage/UserStorageController.d.mts.map +1 -1
  16. package/dist/controllers/user-storage/UserStorageController.mjs +24 -47
  17. package/dist/controllers/user-storage/UserStorageController.mjs.map +1 -1
  18. package/dist/controllers/user-storage/account-syncing/controller-integration.cjs +185 -166
  19. package/dist/controllers/user-storage/account-syncing/controller-integration.cjs.map +1 -1
  20. package/dist/controllers/user-storage/account-syncing/controller-integration.d.cts +3 -0
  21. package/dist/controllers/user-storage/account-syncing/controller-integration.d.cts.map +1 -1
  22. package/dist/controllers/user-storage/account-syncing/controller-integration.d.mts +3 -0
  23. package/dist/controllers/user-storage/account-syncing/controller-integration.d.mts.map +1 -1
  24. package/dist/controllers/user-storage/account-syncing/controller-integration.mjs +185 -166
  25. package/dist/controllers/user-storage/account-syncing/controller-integration.mjs.map +1 -1
  26. package/dist/controllers/user-storage/account-syncing/types.cjs.map +1 -1
  27. package/dist/controllers/user-storage/account-syncing/types.d.cts +2 -0
  28. package/dist/controllers/user-storage/account-syncing/types.d.cts.map +1 -1
  29. package/dist/controllers/user-storage/account-syncing/types.d.mts +2 -0
  30. package/dist/controllers/user-storage/account-syncing/types.d.mts.map +1 -1
  31. package/dist/controllers/user-storage/account-syncing/types.mjs.map +1 -1
  32. package/dist/controllers/user-storage/constants.cjs +14 -1
  33. package/dist/controllers/user-storage/constants.cjs.map +1 -1
  34. package/dist/controllers/user-storage/constants.d.cts +11 -0
  35. package/dist/controllers/user-storage/constants.d.cts.map +1 -1
  36. package/dist/controllers/user-storage/constants.d.mts +11 -0
  37. package/dist/controllers/user-storage/constants.d.mts.map +1 -1
  38. package/dist/controllers/user-storage/constants.mjs +13 -0
  39. package/dist/controllers/user-storage/constants.mjs.map +1 -1
  40. package/dist/controllers/user-storage/contact-syncing/controller-integration.cjs +227 -162
  41. package/dist/controllers/user-storage/contact-syncing/controller-integration.cjs.map +1 -1
  42. package/dist/controllers/user-storage/contact-syncing/controller-integration.d.cts +3 -0
  43. package/dist/controllers/user-storage/contact-syncing/controller-integration.d.cts.map +1 -1
  44. package/dist/controllers/user-storage/contact-syncing/controller-integration.d.mts +3 -0
  45. package/dist/controllers/user-storage/contact-syncing/controller-integration.d.mts.map +1 -1
  46. package/dist/controllers/user-storage/contact-syncing/controller-integration.mjs +227 -162
  47. package/dist/controllers/user-storage/contact-syncing/controller-integration.mjs.map +1 -1
  48. package/dist/controllers/user-storage/contact-syncing/types.cjs.map +1 -1
  49. package/dist/controllers/user-storage/contact-syncing/types.d.cts +2 -0
  50. package/dist/controllers/user-storage/contact-syncing/types.d.cts.map +1 -1
  51. package/dist/controllers/user-storage/contact-syncing/types.d.mts +2 -0
  52. package/dist/controllers/user-storage/contact-syncing/types.d.mts.map +1 -1
  53. package/dist/controllers/user-storage/contact-syncing/types.mjs.map +1 -1
  54. package/dist/controllers/user-storage/mocks/mockResponses.cjs +1 -1
  55. package/dist/controllers/user-storage/mocks/mockResponses.cjs.map +1 -1
  56. package/dist/controllers/user-storage/mocks/mockResponses.d.cts +9 -9
  57. package/dist/controllers/user-storage/mocks/mockResponses.d.cts.map +1 -1
  58. package/dist/controllers/user-storage/mocks/mockResponses.d.mts +9 -9
  59. package/dist/controllers/user-storage/mocks/mockResponses.d.mts.map +1 -1
  60. package/dist/controllers/user-storage/mocks/mockResponses.mjs +1 -1
  61. package/dist/controllers/user-storage/mocks/mockResponses.mjs.map +1 -1
  62. package/dist/controllers/user-storage/types.cjs.map +1 -1
  63. package/dist/controllers/user-storage/types.d.cts +3 -3
  64. package/dist/controllers/user-storage/types.d.cts.map +1 -1
  65. package/dist/controllers/user-storage/types.d.mts +3 -3
  66. package/dist/controllers/user-storage/types.d.mts.map +1 -1
  67. package/dist/controllers/user-storage/types.mjs.map +1 -1
  68. package/dist/sdk/user-storage.cjs +3 -9
  69. package/dist/sdk/user-storage.cjs.map +1 -1
  70. package/dist/sdk/user-storage.d.cts +0 -1
  71. package/dist/sdk/user-storage.d.cts.map +1 -1
  72. package/dist/sdk/user-storage.d.mts +0 -1
  73. package/dist/sdk/user-storage.d.mts.map +1 -1
  74. package/dist/sdk/user-storage.mjs +3 -9
  75. package/dist/sdk/user-storage.mjs.map +1 -1
  76. package/dist/shared/storage-schema.cjs +9 -32
  77. package/dist/shared/storage-schema.cjs.map +1 -1
  78. package/dist/shared/storage-schema.d.cts +10 -42
  79. package/dist/shared/storage-schema.d.cts.map +1 -1
  80. package/dist/shared/storage-schema.d.mts +10 -42
  81. package/dist/shared/storage-schema.d.mts.map +1 -1
  82. package/dist/shared/storage-schema.mjs +8 -31
  83. package/dist/shared/storage-schema.mjs.map +1 -1
  84. package/package.json +5 -7
  85. package/dist/controllers/user-storage/network-syncing/add-network-utils.cjs +0 -36
  86. package/dist/controllers/user-storage/network-syncing/add-network-utils.cjs.map +0 -1
  87. package/dist/controllers/user-storage/network-syncing/add-network-utils.d.cts +0 -22
  88. package/dist/controllers/user-storage/network-syncing/add-network-utils.d.cts.map +0 -1
  89. package/dist/controllers/user-storage/network-syncing/add-network-utils.d.mts +0 -22
  90. package/dist/controllers/user-storage/network-syncing/add-network-utils.d.mts.map +0 -1
  91. package/dist/controllers/user-storage/network-syncing/add-network-utils.mjs +0 -31
  92. package/dist/controllers/user-storage/network-syncing/add-network-utils.mjs.map +0 -1
  93. package/dist/controllers/user-storage/network-syncing/controller-integration.cjs +0 -193
  94. package/dist/controllers/user-storage/network-syncing/controller-integration.cjs.map +0 -1
  95. package/dist/controllers/user-storage/network-syncing/controller-integration.d.cts +0 -57
  96. package/dist/controllers/user-storage/network-syncing/controller-integration.d.cts.map +0 -1
  97. package/dist/controllers/user-storage/network-syncing/controller-integration.d.mts +0 -57
  98. package/dist/controllers/user-storage/network-syncing/controller-integration.d.mts.map +0 -1
  99. package/dist/controllers/user-storage/network-syncing/controller-integration.mjs +0 -191
  100. package/dist/controllers/user-storage/network-syncing/controller-integration.mjs.map +0 -1
  101. package/dist/controllers/user-storage/network-syncing/services.cjs +0 -79
  102. package/dist/controllers/user-storage/network-syncing/services.cjs.map +0 -1
  103. package/dist/controllers/user-storage/network-syncing/services.d.cts +0 -34
  104. package/dist/controllers/user-storage/network-syncing/services.d.cts.map +0 -1
  105. package/dist/controllers/user-storage/network-syncing/services.d.mts +0 -34
  106. package/dist/controllers/user-storage/network-syncing/services.d.mts.map +0 -1
  107. package/dist/controllers/user-storage/network-syncing/services.mjs +0 -73
  108. package/dist/controllers/user-storage/network-syncing/services.mjs.map +0 -1
  109. package/dist/controllers/user-storage/network-syncing/sync-all.cjs +0 -153
  110. package/dist/controllers/user-storage/network-syncing/sync-all.cjs.map +0 -1
  111. package/dist/controllers/user-storage/network-syncing/sync-all.d.cts +0 -32
  112. package/dist/controllers/user-storage/network-syncing/sync-all.d.cts.map +0 -1
  113. package/dist/controllers/user-storage/network-syncing/sync-all.d.mts +0 -32
  114. package/dist/controllers/user-storage/network-syncing/sync-all.d.mts.map +0 -1
  115. package/dist/controllers/user-storage/network-syncing/sync-all.mjs +0 -145
  116. package/dist/controllers/user-storage/network-syncing/sync-all.mjs.map +0 -1
  117. package/dist/controllers/user-storage/network-syncing/sync-mutations.cjs +0 -28
  118. package/dist/controllers/user-storage/network-syncing/sync-mutations.cjs.map +0 -1
  119. package/dist/controllers/user-storage/network-syncing/sync-mutations.d.cts +0 -17
  120. package/dist/controllers/user-storage/network-syncing/sync-mutations.d.cts.map +0 -1
  121. package/dist/controllers/user-storage/network-syncing/sync-mutations.d.mts +0 -17
  122. package/dist/controllers/user-storage/network-syncing/sync-mutations.d.mts.map +0 -1
  123. package/dist/controllers/user-storage/network-syncing/sync-mutations.mjs +0 -22
  124. package/dist/controllers/user-storage/network-syncing/sync-mutations.mjs.map +0 -1
  125. package/dist/controllers/user-storage/network-syncing/types.cjs +0 -16
  126. package/dist/controllers/user-storage/network-syncing/types.cjs.map +0 -1
  127. package/dist/controllers/user-storage/network-syncing/types.d.cts +0 -15
  128. package/dist/controllers/user-storage/network-syncing/types.d.cts.map +0 -1
  129. package/dist/controllers/user-storage/network-syncing/types.d.mts +0 -15
  130. package/dist/controllers/user-storage/network-syncing/types.d.mts.map +0 -1
  131. package/dist/controllers/user-storage/network-syncing/types.mjs +0 -11
  132. package/dist/controllers/user-storage/network-syncing/types.mjs.map +0 -1
  133. package/dist/controllers/user-storage/network-syncing/update-network-utils.cjs +0 -129
  134. package/dist/controllers/user-storage/network-syncing/update-network-utils.cjs.map +0 -1
  135. package/dist/controllers/user-storage/network-syncing/update-network-utils.d.cts +0 -59
  136. package/dist/controllers/user-storage/network-syncing/update-network-utils.d.cts.map +0 -1
  137. package/dist/controllers/user-storage/network-syncing/update-network-utils.d.mts +0 -59
  138. package/dist/controllers/user-storage/network-syncing/update-network-utils.d.mts.map +0 -1
  139. package/dist/controllers/user-storage/network-syncing/update-network-utils.mjs +0 -122
  140. package/dist/controllers/user-storage/network-syncing/update-network-utils.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"controller-integration.mjs","sourceRoot":"","sources":["../../../../src/controllers/user-storage/network-syncing/controller-integration.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NetworkConfiguration } from '@metamask/network-controller';\nimport log from 'loglevel';\n\nimport { getBoundedNetworksToAdd } from './add-network-utils';\nimport { getAllRemoteNetworks } from './services';\nimport { findNetworksToUpdate } from './sync-all';\nimport { batchUpdateNetworks, deleteNetwork } from './sync-mutations';\nimport { createUpdateNetworkProps } from './update-network-utils';\nimport type UserStorageController from '../UserStorageController';\nimport type { UserStorageControllerMessenger } from '../UserStorageController';\n\ntype StartNetworkSyncingProps = {\n messenger: UserStorageControllerMessenger;\n getUserStorageControllerInstance: () => UserStorageController;\n isMutationSyncBlocked: () => boolean;\n};\n\ntype PerformMainNetworkSyncProps = {\n messenger: UserStorageControllerMessenger;\n getUserStorageControllerInstance: () => UserStorageController;\n maxNetworksToAdd?: number;\n onNetworkAdded?: (chainId: string) => void;\n onNetworkUpdated?: (chainId: string) => void;\n onNetworkRemoved?: (chainId: string) => void;\n};\n\n/**\n * Global in-mem cache to signify that the network syncing is in progress\n * Ensures that listeners do not fire during main sync (prevent double requests)\n */\n// Exported to help testing\n// eslint-disable-next-line import-x/no-mutable-exports\nexport let isMainNetworkSyncInProgress = false;\n\n/**\n * Initialize and setup events to listen to for network syncing\n * We will be listening to:\n * - Remove Event, to indicate that we need to remote network from remote\n *\n * We will not be listening to:\n * - Add/Update events are not required, as we can sync these during the main sync\n *\n * @param props - parameters used for initializing and enabling network syncing\n */\nexport function startNetworkSyncing(props: StartNetworkSyncingProps) {\n const { messenger, isMutationSyncBlocked, getUserStorageControllerInstance } =\n props;\n try {\n messenger.subscribe(\n 'NetworkController:networkRemoved',\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n async (networkConfiguration) => {\n try {\n // If blocked (e.g. we have not yet performed a main-sync), then we should not perform any mutations\n if (isMutationSyncBlocked()) {\n return;\n }\n\n // As main sync is in progress, it will already local and remote networks\n // So no need to re-process again.\n if (isMainNetworkSyncInProgress) {\n return;\n }\n\n await deleteNetwork(networkConfiguration, {\n getUserStorageControllerInstance,\n });\n } catch {\n // Silently fail sync\n }\n },\n );\n } catch (e) {\n log.warn('NetworkSyncing, event subscription failed', e);\n }\n}\n\n/**\n * method that will dispatch the `NetworkController:updateNetwork` action.\n * transforms and corrects the network configuration (and RPCs) we pass through.\n *\n * @param props - properties\n * @param props.messenger - messenger to call the action\n * @param props.originalNetworkConfiguration - original network config (from network controller state)\n * @param props.newNetworkConfiguration - new network config (from remote)\n * @param props.selectedNetworkClientId - currently selected network client id\n */\nexport const dispatchUpdateNetwork = async (props: {\n messenger: UserStorageControllerMessenger;\n originalNetworkConfiguration: NetworkConfiguration;\n newNetworkConfiguration: NetworkConfiguration;\n selectedNetworkClientId: string;\n}) => {\n const {\n messenger,\n originalNetworkConfiguration,\n newNetworkConfiguration,\n selectedNetworkClientId,\n } = props;\n\n const { updateNetworkFields, newSelectedRpcEndpointIndex } =\n createUpdateNetworkProps({\n originalNetworkConfiguration,\n newNetworkConfiguration,\n selectedNetworkClientId,\n });\n\n await messenger.call(\n 'NetworkController:updateNetwork',\n updateNetworkFields.chainId,\n updateNetworkFields,\n { replacementSelectedRpcEndpointIndex: newSelectedRpcEndpointIndex },\n );\n};\n\n/**\n * Action to perform the main network sync.\n * It will fetch local networks and remote networks, then determines which networks (local and remote) to add/update\n *\n * @param props - parameters used for this main sync\n */\nexport async function performMainNetworkSync(\n props: PerformMainNetworkSyncProps,\n) {\n const {\n messenger,\n maxNetworksToAdd,\n onNetworkAdded,\n onNetworkRemoved,\n onNetworkUpdated,\n getUserStorageControllerInstance,\n } = props;\n\n // Edge-Case, we do not want to re-run the main-sync if it already is in progress\n /* istanbul ignore if - this is not testable */\n if (isMainNetworkSyncInProgress) {\n return;\n }\n\n isMainNetworkSyncInProgress = true;\n try {\n const networkControllerState = messenger.call('NetworkController:getState');\n const localNetworks = Object.values(\n networkControllerState.networkConfigurationsByChainId ?? {},\n );\n\n const remoteNetworks = await getAllRemoteNetworks({\n getUserStorageControllerInstance,\n });\n const networkChanges = findNetworksToUpdate({\n localNetworks,\n remoteNetworks,\n });\n\n log.debug('performMainNetworkSync() - Network Syncing Started', {\n localNetworks,\n remoteNetworks,\n networkChanges,\n });\n\n // Update Remote\n if (\n networkChanges?.remoteNetworksToUpdate &&\n networkChanges.remoteNetworksToUpdate.length > 0\n ) {\n await batchUpdateNetworks(networkChanges?.remoteNetworksToUpdate, {\n getUserStorageControllerInstance,\n });\n }\n\n // Add missing local networks\n const boundedNetworkedToAdd =\n networkChanges?.missingLocalNetworks &&\n getBoundedNetworksToAdd(\n localNetworks,\n networkChanges.missingLocalNetworks,\n maxNetworksToAdd,\n );\n if (boundedNetworkedToAdd && boundedNetworkedToAdd.length > 0) {\n const errors: unknown[] = [];\n boundedNetworkedToAdd.forEach((n) => {\n try {\n messenger.call('NetworkController:addNetwork', n);\n onNetworkAdded?.(n.chainId);\n } catch (e) {\n /* istanbul ignore next - allocates logs, do not need to test */\n errors.push(e);\n // Silently fail, we can try this again on next main sync\n }\n });\n\n /* istanbul ignore if - only logs errors, not useful to test */\n if (errors.length > 0) {\n log.error(\n 'performMainNetworkSync() - NetworkController:addNetwork failures',\n errors,\n );\n }\n }\n\n // Update local networks\n if (\n networkChanges?.localNetworksToUpdate &&\n networkChanges.localNetworksToUpdate.length > 0\n ) {\n const errors: unknown[] = [];\n for (const n of networkChanges.localNetworksToUpdate) {\n try {\n await dispatchUpdateNetwork({\n messenger,\n originalNetworkConfiguration:\n networkControllerState.networkConfigurationsByChainId[n.chainId],\n newNetworkConfiguration: n,\n selectedNetworkClientId:\n networkControllerState.selectedNetworkClientId,\n });\n onNetworkUpdated?.(n.chainId);\n } catch (e) {\n /* istanbul ignore next - allocates logs, do not need to test */\n errors.push(e);\n // Silently fail, we can try this again on next main sync\n }\n }\n\n /* istanbul ignore if - only logs errors, not useful to test */\n if (errors.length > 0) {\n log.error(\n 'performMainNetworkSync() - NetworkController:updateNetwork failed',\n errors,\n );\n }\n }\n\n // Remove local networks\n if (\n networkChanges?.localNetworksToRemove &&\n networkChanges.localNetworksToRemove.length > 0\n ) {\n const errors: unknown[] = [];\n networkChanges.localNetworksToRemove.forEach((n) => {\n try {\n messenger.call('NetworkController:removeNetwork', n.chainId);\n onNetworkRemoved?.(n.chainId);\n } catch (e) {\n /* istanbul ignore next - allocates logs, do not need to test */\n errors.push(e);\n // Silently fail, we can try this again on next main sync\n }\n });\n\n /* istanbul ignore if - only logs errors, not useful to test */\n if (errors.length > 0) {\n log.error(\n 'performMainNetworkSync() - NetworkController:removeNetwork failed',\n errors,\n );\n }\n }\n } catch (e) {\n /* istanbul ignore next - only logs errors, not useful to test */\n log.error('performMainNetworkSync() failed', e);\n // Silently fail sync\n } finally {\n isMainNetworkSyncInProgress = false;\n }\n}\n"]}
@@ -1,79 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.batchUpsertRemoteNetworks = exports.upsertRemoteNetwork = exports.getAllRemoteNetworks = void 0;
4
- const storage_schema_1 = require("../../../shared/storage-schema.cjs");
5
- // TODO - parse type, and handle version changes
6
- /**
7
- * parses the raw remote data to the NetworkConfiguration shape
8
- *
9
- * @todo - improve parsing instead of asserting
10
- * @todo - improve version handling
11
- * @param rawData - raw remote user storage data
12
- * @returns NetworkConfiguration or undefined if failed to parse
13
- */
14
- function parseNetworkConfiguration(rawData) {
15
- try {
16
- return JSON.parse(rawData);
17
- }
18
- catch {
19
- return undefined;
20
- }
21
- }
22
- const isDefined = (value) => value !== undefined && value !== null;
23
- /**
24
- * gets all remote networks from user storage
25
- *
26
- * @param serviceOptions - service options
27
- * @param serviceOptions.getUserStorageControllerInstance - function to get the user storage controller instance
28
- * @returns array of all remote networks
29
- */
30
- async function getAllRemoteNetworks(serviceOptions) {
31
- try {
32
- const rawResults = (await serviceOptions
33
- .getUserStorageControllerInstance()
34
- .performGetStorageAllFeatureEntries(storage_schema_1.USER_STORAGE_FEATURE_NAMES.networks)) ?? [];
35
- const results = rawResults
36
- .map((rawData) => parseNetworkConfiguration(rawData))
37
- .filter(isDefined);
38
- return results;
39
- }
40
- catch {
41
- return [];
42
- }
43
- }
44
- exports.getAllRemoteNetworks = getAllRemoteNetworks;
45
- /**
46
- * Upserts a remote network to user storage
47
- *
48
- * @param network - network we are updating or inserting
49
- * @param serviceOptions - service options
50
- * @param serviceOptions.getUserStorageControllerInstance - function to get the user storage controller instance
51
- * @returns void
52
- */
53
- async function upsertRemoteNetwork(network, serviceOptions) {
54
- const chainId = network.chainId.toString();
55
- const data = JSON.stringify(network);
56
- return await serviceOptions
57
- .getUserStorageControllerInstance()
58
- .performSetStorage(`networks.${chainId}`, data);
59
- }
60
- exports.upsertRemoteNetwork = upsertRemoteNetwork;
61
- /**
62
- * Batch upsert a list of remote networks into user storage
63
- *
64
- * @param networks - a list of networks to update or insert
65
- * @param serviceOptions - service options
66
- * @param serviceOptions.getUserStorageControllerInstance - function to get the user storage controller instance
67
- */
68
- async function batchUpsertRemoteNetworks(networks, serviceOptions) {
69
- const networkPathAndValues = networks.map((n) => {
70
- const path = n.chainId;
71
- const data = JSON.stringify(n);
72
- return [path, data];
73
- });
74
- await serviceOptions
75
- .getUserStorageControllerInstance()
76
- .performBatchSetStorage('networks', networkPathAndValues);
77
- }
78
- exports.batchUpsertRemoteNetworks = batchUpsertRemoteNetworks;
79
- //# sourceMappingURL=services.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"services.cjs","sourceRoot":"","sources":["../../../../src/controllers/user-storage/network-syncing/services.ts"],"names":[],"mappings":";;;AACA,uEAA4E;AAG5E,gDAAgD;AAChD;;;;;;;GAOG;AACH,SAAS,yBAAyB,CAAC,OAAe;IAChD,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAA+B,CAAC;KAC1D;IAAC,MAAM;QACN,OAAO,SAAS,CAAC;KAClB;AACH,CAAC;AAED,MAAM,SAAS,GAAG,CAAQ,KAA+B,EAAkB,EAAE,CAC3E,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;AAExC;;;;;;GAMG;AACI,KAAK,UAAU,oBAAoB,CAAC,cAE1C;IACC,IAAI;QACF,MAAM,UAAU,GACd,CAAC,MAAM,cAAc;aAClB,gCAAgC,EAAE;aAClC,kCAAkC,CACjC,2CAA0B,CAAC,QAAQ,CACpC,CAAC,IAAI,EAAE,CAAC;QAEb,MAAM,OAAO,GAAG,UAAU;aACvB,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;aACpD,MAAM,CAAC,SAAS,CAAC,CAAC;QAErB,OAAO,OAAO,CAAC;KAChB;IAAC,MAAM;QACN,OAAO,EAAE,CAAC;KACX;AACH,CAAC;AAnBD,oDAmBC;AAED;;;;;;;GAOG;AACI,KAAK,UAAU,mBAAmB,CACvC,OAAmC,EACnC,cAEC;IAED,MAAM,OAAO,GAAW,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACnD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACrC,OAAO,MAAM,cAAc;SACxB,gCAAgC,EAAE;SAClC,iBAAiB,CAAC,YAAY,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;AACpD,CAAC;AAXD,kDAWC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,yBAAyB,CAC7C,QAAsC,EACtC,cAEC;IAED,MAAM,oBAAoB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC9C,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,EAAE,IAAI,CAAqB,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,MAAM,cAAc;SACjB,gCAAgC,EAAE;SAClC,sBAAsB,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;AAC9D,CAAC;AAfD,8DAeC","sourcesContent":["import type { RemoteNetworkConfiguration } from './types';\nimport { USER_STORAGE_FEATURE_NAMES } from '../../../shared/storage-schema';\nimport type UserStorageController from '../UserStorageController';\n\n// TODO - parse type, and handle version changes\n/**\n * parses the raw remote data to the NetworkConfiguration shape\n *\n * @todo - improve parsing instead of asserting\n * @todo - improve version handling\n * @param rawData - raw remote user storage data\n * @returns NetworkConfiguration or undefined if failed to parse\n */\nfunction parseNetworkConfiguration(rawData: string) {\n try {\n return JSON.parse(rawData) as RemoteNetworkConfiguration;\n } catch {\n return undefined;\n }\n}\n\nconst isDefined = <Value>(value: Value | null | undefined): value is Value =>\n value !== undefined && value !== null;\n\n/**\n * gets all remote networks from user storage\n *\n * @param serviceOptions - service options\n * @param serviceOptions.getUserStorageControllerInstance - function to get the user storage controller instance\n * @returns array of all remote networks\n */\nexport async function getAllRemoteNetworks(serviceOptions: {\n getUserStorageControllerInstance: () => UserStorageController;\n}): Promise<RemoteNetworkConfiguration[]> {\n try {\n const rawResults =\n (await serviceOptions\n .getUserStorageControllerInstance()\n .performGetStorageAllFeatureEntries(\n USER_STORAGE_FEATURE_NAMES.networks,\n )) ?? [];\n\n const results = rawResults\n .map((rawData) => parseNetworkConfiguration(rawData))\n .filter(isDefined);\n\n return results;\n } catch {\n return [];\n }\n}\n\n/**\n * Upserts a remote network to user storage\n *\n * @param network - network we are updating or inserting\n * @param serviceOptions - service options\n * @param serviceOptions.getUserStorageControllerInstance - function to get the user storage controller instance\n * @returns void\n */\nexport async function upsertRemoteNetwork(\n network: RemoteNetworkConfiguration,\n serviceOptions: {\n getUserStorageControllerInstance: () => UserStorageController;\n },\n) {\n const chainId: string = network.chainId.toString();\n const data = JSON.stringify(network);\n return await serviceOptions\n .getUserStorageControllerInstance()\n .performSetStorage(`networks.${chainId}`, data);\n}\n\n/**\n * Batch upsert a list of remote networks into user storage\n *\n * @param networks - a list of networks to update or insert\n * @param serviceOptions - service options\n * @param serviceOptions.getUserStorageControllerInstance - function to get the user storage controller instance\n */\nexport async function batchUpsertRemoteNetworks(\n networks: RemoteNetworkConfiguration[],\n serviceOptions: {\n getUserStorageControllerInstance: () => UserStorageController;\n },\n): Promise<void> {\n const networkPathAndValues = networks.map((n) => {\n const path = n.chainId;\n const data = JSON.stringify(n);\n return [path, data] as [string, string];\n });\n\n await serviceOptions\n .getUserStorageControllerInstance()\n .performBatchSetStorage('networks', networkPathAndValues);\n}\n"]}
@@ -1,34 +0,0 @@
1
- import type { RemoteNetworkConfiguration } from "./types.cjs";
2
- import type UserStorageController from "../UserStorageController.cjs";
3
- /**
4
- * gets all remote networks from user storage
5
- *
6
- * @param serviceOptions - service options
7
- * @param serviceOptions.getUserStorageControllerInstance - function to get the user storage controller instance
8
- * @returns array of all remote networks
9
- */
10
- export declare function getAllRemoteNetworks(serviceOptions: {
11
- getUserStorageControllerInstance: () => UserStorageController;
12
- }): Promise<RemoteNetworkConfiguration[]>;
13
- /**
14
- * Upserts a remote network to user storage
15
- *
16
- * @param network - network we are updating or inserting
17
- * @param serviceOptions - service options
18
- * @param serviceOptions.getUserStorageControllerInstance - function to get the user storage controller instance
19
- * @returns void
20
- */
21
- export declare function upsertRemoteNetwork(network: RemoteNetworkConfiguration, serviceOptions: {
22
- getUserStorageControllerInstance: () => UserStorageController;
23
- }): Promise<void>;
24
- /**
25
- * Batch upsert a list of remote networks into user storage
26
- *
27
- * @param networks - a list of networks to update or insert
28
- * @param serviceOptions - service options
29
- * @param serviceOptions.getUserStorageControllerInstance - function to get the user storage controller instance
30
- */
31
- export declare function batchUpsertRemoteNetworks(networks: RemoteNetworkConfiguration[], serviceOptions: {
32
- getUserStorageControllerInstance: () => UserStorageController;
33
- }): Promise<void>;
34
- //# sourceMappingURL=services.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"services.d.cts","sourceRoot":"","sources":["../../../../src/controllers/user-storage/network-syncing/services.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,oBAAgB;AAE1D,OAAO,KAAK,qBAAqB,qCAAiC;AAsBlE;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,cAAc,EAAE;IACzD,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;CAC/D,GAAG,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAiBxC;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,0BAA0B,EACnC,cAAc,EAAE;IACd,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;CAC/D,iBAOF;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,0BAA0B,EAAE,EACtC,cAAc,EAAE;IACd,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;CAC/D,GACA,OAAO,CAAC,IAAI,CAAC,CAUf"}
@@ -1,34 +0,0 @@
1
- import type { RemoteNetworkConfiguration } from "./types.mjs";
2
- import type UserStorageController from "../UserStorageController.mjs";
3
- /**
4
- * gets all remote networks from user storage
5
- *
6
- * @param serviceOptions - service options
7
- * @param serviceOptions.getUserStorageControllerInstance - function to get the user storage controller instance
8
- * @returns array of all remote networks
9
- */
10
- export declare function getAllRemoteNetworks(serviceOptions: {
11
- getUserStorageControllerInstance: () => UserStorageController;
12
- }): Promise<RemoteNetworkConfiguration[]>;
13
- /**
14
- * Upserts a remote network to user storage
15
- *
16
- * @param network - network we are updating or inserting
17
- * @param serviceOptions - service options
18
- * @param serviceOptions.getUserStorageControllerInstance - function to get the user storage controller instance
19
- * @returns void
20
- */
21
- export declare function upsertRemoteNetwork(network: RemoteNetworkConfiguration, serviceOptions: {
22
- getUserStorageControllerInstance: () => UserStorageController;
23
- }): Promise<void>;
24
- /**
25
- * Batch upsert a list of remote networks into user storage
26
- *
27
- * @param networks - a list of networks to update or insert
28
- * @param serviceOptions - service options
29
- * @param serviceOptions.getUserStorageControllerInstance - function to get the user storage controller instance
30
- */
31
- export declare function batchUpsertRemoteNetworks(networks: RemoteNetworkConfiguration[], serviceOptions: {
32
- getUserStorageControllerInstance: () => UserStorageController;
33
- }): Promise<void>;
34
- //# sourceMappingURL=services.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"services.d.mts","sourceRoot":"","sources":["../../../../src/controllers/user-storage/network-syncing/services.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,oBAAgB;AAE1D,OAAO,KAAK,qBAAqB,qCAAiC;AAsBlE;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,cAAc,EAAE;IACzD,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;CAC/D,GAAG,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAiBxC;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,0BAA0B,EACnC,cAAc,EAAE;IACd,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;CAC/D,iBAOF;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,0BAA0B,EAAE,EACtC,cAAc,EAAE;IACd,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;CAC/D,GACA,OAAO,CAAC,IAAI,CAAC,CAUf"}
@@ -1,73 +0,0 @@
1
- import { USER_STORAGE_FEATURE_NAMES } from "../../../shared/storage-schema.mjs";
2
- // TODO - parse type, and handle version changes
3
- /**
4
- * parses the raw remote data to the NetworkConfiguration shape
5
- *
6
- * @todo - improve parsing instead of asserting
7
- * @todo - improve version handling
8
- * @param rawData - raw remote user storage data
9
- * @returns NetworkConfiguration or undefined if failed to parse
10
- */
11
- function parseNetworkConfiguration(rawData) {
12
- try {
13
- return JSON.parse(rawData);
14
- }
15
- catch {
16
- return undefined;
17
- }
18
- }
19
- const isDefined = (value) => value !== undefined && value !== null;
20
- /**
21
- * gets all remote networks from user storage
22
- *
23
- * @param serviceOptions - service options
24
- * @param serviceOptions.getUserStorageControllerInstance - function to get the user storage controller instance
25
- * @returns array of all remote networks
26
- */
27
- export async function getAllRemoteNetworks(serviceOptions) {
28
- try {
29
- const rawResults = (await serviceOptions
30
- .getUserStorageControllerInstance()
31
- .performGetStorageAllFeatureEntries(USER_STORAGE_FEATURE_NAMES.networks)) ?? [];
32
- const results = rawResults
33
- .map((rawData) => parseNetworkConfiguration(rawData))
34
- .filter(isDefined);
35
- return results;
36
- }
37
- catch {
38
- return [];
39
- }
40
- }
41
- /**
42
- * Upserts a remote network to user storage
43
- *
44
- * @param network - network we are updating or inserting
45
- * @param serviceOptions - service options
46
- * @param serviceOptions.getUserStorageControllerInstance - function to get the user storage controller instance
47
- * @returns void
48
- */
49
- export async function upsertRemoteNetwork(network, serviceOptions) {
50
- const chainId = network.chainId.toString();
51
- const data = JSON.stringify(network);
52
- return await serviceOptions
53
- .getUserStorageControllerInstance()
54
- .performSetStorage(`networks.${chainId}`, data);
55
- }
56
- /**
57
- * Batch upsert a list of remote networks into user storage
58
- *
59
- * @param networks - a list of networks to update or insert
60
- * @param serviceOptions - service options
61
- * @param serviceOptions.getUserStorageControllerInstance - function to get the user storage controller instance
62
- */
63
- export async function batchUpsertRemoteNetworks(networks, serviceOptions) {
64
- const networkPathAndValues = networks.map((n) => {
65
- const path = n.chainId;
66
- const data = JSON.stringify(n);
67
- return [path, data];
68
- });
69
- await serviceOptions
70
- .getUserStorageControllerInstance()
71
- .performBatchSetStorage('networks', networkPathAndValues);
72
- }
73
- //# sourceMappingURL=services.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"services.mjs","sourceRoot":"","sources":["../../../../src/controllers/user-storage/network-syncing/services.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,2CAAuC;AAG5E,gDAAgD;AAChD;;;;;;;GAOG;AACH,SAAS,yBAAyB,CAAC,OAAe;IAChD,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAA+B,CAAC;KAC1D;IAAC,MAAM;QACN,OAAO,SAAS,CAAC;KAClB;AACH,CAAC;AAED,MAAM,SAAS,GAAG,CAAQ,KAA+B,EAAkB,EAAE,CAC3E,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;AAExC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,cAE1C;IACC,IAAI;QACF,MAAM,UAAU,GACd,CAAC,MAAM,cAAc;aAClB,gCAAgC,EAAE;aAClC,kCAAkC,CACjC,0BAA0B,CAAC,QAAQ,CACpC,CAAC,IAAI,EAAE,CAAC;QAEb,MAAM,OAAO,GAAG,UAAU;aACvB,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;aACpD,MAAM,CAAC,SAAS,CAAC,CAAC;QAErB,OAAO,OAAO,CAAC;KAChB;IAAC,MAAM;QACN,OAAO,EAAE,CAAC;KACX;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAmC,EACnC,cAEC;IAED,MAAM,OAAO,GAAW,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACnD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACrC,OAAO,MAAM,cAAc;SACxB,gCAAgC,EAAE;SAClC,iBAAiB,CAAC,YAAY,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,QAAsC,EACtC,cAEC;IAED,MAAM,oBAAoB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC9C,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,EAAE,IAAI,CAAqB,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,MAAM,cAAc;SACjB,gCAAgC,EAAE;SAClC,sBAAsB,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;AAC9D,CAAC","sourcesContent":["import type { RemoteNetworkConfiguration } from './types';\nimport { USER_STORAGE_FEATURE_NAMES } from '../../../shared/storage-schema';\nimport type UserStorageController from '../UserStorageController';\n\n// TODO - parse type, and handle version changes\n/**\n * parses the raw remote data to the NetworkConfiguration shape\n *\n * @todo - improve parsing instead of asserting\n * @todo - improve version handling\n * @param rawData - raw remote user storage data\n * @returns NetworkConfiguration or undefined if failed to parse\n */\nfunction parseNetworkConfiguration(rawData: string) {\n try {\n return JSON.parse(rawData) as RemoteNetworkConfiguration;\n } catch {\n return undefined;\n }\n}\n\nconst isDefined = <Value>(value: Value | null | undefined): value is Value =>\n value !== undefined && value !== null;\n\n/**\n * gets all remote networks from user storage\n *\n * @param serviceOptions - service options\n * @param serviceOptions.getUserStorageControllerInstance - function to get the user storage controller instance\n * @returns array of all remote networks\n */\nexport async function getAllRemoteNetworks(serviceOptions: {\n getUserStorageControllerInstance: () => UserStorageController;\n}): Promise<RemoteNetworkConfiguration[]> {\n try {\n const rawResults =\n (await serviceOptions\n .getUserStorageControllerInstance()\n .performGetStorageAllFeatureEntries(\n USER_STORAGE_FEATURE_NAMES.networks,\n )) ?? [];\n\n const results = rawResults\n .map((rawData) => parseNetworkConfiguration(rawData))\n .filter(isDefined);\n\n return results;\n } catch {\n return [];\n }\n}\n\n/**\n * Upserts a remote network to user storage\n *\n * @param network - network we are updating or inserting\n * @param serviceOptions - service options\n * @param serviceOptions.getUserStorageControllerInstance - function to get the user storage controller instance\n * @returns void\n */\nexport async function upsertRemoteNetwork(\n network: RemoteNetworkConfiguration,\n serviceOptions: {\n getUserStorageControllerInstance: () => UserStorageController;\n },\n) {\n const chainId: string = network.chainId.toString();\n const data = JSON.stringify(network);\n return await serviceOptions\n .getUserStorageControllerInstance()\n .performSetStorage(`networks.${chainId}`, data);\n}\n\n/**\n * Batch upsert a list of remote networks into user storage\n *\n * @param networks - a list of networks to update or insert\n * @param serviceOptions - service options\n * @param serviceOptions.getUserStorageControllerInstance - function to get the user storage controller instance\n */\nexport async function batchUpsertRemoteNetworks(\n networks: RemoteNetworkConfiguration[],\n serviceOptions: {\n getUserStorageControllerInstance: () => UserStorageController;\n },\n): Promise<void> {\n const networkPathAndValues = networks.map((n) => {\n const path = n.chainId;\n const data = JSON.stringify(n);\n return [path, data] as [string, string];\n });\n\n await serviceOptions\n .getUserStorageControllerInstance()\n .performBatchSetStorage('networks', networkPathAndValues);\n}\n"]}
@@ -1,153 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.findNetworksToUpdate = exports.getUpdatedNetworkLists = exports.getMissingNetworkLists = exports.checkWhichNetworkIsLatest = exports.getDataStructures = void 0;
4
- const types_1 = require("./types.cjs");
5
- const utils_1 = require("../utils.cjs");
6
- const createMap = (networks) => {
7
- return new Map(networks.map((n) => [n.chainId, n]));
8
- };
9
- const createKeySet = (networks, predicate) => {
10
- const filteredNetworks = predicate
11
- ? networks.filter((n) => predicate(n))
12
- : networks;
13
- return new Set(filteredNetworks.map((n) => n.chainId));
14
- };
15
- const getDataStructures = (localNetworks, remoteNetworks) => {
16
- const localMap = createMap(localNetworks);
17
- const remoteMap = createMap(remoteNetworks);
18
- const localKeySet = createKeySet(localNetworks);
19
- const remoteKeySet = createKeySet(remoteNetworks);
20
- const existingRemoteKeySet = createKeySet(remoteNetworks, (n) => !n.d);
21
- return {
22
- localMap,
23
- remoteMap,
24
- localKeySet,
25
- remoteKeySet,
26
- existingRemoteKeySet,
27
- };
28
- };
29
- exports.getDataStructures = getDataStructures;
30
- const checkWhichNetworkIsLatest = (localNetwork, remoteNetwork) => {
31
- // Neither network has updatedAt field (indicating no changes were made)
32
- if (!localNetwork.lastUpdatedAt && !remoteNetwork.lastUpdatedAt) {
33
- return 'Do Nothing';
34
- }
35
- // Local only has updatedAt field
36
- if (localNetwork.lastUpdatedAt && !remoteNetwork.lastUpdatedAt) {
37
- return 'Local Wins';
38
- }
39
- // Remote only has updatedAt field
40
- if (!localNetwork.lastUpdatedAt && remoteNetwork.lastUpdatedAt) {
41
- return 'Remote Wins';
42
- }
43
- // Both have updatedAt field, perform comparison
44
- if (localNetwork.lastUpdatedAt && remoteNetwork.lastUpdatedAt) {
45
- if (localNetwork.lastUpdatedAt === remoteNetwork.lastUpdatedAt) {
46
- return 'Do Nothing';
47
- }
48
- return localNetwork.lastUpdatedAt > remoteNetwork.lastUpdatedAt
49
- ? 'Local Wins'
50
- : 'Remote Wins';
51
- }
52
- // Unreachable statement
53
- /* istanbul ignore next */
54
- return 'Do Nothing';
55
- };
56
- exports.checkWhichNetworkIsLatest = checkWhichNetworkIsLatest;
57
- const getMissingNetworkLists = (ds) => {
58
- const { localKeySet, localMap, remoteKeySet, remoteMap, existingRemoteKeySet, } = ds;
59
- const missingLocalNetworks = [];
60
- const missingRemoteNetworks = [];
61
- // Networks that are in local, but not in remote
62
- const missingRemoteNetworkKeys = (0, utils_1.setDifference)(localKeySet, remoteKeySet);
63
- missingRemoteNetworkKeys.forEach((chain) => {
64
- const n = localMap.get(chain);
65
- if (n) {
66
- missingRemoteNetworks.push((0, types_1.toRemoteNetworkConfiguration)(n));
67
- }
68
- });
69
- // Networks that are in remote (not deleted), but not in local
70
- const missingLocalNetworkKeys = (0, utils_1.setDifference)(existingRemoteKeySet, localKeySet);
71
- missingLocalNetworkKeys.forEach((chain) => {
72
- const n = remoteMap.get(chain);
73
- if (n) {
74
- missingLocalNetworks.push((0, types_1.toNetworkConfiguration)(n));
75
- }
76
- });
77
- return {
78
- missingLocalNetworks,
79
- missingRemoteNetworks,
80
- };
81
- };
82
- exports.getMissingNetworkLists = getMissingNetworkLists;
83
- const getUpdatedNetworkLists = (ds) => {
84
- const { localKeySet, localMap, remoteKeySet, remoteMap } = ds;
85
- const remoteNetworksToUpdate = [];
86
- const localNetworksToUpdate = [];
87
- const localNetworksToRemove = [];
88
- // Get networks in both, these need to be compared against
89
- // each other to see which network to update.
90
- const networksInBoth = (0, utils_1.setIntersection)(localKeySet, remoteKeySet);
91
- networksInBoth.forEach((chain) => {
92
- const localNetwork = localMap.get(chain);
93
- const remoteNetwork = remoteMap.get(chain);
94
- if (!localNetwork || !remoteNetwork) {
95
- // This should be unreachable as we know the Maps created will have the values
96
- // This is to satisfy types
97
- /* istanbul ignore next */
98
- return;
99
- }
100
- const whichIsLatest = (0, exports.checkWhichNetworkIsLatest)(localNetwork, remoteNetwork);
101
- // Local Wins -> Need to update remote
102
- if (whichIsLatest === 'Local Wins') {
103
- remoteNetworksToUpdate.push((0, types_1.toRemoteNetworkConfiguration)(localNetwork));
104
- }
105
- // Remote Wins...
106
- if (whichIsLatest === 'Remote Wins') {
107
- if (remoteNetwork.d) {
108
- // ...and is deleted -> Need to remove from local list
109
- localNetworksToRemove.push((0, types_1.toNetworkConfiguration)(remoteNetwork));
110
- }
111
- else {
112
- // ...and isn't deleted -> Need to update local list
113
- localNetworksToUpdate.push((0, types_1.toNetworkConfiguration)(remoteNetwork));
114
- }
115
- }
116
- });
117
- return {
118
- remoteNetworksToUpdate,
119
- localNetworksToUpdate,
120
- localNetworksToRemove,
121
- };
122
- };
123
- exports.getUpdatedNetworkLists = getUpdatedNetworkLists;
124
- const findNetworksToUpdate = (props) => {
125
- try {
126
- const { localNetworks, remoteNetworks } = props;
127
- // Get Maps & Key Sets
128
- const ds = (0, exports.getDataStructures)(localNetworks, remoteNetworks);
129
- // Calc Missing Networks
130
- const missingNetworks = (0, exports.getMissingNetworkLists)(ds);
131
- // Calc Updated Networks
132
- const updatedNetworks = (0, exports.getUpdatedNetworkLists)(ds);
133
- // List of networks we need to update
134
- const remoteNetworksToUpdate = [
135
- ...missingNetworks.missingRemoteNetworks,
136
- ...updatedNetworks.remoteNetworksToUpdate,
137
- ];
138
- return {
139
- remoteNetworksToUpdate,
140
- missingLocalNetworks: missingNetworks.missingLocalNetworks,
141
- localNetworksToRemove: updatedNetworks.localNetworksToRemove,
142
- localNetworksToUpdate: updatedNetworks.localNetworksToUpdate,
143
- };
144
- }
145
- catch {
146
- // Unable to perform sync, silently fail
147
- }
148
- // Unreachable statement
149
- /* istanbul ignore next */
150
- return undefined;
151
- };
152
- exports.findNetworksToUpdate = findNetworksToUpdate;
153
- //# sourceMappingURL=sync-all.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync-all.cjs","sourceRoot":"","sources":["../../../../src/controllers/user-storage/network-syncing/sync-all.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NetworkConfiguration } from '@metamask/network-controller';\n\nimport {\n toRemoteNetworkConfiguration,\n type RemoteNetworkConfiguration,\n toNetworkConfiguration,\n} from './types';\nimport { setDifference, setIntersection } from '../utils';\n\ntype FindNetworksToUpdateProps = {\n localNetworks: NetworkConfiguration[];\n remoteNetworks: RemoteNetworkConfiguration[];\n};\n\nconst createMap = <\n Network extends NetworkConfiguration | RemoteNetworkConfiguration,\n>(\n networks: Network[],\n): Map<string, Network> => {\n return new Map(networks.map((n) => [n.chainId, n]));\n};\n\nconst createKeySet = <\n Network extends NetworkConfiguration | RemoteNetworkConfiguration,\n>(\n networks: Network[],\n predicate?: (n: Network) => boolean,\n): Set<string> => {\n const filteredNetworks = predicate\n ? networks.filter((n) => predicate(n))\n : networks;\n return new Set(filteredNetworks.map((n) => n.chainId));\n};\n\nexport const getDataStructures = (\n localNetworks: NetworkConfiguration[],\n remoteNetworks: RemoteNetworkConfiguration[],\n) => {\n const localMap = createMap(localNetworks);\n const remoteMap = createMap(remoteNetworks);\n const localKeySet = createKeySet(localNetworks);\n const remoteKeySet = createKeySet(remoteNetworks);\n const existingRemoteKeySet = createKeySet(remoteNetworks, (n) => !n.d);\n\n return {\n localMap,\n remoteMap,\n localKeySet,\n remoteKeySet,\n existingRemoteKeySet,\n };\n};\n\ntype MatrixResult = 'Do Nothing' | 'Local Wins' | 'Remote Wins';\nexport const checkWhichNetworkIsLatest = (\n localNetwork: NetworkConfiguration,\n remoteNetwork: RemoteNetworkConfiguration,\n): MatrixResult => {\n // Neither network has updatedAt field (indicating no changes were made)\n if (!localNetwork.lastUpdatedAt && !remoteNetwork.lastUpdatedAt) {\n return 'Do Nothing';\n }\n\n // Local only has updatedAt field\n if (localNetwork.lastUpdatedAt && !remoteNetwork.lastUpdatedAt) {\n return 'Local Wins';\n }\n\n // Remote only has updatedAt field\n if (!localNetwork.lastUpdatedAt && remoteNetwork.lastUpdatedAt) {\n return 'Remote Wins';\n }\n\n // Both have updatedAt field, perform comparison\n if (localNetwork.lastUpdatedAt && remoteNetwork.lastUpdatedAt) {\n if (localNetwork.lastUpdatedAt === remoteNetwork.lastUpdatedAt) {\n return 'Do Nothing';\n }\n\n return localNetwork.lastUpdatedAt > remoteNetwork.lastUpdatedAt\n ? 'Local Wins'\n : 'Remote Wins';\n }\n\n // Unreachable statement\n /* istanbul ignore next */\n return 'Do Nothing';\n};\n\nexport const getMissingNetworkLists = (\n ds: ReturnType<typeof getDataStructures>,\n) => {\n const {\n localKeySet,\n localMap,\n remoteKeySet,\n remoteMap,\n existingRemoteKeySet,\n } = ds;\n\n const missingLocalNetworks: NetworkConfiguration[] = [];\n const missingRemoteNetworks: RemoteNetworkConfiguration[] = [];\n\n // Networks that are in local, but not in remote\n const missingRemoteNetworkKeys = setDifference(localKeySet, remoteKeySet);\n missingRemoteNetworkKeys.forEach((chain) => {\n const n = localMap.get(chain);\n if (n) {\n missingRemoteNetworks.push(toRemoteNetworkConfiguration(n));\n }\n });\n\n // Networks that are in remote (not deleted), but not in local\n const missingLocalNetworkKeys = setDifference(\n existingRemoteKeySet,\n localKeySet,\n );\n missingLocalNetworkKeys.forEach((chain) => {\n const n = remoteMap.get(chain);\n if (n) {\n missingLocalNetworks.push(toNetworkConfiguration(n));\n }\n });\n\n return {\n missingLocalNetworks,\n missingRemoteNetworks,\n };\n};\n\nexport const getUpdatedNetworkLists = (\n ds: ReturnType<typeof getDataStructures>,\n) => {\n const { localKeySet, localMap, remoteKeySet, remoteMap } = ds;\n\n const remoteNetworksToUpdate: RemoteNetworkConfiguration[] = [];\n const localNetworksToUpdate: NetworkConfiguration[] = [];\n const localNetworksToRemove: NetworkConfiguration[] = [];\n\n // Get networks in both, these need to be compared against\n // each other to see which network to update.\n const networksInBoth = setIntersection(localKeySet, remoteKeySet);\n networksInBoth.forEach((chain) => {\n const localNetwork = localMap.get(chain);\n const remoteNetwork = remoteMap.get(chain);\n if (!localNetwork || !remoteNetwork) {\n // This should be unreachable as we know the Maps created will have the values\n // This is to satisfy types\n /* istanbul ignore next */\n return;\n }\n\n const whichIsLatest = checkWhichNetworkIsLatest(\n localNetwork,\n remoteNetwork,\n );\n\n // Local Wins -> Need to update remote\n if (whichIsLatest === 'Local Wins') {\n remoteNetworksToUpdate.push(toRemoteNetworkConfiguration(localNetwork));\n }\n\n // Remote Wins...\n if (whichIsLatest === 'Remote Wins') {\n if (remoteNetwork.d) {\n // ...and is deleted -> Need to remove from local list\n localNetworksToRemove.push(toNetworkConfiguration(remoteNetwork));\n } else {\n // ...and isn't deleted -> Need to update local list\n localNetworksToUpdate.push(toNetworkConfiguration(remoteNetwork));\n }\n }\n });\n\n return {\n remoteNetworksToUpdate,\n localNetworksToUpdate,\n localNetworksToRemove,\n };\n};\n\nexport const findNetworksToUpdate = (props: FindNetworksToUpdateProps) => {\n try {\n const { localNetworks, remoteNetworks } = props;\n\n // Get Maps & Key Sets\n const ds = getDataStructures(localNetworks, remoteNetworks);\n\n // Calc Missing Networks\n const missingNetworks = getMissingNetworkLists(ds);\n\n // Calc Updated Networks\n const updatedNetworks = getUpdatedNetworkLists(ds);\n\n // List of networks we need to update\n const remoteNetworksToUpdate = [\n ...missingNetworks.missingRemoteNetworks,\n ...updatedNetworks.remoteNetworksToUpdate,\n ];\n\n return {\n remoteNetworksToUpdate,\n missingLocalNetworks: missingNetworks.missingLocalNetworks,\n localNetworksToRemove: updatedNetworks.localNetworksToRemove,\n localNetworksToUpdate: updatedNetworks.localNetworksToUpdate,\n };\n } catch {\n // Unable to perform sync, silently fail\n }\n\n // Unreachable statement\n /* istanbul ignore next */\n return undefined;\n};\n"]}
@@ -1,32 +0,0 @@
1
- import type { NetworkConfiguration } from "@metamask/network-controller";
2
- import { type RemoteNetworkConfiguration } from "./types.cjs";
3
- type FindNetworksToUpdateProps = {
4
- localNetworks: NetworkConfiguration[];
5
- remoteNetworks: RemoteNetworkConfiguration[];
6
- };
7
- export declare const getDataStructures: (localNetworks: NetworkConfiguration[], remoteNetworks: RemoteNetworkConfiguration[]) => {
8
- localMap: Map<string, NetworkConfiguration>;
9
- remoteMap: Map<string, RemoteNetworkConfiguration>;
10
- localKeySet: Set<string>;
11
- remoteKeySet: Set<string>;
12
- existingRemoteKeySet: Set<string>;
13
- };
14
- type MatrixResult = 'Do Nothing' | 'Local Wins' | 'Remote Wins';
15
- export declare const checkWhichNetworkIsLatest: (localNetwork: NetworkConfiguration, remoteNetwork: RemoteNetworkConfiguration) => MatrixResult;
16
- export declare const getMissingNetworkLists: (ds: ReturnType<typeof getDataStructures>) => {
17
- missingLocalNetworks: NetworkConfiguration[];
18
- missingRemoteNetworks: RemoteNetworkConfiguration[];
19
- };
20
- export declare const getUpdatedNetworkLists: (ds: ReturnType<typeof getDataStructures>) => {
21
- remoteNetworksToUpdate: RemoteNetworkConfiguration[];
22
- localNetworksToUpdate: NetworkConfiguration[];
23
- localNetworksToRemove: NetworkConfiguration[];
24
- };
25
- export declare const findNetworksToUpdate: (props: FindNetworksToUpdateProps) => {
26
- remoteNetworksToUpdate: RemoteNetworkConfiguration[];
27
- missingLocalNetworks: NetworkConfiguration[];
28
- localNetworksToRemove: NetworkConfiguration[];
29
- localNetworksToUpdate: NetworkConfiguration[];
30
- } | undefined;
31
- export {};
32
- //# sourceMappingURL=sync-all.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync-all.d.cts","sourceRoot":"","sources":["../../../../src/controllers/user-storage/network-syncing/sync-all.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qCAAqC;AAEzE,OAAO,EAEL,KAAK,0BAA0B,EAEhC,oBAAgB;AAGjB,KAAK,yBAAyB,GAAG;IAC/B,aAAa,EAAE,oBAAoB,EAAE,CAAC;IACtC,cAAc,EAAE,0BAA0B,EAAE,CAAC;CAC9C,CAAC;AAsBF,eAAO,MAAM,iBAAiB,kBACb,oBAAoB,EAAE,kBACrB,0BAA0B,EAAE;;;;;;CAe7C,CAAC;AAEF,KAAK,YAAY,GAAG,YAAY,GAAG,YAAY,GAAG,aAAa,CAAC;AAChE,eAAO,MAAM,yBAAyB,iBACtB,oBAAoB,iBACnB,0BAA0B,KACxC,YA8BF,CAAC;AAEF,eAAO,MAAM,sBAAsB,OAC7B,WAAW,wBAAwB,CAAC;;;CAsCzC,CAAC;AAEF,eAAO,MAAM,sBAAsB,OAC7B,WAAW,wBAAwB,CAAC;;;;CAgDzC,CAAC;AAEF,eAAO,MAAM,oBAAoB,UAAW,yBAAyB;;;;;aAgCpE,CAAC"}
@@ -1,32 +0,0 @@
1
- import type { NetworkConfiguration } from "@metamask/network-controller";
2
- import { type RemoteNetworkConfiguration } from "./types.mjs";
3
- type FindNetworksToUpdateProps = {
4
- localNetworks: NetworkConfiguration[];
5
- remoteNetworks: RemoteNetworkConfiguration[];
6
- };
7
- export declare const getDataStructures: (localNetworks: NetworkConfiguration[], remoteNetworks: RemoteNetworkConfiguration[]) => {
8
- localMap: Map<string, NetworkConfiguration>;
9
- remoteMap: Map<string, RemoteNetworkConfiguration>;
10
- localKeySet: Set<string>;
11
- remoteKeySet: Set<string>;
12
- existingRemoteKeySet: Set<string>;
13
- };
14
- type MatrixResult = 'Do Nothing' | 'Local Wins' | 'Remote Wins';
15
- export declare const checkWhichNetworkIsLatest: (localNetwork: NetworkConfiguration, remoteNetwork: RemoteNetworkConfiguration) => MatrixResult;
16
- export declare const getMissingNetworkLists: (ds: ReturnType<typeof getDataStructures>) => {
17
- missingLocalNetworks: NetworkConfiguration[];
18
- missingRemoteNetworks: RemoteNetworkConfiguration[];
19
- };
20
- export declare const getUpdatedNetworkLists: (ds: ReturnType<typeof getDataStructures>) => {
21
- remoteNetworksToUpdate: RemoteNetworkConfiguration[];
22
- localNetworksToUpdate: NetworkConfiguration[];
23
- localNetworksToRemove: NetworkConfiguration[];
24
- };
25
- export declare const findNetworksToUpdate: (props: FindNetworksToUpdateProps) => {
26
- remoteNetworksToUpdate: RemoteNetworkConfiguration[];
27
- missingLocalNetworks: NetworkConfiguration[];
28
- localNetworksToRemove: NetworkConfiguration[];
29
- localNetworksToUpdate: NetworkConfiguration[];
30
- } | undefined;
31
- export {};
32
- //# sourceMappingURL=sync-all.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync-all.d.mts","sourceRoot":"","sources":["../../../../src/controllers/user-storage/network-syncing/sync-all.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qCAAqC;AAEzE,OAAO,EAEL,KAAK,0BAA0B,EAEhC,oBAAgB;AAGjB,KAAK,yBAAyB,GAAG;IAC/B,aAAa,EAAE,oBAAoB,EAAE,CAAC;IACtC,cAAc,EAAE,0BAA0B,EAAE,CAAC;CAC9C,CAAC;AAsBF,eAAO,MAAM,iBAAiB,kBACb,oBAAoB,EAAE,kBACrB,0BAA0B,EAAE;;;;;;CAe7C,CAAC;AAEF,KAAK,YAAY,GAAG,YAAY,GAAG,YAAY,GAAG,aAAa,CAAC;AAChE,eAAO,MAAM,yBAAyB,iBACtB,oBAAoB,iBACnB,0BAA0B,KACxC,YA8BF,CAAC;AAEF,eAAO,MAAM,sBAAsB,OAC7B,WAAW,wBAAwB,CAAC;;;CAsCzC,CAAC;AAEF,eAAO,MAAM,sBAAsB,OAC7B,WAAW,wBAAwB,CAAC;;;;CAgDzC,CAAC;AAEF,eAAO,MAAM,oBAAoB,UAAW,yBAAyB;;;;;aAgCpE,CAAC"}