@metamask/snaps-controllers 14.0.1 → 14.0.2

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 (56) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/dist/cronjob/CronjobController.cjs +2 -0
  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 +2 -0
  7. package/dist/cronjob/CronjobController.mjs.map +1 -1
  8. package/dist/services/AbstractExecutionService.cjs +28 -3
  9. package/dist/services/AbstractExecutionService.cjs.map +1 -1
  10. package/dist/services/AbstractExecutionService.d.cts +16 -0
  11. package/dist/services/AbstractExecutionService.d.cts.map +1 -1
  12. package/dist/services/AbstractExecutionService.d.mts +16 -0
  13. package/dist/services/AbstractExecutionService.d.mts.map +1 -1
  14. package/dist/services/AbstractExecutionService.mjs +28 -3
  15. package/dist/services/AbstractExecutionService.mjs.map +1 -1
  16. package/dist/services/iframe/IframeExecutionService.cjs +1 -0
  17. package/dist/services/iframe/IframeExecutionService.cjs.map +1 -1
  18. package/dist/services/iframe/IframeExecutionService.d.cts.map +1 -1
  19. package/dist/services/iframe/IframeExecutionService.d.mts.map +1 -1
  20. package/dist/services/iframe/IframeExecutionService.mjs +1 -0
  21. package/dist/services/iframe/IframeExecutionService.mjs.map +1 -1
  22. package/dist/services/node-js/NodeProcessExecutionService.cjs +2 -1
  23. package/dist/services/node-js/NodeProcessExecutionService.cjs.map +1 -1
  24. package/dist/services/node-js/NodeProcessExecutionService.d.cts +1 -1
  25. package/dist/services/node-js/NodeProcessExecutionService.d.cts.map +1 -1
  26. package/dist/services/node-js/NodeProcessExecutionService.d.mts +1 -1
  27. package/dist/services/node-js/NodeProcessExecutionService.d.mts.map +1 -1
  28. package/dist/services/node-js/NodeProcessExecutionService.mjs +2 -1
  29. package/dist/services/node-js/NodeProcessExecutionService.mjs.map +1 -1
  30. package/dist/services/node-js/NodeThreadExecutionService.cjs +2 -1
  31. package/dist/services/node-js/NodeThreadExecutionService.cjs.map +1 -1
  32. package/dist/services/node-js/NodeThreadExecutionService.d.cts +1 -1
  33. package/dist/services/node-js/NodeThreadExecutionService.d.cts.map +1 -1
  34. package/dist/services/node-js/NodeThreadExecutionService.d.mts +1 -1
  35. package/dist/services/node-js/NodeThreadExecutionService.d.mts.map +1 -1
  36. package/dist/services/node-js/NodeThreadExecutionService.mjs +2 -1
  37. package/dist/services/node-js/NodeThreadExecutionService.mjs.map +1 -1
  38. package/dist/services/proxy/ProxyExecutionService.cjs +1 -0
  39. package/dist/services/proxy/ProxyExecutionService.cjs.map +1 -1
  40. package/dist/services/proxy/ProxyExecutionService.d.cts.map +1 -1
  41. package/dist/services/proxy/ProxyExecutionService.d.mts.map +1 -1
  42. package/dist/services/proxy/ProxyExecutionService.mjs +1 -0
  43. package/dist/services/proxy/ProxyExecutionService.mjs.map +1 -1
  44. package/dist/services/webview/WebViewExecutionService.cjs +1 -0
  45. package/dist/services/webview/WebViewExecutionService.cjs.map +1 -1
  46. package/dist/services/webview/WebViewExecutionService.d.cts.map +1 -1
  47. package/dist/services/webview/WebViewExecutionService.d.mts.map +1 -1
  48. package/dist/services/webview/WebViewExecutionService.mjs +1 -0
  49. package/dist/services/webview/WebViewExecutionService.mjs.map +1 -1
  50. package/dist/snaps/SnapController.cjs +4 -1
  51. package/dist/snaps/SnapController.cjs.map +1 -1
  52. package/dist/snaps/SnapController.d.cts.map +1 -1
  53. package/dist/snaps/SnapController.d.mts.map +1 -1
  54. package/dist/snaps/SnapController.mjs +4 -1
  55. package/dist/snaps/SnapController.mjs.map +1 -1
  56. package/package.json +4 -4
