@metamask/snaps-controllers 9.19.1 → 10.0.1

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 (180) hide show
  1. package/CHANGELOG.md +29 -1
  2. package/dist/cronjob/CronjobController.cjs +15 -1
  3. package/dist/cronjob/CronjobController.cjs.map +1 -1
  4. package/dist/cronjob/CronjobController.d.cts.map +1 -1
  5. package/dist/cronjob/CronjobController.d.mts.map +1 -1
  6. package/dist/cronjob/CronjobController.mjs +15 -1
  7. package/dist/cronjob/CronjobController.mjs.map +1 -1
  8. package/dist/interface/SnapInterfaceController.cjs.map +1 -1
  9. package/dist/interface/SnapInterfaceController.d.cts.map +1 -1
  10. package/dist/interface/SnapInterfaceController.d.mts.map +1 -1
  11. package/dist/interface/SnapInterfaceController.mjs.map +1 -1
  12. package/dist/multichain/MultichainRouter.cjs +9 -1
  13. package/dist/multichain/MultichainRouter.cjs.map +1 -1
  14. package/dist/multichain/MultichainRouter.d.cts +1 -1
  15. package/dist/multichain/MultichainRouter.d.cts.map +1 -1
  16. package/dist/multichain/MultichainRouter.d.mts +1 -1
  17. package/dist/multichain/MultichainRouter.d.mts.map +1 -1
  18. package/dist/multichain/MultichainRouter.mjs +9 -1
  19. package/dist/multichain/MultichainRouter.mjs.map +1 -1
  20. package/dist/node.cjs +1 -1
  21. package/dist/node.cjs.map +1 -1
  22. package/dist/node.mjs +1 -1
  23. package/dist/node.mjs.map +1 -1
  24. package/dist/react-native.cjs +1 -1
  25. package/dist/react-native.cjs.map +1 -1
  26. package/dist/react-native.mjs +1 -1
  27. package/dist/react-native.mjs.map +1 -1
  28. package/dist/services/AbstractExecutionService.cjs +7 -2
  29. package/dist/services/AbstractExecutionService.cjs.map +1 -1
  30. package/dist/services/AbstractExecutionService.d.cts +1 -1
  31. package/dist/services/AbstractExecutionService.d.cts.map +1 -1
  32. package/dist/services/AbstractExecutionService.d.mts +1 -1
  33. package/dist/services/AbstractExecutionService.d.mts.map +1 -1
  34. package/dist/services/AbstractExecutionService.mjs +7 -2
  35. package/dist/services/AbstractExecutionService.mjs.map +1 -1
  36. package/dist/services/ExecutionService.cjs +0 -1
  37. package/dist/services/ExecutionService.cjs.map +1 -1
  38. package/dist/services/ExecutionService.d.cts +7 -7
  39. package/dist/services/ExecutionService.d.cts.map +1 -1
  40. package/dist/services/ExecutionService.d.mts +7 -7
  41. package/dist/services/ExecutionService.d.mts.map +1 -1
  42. package/dist/services/ExecutionService.mjs +0 -1
  43. package/dist/services/ExecutionService.mjs.map +1 -1
  44. package/dist/services/browser.cjs +0 -1
  45. package/dist/services/browser.cjs.map +1 -1
  46. package/dist/services/browser.d.cts +1 -1
  47. package/dist/services/browser.d.cts.map +1 -1
  48. package/dist/services/browser.d.mts +1 -1
  49. package/dist/services/browser.d.mts.map +1 -1
  50. package/dist/services/browser.mjs +0 -1
  51. package/dist/services/browser.mjs.map +1 -1
  52. package/dist/services/iframe/IframeExecutionService.cjs +2 -1
  53. package/dist/services/iframe/IframeExecutionService.cjs.map +1 -1
  54. package/dist/services/iframe/IframeExecutionService.d.cts +1 -1
  55. package/dist/services/iframe/IframeExecutionService.d.cts.map +1 -1
  56. package/dist/services/iframe/IframeExecutionService.d.mts +1 -1
  57. package/dist/services/iframe/IframeExecutionService.d.mts.map +1 -1
  58. package/dist/services/iframe/IframeExecutionService.mjs +2 -1
  59. package/dist/services/iframe/IframeExecutionService.mjs.map +1 -1
  60. package/dist/services/index.cjs +0 -1
  61. package/dist/services/index.cjs.map +1 -1
  62. package/dist/services/index.d.cts +1 -1
  63. package/dist/services/index.d.cts.map +1 -1
  64. package/dist/services/index.d.mts +1 -1
  65. package/dist/services/index.d.mts.map +1 -1
  66. package/dist/services/index.mjs +0 -1
  67. package/dist/services/index.mjs.map +1 -1
  68. package/dist/services/node-js/NodeThreadExecutionService.cjs +3 -1
  69. package/dist/services/node-js/NodeThreadExecutionService.cjs.map +1 -1
  70. package/dist/services/node-js/NodeThreadExecutionService.d.cts.map +1 -1
  71. package/dist/services/node-js/NodeThreadExecutionService.d.mts.map +1 -1
  72. package/dist/services/node-js/NodeThreadExecutionService.mjs +3 -1
  73. package/dist/services/node-js/NodeThreadExecutionService.mjs.map +1 -1
  74. package/dist/services/offscreen/OffscreenExecutionService.cjs +2 -1
  75. package/dist/services/offscreen/OffscreenExecutionService.cjs.map +1 -1
  76. package/dist/services/offscreen/OffscreenExecutionService.d.cts +1 -1
  77. package/dist/services/offscreen/OffscreenExecutionService.d.cts.map +1 -1
  78. package/dist/services/offscreen/OffscreenExecutionService.d.mts +1 -1
  79. package/dist/services/offscreen/OffscreenExecutionService.d.mts.map +1 -1
  80. package/dist/services/offscreen/OffscreenExecutionService.mjs +2 -1
  81. package/dist/services/offscreen/OffscreenExecutionService.mjs.map +1 -1
  82. package/dist/services/proxy/ProxyExecutionService.cjs +5 -1
  83. package/dist/services/proxy/ProxyExecutionService.cjs.map +1 -1
  84. package/dist/services/proxy/ProxyExecutionService.d.cts +1 -1
  85. package/dist/services/proxy/ProxyExecutionService.d.cts.map +1 -1
  86. package/dist/services/proxy/ProxyExecutionService.d.mts +1 -1
  87. package/dist/services/proxy/ProxyExecutionService.d.mts.map +1 -1
  88. package/dist/services/proxy/ProxyExecutionService.mjs +5 -1
  89. package/dist/services/proxy/ProxyExecutionService.mjs.map +1 -1
  90. package/dist/services/webview/WebViewExecutionService.cjs +20 -22
  91. package/dist/services/webview/WebViewExecutionService.cjs.map +1 -1
  92. package/dist/services/webview/WebViewExecutionService.d.cts +10 -7
  93. package/dist/services/webview/WebViewExecutionService.d.cts.map +1 -1
  94. package/dist/services/webview/WebViewExecutionService.d.mts +10 -7
  95. package/dist/services/webview/WebViewExecutionService.d.mts.map +1 -1
  96. package/dist/services/webview/WebViewExecutionService.mjs +20 -22
  97. package/dist/services/webview/WebViewExecutionService.mjs.map +1 -1
  98. package/dist/services/webview/WebViewMessageStream.cjs +14 -22
  99. package/dist/services/webview/WebViewMessageStream.cjs.map +1 -1
  100. package/dist/services/webview/WebViewMessageStream.d.cts +3 -3
  101. package/dist/services/webview/WebViewMessageStream.d.cts.map +1 -1
  102. package/dist/services/webview/WebViewMessageStream.d.mts +3 -3
  103. package/dist/services/webview/WebViewMessageStream.d.mts.map +1 -1
  104. package/dist/services/webview/WebViewMessageStream.mjs +15 -23
  105. package/dist/services/webview/WebViewMessageStream.mjs.map +1 -1
  106. package/dist/services/webworker/WebWorkerExecutionService.cjs +8 -1
  107. package/dist/services/webworker/WebWorkerExecutionService.cjs.map +1 -1
  108. package/dist/services/webworker/WebWorkerExecutionService.d.cts +1 -1
  109. package/dist/services/webworker/WebWorkerExecutionService.d.cts.map +1 -1
  110. package/dist/services/webworker/WebWorkerExecutionService.d.mts +1 -1
  111. package/dist/services/webworker/WebWorkerExecutionService.d.mts.map +1 -1
  112. package/dist/services/webworker/WebWorkerExecutionService.mjs +8 -1
  113. package/dist/services/webworker/WebWorkerExecutionService.mjs.map +1 -1
  114. package/dist/snaps/RequestQueue.cjs.map +1 -1
  115. package/dist/snaps/RequestQueue.d.cts.map +1 -1
  116. package/dist/snaps/RequestQueue.d.mts.map +1 -1
  117. package/dist/snaps/RequestQueue.mjs.map +1 -1
  118. package/dist/snaps/SnapController.cjs +15 -14
  119. package/dist/snaps/SnapController.cjs.map +1 -1
  120. package/dist/snaps/SnapController.d.cts +10 -10
  121. package/dist/snaps/SnapController.d.cts.map +1 -1
  122. package/dist/snaps/SnapController.d.mts +10 -10
  123. package/dist/snaps/SnapController.d.mts.map +1 -1
  124. package/dist/snaps/SnapController.mjs +15 -18
  125. package/dist/snaps/SnapController.mjs.map +1 -1
  126. package/dist/snaps/Timer.cjs +3 -0
  127. package/dist/snaps/Timer.cjs.map +1 -1
  128. package/dist/snaps/Timer.d.cts.map +1 -1
  129. package/dist/snaps/Timer.d.mts.map +1 -1
  130. package/dist/snaps/Timer.mjs +3 -0
  131. package/dist/snaps/Timer.mjs.map +1 -1
  132. package/dist/snaps/location/http.cjs +6 -0
  133. package/dist/snaps/location/http.cjs.map +1 -1
  134. package/dist/snaps/location/http.d.cts +2 -2
  135. package/dist/snaps/location/http.d.cts.map +1 -1
  136. package/dist/snaps/location/http.d.mts +2 -2
  137. package/dist/snaps/location/http.d.mts.map +1 -1
  138. package/dist/snaps/location/http.mjs +6 -0
  139. package/dist/snaps/location/http.mjs.map +1 -1
  140. package/dist/snaps/location/location.cjs.map +1 -1
  141. package/dist/snaps/location/location.d.cts +2 -2
  142. package/dist/snaps/location/location.d.cts.map +1 -1
  143. package/dist/snaps/location/location.d.mts +2 -2
  144. package/dist/snaps/location/location.d.mts.map +1 -1
  145. package/dist/snaps/location/location.mjs.map +1 -1
  146. package/dist/snaps/location/npm.cjs +1 -0
  147. package/dist/snaps/location/npm.cjs.map +1 -1
  148. package/dist/snaps/location/npm.d.cts +5 -5
  149. package/dist/snaps/location/npm.d.cts.map +1 -1
  150. package/dist/snaps/location/npm.d.mts +5 -5
  151. package/dist/snaps/location/npm.d.mts.map +1 -1
  152. package/dist/snaps/location/npm.mjs +1 -0
  153. package/dist/snaps/location/npm.mjs.map +1 -1
  154. package/dist/snaps/registry/json.cjs.map +1 -1
  155. package/dist/snaps/registry/json.mjs.map +1 -1
  156. package/dist/snaps/registry/registry.cjs.map +1 -1
  157. package/dist/snaps/registry/registry.d.cts +0 -1
  158. package/dist/snaps/registry/registry.d.cts.map +1 -1
  159. package/dist/snaps/registry/registry.d.mts +0 -1
  160. package/dist/snaps/registry/registry.d.mts.map +1 -1
  161. package/dist/snaps/registry/registry.mjs.map +1 -1
  162. package/dist/types/controllers.cjs +0 -1
  163. package/dist/types/controllers.cjs.map +1 -1
  164. package/dist/types/controllers.d.cts +1 -3
  165. package/dist/types/controllers.d.cts.map +1 -1
  166. package/dist/types/controllers.d.mts +1 -3
  167. package/dist/types/controllers.d.mts.map +1 -1
  168. package/dist/types/controllers.mjs +0 -1
  169. package/dist/types/controllers.mjs.map +1 -1
  170. package/dist/types/index.cjs +0 -16
  171. package/dist/types/index.cjs.map +1 -1
  172. package/dist/types/index.d.cts +2 -2
  173. package/dist/types/index.d.cts.map +1 -1
  174. package/dist/types/index.d.mts +2 -2
  175. package/dist/types/index.d.mts.map +1 -1
  176. package/dist/types/index.mjs +1 -2
  177. package/dist/types/index.mjs.map +1 -1
  178. package/package.json +17 -31
  179. package/react-native.d.ts +0 -2
  180. package/react-native.js +0 -2
