@metamask/snaps-controllers 14.0.1 → 14.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 (66) hide show
  1. package/CHANGELOG.md +19 -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 +12 -1
  51. package/dist/snaps/SnapController.cjs.map +1 -1
  52. package/dist/snaps/SnapController.d.cts +7 -0
  53. package/dist/snaps/SnapController.d.cts.map +1 -1
  54. package/dist/snaps/SnapController.d.mts +7 -0
  55. package/dist/snaps/SnapController.d.mts.map +1 -1
  56. package/dist/snaps/SnapController.mjs +13 -2
  57. package/dist/snaps/SnapController.mjs.map +1 -1
  58. package/dist/utils.cjs +12 -1
  59. package/dist/utils.cjs.map +1 -1
  60. package/dist/utils.d.cts +9 -1
  61. package/dist/utils.d.cts.map +1 -1
  62. package/dist/utils.d.mts +9 -1
  63. package/dist/utils.d.mts.map +1 -1
  64. package/dist/utils.mjs +10 -0
  65. package/dist/utils.mjs.map +1 -1
  66. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"WebViewExecutionService.cjs","sourceRoot":"","sources":["../../../src/services/webview/WebViewExecutionService.ts"],"names":[],"mappings":";;;AACA,qEAA8D;AAC9D,8EAAuE;AAWvE,MAAa,uBAAwB,SAAQ,mDAA0C;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,2CAAoB,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;AA3CD,0DA2CC","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.cjs","sourceRoot":"","sources":["../../../src/services/webview/WebViewExecutionService.ts"],"names":[],"mappings":";;;AACA,qEAA8D;AAC9D,8EAAuE;AAWvE,MAAa,uBAAwB,SAAQ,mDAA0C;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,2CAAoB,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;AA7CD,0DA6CC","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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"WebViewExecutionService.d.cts","sourceRoot":"","sources":["../../../src/services/webview/WebViewExecutionService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,mCAA+B;AAC/D,OAAO,EAAE,oBAAoB,EAAE,mCAA+B;AAC9D,OAAO,EAAE,wBAAwB,EAAE,wCAAoC;AACvE,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EACjB,wCAAoC;AAErC,MAAM,MAAM,2BAA2B,GAAG,oBAAoB,GAAG;IAC/D,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC5D,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC,CAAC;AAEF,qBAAa,uBAAwB,SAAQ,wBAAwB,CAAC,gBAAgB,CAAC;;gBAKzE,EACV,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,GAAG,IAAI,EACR,EAAE,2BAA2B;IAU9B;;;;;;OAMG;cACa,aAAa,CAAC,MAAM,EAAE,MAAM;;;;IAY5C,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,IAAI;CAG7E"}
1
+ {"version":3,"file":"WebViewExecutionService.d.cts","sourceRoot":"","sources":["../../../src/services/webview/WebViewExecutionService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,mCAA+B;AAC/D,OAAO,EAAE,oBAAoB,EAAE,mCAA+B;AAC9D,OAAO,EAAE,wBAAwB,EAAE,wCAAoC;AACvE,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EACjB,wCAAoC;AAErC,MAAM,MAAM,2BAA2B,GAAG,oBAAoB,GAAG;IAC/D,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC5D,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC,CAAC;AAEF,qBAAa,uBAAwB,SAAQ,wBAAwB,CAAC,gBAAgB,CAAC;;gBAKzE,EACV,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,GAAG,IAAI,EACR,EAAE,2BAA2B;IAU9B;;;;;;OAMG;cACa,aAAa,CAAC,MAAM,EAAE,MAAM;;;;IAc5C,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,IAAI;CAG7E"}
@@ -1 +1 @@
1
- {"version":3,"file":"WebViewExecutionService.d.mts","sourceRoot":"","sources":["../../../src/services/webview/WebViewExecutionService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,mCAA+B;AAC/D,OAAO,EAAE,oBAAoB,EAAE,mCAA+B;AAC9D,OAAO,EAAE,wBAAwB,EAAE,wCAAoC;AACvE,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EACjB,wCAAoC;AAErC,MAAM,MAAM,2BAA2B,GAAG,oBAAoB,GAAG;IAC/D,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC5D,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC,CAAC;AAEF,qBAAa,uBAAwB,SAAQ,wBAAwB,CAAC,gBAAgB,CAAC;;gBAKzE,EACV,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,GAAG,IAAI,EACR,EAAE,2BAA2B;IAU9B;;;;;;OAMG;cACa,aAAa,CAAC,MAAM,EAAE,MAAM;;;;IAY5C,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,IAAI;CAG7E"}
1
+ {"version":3,"file":"WebViewExecutionService.d.mts","sourceRoot":"","sources":["../../../src/services/webview/WebViewExecutionService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,mCAA+B;AAC/D,OAAO,EAAE,oBAAoB,EAAE,mCAA+B;AAC9D,OAAO,EAAE,wBAAwB,EAAE,wCAAoC;AACvE,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EACjB,wCAAoC;AAErC,MAAM,MAAM,2BAA2B,GAAG,oBAAoB,GAAG;IAC/D,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC5D,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC,CAAC;AAEF,qBAAa,uBAAwB,SAAQ,wBAAwB,CAAC,gBAAgB,CAAC;;gBAKzE,EACV,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,GAAG,IAAI,EACR,EAAE,2BAA2B;IAU9B;;;;;;OAMG;cACa,aAAa,CAAC,MAAM,EAAE,MAAM;;;;IAc5C,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,IAAI;CAG7E"}
@@ -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"]}
@@ -1519,10 +1519,18 @@ class SnapController extends base_controller_1.BaseController {
1519
1519
  permissions: manifest.initialPermissions,
1520
1520
  platformVersion: manifest.platformVersion,
1521
1521
  });
1522
+ const preinstalledArgs = this.#featureFlags.forcePreinstalledSnaps && (0, utils_2.isLocalSnapId)(snapId)
1523
+ ? {
1524
+ preinstalled: true,
1525
+ hideSnapBranding: true,
1526
+ hidden: false,
1527
+ }
1528
+ : {};
1522
1529
  return this.#set({
1523
1530
  ...args,
1524
1531
  files: fetchedSnap,
1525
1532
  id: snapId,
1533
+ ...preinstalledArgs,
1526
1534
  });
1527
1535
  })();
1528
1536
  }
@@ -1844,7 +1852,10 @@ class SnapController extends base_controller_1.BaseController {
1844
1852
  try {
1845
1853
  const result = await (0, utils_2.withTimeout)(handleRpcRequestPromise, timer);
1846
1854
  if (result === utils_2.hasTimedOut) {
1847
- throw new Error(`${snapId} failed to respond to the request in time.`);
1855
+ const stopping = runtime.stopPromise !== null || !this.isRunning(snapId);
1856
+ throw new Error(stopping
1857
+ ? `${snapId} was stopped and the request was cancelled. This is likely because the Snap crashed.`
1858
+ : `${snapId} failed to respond to the request in time.`);
1848
1859
  }
1849
1860
  await this.#assertSnapRpcResponse(snapId, handlerType, result);
1850
1861
  const transformedResult = await this.#transformSnapRpcResponse(snapId, handlerType, transformedRequest, result);