@metamask/snaps-execution-environments 7.2.1 → 8.0.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 (99) hide show
  1. package/CHANGELOG.md +29 -1
  2. package/dist/common/BaseSnapExecutor.cjs +15 -13
  3. package/dist/common/BaseSnapExecutor.cjs.map +1 -1
  4. package/dist/common/BaseSnapExecutor.d.cts +0 -1
  5. package/dist/common/BaseSnapExecutor.d.cts.map +1 -1
  6. package/dist/common/BaseSnapExecutor.d.mts +0 -1
  7. package/dist/common/BaseSnapExecutor.d.mts.map +1 -1
  8. package/dist/common/BaseSnapExecutor.mjs +15 -13
  9. package/dist/common/BaseSnapExecutor.mjs.map +1 -1
  10. package/dist/common/endowments/network.cjs +4 -4
  11. package/dist/common/endowments/network.cjs.map +1 -1
  12. package/dist/common/endowments/network.d.cts.map +1 -1
  13. package/dist/common/endowments/network.d.mts.map +1 -1
  14. package/dist/common/endowments/network.mjs +4 -4
  15. package/dist/common/endowments/network.mjs.map +1 -1
  16. package/dist/common/lockdown/lockdown-more.d.cts +0 -1
  17. package/dist/common/lockdown/lockdown-more.d.cts.map +1 -1
  18. package/dist/common/lockdown/lockdown-more.d.mts +0 -1
  19. package/dist/common/lockdown/lockdown-more.d.mts.map +1 -1
  20. package/dist/common/lockdown/lockdown.d.cts +0 -1
  21. package/dist/common/lockdown/lockdown.d.cts.map +1 -1
  22. package/dist/common/lockdown/lockdown.d.mts +0 -1
  23. package/dist/common/lockdown/lockdown.d.mts.map +1 -1
  24. package/dist/common/utils.cjs +5 -8
  25. package/dist/common/utils.cjs.map +1 -1
  26. package/dist/common/utils.d.cts +2 -1
  27. package/dist/common/utils.d.cts.map +1 -1
  28. package/dist/common/utils.d.mts +2 -1
  29. package/dist/common/utils.d.mts.map +1 -1
  30. package/dist/common/utils.mjs +6 -9
  31. package/dist/common/utils.mjs.map +1 -1
  32. package/dist/common/validation.cjs.map +1 -1
  33. package/dist/common/validation.d.cts +11 -11
  34. package/dist/common/validation.d.cts.map +1 -1
  35. package/dist/common/validation.d.mts +11 -11
  36. package/dist/common/validation.d.mts.map +1 -1
  37. package/dist/common/validation.mjs.map +1 -1
  38. package/dist/node-process/ChildProcessSnapExecutor.cjs +2 -2
  39. package/dist/node-process/ChildProcessSnapExecutor.cjs.map +1 -1
  40. package/dist/node-process/ChildProcessSnapExecutor.mjs +1 -1
  41. package/dist/node-process/ChildProcessSnapExecutor.mjs.map +1 -1
  42. package/dist/node-thread/ThreadSnapExecutor.cjs +2 -2
  43. package/dist/node-thread/ThreadSnapExecutor.cjs.map +1 -1
  44. package/dist/node-thread/ThreadSnapExecutor.mjs +1 -1
  45. package/dist/node-thread/ThreadSnapExecutor.mjs.map +1 -1
  46. package/dist/webpack/iframe/bundle.js +2 -0
  47. package/dist/webpack/iframe/bundle.js.LICENSE.txt +10 -0
  48. package/dist/webpack/iframe/index.html +13146 -0
  49. package/dist/webpack/node-process/bundle.js +12834 -0
  50. package/dist/{browserify/worker-pool/index.html → webpack/node-process/bundle.js.LICENSE.txt} +11668 -12229
  51. package/dist/webpack/node-thread/bundle.js +12834 -0
  52. package/dist/{browserify/iframe/index.html → webpack/node-thread/bundle.js.LICENSE.txt} +11668 -12229
  53. package/dist/webpack/webview/bundle.js.LICENSE.txt +10 -0
  54. package/dist/webpack/webview/index.html +13147 -0
  55. package/dist/webview/WebViewExecutorStream.cjs +3 -6
  56. package/dist/webview/WebViewExecutorStream.cjs.map +1 -1
  57. package/dist/webview/WebViewExecutorStream.d.cts.map +1 -1
  58. package/dist/webview/WebViewExecutorStream.d.mts.map +1 -1
  59. package/dist/webview/WebViewExecutorStream.mjs +3 -6
  60. package/dist/webview/WebViewExecutorStream.mjs.map +1 -1
  61. package/package.json +27 -29
  62. package/dist/browserify/iframe/bundle.js +0 -9
  63. package/dist/browserify/node-process/bundle.js +0 -13390
  64. package/dist/browserify/node-thread/bundle.js +0 -13390
  65. package/dist/browserify/webview/index.html +0 -13402
  66. package/dist/browserify/worker-executor/bundle.js +0 -13392
  67. package/dist/browserify/worker-pool/bundle.js +0 -9
  68. package/dist/webworker/executor/WebWorkerSnapExecutor.cjs +0 -37
  69. package/dist/webworker/executor/WebWorkerSnapExecutor.cjs.map +0 -1
  70. package/dist/webworker/executor/WebWorkerSnapExecutor.d.cts +0 -14
  71. package/dist/webworker/executor/WebWorkerSnapExecutor.d.cts.map +0 -1
  72. package/dist/webworker/executor/WebWorkerSnapExecutor.d.mts +0 -14
  73. package/dist/webworker/executor/WebWorkerSnapExecutor.d.mts.map +0 -1
  74. package/dist/webworker/executor/WebWorkerSnapExecutor.mjs +0 -37
  75. package/dist/webworker/executor/WebWorkerSnapExecutor.mjs.map +0 -1
  76. package/dist/webworker/executor/index.cjs +0 -10
  77. package/dist/webworker/executor/index.cjs.map +0 -1
  78. package/dist/webworker/executor/index.d.cts +0 -2
  79. package/dist/webworker/executor/index.d.cts.map +0 -1
  80. package/dist/webworker/executor/index.d.mts +0 -2
  81. package/dist/webworker/executor/index.d.mts.map +0 -1
  82. package/dist/webworker/executor/index.mjs +0 -8
  83. package/dist/webworker/executor/index.mjs.map +0 -1
  84. package/dist/webworker/pool/WebWorkerPool.cjs +0 -168
  85. package/dist/webworker/pool/WebWorkerPool.cjs.map +0 -1
  86. package/dist/webworker/pool/WebWorkerPool.d.cts +0 -24
  87. package/dist/webworker/pool/WebWorkerPool.d.cts.map +0 -1
  88. package/dist/webworker/pool/WebWorkerPool.d.mts +0 -24
  89. package/dist/webworker/pool/WebWorkerPool.d.mts.map +0 -1
  90. package/dist/webworker/pool/WebWorkerPool.mjs +0 -164
  91. package/dist/webworker/pool/WebWorkerPool.mjs.map +0 -1
  92. package/dist/webworker/pool/index.cjs +0 -10
  93. package/dist/webworker/pool/index.cjs.map +0 -1
  94. package/dist/webworker/pool/index.d.cts +0 -2
  95. package/dist/webworker/pool/index.d.cts.map +0 -1
  96. package/dist/webworker/pool/index.d.mts +0 -2
  97. package/dist/webworker/pool/index.d.mts.map +0 -1
  98. package/dist/webworker/pool/index.mjs +0 -8
  99. package/dist/webworker/pool/index.mjs.map +0 -1