@@ -10,9 +10,6 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
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
11
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
12
  };
13
- var __importDefault = (this && this.__importDefault) || function (mod) {
14
- return (mod && mod.__esModule) ? mod : { "default": mod };
15
- };
16
13
  var _SnapController_instances, _SnapController_closeAllConnections, _SnapController_dynamicPermissions, _SnapController_environmentEndowmentPermissions, _SnapController_excludedPermissions, _SnapController_featureFlags, _SnapController_fetchFunction, _SnapController_idleTimeCheckInterval, _SnapController_maxIdleTime, _SnapController_encryptor, _SnapController_getMnemonic, _SnapController_getFeatureFlags, _SnapController_clientCryptography, _SnapController_detectSnapLocation, _SnapController_snapsRuntimeData, _SnapController_rollbackSnapshots, _SnapController_timeoutForLastRequestStatus, _SnapController_statusMachine, _SnapController_preinstalledSnaps, _SnapController_initializeStateMachine, _SnapController_registerMessageHandlers, _SnapController_handlePreinstalledSnaps, _SnapController_pollForLastRequestStatus, _SnapController_blockSnap, _SnapController_unblockSnap, _SnapController_assertIsInstallAllowed, _SnapController_assertCanInstallSnaps, _SnapController_assertCanUsePlatform, _SnapController_stopSnapsLastRequestPastMax, _SnapController_transition, _SnapController_terminateSnap, _SnapController_getSnapEncryptionKey, _SnapController_hasCachedEncryptionKey, _SnapController_decryptSnapState, _SnapController_encryptSnapState, _SnapController_getStateToPersist, _SnapController_persistSnapState, _SnapController_handleInitialConnections, _SnapController_addSnapToSubject, _SnapController_removeSnapFromSubjects, _SnapController_revokeAllSnapPermissions, _SnapController_createApproval, _SnapController_updateApproval, _SnapController_resolveAllowlistVersion, _SnapController_add, _SnapController_startSnap, _SnapController_getEndowments, _SnapController_set, _SnapController_validateSnapPermissions, _SnapController_validatePlatformVersion, _SnapController_getExecutionTimeout, _SnapController_getRpcRequestHandler, _SnapController_createInterface, _SnapController_assertInterfaceExists, _SnapController_transformSnapRpcRequestResult, _SnapController_transformOnAssetsLookupResult, _SnapController_transformOnAssetsConversionResult, _SnapController_assertSnapRpcRequestResult, _SnapController_recordSnapRpcRequestStart, _SnapController_recordSnapRpcRequestFinish, _SnapController_getRollbackSnapshot, _SnapController_createRollbackSnapshot, _SnapController_rollbackSnap, _SnapController_rollbackSnaps, _SnapController_getRuntime, _SnapController_getRuntimeExpect, _SnapController_setupRuntime, _SnapController_calculatePermissionsChange, _SnapController_isSubjectConnectedToSnap, _SnapController_calculateConnectionsChange, _SnapController_updatePermissions, _SnapController_isValidUpdate, _SnapController_callLifecycleHook, _SnapController_handleLock;
