@metamask/snaps-controllers 13.0.0 → 13.1.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 (50) hide show
  1. package/CHANGELOG.md +20 -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 +196 -0
  35. package/dist/websocket/WebSocketService.cjs.map +1 -0
  36. package/dist/websocket/WebSocketService.d.cts +35 -0
  37. package/dist/websocket/WebSocketService.d.cts.map +1 -0
  38. package/dist/websocket/WebSocketService.d.mts +35 -0
  39. package/dist/websocket/WebSocketService.d.mts.map +1 -0
  40. package/dist/websocket/WebSocketService.mjs +192 -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,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [13.1.1]
11
+
12
+ ### Fixed
13
+
14
+ - Always delete socket when `close` is emitted ([#3465](https://github.com/MetaMask/snaps/pull/3465))
15
+ - Add missing boilerplate to `WebSocketService` ([#3464](https://github.com/MetaMask/snaps/pull/3464))
16
+
17
+ ## [13.1.0]
18
+
19
+ ### Added
20
+
21
+ - Add `WebSocketService` for WebSockets support ([#3450](https://github.com/MetaMask/snaps/pull/3450))
22
+ - This service must be instantiated to invoke `onWebSocketEvent` when WebSocket
23
+ messages are received.
24
+ - Add `SnapController:init` to support `onStart` handler ([#3455](https://github.com/MetaMask/snaps/pull/3455))
25
+ - This function should be called when the client has been fully started.
26
+
10
27
  ## [13.0.0]
11
28
 
12
29
  ### Changed
@@ -809,7 +826,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
809
826
  - The version of the package no longer needs to match the version of all other
810
827
  MetaMask Snaps packages.
811
828
 
812
- [Unreleased]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@13.0.0...HEAD
829
+ [Unreleased]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@13.1.1...HEAD
830
+ [13.1.1]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@13.1.0...@metamask/snaps-controllers@13.1.1
831
+ [13.1.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@13.0.0...@metamask/snaps-controllers@13.1.0
813
832
  [13.0.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@12.3.1...@metamask/snaps-controllers@13.0.0
814
833
  [12.3.1]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@12.3.0...@metamask/snaps-controllers@12.3.1
815
834
  [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);