@metamask/snaps-controllers 13.0.0 → 13.1.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 (50) hide show
  1. package/CHANGELOG.md +12 -1
  2. package/dist/index.cjs +1 -0
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.d.cts +1 -0
  5. package/dist/index.d.cts.map +1 -1
  6. package/dist/index.d.mts +1 -0
  7. package/dist/index.d.mts.map +1 -1
  8. package/dist/index.mjs +1 -0
  9. package/dist/index.mjs.map +1 -1
  10. package/dist/snaps/SnapController.cjs +19 -0
  11. package/dist/snaps/SnapController.cjs.map +1 -1
  12. package/dist/snaps/SnapController.d.cts +16 -1
  13. package/dist/snaps/SnapController.d.cts.map +1 -1
  14. package/dist/snaps/SnapController.d.mts +16 -1
  15. package/dist/snaps/SnapController.d.mts.map +1 -1
  16. package/dist/snaps/SnapController.mjs +19 -0
  17. package/dist/snaps/SnapController.mjs.map +1 -1
  18. package/dist/snaps/constants.cjs +1 -0
  19. package/dist/snaps/constants.cjs.map +1 -1
  20. package/dist/snaps/constants.d.cts.map +1 -1
  21. package/dist/snaps/constants.d.mts.map +1 -1
  22. package/dist/snaps/constants.mjs +1 -0
  23. package/dist/snaps/constants.mjs.map +1 -1
  24. package/dist/snaps/index.cjs +1 -0
  25. package/dist/snaps/index.cjs.map +1 -1
  26. package/dist/snaps/index.d.cts +1 -0
  27. package/dist/snaps/index.d.cts.map +1 -1
  28. package/dist/snaps/index.d.mts +1 -0
  29. package/dist/snaps/index.d.mts.map +1 -1
  30. package/dist/snaps/index.mjs +1 -0
  31. package/dist/snaps/index.mjs.map +1 -1
  32. package/dist/utils.d.cts +1 -1
  33. package/dist/utils.d.mts +1 -1
  34. package/dist/websocket/WebSocketService.cjs +194 -0
  35. package/dist/websocket/WebSocketService.cjs.map +1 -0
  36. package/dist/websocket/WebSocketService.d.cts +33 -0
  37. package/dist/websocket/WebSocketService.d.cts.map +1 -0
  38. package/dist/websocket/WebSocketService.d.mts +33 -0
  39. package/dist/websocket/WebSocketService.d.mts.map +1 -0
  40. package/dist/websocket/WebSocketService.mjs +190 -0
  41. package/dist/websocket/WebSocketService.mjs.map +1 -0
  42. package/dist/websocket/index.cjs +18 -0
  43. package/dist/websocket/index.cjs.map +1 -0
  44. package/dist/websocket/index.d.cts +2 -0
  45. package/dist/websocket/index.d.cts.map +1 -0
  46. package/dist/websocket/index.d.mts +2 -0
  47. package/dist/websocket/index.d.mts.map +1 -0
  48. package/dist/websocket/index.mjs +2 -0
  49. package/dist/websocket/index.mjs.map +1 -0
  50. package/package.json +6 -6