17
14
  Object.defineProperty(exports, "__esModule", { value: true });
18
15
  exports.SnapController = exports.SNAP_APPROVAL_RESULT = exports.SNAP_APPROVAL_UPDATE = exports.SNAP_APPROVAL_INSTALL = exports.controllerName = void 0;
@@ -26,16 +23,16 @@ const utils_1 = require("@metamask/utils");
26
23
  const fsm_1 = require("@xstate/fsm");
27
24
  const async_mutex_1 = require("async-mutex");
28
25
  const nanoid_1 = require("nanoid");
29
- const semver_1 = __importDefault(require("semver"));
30
- const fsm_2 = require("../fsm.cjs");
31
- const logging_1 = require("../logging.cjs");
32
- const utils_2 = require("../utils.cjs");
26
+ const semver_1 = require("semver");
33
27
  const constants_1 = require("./constants.cjs");
34
28
  const location_1 = require("./location/index.cjs");
35
29
  const registry_1 = require("./registry/index.cjs");
36
30
  const RequestQueue_1 = require("./RequestQueue.cjs");
37
31
  const selectors_1 = require("./selectors.cjs");
38
32
  const Timer_1 = require("./Timer.cjs");
33
+ const fsm_2 = require("../fsm.cjs");
34
+ const logging_1 = require("../logging.cjs");
35
+ const utils_2 = require("../utils.cjs");
39
36
  exports.controllerName = 'SnapController';