@@ -14,8 +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
- const utils_2 = require("@metamask/utils");
19
17
  class WebViewExecutorStream extends post_message_stream_1.BasePostMessageStream {
20
18
  /**
21
19
  * A special post-message-stream to be used by the WebView executor.
@@ -59,14 +57,13 @@ class WebViewExecutorStream extends post_message_stream_1.BasePostMessageStream
59
57
  // ignore.
60
58
  // eslint-disable-next-line no-restricted-syntax
61
59
  _onMessage(event) {
62
- if (!Array.isArray(event.data)) {
60
+ if (typeof event.data !== 'string') {
63
61
  return;
64
62
  }
65
- const json = (0, utils_2.bytesToString)(new Uint8Array(event.data));
66
- const message = JSON.parse(json);
63
+ const message = JSON.parse(event.data);
67
64
  // Notice that we don't check targetWindow or targetOrigin here.
68
65
  // This doesn't seem possible to do in RN.
69
- 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")) {
70
67
  return;
71
68
  }
72
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;AAChF,2CAAgD;AAQhD,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,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,IAAA,qBAAa,EAAC,IAAI,UAAU,CAAC,KAAK,CAAC,IAAgB,CAAC,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEjC,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;AA7ED,sDA6EC","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';\nimport { bytesToString } from '@metamask/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 (!Array.isArray(event.data)) {\n return;\n }\n\n const json = bytesToString(new Uint8Array(event.data as number[]));\n const message = JSON.parse(json);\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;AAItE,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;IAiBlB,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;AAItE,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;IAiBlB,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,9 +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";
15
- import { bytesToString } from "@metamask/utils";
13
+ import { BasePostMessageStream, isValidStreamMessage } from "@metamask/post-message-stream";
16
14
  export class WebViewExecutorStream extends BasePostMessageStream {
17
15
  /**
18
16
  * A special post-message-stream to be used by the WebView executor.
@@ -56,11 +54,10 @@ export class WebViewExecutorStream extends BasePostMessageStream {
56
54
  // ignore.
57
55
  // eslint-disable-next-line no-restricted-syntax
58
56
  _onMessage(event) {
59
- if (!Array.isArray(event.data)) {
57
+ if (typeof event.data !== 'string') {
60
58
  return;
61
59
  }
62
- const json = bytesToString(new Uint8Array(event.data));
63
- const message = JSON.parse(json);
60
+ const message = JSON.parse(event.data);
64
61
  // Notice that we don't check targetWindow or targetOrigin here.
65
62
  // This doesn't seem possible to do in RN.
66
63
  if (!isValidStreamMessage(message) || message.target !== __classPrivateFieldGet(this, _WebViewExecutorStream_name, "f")) {
@@ -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;AAChF,OAAO,EAAE,aAAa,EAAE,wBAAwB;AAQhD,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,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,IAAgB,CAAC,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEjC,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';\nimport { bytesToString } from '@metamask/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 (!Array.isArray(event.data)) {\n return;\n }\n\n const json = bytesToString(new Uint8Array(event.data as number[]));\n const message = JSON.parse(json);\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.1",
3
+ "version": "8.0.0",
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,41 +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": "^21.0.0",
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.0",
74
- "@metamask/snaps-utils": "^9.2.0",
74
+ "@metamask/snaps-sdk": "^6.23.0",
75
+ "@metamask/snaps-utils": "^9.2.2",
75
76
  "@metamask/superstruct": "^3.2.1",
76
- "@metamask/utils": "^11.2.0",
77
- "nanoid": "^3.3.10",
77
+ "@metamask/utils": "^11.4.0",
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
- "@types/express": "^4.17.17",
95
91
  "@types/jest": "^27.5.1",
96
92
  "@types/node": "18.14.2",
97
- "@vitest/browser": "^3.0.8",
98
- "@vitest/coverage-v8": "^3.0.8",
99
- "babel-plugin-tsconfig-paths-module-resolver": "^1.0.4",
100
- "babelify": "^10.0.0",
101
- "browserify": "^17.0.0",
93
+ "@types/webpack-env": "^1.18.1",
94
+ "@vitest/browser": "^3.1.1",
95
+ "@vitest/coverage-v8": "^3.1.1",
102
96
  "deepmerge": "^4.2.2",
103
97
  "depcheck": "^1.4.7",
104
98
  "eslint": "^9.11.0",
99
+ "html-webpack-plugin": "^5.5.0",
105
100
  "istanbul-lib-coverage": "^3.2.0",
106
101
  "istanbul-lib-report": "^3.0.0",
107
102
  "istanbul-reports": "^3.1.5",
@@ -109,19 +104,22 @@
109
104
  "jest-environment-node": "^29.5.0",
110
105
  "jest-fetch-mock": "^3.0.3",
111
106
  "jest-silent-reporter": "^0.6.0",
112
- "lavamoat": "^8.0.4",
113
- "lavamoat-browserify": "^17.0.5",
107
+ "lavamoat": "^9.0.8",
114
108
  "prettier": "^3.3.3",
115
109
  "rimraf": "^4.1.2",
116
110
  "serve-handler": "^6.1.5",
117
- "ses": "^1.1.0",
111
+ "ses": "^1.12.0",
112
+ "stream-browserify": "^3.0.0",
118
113
  "terser": "^5.17.7",
114
+ "ts-loader": "^9.5.2",
119
115
  "ts-node": "^10.9.1",
116
+ "tsconfig-paths-webpack-plugin": "^4.0.1",
120
117
  "typescript": "~5.3.3",
121
- "vite": "^6.2.6",
118
+ "vite": "^6.2.7",
122
119
  "vite-tsconfig-paths": "^4.0.5",
123
- "vitest": "^3.0.8",
124
- "yargs": "^17.7.1"
120
+ "vitest": "^3.1.1",
121
+ "webpack": "^5.97.1",
122
+ "webpack-merge": "^5.9.0"
125
123
  },
126
124
  "engines": {
127
125
  "node": "^18.16 || >=20"