@metamask/snaps-controllers 20.0.1 → 20.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.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [20.0.2]
11
+
12
+ ### Fixed
13
+
14
+ - Increase iframe unload timeout ([#3971](https://github.com/MetaMask/snaps/pull/3971))
15
+
10
16
  ## [20.0.1]
11
17
 
12
18
  ### Fixed
@@ -1195,7 +1201,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1195
1201
  - The version of the package no longer needs to match the version of all other
1196
1202
  MetaMask Snaps packages.
1197
1203
 
1198
- [Unreleased]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@20.0.1...HEAD
1204
+ [Unreleased]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@20.0.2...HEAD
1205
+ [20.0.2]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@20.0.1...@metamask/snaps-controllers@20.0.2
1199
1206
  [20.0.1]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@20.0.0...@metamask/snaps-controllers@20.0.1
1200
1207
  [20.0.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@19.0.1...@metamask/snaps-controllers@20.0.0
1201
1208
  [19.0.1]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@19.0.0...@metamask/snaps-controllers@19.0.1
@@ -24,7 +24,7 @@ class IframeExecutionService extends ExecutionService_1.ExecutionService {
24
24
  await (0, utils_1.withTimeout)(new Promise((resolve) => {
25
25
  iframe.addEventListener('load', () => resolve(), { once: true });
26
26
  iframe.src = 'about:blank';
27
- }), 10);
27
+ }), 1000);
28
28
  iframe.remove();
29
29
  }