40
37
  // TODO: Figure out how to name these
41
38
  exports.SNAP_APPROVAL_INSTALL = 'wallet_installSnap';
@@ -66,7 +63,6 @@ function truncateSnap(snap) {
66
63
  }
67
64
  return serialized;
68
65
  }, {});
69
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
70
66
  return truncatedSnap;
71
67
  }
72
68
  /*
@@ -200,7 +196,10 @@ class SnapController extends base_controller_1.BaseController {
200
196
  return __classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_unblockSnap).call(this, snapId);
201
197
  }));
202
198
  }
203
- _onUnhandledSnapError(snapId, _error) {
199
+ _onUnhandledSnapError(snapId, error) {
200
+ // Log the error that caused the crash
201
+ // so it gets raised to the developer for debugging purposes.
202
+ (0, snaps_utils_1.logError)(`Unhandled error from "${snapId}":`, error);
204
203
  this.stopSnap(snapId, snaps_utils_1.SnapStatusEvents.Crash).catch((stopSnapError) => {
205
204
  // TODO: Decide how to handle errors.
206
205
  (0, snaps_utils_1.logError)(stopSnapError);
@@ -233,7 +232,7 @@ class SnapController extends base_controller_1.BaseController {
233
232
  async startSnap(snapId) {
234
233
  __classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_assertCanUsePlatform).call(this);
235
234
  const snap = this.state.snaps[snapId];
236
- if (snap.enabled === false) {
235
+ if (!snap.enabled) {
237
236
  throw new Error(`Snap "${snapId}" is disabled.`);
238
237
  }
239
238
  await __classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_startSnap).call(this, {
@@ -725,6 +724,9 @@ class SnapController extends base_controller_1.BaseController {
725
724
  * @param versionRange - The semver range of the snap to install.
726
725
  * @returns The resulting snap object, or an error if something went wrong.
727
726
  */
