@metamask/snaps-execution-environments 7.2.2 → 8.0.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 (75) hide show
  1. package/CHANGELOG.md +27 -1
  2. package/dist/common/BaseSnapExecutor.cjs +12 -10
  3. package/dist/common/BaseSnapExecutor.cjs.map +1 -1
  4. package/dist/common/BaseSnapExecutor.d.cts.map +1 -1
  5. package/dist/common/BaseSnapExecutor.d.mts.map +1 -1
  6. package/dist/common/BaseSnapExecutor.mjs +12 -10
  7. package/dist/common/BaseSnapExecutor.mjs.map +1 -1
  8. package/dist/common/endowments/network.cjs +4 -4
  9. package/dist/common/endowments/network.cjs.map +1 -1
  10. package/dist/common/endowments/network.d.cts.map +1 -1
  11. package/dist/common/endowments/network.d.mts.map +1 -1
  12. package/dist/common/endowments/network.mjs +4 -4
  13. package/dist/common/endowments/network.mjs.map +1 -1
  14. package/dist/node-process/ChildProcessSnapExecutor.cjs +2 -2
  15. package/dist/node-process/ChildProcessSnapExecutor.cjs.map +1 -1
  16. package/dist/node-process/ChildProcessSnapExecutor.mjs +1 -1
  17. package/dist/node-process/ChildProcessSnapExecutor.mjs.map +1 -1
  18. package/dist/node-thread/ThreadSnapExecutor.cjs +2 -2
  19. package/dist/node-thread/ThreadSnapExecutor.cjs.map +1 -1
  20. package/dist/node-thread/ThreadSnapExecutor.mjs +1 -1
  21. package/dist/node-thread/ThreadSnapExecutor.mjs.map +1 -1
  22. package/dist/webpack/iframe/bundle.js +2 -0
  23. package/dist/webpack/iframe/bundle.js.LICENSE.txt +10 -0
  24. package/dist/webpack/iframe/index.html +13146 -0
  25. package/dist/webpack/node-process/bundle.js +12834 -0
  26. package/dist/{browserify/worker-pool/index.html → webpack/node-process/bundle.js.LICENSE.txt} +11668 -12229
  27. package/dist/webpack/node-thread/bundle.js +12834 -0
  28. package/dist/{browserify/iframe/index.html → webpack/node-thread/bundle.js.LICENSE.txt} +11668 -12229
  29. package/dist/webpack/webview/bundle.js.LICENSE.txt +10 -0
  30. package/dist/webpack/webview/index.html +13147 -0
  31. package/dist/webview/WebViewExecutorStream.cjs +1 -2
  32. package/dist/webview/WebViewExecutorStream.cjs.map +1 -1
  33. package/dist/webview/WebViewExecutorStream.d.cts.map +1 -1
  34. package/dist/webview/WebViewExecutorStream.d.mts.map +1 -1
  35. package/dist/webview/WebViewExecutorStream.mjs +1 -2
  36. package/dist/webview/WebViewExecutorStream.mjs.map +1 -1
  37. package/package.json +22 -23
  38. package/dist/browserify/iframe/bundle.js +0 -9
  39. package/dist/browserify/node-process/bundle.js +0 -13390
  40. package/dist/browserify/node-thread/bundle.js +0 -13390
  41. package/dist/browserify/webview/index.html +0 -13402
  42. package/dist/browserify/worker-executor/bundle.js +0 -13392
  43. package/dist/browserify/worker-pool/bundle.js +0 -9
  44. package/dist/webworker/executor/WebWorkerSnapExecutor.cjs +0 -37
  45. package/dist/webworker/executor/WebWorkerSnapExecutor.cjs.map +0 -1
  46. package/dist/webworker/executor/WebWorkerSnapExecutor.d.cts +0 -14
  47. package/dist/webworker/executor/WebWorkerSnapExecutor.d.cts.map +0 -1
  48. package/dist/webworker/executor/WebWorkerSnapExecutor.d.mts +0 -14
  49. package/dist/webworker/executor/WebWorkerSnapExecutor.d.mts.map +0 -1
  50. package/dist/webworker/executor/WebWorkerSnapExecutor.mjs +0 -37
  51. package/dist/webworker/executor/WebWorkerSnapExecutor.mjs.map +0 -1
  52. package/dist/webworker/executor/index.cjs +0 -10
  53. package/dist/webworker/executor/index.cjs.map +0 -1
  54. package/dist/webworker/executor/index.d.cts +0 -2
  55. package/dist/webworker/executor/index.d.cts.map +0 -1
  56. package/dist/webworker/executor/index.d.mts +0 -2
  57. package/dist/webworker/executor/index.d.mts.map +0 -1
  58. package/dist/webworker/executor/index.mjs +0 -8
  59. package/dist/webworker/executor/index.mjs.map +0 -1
  60. package/dist/webworker/pool/WebWorkerPool.cjs +0 -168
  61. package/dist/webworker/pool/WebWorkerPool.cjs.map +0 -1
  62. package/dist/webworker/pool/WebWorkerPool.d.cts +0 -24
  63. package/dist/webworker/pool/WebWorkerPool.d.cts.map +0 -1
  64. package/dist/webworker/pool/WebWorkerPool.d.mts +0 -24
  65. package/dist/webworker/pool/WebWorkerPool.d.mts.map +0 -1
  66. package/dist/webworker/pool/WebWorkerPool.mjs +0 -164
  67. package/dist/webworker/pool/WebWorkerPool.mjs.map +0 -1
  68. package/dist/webworker/pool/index.cjs +0 -10
  69. package/dist/webworker/pool/index.cjs.map +0 -1
  70. package/dist/webworker/pool/index.d.cts +0 -2
  71. package/dist/webworker/pool/index.d.cts.map +0 -1
  72. package/dist/webworker/pool/index.d.mts +0 -2
  73. package/dist/webworker/pool/index.d.mts.map +0 -1
  74. package/dist/webworker/pool/index.mjs +0 -8
  75. package/dist/webworker/pool/index.mjs.map +0 -1