30
30
  async initEnvStream(snapId) {
@@ -1 +1 @@
1
- {"version":3,"file":"IframeExecutionService.cjs","sourceRoot":"","sources":["../../../src/services/iframe/IframeExecutionService.ts"],"names":[],"mappings":";;;AACA,uEAAwE;AACxE,uDAAqD;AAErD,2CAA0C;AAK1C,8DAAuD;AAMvD,MAAa,sBAAuB,SAAQ,mCAAwB;IAC3D,SAAS,CAAM;IAEtB,YAAY,EACV,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,GAAG,IAAI,EAC+B;QACtC,KAAK,CAAC;YACJ,GAAG,IAAI;YACP,SAAS;YACT,iBAAiB;SAClB,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAES,KAAK,CAAC,YAAY,CAC1B,UAAoC;QAEpC,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CACpC,UAAU,CAAC,EAAE,CACc,CAAC;QAE9B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;QAEf,MAAM,IAAA,mBAAW,EACf,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAC5B,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACjE,MAAM,CAAC,GAAG,GAAG,aAAa,CAAC;QAC7B,CAAC,CAAC,EACF,EAAE,CACH,CAAC;QAEF,MAAM,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;IAES,KAAK,CAAC,aAAa,CAAC,MAAc;QAI1C,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAE3C,MAAM,YAAY,GAAG,MAAM,IAAA,0BAAY,EAAC;YACtC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC9B,EAAE,EAAE,MAAM;SACX,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,6CAAuB,CAAC;YACzC,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,OAAO;YACf,YAAY,EAAE,YAAY;YAC1B,YAAY,EAAE,GAAG;SAClB,CAAC,CAAC;QAEH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;IAC1C,CAAC;CACF;AA7DD,wDA6DC","sourcesContent":["import type { BasePostMessageStream } from '@metamask/post-message-stream';\nimport { WindowPostMessageStream } from '@metamask/post-message-stream';\nimport { createWindow } from '@metamask/snaps-utils';\n\nimport { withTimeout } from '../../utils';\nimport type {\n ExecutionServiceArgs,\n TerminateJobArgs,\n} from '../ExecutionService';\nimport { ExecutionService } from '../ExecutionService';\n\ntype IframeExecutionEnvironmentServiceArgs = {\n iframeUrl: URL;\n} & ExecutionServiceArgs;\n\nexport class IframeExecutionService extends ExecutionService<Window> {\n public iframeUrl: URL;\n\n constructor({\n iframeUrl,\n messenger,\n setupSnapProvider,\n ...args\n }: IframeExecutionEnvironmentServiceArgs) {\n super({\n ...args,\n messenger,\n setupSnapProvider,\n });\n this.iframeUrl = iframeUrl;\n }\n\n protected async terminateJob(\n jobWrapper: TerminateJobArgs<Window>,\n ): Promise<void> {\n const iframe = document.getElementById(\n jobWrapper.id,\n ) as HTMLIFrameElement | null;\n\n if (!iframe) {\n return;\n }\n\n iframe.id = '';\n\n await withTimeout(\n new Promise<void>((resolve) => {\n iframe.addEventListener('load', () => resolve(), { once: true });\n iframe.src = 'about:blank';\n }),\n 10,\n );\n\n iframe.remove();\n }\n\n protected async initEnvStream(snapId: string): Promise<{\n worker: Window;\n stream: BasePostMessageStream;\n }> {\n this.setSnapStatus(snapId, 'initializing');\n\n const iframeWindow = await createWindow({\n uri: this.iframeUrl.toString(),\n id: snapId,\n });\n\n const stream = new WindowPostMessageStream({\n name: 'parent',\n target: 'child',\n targetWindow: iframeWindow,\n targetOrigin: '*',\n });\n\n return { worker: iframeWindow, stream };\n }\n}\n"]}
1
+ {"version":3,"file":"IframeExecutionService.cjs","sourceRoot":"","sources":["../../../src/services/iframe/IframeExecutionService.ts"],"names":[],"mappings":";;;AACA,uEAAwE;AACxE,uDAAqD;AAErD,2CAA0C;AAK1C,8DAAuD;AAMvD,MAAa,sBAAuB,SAAQ,mCAAwB;IAC3D,SAAS,CAAM;IAEtB,YAAY,EACV,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,GAAG,IAAI,EAC+B;QACtC,KAAK,CAAC;YACJ,GAAG,IAAI;YACP,SAAS;YACT,iBAAiB;SAClB,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAES,KAAK,CAAC,YAAY,CAC1B,UAAoC;QAEpC,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CACpC,UAAU,CAAC,EAAE,CACc,CAAC;QAE9B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;QAEf,MAAM,IAAA,mBAAW,EACf,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAC5B,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACjE,MAAM,CAAC,GAAG,GAAG,aAAa,CAAC;QAC7B,CAAC,CAAC,EACF,IAAK,CACN,CAAC;QAEF,MAAM,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;IAES,KAAK,CAAC,aAAa,CAAC,MAAc;QAI1C,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAE3C,MAAM,YAAY,GAAG,MAAM,IAAA,0BAAY,EAAC;YACtC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC9B,EAAE,EAAE,MAAM;SACX,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,6CAAuB,CAAC;YACzC,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,OAAO;YACf,YAAY,EAAE,YAAY;YAC1B,YAAY,EAAE,GAAG;SAClB,CAAC,CAAC;QAEH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;IAC1C,CAAC;CACF;AA7DD,wDA6DC","sourcesContent":["import type { BasePostMessageStream } from '@metamask/post-message-stream';\nimport { WindowPostMessageStream } from '@metamask/post-message-stream';\nimport { createWindow } from '@metamask/snaps-utils';\n\nimport { withTimeout } from '../../utils';\nimport type {\n ExecutionServiceArgs,\n TerminateJobArgs,\n} from '../ExecutionService';\nimport { ExecutionService } from '../ExecutionService';\n\ntype IframeExecutionEnvironmentServiceArgs = {\n iframeUrl: URL;\n} & ExecutionServiceArgs;\n\nexport class IframeExecutionService extends ExecutionService<Window> {\n public iframeUrl: URL;\n\n constructor({\n iframeUrl,\n messenger,\n setupSnapProvider,\n ...args\n }: IframeExecutionEnvironmentServiceArgs) {\n super({\n ...args,\n messenger,\n setupSnapProvider,\n });\n this.iframeUrl = iframeUrl;\n }\n\n protected async terminateJob(\n jobWrapper: TerminateJobArgs<Window>,\n ): Promise<void> {\n const iframe = document.getElementById(\n jobWrapper.id,\n ) as HTMLIFrameElement | null;\n\n if (!iframe) {\n return;\n }\n\n iframe.id = '';\n\n await withTimeout(\n new Promise<void>((resolve) => {\n iframe.addEventListener('load', () => resolve(), { once: true });\n iframe.src = 'about:blank';\n }),\n 1_000,\n );\n\n iframe.remove();\n }\n\n protected async initEnvStream(snapId: string): Promise<{\n worker: Window;\n stream: BasePostMessageStream;\n }> {\n this.setSnapStatus(snapId, 'initializing');\n\n const iframeWindow = await createWindow({\n uri: this.iframeUrl.toString(),\n id: snapId,\n });\n\n const stream = new WindowPostMessageStream({\n name: 'parent',\n target: 'child',\n targetWindow: iframeWindow,\n targetOrigin: '*',\n });\n\n return { worker: iframeWindow, stream };\n }\n}\n"]}
@@ -21,7 +21,7 @@ export class IframeExecutionService extends ExecutionService {
21
21
  await withTimeout(new Promise((resolve) => {
22
22
  iframe.addEventListener('load', () => resolve(), { once: true });
23
23
  iframe.src = 'about:blank';
24
- }), 10);
24
+ }), 1000);
25
25
  iframe.remove();