727
+ // TODO: Either fix this lint violation or explain why it's necessary to
728
+ // ignore.
729
+ // eslint-disable-next-line no-restricted-syntax
728
730
  async processRequestedSnap(origin, snapId, location, versionRange) {
729
731
  const existingSnap = this.getTruncated(snapId);
730
732
  // For devX we always re-install local snaps.
@@ -941,6 +943,7 @@ class SnapController extends base_controller_1.BaseController {
941
943
  * @param pendingApproval - Pending approval to update.
942
944
  * @returns The snap's approvedPermissions.
943
945
  */
946
+ // eslint-disable-next-line no-restricted-syntax
944
947
  async authorize(snapId, pendingApproval) {
945
948
  (0, logging_1.log)(`Authorizing snap: ${snapId}`);
946
949
  const snapsState = this.state.snaps;
@@ -1579,8 +1582,6 @@ async function _SnapController_getEndowments(snapId) {
1579
1582
  ...new Set([...snaps_utils_1.DEFAULT_ENDOWMENTS, ...allEndowments]),
1580
1583
  ];
1581
1584
  if (dedupedEndowments.length <
1582
- // This is a bug in TypeScript: https://github.com/microsoft/TypeScript/issues/48313
1583
- // eslint-disable-next-line @typescript-eslint/restrict-plus-operands
1584
1585
  snaps_utils_1.DEFAULT_ENDOWMENTS.length + allEndowments.length) {
1585
1586
  (0, snaps_utils_1.logError)(`Duplicate endowments found for ${snapId}. Default endowments should not be requested.`, allEndowments);
1586
1587
  }
@@ -1675,7 +1676,7 @@ async function _SnapController_getEndowments(snapId) {
1675
1676
  if (platformVersion === undefined) {
1676
1677
  return;
1677
1678
  }
1678
- if (semver_1.default.gt(platformVersion, (0, snaps_utils_1.getPlatformVersion)())) {
1679
+ if ((0, semver_1.gt)(platformVersion, (0, snaps_utils_1.getPlatformVersion)())) {
1679
1680
  const message = `The Snap "${snapId}" requires platform version "${platformVersion}" which is greater than the current platform version "${(0, snaps_utils_1.getPlatformVersion)()}".`;
1680
1681
  if (__classPrivateFieldGet(this, _SnapController_featureFlags, "f").rejectInvalidPlatformVersion) {
1681
1682
  throw new Error(message);
@@ -1695,7 +1696,7 @@ async function _SnapController_getEndowments(snapId) {
1695
1696
  // because otherwise we would lose context on the correct startPromise.
1696
1697
  const startPromises = new Map();
1697
1698
  const rpcHandler = async ({ origin, handler: handlerType, request, timeout, }) => {
1698
- if (this.state.snaps[snapId].enabled === false) {
1699
+ if (!this.state.snaps[snapId].enabled) {
1699
1700
  throw new Error(`Snap "${snapId}" is disabled.`);
1700
1701
  }
1701
1702
  if (this.state.snaps[snapId].status === snaps_utils_1.SnapStatus.Installing) {