@@ -20,6 +20,7 @@ export class WebViewExecutionService extends AbstractExecutionService {
20
20
  * @returns An object with the webview and stream.
21
21
  */
22
22
  async initEnvStream(snapId) {
23
+ this.setSnapStatus(snapId, 'initializing');
23
24
  const webView = await this.#createWebView(snapId);
24
25
  const stream = new WebViewMessageStream({
25
26
  name: 'parent',
@@ -1 +1 @@
1
- {"version":3,"file":"WebViewExecutionService.mjs","sourceRoot":"","sources":["../../../src/services/webview/WebViewExecutionService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,mCAA+B;AAC9D,OAAO,EAAE,wBAAwB,EAAE,wCAAoC;AAWvE,MAAM,OAAO,uBAAwB,SAAQ,wBAA0C;IAC5E,cAAc,CAAC;IAEf,cAAc,CAAC;IAExB,YAAY,EACV,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,GAAG,IAAI,EACqB;QAC5B,KAAK,CAAC;YACJ,GAAG,IAAI;YACP,SAAS;YACT,iBAAiB;SAClB,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACtC,CAAC;IAED;;;;;;OAMG;IACO,KAAK,CAAC,aAAa,CAAC,MAAc;QAC1C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAElD,MAAM,MAAM,GAAG,IAAI,oBAAoB,CAAC;YACtC,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,OAAO;YACf,OAAO;SACR,CAAC,CAAC;QAEH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IACrC,CAAC;IAES,YAAY,CAAC,UAA8C;QACnE,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;CACF","sourcesContent":["import type { WebViewInterface } from './WebViewMessageStream';\nimport { WebViewMessageStream } from './WebViewMessageStream';\nimport { AbstractExecutionService } from '../AbstractExecutionService';\nimport type {\n ExecutionServiceArgs,\n TerminateJobArgs,\n} from '../AbstractExecutionService';\n\nexport type WebViewExecutionServiceArgs = ExecutionServiceArgs & {\n createWebView: (jobId: string) => Promise<WebViewInterface>;\n removeWebView: (jobId: string) => void;\n};\n\nexport class WebViewExecutionService extends AbstractExecutionService<WebViewInterface> {\n readonly #createWebView;\n\n readonly #removeWebView;\n\n constructor({\n messenger,\n setupSnapProvider,\n createWebView,\n removeWebView,\n ...args\n }: WebViewExecutionServiceArgs) {\n super({\n ...args,\n messenger,\n setupSnapProvider,\n });\n this.#createWebView = createWebView;\n this.#removeWebView = removeWebView;\n }\n\n /**\n * Create a new stream for the specified Snap. This wraps the runtime stream\n * in a stream specific to the Snap.\n *\n * @param snapId - The Snap ID.\n * @returns An object with the webview and stream.\n */\n protected async initEnvStream(snapId: string) {\n const webView = await this.#createWebView(snapId);\n\n const stream = new WebViewMessageStream({\n name: 'parent',\n target: 'child',\n webView,\n });\n\n return { worker: webView, stream };\n }\n\n protected terminateJob(jobWrapper: TerminateJobArgs<WebViewInterface>): void {\n this.#removeWebView(jobWrapper.id);\n }\n}\n"]}
1
+ {"version":3,"file":"WebViewExecutionService.mjs","sourceRoot":"","sources":["../../../src/services/webview/WebViewExecutionService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,mCAA+B;AAC9D,OAAO,EAAE,wBAAwB,EAAE,wCAAoC;AAWvE,MAAM,OAAO,uBAAwB,SAAQ,wBAA0C;IAC5E,cAAc,CAAC;IAEf,cAAc,CAAC;IAExB,YAAY,EACV,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,GAAG,IAAI,EACqB;QAC5B,KAAK,CAAC;YACJ,GAAG,IAAI;YACP,SAAS;YACT,iBAAiB;SAClB,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACtC,CAAC;IAED;;;;;;OAMG;IACO,KAAK,CAAC,aAAa,CAAC,MAAc;QAC1C,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAE3C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAElD,MAAM,MAAM,GAAG,IAAI,oBAAoB,CAAC;YACtC,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,OAAO;YACf,OAAO;SACR,CAAC,CAAC;QAEH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IACrC,CAAC;IAES,YAAY,CAAC,UAA8C;QACnE,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;CACF","sourcesContent":["import type { WebViewInterface } from './WebViewMessageStream';\nimport { WebViewMessageStream } from './WebViewMessageStream';\nimport { AbstractExecutionService } from '../AbstractExecutionService';\nimport type {\n ExecutionServiceArgs,\n TerminateJobArgs,\n} from '../AbstractExecutionService';\n\nexport type WebViewExecutionServiceArgs = ExecutionServiceArgs & {\n createWebView: (jobId: string) => Promise<WebViewInterface>;\n removeWebView: (jobId: string) => void;\n};\n\nexport class WebViewExecutionService extends AbstractExecutionService<WebViewInterface> {\n readonly #createWebView;\n\n readonly #removeWebView;\n\n constructor({\n messenger,\n setupSnapProvider,\n createWebView,\n removeWebView,\n ...args\n }: WebViewExecutionServiceArgs) {\n super({\n ...args,\n messenger,\n setupSnapProvider,\n });\n this.#createWebView = createWebView;\n this.#removeWebView = removeWebView;\n }\n\n /**\n * Create a new stream for the specified Snap. This wraps the runtime stream\n * in a stream specific to the Snap.\n *\n * @param snapId - The Snap ID.\n * @returns An object with the webview and stream.\n */\n protected async initEnvStream(snapId: string) {\n this.setSnapStatus(snapId, 'initializing');\n\n const webView = await this.#createWebView(snapId);\n\n const stream = new WebViewMessageStream({\n name: 'parent',\n target: 'child',\n webView,\n });\n\n return { worker: webView, stream };\n }\n\n protected terminateJob(jobWrapper: TerminateJobArgs<WebViewInterface>): void {\n this.#removeWebView(jobWrapper.id);\n }\n}\n"]}
@@ -1844,7 +1844,10 @@ class SnapController extends base_controller_1.BaseController {
1844
1844
  try {
1845
1845
  const result = await (0, utils_2.withTimeout)(handleRpcRequestPromise, timer);
1846
1846
  if (result === utils_2.hasTimedOut) {
1847
- throw new Error(`${snapId} failed to respond to the request in time.`);
1847
+ const stopping = runtime.stopPromise !== null || !this.isRunning(snapId);
1848
+ throw new Error(stopping
1849
+ ? `${snapId} was stopped and the request was cancelled. This is likely because the Snap crashed.`
1850
+ : `${snapId} failed to respond to the request in time.`);
1848
1851
  }
1849
1852
  await this.#assertSnapRpcResponse(snapId, handlerType, result);
1850
1853
  const transformedResult = await this.#transformSnapRpcResponse(snapId, handlerType, transformedRequest, result);