package/CHANGELOG.md CHANGED
@@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [13.1.0]
11
+
12
+ ### Added
13
+
14
+ - Add `WebSocketService` for WebSockets support ([#3450](https://github.com/MetaMask/snaps/pull/3450))
15
+ - This service must be instantiated to invoke `onWebSocketEvent` when WebSocket
16
+ messages are received.
17
+ - Add `SnapController:init` to support `onStart` handler ([#3455](https://github.com/MetaMask/snaps/pull/3455))
18
+ - This function should be called when the client has been fully started.
19
+
10
20
  ## [13.0.0]
11
21
 
12
22
  ### Changed
@@ -809,7 +819,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
809
819
  - The version of the package no longer needs to match the version of all other
810
820
  MetaMask Snaps packages.
811
821
 
812
- [Unreleased]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@13.0.0...HEAD
822
+ [Unreleased]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@13.1.0...HEAD
823
+ [13.1.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@13.0.0...@metamask/snaps-controllers@13.1.0
813
824
  [13.0.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@12.3.1...@metamask/snaps-controllers@13.0.0
814
825
  [12.3.1]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@12.3.0...@metamask/snaps-controllers@12.3.1
815
826
  [12.3.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@12.2.0...@metamask/snaps-controllers@12.3.0
package/dist/index.cjs CHANGED
@@ -21,4 +21,5 @@ __exportStar(require("./cronjob/index.cjs"), exports);
21
21
  __exportStar(require("./interface/index.cjs"), exports);
22
22
  __exportStar(require("./insights/index.cjs"), exports);
23
23
  __exportStar(require("./multichain/index.cjs"), exports);
24
+ __exportStar(require("./websocket/index.cjs"), exports);
24
25
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,uDAA2B;AAC3B,oDAAwB;AACxB,8CAAwB;AACxB,sDAA0B;AAC1B,wDAA4B;AAC5B,uDAA2B;AAC3B,yDAA6B","sourcesContent":["export type { Json } from '@metamask/utils';\nexport * from './services';\nexport * from './snaps';\nexport * from './utils';\nexport * from './cronjob';\nexport * from './interface';\nexport * from './insights';\nexport * from './multichain';\n"]}
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,uDAA2B;AAC3B,oDAAwB;AACxB,8CAAwB;AACxB,sDAA0B;AAC1B,wDAA4B;AAC5B,uDAA2B;AAC3B,yDAA6B;AAC7B,wDAA4B","sourcesContent":["export type { Json } from '@metamask/utils';\nexport * from './services';\nexport * from './snaps';\nexport * from './utils';\nexport * from './cronjob';\nexport * from './interface';\nexport * from './insights';\nexport * from './multichain';\nexport * from './websocket';\n"]}
package/dist/index.d.cts CHANGED
@@ -6,4 +6,5 @@ export * from "./cronjob/index.cjs";
6
6
  export * from "./interface/index.cjs";
7
7
  export * from "./insights/index.cjs";
8
8
  export * from "./multichain/index.cjs";
9
+ export * from "./websocket/index.cjs";
9
10
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,IAAI,EAAE,wBAAwB;AAC5C,qCAA2B;AAC3B,kCAAwB;AACxB,4BAAwB;AACxB,oCAA0B;AAC1B,sCAA4B;AAC5B,qCAA2B;AAC3B,uCAA6B"}
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,IAAI,EAAE,wBAAwB;AAC5C,qCAA2B;AAC3B,kCAAwB;AACxB,4BAAwB;AACxB,oCAA0B;AAC1B,sCAA4B;AAC5B,qCAA2B;AAC3B,uCAA6B;AAC7B,sCAA4B"}
package/dist/index.d.mts CHANGED
@@ -6,4 +6,5 @@ export * from "./cronjob/index.mjs";
6
6
  export * from "./interface/index.mjs";
7
7
  export * from "./insights/index.mjs";
8
8
  export * from "./multichain/index.mjs";
9
+ export * from "./websocket/index.mjs";
9
10
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,IAAI,EAAE,wBAAwB;AAC5C,qCAA2B;AAC3B,kCAAwB;AACxB,4BAAwB;AACxB,oCAA0B;AAC1B,sCAA4B;AAC5B,qCAA2B;AAC3B,uCAA6B"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,IAAI,EAAE,wBAAwB;AAC5C,qCAA2B;AAC3B,kCAAwB;AACxB,4BAAwB;AACxB,oCAA0B;AAC1B,sCAA4B;AAC5B,qCAA2B;AAC3B,uCAA6B;AAC7B,sCAA4B"}
package/dist/index.mjs CHANGED
@@ -5,4 +5,5 @@ export * from "./cronjob/index.mjs";
5
5
  export * from "./interface/index.mjs";
6
6
  export * from "./insights/index.mjs";
7
7
  export * from "./multichain/index.mjs";
8
+ export * from "./websocket/index.mjs";
8
9
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,qCAA2B;AAC3B,kCAAwB;AACxB,4BAAwB;AACxB,oCAA0B;AAC1B,sCAA4B;AAC5B,qCAA2B;AAC3B,uCAA6B","sourcesContent":["export type { Json } from '@metamask/utils';\nexport * from './services';\nexport * from './snaps';\nexport * from './utils';\nexport * from './cronjob';\nexport * from './interface';\nexport * from './insights';\nexport * from './multichain';\n"]}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,qCAA2B;AAC3B,kCAAwB;AACxB,4BAAwB;AACxB,oCAA0B;AAC1B,sCAA4B;AAC5B,qCAA2B;AAC3B,uCAA6B;AAC7B,sCAA4B","sourcesContent":["export type { Json } from '@metamask/utils';\nexport * from './services';\nexport * from './snaps';\nexport * from './utils';\nexport * from './cronjob';\nexport * from './interface';\nexport * from './insights';\nexport * from './multichain';\nexport * from './websocket';\n"]}
@@ -249,6 +249,7 @@ class SnapController extends base_controller_1.BaseController {
249
249
  * actions.
250
250
  */
251
251
  #registerMessageHandlers() {
252
+ this.messagingSystem.registerActionHandler(`${exports.controllerName}:init`, (...args) => this.init(...args));
252
253
  this.messagingSystem.registerActionHandler(`${exports.controllerName}:clearSnapState`, (...args) => this.clearSnapState(...args));
253
254
  this.messagingSystem.registerActionHandler(`${exports.controllerName}:get`, (...args) => this.get(...args));
254
255
  this.messagingSystem.registerActionHandler(`${exports.controllerName}:getSnapState`, async (...args) => this.getSnapState(...args));
@@ -271,6 +272,24 @@ class SnapController extends base_controller_1.BaseController {
271
272
  this.messagingSystem.registerActionHandler(`${exports.controllerName}:stopAllSnaps`, async (...args) => this.stopAllSnaps(...args));
272
273
  this.messagingSystem.registerActionHandler(`${exports.controllerName}:isMinimumPlatformVersion`, (...args) => this.isMinimumPlatformVersion(...args));
273
274
  }
275
+ /**
276
+ * Initialise the SnapController.
277
+ *
278
+ * Currently this method calls the `onStart` lifecycle hook for all
279
+ * installed Snaps.
280
+ */
281
+ init() {
282
+ const snaps = this.getRunnableSnaps();
283
+ for (const { id } of snaps) {
284
+ const hasLifecycleHooksEndowment = this.messagingSystem.call('PermissionController:hasPermission', id, snaps_rpc_methods_1.SnapEndowments.LifecycleHooks);
285
+ if (!hasLifecycleHooksEndowment) {
286
+ continue;
287
+ }
288
+ this.#callLifecycleHook(constants_1.METAMASK_ORIGIN, id, snaps_utils_1.HandlerType.OnStart).catch((error) => {
289
+ (0, snaps_utils_1.logError)(`Error when calling \`onStart\` lifecycle hook for Snap "${id}": ${(0, snaps_sdk_1.getErrorMessage)(error)}`);
290
+ });
291
+ }
292
+ }
274
293
  #handlePreinstalledSnaps(preinstalledSnaps) {
275
294
  for (const { snapId, manifest, files, removable, hidden, hideSnapBranding, } of preinstalledSnaps) {
276
295
  const existingSnap = this.get(snapId);