@@ -14,7 +14,6 @@ var _WebViewExecutorStream_name, _WebViewExecutorStream_target, _WebViewExecutor
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.WebViewExecutorStream = void 0;
16
16
  const post_message_stream_1 = require("@metamask/post-message-stream");
17
- const utils_1 = require("@metamask/post-message-stream/dist/utils.js");
18
17
  class WebViewExecutorStream extends post_message_stream_1.BasePostMessageStream {
19
18
  /**
20
19
  * A special post-message-stream to be used by the WebView executor.
@@ -64,7 +63,7 @@ class WebViewExecutorStream extends post_message_stream_1.BasePostMessageStream
64
63
  const message = JSON.parse(event.data);
65
64
  // Notice that we don't check targetWindow or targetOrigin here.
66
65
  // This doesn't seem possible to do in RN.
67
- if (!(0, utils_1.isValidStreamMessage)(message) || message.target !== __classPrivateFieldGet(this, _WebViewExecutorStream_name, "f")) {
66
+ if (!(0, post_message_stream_1.isValidStreamMessage)(message) || message.target !== __classPrivateFieldGet(this, _WebViewExecutorStream_name, "f")) {
68
67
  return;
69
68
  }
70
69
  this._onData(message.data);
@@ -1 +1 @@
1
- {"version":3,"file":"WebViewExecutorStream.cjs","sourceRoot":"","sources":["../../src/webview/WebViewExecutorStream.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,uEAAsE;AACtE,uEAAgF;AAQhF,MAAa,qBAAsB,SAAQ,2CAAqB;IAO9D;;;;;;;;;;;;;OAaG;IAEH,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAA6B;QACnE,KAAK,EAAE,CAAC;QAtBD,8CAAM;QAEN,gDAAQ;QAER,sDAAc;QAoBrB,uBAAA,IAAI,+BAAS,IAAI,MAAA,CAAC;QAClB,uBAAA,IAAI,iCAAW,MAAM,MAAA,CAAC;QACtB,uBAAA,IAAI,uCAAiB,YAAY,MAAA,CAAC;QAElC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7C,gCAAgC;QAChC,6DAA6D;QAC7D,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,UAAiB,EAAE,KAAK,CAAC,CAAC;QAElE,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED;;;OAGG;IAEO,YAAY,CAAC,IAAa;QAClC,uBAAA,IAAI,2CAAc,CAAC,WAAW,CAC5B,IAAI,CAAC,SAAS,CAAC;YACb,MAAM,EAAE,uBAAA,IAAI,qCAAQ;YACpB,IAAI;SACL,CAAC,CACH,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,WAAW;IACX,gDAAgD;IACxC,UAAU,CAAC,KAAuB;QACxC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnC,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEvC,gEAAgE;QAChE,0CAA0C;QAC1C,IAAI,CAAC,IAAA,4BAAoB,EAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,uBAAA,IAAI,mCAAM,EAAE,CAAC;YACpE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,QAAQ;QACN,gCAAgC;QAChC,6DAA6D;QAC7D,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,UAAiB,EAAE,KAAK,CAAC,CAAC;IACvE,CAAC;CACF;AA5ED,sDA4EC","sourcesContent":["import type { PostMessageEvent } from '@metamask/post-message-stream';\nimport { BasePostMessageStream } from '@metamask/post-message-stream';\nimport { isValidStreamMessage } from '@metamask/post-message-stream/dist/utils';\n\ntype WebViewExecutorStreamArgs = {\n name: string;\n target: string;\n targetWindow: Window['ReactNativeWebView'];\n};\n\nexport class WebViewExecutorStream extends BasePostMessageStream {\n readonly #name;\n\n readonly #target;\n\n readonly #targetWindow;\n\n /**\n * A special post-message-stream to be used by the WebView executor.\n *\n * This stream is different in a few ways:\n * - It expects data to be base64 encoded\n * - It stringifies the data it posts\n * - It does less validation of origins\n *\n * @param args - Options bag.\n * @param args.name - The name of the stream. Used to differentiate between\n * multiple streams sharing the same window object. child:WebView\n * @param args.target - The name of the stream to exchange messages with. parent:rnside\n * @param args.targetWindow - The window object of the target stream.\n */\n\n constructor({ name, target, targetWindow }: WebViewExecutorStreamArgs) {\n super();\n\n this.#name = name;\n this.#target = target;\n this.#targetWindow = targetWindow;\n\n this._onMessage = this._onMessage.bind(this);\n\n // This method is already bound.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n window.addEventListener('message', this._onMessage as any, false);\n\n this._handshake();\n }\n\n /**\n * Webview needs to receive strings only on postMessage. That's the main difference between this and the original window post message stream.\n * Reference: https://github.com/react-native-webview/react-native-webview/blob/master/docs/Guide.md?plain=1#L471\n */\n\n protected _postMessage(data: unknown): void {\n this.#targetWindow.postMessage(\n JSON.stringify({\n target: this.#target,\n data,\n }),\n );\n }\n\n // TODO: Either fix this lint violation or explain why it's necessary to\n // ignore.\n // eslint-disable-next-line no-restricted-syntax\n private _onMessage(event: PostMessageEvent): void {\n if (typeof event.data !== 'string') {\n return;\n }\n\n const message = JSON.parse(event.data);\n\n // Notice that we don't check targetWindow or targetOrigin here.\n // This doesn't seem possible to do in RN.\n if (!isValidStreamMessage(message) || message.target !== this.#name) {\n return;\n }\n\n this._onData(message.data);\n }\n\n _destroy() {\n // This method is already bound.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n window.removeEventListener('message', this._onMessage as any, false);\n }\n}\n"]}
1
+ {"version":3,"file":"WebViewExecutorStream.cjs","sourceRoot":"","sources":["../../src/webview/WebViewExecutorStream.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,uEAGuC;AAQvC,MAAa,qBAAsB,SAAQ,2CAAqB;IAO9D;;;;;;;;;;;;;OAaG;IAEH,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAA6B;QACnE,KAAK,EAAE,CAAC;QAtBD,8CAAM;QAEN,gDAAQ;QAER,sDAAc;QAoBrB,uBAAA,IAAI,+BAAS,IAAI,MAAA,CAAC;QAClB,uBAAA,IAAI,iCAAW,MAAM,MAAA,CAAC;QACtB,uBAAA,IAAI,uCAAiB,YAAY,MAAA,CAAC;QAElC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7C,gCAAgC;QAChC,6DAA6D;QAC7D,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,UAAiB,EAAE,KAAK,CAAC,CAAC;QAElE,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED;;;OAGG;IAEO,YAAY,CAAC,IAAa;QAClC,uBAAA,IAAI,2CAAc,CAAC,WAAW,CAC5B,IAAI,CAAC,SAAS,CAAC;YACb,MAAM,EAAE,uBAAA,IAAI,qCAAQ;YACpB,IAAI;SACL,CAAC,CACH,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,WAAW;IACX,gDAAgD;IACxC,UAAU,CAAC,KAAuB;QACxC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnC,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEvC,gEAAgE;QAChE,0CAA0C;QAC1C,IAAI,CAAC,IAAA,0CAAoB,EAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,uBAAA,IAAI,mCAAM,EAAE,CAAC;YACpE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,QAAQ;QACN,gCAAgC;QAChC,6DAA6D;QAC7D,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,UAAiB,EAAE,KAAK,CAAC,CAAC;IACvE,CAAC;CACF;AA5ED,sDA4EC","sourcesContent":["import type { PostMessageEvent } from '@metamask/post-message-stream';\nimport {\n BasePostMessageStream,\n isValidStreamMessage,\n} from '@metamask/post-message-stream';\n\ntype WebViewExecutorStreamArgs = {\n name: string;\n target: string;\n targetWindow: Window['ReactNativeWebView'];\n};\n\nexport class WebViewExecutorStream extends BasePostMessageStream {\n readonly #name;\n\n readonly #target;\n\n readonly #targetWindow;\n\n /**\n * A special post-message-stream to be used by the WebView executor.\n *\n * This stream is different in a few ways:\n * - It expects data to be base64 encoded\n * - It stringifies the data it posts\n * - It does less validation of origins\n *\n * @param args - Options bag.\n * @param args.name - The name of the stream. Used to differentiate between\n * multiple streams sharing the same window object. child:WebView\n * @param args.target - The name of the stream to exchange messages with. parent:rnside\n * @param args.targetWindow - The window object of the target stream.\n */\n\n constructor({ name, target, targetWindow }: WebViewExecutorStreamArgs) {\n super();\n\n this.#name = name;\n this.#target = target;\n this.#targetWindow = targetWindow;\n\n this._onMessage = this._onMessage.bind(this);\n\n // This method is already bound.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n window.addEventListener('message', this._onMessage as any, false);\n\n this._handshake();\n }\n\n /**\n * Webview needs to receive strings only on postMessage. That's the main difference between this and the original window post message stream.\n * Reference: https://github.com/react-native-webview/react-native-webview/blob/master/docs/Guide.md?plain=1#L471\n */\n\n protected _postMessage(data: unknown): void {\n this.#targetWindow.postMessage(\n JSON.stringify({\n target: this.#target,\n data,\n }),\n );\n }\n\n // TODO: Either fix this lint violation or explain why it's necessary to\n // ignore.\n // eslint-disable-next-line no-restricted-syntax\n private _onMessage(event: PostMessageEvent): void {\n if (typeof event.data !== 'string') {\n return;\n }\n\n const message = JSON.parse(event.data);\n\n // Notice that we don't check targetWindow or targetOrigin here.\n // This doesn't seem possible to do in RN.\n if (!isValidStreamMessage(message) || message.target !== this.#name) {\n return;\n }\n\n this._onData(message.data);\n }\n\n _destroy() {\n // This method is already bound.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n window.removeEventListener('message', this._onMessage as any, false);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"WebViewExecutorStream.d.cts","sourceRoot":"","sources":["../../src/webview/WebViewExecutorStream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,sCAAsC;AAGtE,KAAK,yBAAyB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC;CAC5C,CAAC;AAEF,qBAAa,qBAAsB,SAAQ,qBAAqB;;IAO9D;;;;;;;;;;;;;OAaG;gBAES,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,yBAAyB;IAgBrE;;;OAGG;IAEH,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAY3C,OAAO,CAAC,UAAU;IAgBlB,QAAQ;CAKT"}
1
+ {"version":3,"file":"WebViewExecutorStream.d.cts","sourceRoot":"","sources":["../../src/webview/WebViewExecutorStream.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EAEtB,sCAAsC;AAEvC,KAAK,yBAAyB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC;CAC5C,CAAC;AAEF,qBAAa,qBAAsB,SAAQ,qBAAqB;;IAO9D;;;;;;;;;;;;;OAaG;gBAES,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,yBAAyB;IAgBrE;;;OAGG;IAEH,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAY3C,OAAO,CAAC,UAAU;IAgBlB,QAAQ;CAKT"}
@@ -1 +1 @@
1
- {"version":3,"file":"WebViewExecutorStream.d.mts","sourceRoot":"","sources":["../../src/webview/WebViewExecutorStream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,sCAAsC;AAGtE,KAAK,yBAAyB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC;CAC5C,CAAC;AAEF,qBAAa,qBAAsB,SAAQ,qBAAqB;;IAO9D;;;;;;;;;;;;;OAaG;gBAES,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,yBAAyB;IAgBrE;;;OAGG;IAEH,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAY3C,OAAO,CAAC,UAAU;IAgBlB,QAAQ;CAKT"}
1
+ {"version":3,"file":"WebViewExecutorStream.d.mts","sourceRoot":"","sources":["../../src/webview/WebViewExecutorStream.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EAEtB,sCAAsC;AAEvC,KAAK,yBAAyB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC;CAC5C,CAAC;AAEF,qBAAa,qBAAsB,SAAQ,qBAAqB;;IAO9D;;;;;;;;;;;;;OAaG;gBAES,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,yBAAyB;IAgBrE;;;OAGG;IAEH,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAY3C,OAAO,CAAC,UAAU;IAgBlB,QAAQ;CAKT"}
@@ -10,8 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
12
  var _WebViewExecutorStream_name, _WebViewExecutorStream_target, _WebViewExecutorStream_targetWindow;
13
- import { BasePostMessageStream } from "@metamask/post-message-stream";
14
- import { isValidStreamMessage } from "@metamask/post-message-stream/dist/utils.js";
13
+ import { BasePostMessageStream, isValidStreamMessage } from "@metamask/post-message-stream";
15
14
  export class WebViewExecutorStream extends BasePostMessageStream {
16
15
  /**
17
16
  * A special post-message-stream to be used by the WebView executor.
@@ -1 +1 @@
1
- {"version":3,"file":"WebViewExecutorStream.mjs","sourceRoot":"","sources":["../../src/webview/WebViewExecutorStream.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EAAE,qBAAqB,EAAE,sCAAsC;AACtE,OAAO,EAAE,oBAAoB,EAAE,oDAAiD;AAQhF,MAAM,OAAO,qBAAsB,SAAQ,qBAAqB;IAO9D;;;;;;;;;;;;;OAaG;IAEH,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAA6B;QACnE,KAAK,EAAE,CAAC;QAtBD,8CAAM;QAEN,gDAAQ;QAER,sDAAc;QAoBrB,uBAAA,IAAI,+BAAS,IAAI,MAAA,CAAC;QAClB,uBAAA,IAAI,iCAAW,MAAM,MAAA,CAAC;QACtB,uBAAA,IAAI,uCAAiB,YAAY,MAAA,CAAC;QAElC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7C,gCAAgC;QAChC,6DAA6D;QAC7D,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,UAAiB,EAAE,KAAK,CAAC,CAAC;QAElE,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED;;;OAGG;IAEO,YAAY,CAAC,IAAa;QAClC,uBAAA,IAAI,2CAAc,CAAC,WAAW,CAC5B,IAAI,CAAC,SAAS,CAAC;YACb,MAAM,EAAE,uBAAA,IAAI,qCAAQ;YACpB,IAAI;SACL,CAAC,CACH,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,WAAW;IACX,gDAAgD;IACxC,UAAU,CAAC,KAAuB;QACxC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnC,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEvC,gEAAgE;QAChE,0CAA0C;QAC1C,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,uBAAA,IAAI,mCAAM,EAAE,CAAC;YACpE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,QAAQ;QACN,gCAAgC;QAChC,6DAA6D;QAC7D,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,UAAiB,EAAE,KAAK,CAAC,CAAC;IACvE,CAAC;CACF","sourcesContent":["import type { PostMessageEvent } from '@metamask/post-message-stream';\nimport { BasePostMessageStream } from '@metamask/post-message-stream';\nimport { isValidStreamMessage } from '@metamask/post-message-stream/dist/utils';\n\ntype WebViewExecutorStreamArgs = {\n name: string;\n target: string;\n targetWindow: Window['ReactNativeWebView'];\n};\n\nexport class WebViewExecutorStream extends BasePostMessageStream {\n readonly #name;\n\n readonly #target;\n\n readonly #targetWindow;\n\n /**\n * A special post-message-stream to be used by the WebView executor.\n *\n * This stream is different in a few ways:\n * - It expects data to be base64 encoded\n * - It stringifies the data it posts\n * - It does less validation of origins\n *\n * @param args - Options bag.\n * @param args.name - The name of the stream. Used to differentiate between\n * multiple streams sharing the same window object. child:WebView\n * @param args.target - The name of the stream to exchange messages with. parent:rnside\n * @param args.targetWindow - The window object of the target stream.\n */\n\n constructor({ name, target, targetWindow }: WebViewExecutorStreamArgs) {\n super();\n\n this.#name = name;\n this.#target = target;\n this.#targetWindow = targetWindow;\n\n this._onMessage = this._onMessage.bind(this);\n\n // This method is already bound.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n window.addEventListener('message', this._onMessage as any, false);\n\n this._handshake();\n }\n\n /**\n * Webview needs to receive strings only on postMessage. That's the main difference between this and the original window post message stream.\n * Reference: https://github.com/react-native-webview/react-native-webview/blob/master/docs/Guide.md?plain=1#L471\n */\n\n protected _postMessage(data: unknown): void {\n this.#targetWindow.postMessage(\n JSON.stringify({\n target: this.#target,\n data,\n }),\n );\n }\n\n // TODO: Either fix this lint violation or explain why it's necessary to\n // ignore.\n // eslint-disable-next-line no-restricted-syntax\n private _onMessage(event: PostMessageEvent): void {\n if (typeof event.data !== 'string') {\n return;\n }\n\n const message = JSON.parse(event.data);\n\n // Notice that we don't check targetWindow or targetOrigin here.\n // This doesn't seem possible to do in RN.\n if (!isValidStreamMessage(message) || message.target !== this.#name) {\n return;\n }\n\n this._onData(message.data);\n }\n\n _destroy() {\n // This method is already bound.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n window.removeEventListener('message', this._onMessage as any, false);\n }\n}\n"]}
1
+ {"version":3,"file":"WebViewExecutorStream.mjs","sourceRoot":"","sources":["../../src/webview/WebViewExecutorStream.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACrB,sCAAsC;AAQvC,MAAM,OAAO,qBAAsB,SAAQ,qBAAqB;IAO9D;;;;;;;;;;;;;OAaG;IAEH,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAA6B;QACnE,KAAK,EAAE,CAAC;QAtBD,8CAAM;QAEN,gDAAQ;QAER,sDAAc;QAoBrB,uBAAA,IAAI,+BAAS,IAAI,MAAA,CAAC;QAClB,uBAAA,IAAI,iCAAW,MAAM,MAAA,CAAC;QACtB,uBAAA,IAAI,uCAAiB,YAAY,MAAA,CAAC;QAElC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7C,gCAAgC;QAChC,6DAA6D;QAC7D,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,UAAiB,EAAE,KAAK,CAAC,CAAC;QAElE,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED;;;OAGG;IAEO,YAAY,CAAC,IAAa;QAClC,uBAAA,IAAI,2CAAc,CAAC,WAAW,CAC5B,IAAI,CAAC,SAAS,CAAC;YACb,MAAM,EAAE,uBAAA,IAAI,qCAAQ;YACpB,IAAI;SACL,CAAC,CACH,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,WAAW;IACX,gDAAgD;IACxC,UAAU,CAAC,KAAuB;QACxC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnC,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEvC,gEAAgE;QAChE,0CAA0C;QAC1C,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,uBAAA,IAAI,mCAAM,EAAE,CAAC;YACpE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,QAAQ;QACN,gCAAgC;QAChC,6DAA6D;QAC7D,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,UAAiB,EAAE,KAAK,CAAC,CAAC;IACvE,CAAC;CACF","sourcesContent":["import type { PostMessageEvent } from '@metamask/post-message-stream';\nimport {\n BasePostMessageStream,\n isValidStreamMessage,\n} from '@metamask/post-message-stream';\n\ntype WebViewExecutorStreamArgs = {\n name: string;\n target: string;\n targetWindow: Window['ReactNativeWebView'];\n};\n\nexport class WebViewExecutorStream extends BasePostMessageStream {\n readonly #name;\n\n readonly #target;\n\n readonly #targetWindow;\n\n /**\n * A special post-message-stream to be used by the WebView executor.\n *\n * This stream is different in a few ways:\n * - It expects data to be base64 encoded\n * - It stringifies the data it posts\n * - It does less validation of origins\n *\n * @param args - Options bag.\n * @param args.name - The name of the stream. Used to differentiate between\n * multiple streams sharing the same window object. child:WebView\n * @param args.target - The name of the stream to exchange messages with. parent:rnside\n * @param args.targetWindow - The window object of the target stream.\n */\n\n constructor({ name, target, targetWindow }: WebViewExecutorStreamArgs) {\n super();\n\n this.#name = name;\n this.#target = target;\n this.#targetWindow = targetWindow;\n\n this._onMessage = this._onMessage.bind(this);\n\n // This method is already bound.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n window.addEventListener('message', this._onMessage as any, false);\n\n this._handshake();\n }\n\n /**\n * Webview needs to receive strings only on postMessage. That's the main difference between this and the original window post message stream.\n * Reference: https://github.com/react-native-webview/react-native-webview/blob/master/docs/Guide.md?plain=1#L471\n */\n\n protected _postMessage(data: unknown): void {\n this.#targetWindow.postMessage(\n JSON.stringify({\n target: this.#target,\n data,\n }),\n );\n }\n\n // TODO: Either fix this lint violation or explain why it's necessary to\n // ignore.\n // eslint-disable-next-line no-restricted-syntax\n private _onMessage(event: PostMessageEvent): void {\n if (typeof event.data !== 'string') {\n return;\n }\n\n const message = JSON.parse(event.data);\n\n // Notice that we don't check targetWindow or targetOrigin here.\n // This doesn't seem possible to do in RN.\n if (!isValidStreamMessage(message) || message.target !== this.#name) {\n return;\n }\n\n this._onData(message.data);\n }\n\n _destroy() {\n // This method is already bound.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n window.removeEventListener('message', this._onMessage as any, false);\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamask/snaps-execution-environments",
3
- "version": "7.2.2",
3
+ "version": "8.0.1",
4
4
  "description": "Snap sandbox environments for executing SES javascript",
5
5
  "keywords": [
6
6
  "MetaMask",
@@ -28,8 +28,8 @@
28
28
  "default": "./dist/index.cjs"
29
29
  }
30
30
  },
31
- "./dist/browserify/node-process/bundle.js": "./dist/browserify/node-process/bundle.js",
32
- "./dist/browserify/node-thread/bundle.js": "./dist/browserify/node-thread/bundle.js",
31
+ "./node-process": "./dist/webpack/node-process/bundle.js",
32
+ "./node-thread": "./dist/webpack/node-thread/bundle.js",
33
33
  "./package.json": "./package.json"
34
34
  },
35
35
  "main": "./dist/index.cjs",
@@ -41,8 +41,9 @@
41
41
  "scripts": {
42
42
  "auto-changelog-init": "auto-changelog init",
43
43
  "build": "ts-bridge --project tsconfig.build.json --verbose --clean --no-references",
44
- "build:lavamoat": "lavamoat scripts/build.js --policy lavamoat/build-system/policy.json --policyOverride lavamoat/build-system/policy-override.json",
45
- "build:lavamoat:policy": "yarn build:lavamoat --writeAutoPolicy && node scripts/build.js --writeAutoPolicy",
44
+ "build:lavamoat": "lavamoat --policy lavamoat/build-system/policy.json --override lavamoat/build-system/policy-override.json ./scripts/build.js",
45
+ "build:lavamoat:policy": "yarn build:lavamoat --writeAutoPolicy && LAVAMOAT_GENERATE_POLICY=true node scripts/build.js",
46
+ "build:lavamoat:test": "NODE_ENV=test yarn build:lavamoat",
46
47
  "build:post": "yarn build:lavamoat",
47
48
  "changelog:update": "../../scripts/update-changelog.sh @metamask/snaps-execution-environments",
48
49
  "changelog:validate": "../../scripts/validate-changelog.sh @metamask/snaps-execution-environments",
@@ -67,40 +68,35 @@
67
68
  "dependencies": {
68
69
  "@metamask/json-rpc-engine": "^10.0.2",
69
70
  "@metamask/object-multiplex": "^2.1.0",
70
- "@metamask/post-message-stream": "^9.0.0",
71
- "@metamask/providers": "^22.0.1",
71
+ "@metamask/post-message-stream": "^10.0.0",
72
+ "@metamask/providers": "^22.1.0",
72
73
  "@metamask/rpc-errors": "^7.0.2",
73
- "@metamask/snaps-sdk": "^6.22.1",
74
- "@metamask/snaps-utils": "^9.2.1",
74
+ "@metamask/snaps-sdk": "^6.23.0",
75
+ "@metamask/snaps-utils": "^9.2.2",
75
76
  "@metamask/superstruct": "^3.2.1",
76
77
  "@metamask/utils": "^11.4.0",
77
- "nanoid": "^3.3.10",
78
78
  "readable-stream": "^3.6.2"
79
79
  },
80
80
  "devDependencies": {
81
- "@babel/core": "^7.23.2",
82
- "@babel/preset-env": "^7.23.2",
83
- "@babel/preset-typescript": "^7.23.2",
84
81
  "@esbuild-plugins/node-globals-polyfill": "^0.2.3",
85
82
  "@esbuild-plugins/node-modules-polyfill": "^0.2.2",
86
- "@lavamoat/allow-scripts": "^3.0.4",
87
- "@lavamoat/lavapack": "^6.1.1",
83
+ "@lavamoat/allow-scripts": "^3.3.3",
88
84
  "@lavamoat/lavatube": "^1.0.0",
89
- "@metamask/auto-changelog": "^5.0.1",
85
+ "@lavamoat/webpack": "^0.9.0-beta.0",
86
+ "@metamask/auto-changelog": "^5.0.2",
90
87
  "@swc/core": "1.3.78",
91
88
  "@swc/jest": "^0.2.26",
92
89
  "@testing-library/dom": "^10.4.0",
93
90
  "@ts-bridge/cli": "^0.6.1",
94
91
  "@types/jest": "^27.5.1",
95
92
  "@types/node": "18.14.2",
93
+ "@types/webpack-env": "^1.18.1",
96
94
  "@vitest/browser": "^3.1.1",
97
95
  "@vitest/coverage-v8": "^3.1.1",
98
- "babel-plugin-tsconfig-paths-module-resolver": "^1.0.4",
99
- "babelify": "^10.0.0",
100
- "browserify": "^17.0.0",
101
96
  "deepmerge": "^4.2.2",
102
97
  "depcheck": "^1.4.7",
103
98
  "eslint": "^9.11.0",
99
+ "html-webpack-plugin": "^5.5.0",
104
100
  "istanbul-lib-coverage": "^3.2.0",
105
101
  "istanbul-lib-report": "^3.0.0",
106
102
  "istanbul-reports": "^3.1.5",
@@ -108,19 +104,22 @@
108
104
  "jest-environment-node": "^29.5.0",
109
105
  "jest-fetch-mock": "^3.0.3",
110
106
  "jest-silent-reporter": "^0.6.0",
111
- "lavamoat": "^8.0.4",
112
- "lavamoat-browserify": "^17.0.5",
107
+ "lavamoat": "^9.0.8",
113
108
  "prettier": "^3.3.3",
114
109
  "rimraf": "^4.1.2",
115
110
  "serve-handler": "^6.1.5",
116
111
  "ses": "^1.12.0",
112
+ "stream-browserify": "^3.0.0",
117
113
  "terser": "^5.17.7",
114
+ "ts-loader": "^9.5.2",
118
115
  "ts-node": "^10.9.1",
116
+ "tsconfig-paths-webpack-plugin": "^4.0.1",
119
117
  "typescript": "~5.3.3",
120
- "vite": "^6.2.6",
118
+ "vite": "^6.2.7",
121
119
  "vite-tsconfig-paths": "^4.0.5",
122
120
  "vitest": "^3.1.1",
123
- "yargs": "^17.7.1"
121
+ "webpack": "^5.97.1",
122
+ "webpack-merge": "^5.9.0"
124
123
  },
125
124
  "engines": {
126
125
  "node": "^18.16 || >=20"