26
26
  }
27
27
  async initEnvStream(snapId) {
@@ -1 +1 @@
1
- {"version":3,"file":"IframeExecutionService.mjs","sourceRoot":"","sources":["../../../src/services/iframe/IframeExecutionService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,sCAAsC;AACxE,OAAO,EAAE,YAAY,EAAE,8BAA8B;AAErD,OAAO,EAAE,WAAW,EAAE,wBAAoB;AAK1C,OAAO,EAAE,gBAAgB,EAAE,gCAA4B;AAMvD,MAAM,OAAO,sBAAuB,SAAQ,gBAAwB;IAC3D,SAAS,CAAM;IAEtB,YAAY,EACV,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,GAAG,IAAI,EAC+B;QACtC,KAAK,CAAC;YACJ,GAAG,IAAI;YACP,SAAS;YACT,iBAAiB;SAClB,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAES,KAAK,CAAC,YAAY,CAC1B,UAAoC;QAEpC,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CACpC,UAAU,CAAC,EAAE,CACc,CAAC;QAE9B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;QAEf,MAAM,WAAW,CACf,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAC5B,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACjE,MAAM,CAAC,GAAG,GAAG,aAAa,CAAC;QAC7B,CAAC,CAAC,EACF,EAAE,CACH,CAAC;QAEF,MAAM,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;IAES,KAAK,CAAC,aAAa,CAAC,MAAc;QAI1C,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAE3C,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC;YACtC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC9B,EAAE,EAAE,MAAM;SACX,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,uBAAuB,CAAC;YACzC,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,OAAO;YACf,YAAY,EAAE,YAAY;YAC1B,YAAY,EAAE,GAAG;SAClB,CAAC,CAAC;QAEH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;IAC1C,CAAC;CACF","sourcesContent":["import type { BasePostMessageStream } from '@metamask/post-message-stream';\nimport { WindowPostMessageStream } from '@metamask/post-message-stream';\nimport { createWindow } from '@metamask/snaps-utils';\n\nimport { withTimeout } from '../../utils';\nimport type {\n ExecutionServiceArgs,\n TerminateJobArgs,\n} from '../ExecutionService';\nimport { ExecutionService } from '../ExecutionService';\n\ntype IframeExecutionEnvironmentServiceArgs = {\n iframeUrl: URL;\n} & ExecutionServiceArgs;\n\nexport class IframeExecutionService extends ExecutionService<Window> {\n public iframeUrl: URL;\n\n constructor({\n iframeUrl,\n messenger,\n setupSnapProvider,\n ...args\n }: IframeExecutionEnvironmentServiceArgs) {\n super({\n ...args,\n messenger,\n setupSnapProvider,\n });\n this.iframeUrl = iframeUrl;\n }\n\n protected async terminateJob(\n jobWrapper: TerminateJobArgs<Window>,\n ): Promise<void> {\n const iframe = document.getElementById(\n jobWrapper.id,\n ) as HTMLIFrameElement | null;\n\n if (!iframe) {\n return;\n }\n\n iframe.id = '';\n\n await withTimeout(\n new Promise<void>((resolve) => {\n iframe.addEventListener('load', () => resolve(), { once: true });\n iframe.src = 'about:blank';\n }),\n 10,\n );\n\n iframe.remove();\n }\n\n protected async initEnvStream(snapId: string): Promise<{\n worker: Window;\n stream: BasePostMessageStream;\n }> {\n this.setSnapStatus(snapId, 'initializing');\n\n const iframeWindow = await createWindow({\n uri: this.iframeUrl.toString(),\n id: snapId,\n });\n\n const stream = new WindowPostMessageStream({\n name: 'parent',\n target: 'child',\n targetWindow: iframeWindow,\n targetOrigin: '*',\n });\n\n return { worker: iframeWindow, stream };\n }\n}\n"]}
1
+ {"version":3,"file":"IframeExecutionService.mjs","sourceRoot":"","sources":["../../../src/services/iframe/IframeExecutionService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,sCAAsC;AACxE,OAAO,EAAE,YAAY,EAAE,8BAA8B;AAErD,OAAO,EAAE,WAAW,EAAE,wBAAoB;AAK1C,OAAO,EAAE,gBAAgB,EAAE,gCAA4B;AAMvD,MAAM,OAAO,sBAAuB,SAAQ,gBAAwB;IAC3D,SAAS,CAAM;IAEtB,YAAY,EACV,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,GAAG,IAAI,EAC+B;QACtC,KAAK,CAAC;YACJ,GAAG,IAAI;YACP,SAAS;YACT,iBAAiB;SAClB,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAES,KAAK,CAAC,YAAY,CAC1B,UAAoC;QAEpC,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CACpC,UAAU,CAAC,EAAE,CACc,CAAC;QAE9B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;QAEf,MAAM,WAAW,CACf,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAC5B,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACjE,MAAM,CAAC,GAAG,GAAG,aAAa,CAAC;QAC7B,CAAC,CAAC,EACF,IAAK,CACN,CAAC;QAEF,MAAM,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;IAES,KAAK,CAAC,aAAa,CAAC,MAAc;QAI1C,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAE3C,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC;YACtC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC9B,EAAE,EAAE,MAAM;SACX,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,uBAAuB,CAAC;YACzC,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,OAAO;YACf,YAAY,EAAE,YAAY;YAC1B,YAAY,EAAE,GAAG;SAClB,CAAC,CAAC;QAEH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;IAC1C,CAAC;CACF","sourcesContent":["import type { BasePostMessageStream } from '@metamask/post-message-stream';\nimport { WindowPostMessageStream } from '@metamask/post-message-stream';\nimport { createWindow } from '@metamask/snaps-utils';\n\nimport { withTimeout } from '../../utils';\nimport type {\n ExecutionServiceArgs,\n TerminateJobArgs,\n} from '../ExecutionService';\nimport { ExecutionService } from '../ExecutionService';\n\ntype IframeExecutionEnvironmentServiceArgs = {\n iframeUrl: URL;\n} & ExecutionServiceArgs;\n\nexport class IframeExecutionService extends ExecutionService<Window> {\n public iframeUrl: URL;\n\n constructor({\n iframeUrl,\n messenger,\n setupSnapProvider,\n ...args\n }: IframeExecutionEnvironmentServiceArgs) {\n super({\n ...args,\n messenger,\n setupSnapProvider,\n });\n this.iframeUrl = iframeUrl;\n }\n\n protected async terminateJob(\n jobWrapper: TerminateJobArgs<Window>,\n ): Promise<void> {\n const iframe = document.getElementById(\n jobWrapper.id,\n ) as HTMLIFrameElement | null;\n\n if (!iframe) {\n return;\n }\n\n iframe.id = '';\n\n await withTimeout(\n new Promise<void>((resolve) => {\n iframe.addEventListener('load', () => resolve(), { once: true });\n iframe.src = 'about:blank';\n }),\n 1_000,\n );\n\n iframe.remove();\n }\n\n protected async initEnvStream(snapId: string): Promise<{\n worker: Window;\n stream: BasePostMessageStream;\n }> {\n this.setSnapStatus(snapId, 'initializing');\n\n const iframeWindow = await createWindow({\n uri: this.iframeUrl.toString(),\n id: snapId,\n });\n\n const stream = new WindowPostMessageStream({\n name: 'parent',\n target: 'child',\n targetWindow: iframeWindow,\n targetOrigin: '*',\n });\n\n return { worker: iframeWindow, stream };\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamask/snaps-controllers",
3
- "version": "20.0.1",
3
+ "version": "20.0.2",
4
4
  "description": "Controllers for MetaMask Snaps",
5
5
  "keywords": [
6
6
  "MetaMask",
@@ -151,7 +151,7 @@
151
151
  "vitest": "^3.1.1"
152
152
  },
153
153
  "peerDependencies": {
154
- "@metamask/snaps-execution-environments": "^11.0.2"
154
+ "@metamask/snaps-execution-environments": "^11.1.0"
155
155
  },
156
156
  "peerDependenciesMeta": {
157
157
  "@metamask/snaps-execution-environments": {