@metamask/snaps-execution-environments 1.0.2 → 2.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 (233) hide show
  1. package/CHANGELOG.md +37 -278
  2. package/dist/browserify/iframe/bundle.js +6 -4
  3. package/dist/browserify/iframe/index.html +2 -0
  4. package/dist/browserify/node-process/bundle.js +8 -2
  5. package/dist/browserify/node-thread/bundle.js +8 -2
  6. package/dist/browserify/offscreen/bundle.js +6 -9
  7. package/dist/browserify/offscreen/index.html +2 -0
  8. package/dist/browserify/worker-executor/bundle.js +12157 -0
  9. package/dist/browserify/worker-pool/bundle.js +7 -0
  10. package/dist/browserify/worker-pool/index.html +12152 -0
  11. package/dist/cjs/common/BaseSnapExecutor.js +423 -0
  12. package/dist/cjs/common/BaseSnapExecutor.js.map +1 -0
  13. package/dist/cjs/common/commands.js +81 -0
  14. package/dist/cjs/common/commands.js.map +1 -0
  15. package/dist/cjs/common/endowments/commonEndowmentFactory.js +147 -0
  16. package/dist/cjs/common/endowments/commonEndowmentFactory.js.map +1 -0
  17. package/dist/cjs/common/endowments/console.js +134 -0
  18. package/dist/cjs/common/endowments/console.js.map +1 -0
  19. package/dist/cjs/common/endowments/crypto.js +44 -0
  20. package/dist/cjs/common/endowments/crypto.js.map +1 -0
  21. package/dist/cjs/common/endowments/date.js +53 -0
  22. package/dist/cjs/common/endowments/date.js.map +1 -0
  23. package/dist/cjs/common/endowments/index.js +91 -0
  24. package/dist/cjs/common/endowments/index.js.map +1 -0
  25. package/dist/cjs/common/endowments/interval.js +61 -0
  26. package/dist/cjs/common/endowments/interval.js.map +1 -0
  27. package/dist/cjs/common/endowments/math.js +67 -0
  28. package/dist/cjs/common/endowments/math.js.map +1 -0
  29. package/dist/cjs/common/endowments/network.js +216 -0
  30. package/dist/cjs/common/endowments/network.js.map +1 -0
  31. package/dist/cjs/common/endowments/textDecoder.js +28 -0
  32. package/dist/cjs/common/endowments/textDecoder.js.map +1 -0
  33. package/dist/cjs/common/endowments/textEncoder.js +28 -0
  34. package/dist/cjs/common/endowments/textEncoder.js.map +1 -0
  35. package/dist/cjs/common/endowments/timeout.js +63 -0
  36. package/dist/cjs/common/endowments/timeout.js.map +1 -0
  37. package/dist/cjs/common/globalEvents.js +39 -0
  38. package/dist/cjs/common/globalEvents.js.map +1 -0
  39. package/dist/cjs/common/globalObject.js +53 -0
  40. package/dist/{common → cjs/common}/globalObject.js.map +1 -1
  41. package/dist/cjs/common/lockdown/lockdown-events.js +74 -0
  42. package/dist/cjs/common/lockdown/lockdown-events.js.map +1 -0
  43. package/dist/cjs/common/lockdown/lockdown-more.js +73 -0
  44. package/dist/cjs/common/lockdown/lockdown-more.js.map +1 -0
  45. package/dist/cjs/common/lockdown/lockdown.js +30 -0
  46. package/dist/cjs/common/lockdown/lockdown.js.map +1 -0
  47. package/dist/cjs/common/sortParams.js +26 -0
  48. package/dist/cjs/common/sortParams.js.map +1 -0
  49. package/dist/cjs/common/utils.js +132 -0
  50. package/dist/cjs/common/utils.js.map +1 -0
  51. package/dist/cjs/common/validation.js +118 -0
  52. package/dist/cjs/common/validation.js.map +1 -0
  53. package/dist/cjs/iframe/IFrameSnapExecutor.js +50 -0
  54. package/dist/cjs/iframe/IFrameSnapExecutor.js.map +1 -0
  55. package/dist/cjs/iframe/index.js +13 -0
  56. package/dist/cjs/iframe/index.js.map +1 -0
  57. package/dist/cjs/logging.js +15 -0
  58. package/dist/cjs/logging.js.map +1 -0
  59. package/dist/cjs/node-process/ChildProcessSnapExecutor.js +39 -0
  60. package/dist/cjs/node-process/ChildProcessSnapExecutor.js.map +1 -0
  61. package/dist/cjs/node-process/index.js +11 -0
  62. package/dist/cjs/node-process/index.js.map +1 -0
  63. package/dist/cjs/node-thread/ThreadSnapExecutor.js +39 -0
  64. package/dist/cjs/node-thread/ThreadSnapExecutor.js.map +1 -0
  65. package/dist/cjs/node-thread/index.js +11 -0
  66. package/dist/cjs/node-thread/index.js.map +1 -0
  67. package/dist/cjs/offscreen/OffscreenSnapExecutor.js +173 -0
  68. package/dist/cjs/offscreen/OffscreenSnapExecutor.js.map +1 -0
  69. package/dist/cjs/offscreen/index.js +19 -0
  70. package/dist/cjs/offscreen/index.js.map +1 -0
  71. package/dist/cjs/webworker/executor/WebWorkerSnapExecutor.js +45 -0
  72. package/dist/cjs/webworker/executor/WebWorkerSnapExecutor.js.map +1 -0
  73. package/dist/cjs/webworker/executor/index.js +13 -0
  74. package/dist/cjs/webworker/executor/index.js.map +1 -0
  75. package/dist/cjs/webworker/pool/WebWorkerPool.js +248 -0
  76. package/dist/cjs/webworker/pool/WebWorkerPool.js.map +1 -0
  77. package/dist/cjs/webworker/pool/index.js +13 -0
  78. package/dist/cjs/webworker/pool/index.js.map +1 -0
  79. package/dist/esm/common/BaseSnapExecutor.js +408 -0
  80. package/dist/esm/common/BaseSnapExecutor.js.map +1 -0
  81. package/dist/esm/common/commands.js +80 -0
  82. package/dist/esm/common/commands.js.map +1 -0
  83. package/dist/esm/common/endowments/commonEndowmentFactory.js +132 -0
  84. package/dist/esm/common/endowments/commonEndowmentFactory.js.map +1 -0
  85. package/dist/esm/common/endowments/console.js +116 -0
  86. package/dist/esm/common/endowments/console.js.map +1 -0
  87. package/dist/esm/common/endowments/crypto.js +26 -0
  88. package/dist/esm/common/endowments/crypto.js.map +1 -0
  89. package/dist/{common → esm/common}/endowments/date.js +20 -16
  90. package/dist/esm/common/endowments/date.js.map +1 -0
  91. package/dist/{common → esm/common}/endowments/index.js +34 -36
  92. package/dist/esm/common/endowments/index.js.map +1 -0
  93. package/dist/{common → esm/common}/endowments/interval.js +13 -12
  94. package/dist/esm/common/endowments/interval.js.map +1 -0
  95. package/dist/{common → esm/common}/endowments/math.js +21 -15
  96. package/dist/esm/common/endowments/math.js.map +1 -0
  97. package/dist/esm/common/endowments/network.js +206 -0
  98. package/dist/esm/common/endowments/network.js.map +1 -0
  99. package/dist/esm/common/endowments/textDecoder.js +18 -0
  100. package/dist/esm/common/endowments/textDecoder.js.map +1 -0
  101. package/dist/esm/common/endowments/textEncoder.js +18 -0
  102. package/dist/esm/common/endowments/textEncoder.js.map +1 -0
  103. package/dist/{common → esm/common}/endowments/timeout.js +14 -13
  104. package/dist/esm/common/endowments/timeout.js.map +1 -0
  105. package/dist/esm/common/globalEvents.js +35 -0
  106. package/dist/esm/common/globalEvents.js.map +1 -0
  107. package/dist/esm/common/globalObject.js +36 -0
  108. package/dist/esm/common/globalObject.js.map +1 -0
  109. package/dist/esm/common/lockdown/lockdown-events.js +66 -0
  110. package/dist/esm/common/lockdown/lockdown-events.js.map +1 -0
  111. package/dist/{common → esm/common}/lockdown/lockdown-more.js +15 -22
  112. package/dist/esm/common/lockdown/lockdown-more.js.map +1 -0
  113. package/dist/{common → esm/common}/lockdown/lockdown.js +6 -11
  114. package/dist/esm/common/lockdown/lockdown.js.map +1 -0
  115. package/dist/{common → esm/common}/sortParams.js +7 -13
  116. package/dist/esm/common/sortParams.js.map +1 -0
  117. package/dist/{common → esm/common}/utils.js +43 -56
  118. package/dist/esm/common/utils.js.map +1 -0
  119. package/dist/esm/common/validation.js +94 -0
  120. package/dist/esm/common/validation.js.map +1 -0
  121. package/dist/esm/iframe/IFrameSnapExecutor.js +35 -0
  122. package/dist/esm/iframe/IFrameSnapExecutor.js.map +1 -0
  123. package/dist/esm/iframe/index.js +9 -0
  124. package/dist/esm/iframe/index.js.map +1 -0
  125. package/dist/esm/logging.js +10 -0
  126. package/dist/esm/logging.js.map +1 -0
  127. package/dist/esm/node-process/ChildProcessSnapExecutor.js +24 -0
  128. package/dist/esm/node-process/ChildProcessSnapExecutor.js.map +1 -0
  129. package/dist/esm/node-process/index.js +7 -0
  130. package/dist/esm/node-process/index.js.map +1 -0
  131. package/dist/esm/node-thread/ThreadSnapExecutor.js +24 -0
  132. package/dist/esm/node-thread/ThreadSnapExecutor.js.map +1 -0
  133. package/dist/esm/node-thread/index.js +7 -0
  134. package/dist/esm/node-thread/index.js.map +1 -0
  135. package/dist/esm/offscreen/OffscreenSnapExecutor.js +176 -0
  136. package/dist/esm/offscreen/OffscreenSnapExecutor.js.map +1 -0
  137. package/dist/esm/offscreen/index.js +15 -0
  138. package/dist/esm/offscreen/index.js.map +1 -0
  139. package/dist/esm/webworker/executor/WebWorkerSnapExecutor.js +30 -0
  140. package/dist/esm/webworker/executor/WebWorkerSnapExecutor.js.map +1 -0
  141. package/dist/esm/webworker/executor/index.js +9 -0
  142. package/dist/esm/webworker/executor/index.js.map +1 -0
  143. package/dist/esm/webworker/pool/WebWorkerPool.js +245 -0
  144. package/dist/esm/webworker/pool/WebWorkerPool.js.map +1 -0
  145. package/dist/esm/webworker/pool/index.js +9 -0
  146. package/dist/esm/webworker/pool/index.js.map +1 -0
  147. package/dist/{common → types/common}/BaseSnapExecutor.d.ts +7 -7
  148. package/dist/{common → types/common}/commands.d.ts +2 -2
  149. package/dist/{common → types/common}/endowments/commonEndowmentFactory.d.ts +5 -1
  150. package/dist/types/common/endowments/console.d.ts +45 -0
  151. package/dist/{common → types/common}/endowments/crypto.d.ts +4 -0
  152. package/dist/{common → types/common}/endowments/index.d.ts +5 -3
  153. package/dist/{common → types/common}/globalEvents.d.ts +1 -0
  154. package/dist/{common → types/common}/sortParams.d.ts +1 -1
  155. package/dist/{common → types/common}/utils.d.ts +5 -4
  156. package/dist/{common → types/common}/validation.d.ts +26 -10
  157. package/dist/{iframe → types/iframe}/IFrameSnapExecutor.d.ts +1 -1
  158. package/dist/{offscreen → types/offscreen}/OffscreenSnapExecutor.d.ts +2 -1
  159. package/dist/types/webworker/executor/WebWorkerSnapExecutor.d.ts +13 -0
  160. package/dist/types/webworker/executor/index.d.ts +1 -0
  161. package/dist/types/webworker/pool/WebWorkerPool.d.ts +23 -0
  162. package/dist/types/webworker/pool/index.d.ts +1 -0
  163. package/package.json +52 -41
  164. package/dist/common/BaseSnapExecutor.js +0 -370
  165. package/dist/common/BaseSnapExecutor.js.map +0 -1
  166. package/dist/common/commands.js +0 -65
  167. package/dist/common/commands.js.map +0 -1
  168. package/dist/common/endowments/commonEndowmentFactory.js +0 -75
  169. package/dist/common/endowments/commonEndowmentFactory.js.map +0 -1
  170. package/dist/common/endowments/crypto.js +0 -28
  171. package/dist/common/endowments/crypto.js.map +0 -1
  172. package/dist/common/endowments/date.js.map +0 -1
  173. package/dist/common/endowments/index.js.map +0 -1
  174. package/dist/common/endowments/interval.js.map +0 -1
  175. package/dist/common/endowments/math.js.map +0 -1
  176. package/dist/common/endowments/network.js +0 -177
  177. package/dist/common/endowments/network.js.map +0 -1
  178. package/dist/common/endowments/textDecoder.js +0 -18
  179. package/dist/common/endowments/textDecoder.js.map +0 -1
  180. package/dist/common/endowments/textEncoder.js +0 -18
  181. package/dist/common/endowments/textEncoder.js.map +0 -1
  182. package/dist/common/endowments/timeout.js.map +0 -1
  183. package/dist/common/globalEvents.js +0 -47
  184. package/dist/common/globalEvents.js.map +0 -1
  185. package/dist/common/globalObject.js +0 -50
  186. package/dist/common/keyring.d.ts +0 -12
  187. package/dist/common/keyring.js +0 -42
  188. package/dist/common/keyring.js.map +0 -1
  189. package/dist/common/lockdown/lockdown-events.js +0 -60
  190. package/dist/common/lockdown/lockdown-events.js.map +0 -1
  191. package/dist/common/lockdown/lockdown-more.js.map +0 -1
  192. package/dist/common/lockdown/lockdown.js.map +0 -1
  193. package/dist/common/sortParams.js.map +0 -1
  194. package/dist/common/utils.js.map +0 -1
  195. package/dist/common/validation.js +0 -109
  196. package/dist/common/validation.js.map +0 -1
  197. package/dist/iframe/IFrameSnapExecutor.js +0 -42
  198. package/dist/iframe/IFrameSnapExecutor.js.map +0 -1
  199. package/dist/iframe/index.js +0 -10
  200. package/dist/iframe/index.js.map +0 -1
  201. package/dist/logging.js +0 -13
  202. package/dist/logging.js.map +0 -1
  203. package/dist/node-process/ChildProcessSnapExecutor.js +0 -30
  204. package/dist/node-process/ChildProcessSnapExecutor.js.map +0 -1
  205. package/dist/node-process/index.js +0 -8
  206. package/dist/node-process/index.js.map +0 -1
  207. package/dist/node-thread/ThreadSnapExecutor.js +0 -30
  208. package/dist/node-thread/ThreadSnapExecutor.js.map +0 -1
  209. package/dist/node-thread/index.js +0 -8
  210. package/dist/node-thread/index.js.map +0 -1
  211. package/dist/offscreen/OffscreenSnapExecutor.js +0 -104
  212. package/dist/offscreen/OffscreenSnapExecutor.js.map +0 -1
  213. package/dist/offscreen/index.js +0 -16
  214. package/dist/offscreen/index.js.map +0 -1
  215. package/dist/openrpc.json +0 -210
  216. /package/dist/{common → types/common}/endowments/date.d.ts +0 -0
  217. /package/dist/{common → types/common}/endowments/interval.d.ts +0 -0
  218. /package/dist/{common → types/common}/endowments/math.d.ts +0 -0
  219. /package/dist/{common → types/common}/endowments/network.d.ts +0 -0
  220. /package/dist/{common → types/common}/endowments/textDecoder.d.ts +0 -0
  221. /package/dist/{common → types/common}/endowments/textEncoder.d.ts +0 -0
  222. /package/dist/{common → types/common}/endowments/timeout.d.ts +0 -0
  223. /package/dist/{common → types/common}/globalObject.d.ts +0 -0
  224. /package/dist/{common → types/common}/lockdown/lockdown-events.d.ts +0 -0
  225. /package/dist/{common → types/common}/lockdown/lockdown-more.d.ts +0 -0
  226. /package/dist/{common → types/common}/lockdown/lockdown.d.ts +0 -0
  227. /package/dist/{iframe → types/iframe}/index.d.ts +0 -0
  228. /package/dist/{logging.d.ts → types/logging.d.ts} +0 -0
  229. /package/dist/{node-process → types/node-process}/ChildProcessSnapExecutor.d.ts +0 -0
  230. /package/dist/{node-process → types/node-process}/index.d.ts +0 -0
  231. /package/dist/{node-thread → types/node-thread}/ThreadSnapExecutor.d.ts +0 -0
  232. /package/dist/{node-thread → types/node-thread}/index.d.ts +0 -0
  233. /package/dist/{offscreen → types/offscreen}/index.d.ts +0 -0
@@ -0,0 +1,45 @@
1
+ import type { EndowmentFactoryOptions } from './commonEndowmentFactory';
2
+ export declare const consoleAttenuatedMethods: Set<string>;
3
+ /**
4
+ * A set of all the `console` values that will be passed to the snap. This has
5
+ * all the values that are available in both the browser and Node.js.
6
+ */
7
+ export declare const consoleMethods: Set<string>;
8
+ /**
9
+ * Create a a {@link console} object, with the same properties as the global
10
+ * {@link console} object, but with some methods replaced.
11
+ *
12
+ * @param options - Factory options used in construction of the endowment.
13
+ * @param options.snapId - The id of the snap that will interact with the endowment.
14
+ * @returns The {@link console} object with the replaced methods.
15
+ */
16
+ declare function createConsole({ snapId }?: EndowmentFactoryOptions): {
17
+ console: {
18
+ error: {
19
+ (...data: any[]): void;
20
+ (message?: any, ...optionalParams: any[]): void;
21
+ };
22
+ log: {
23
+ (...data: any[]): void;
24
+ (message?: any, ...optionalParams: any[]): void;
25
+ };
26
+ warn: {
27
+ (...data: any[]): void;
28
+ (message?: any, ...optionalParams: any[]): void;
29
+ };
30
+ debug: {
31
+ (...data: any[]): void;
32
+ (message?: any, ...optionalParams: any[]): void;
33
+ };
34
+ info: {
35
+ (...data: any[]): void;
36
+ (message?: any, ...optionalParams: any[]): void;
37
+ };
38
+ assert: (value: any, message?: string | undefined, ...optionalParams: any[]) => void;
39
+ };
40
+ };
41
+ declare const endowmentModule: {
42
+ names: readonly ["console"];
43
+ factory: typeof createConsole;
44
+ };
45
+ export default endowmentModule;
@@ -1,3 +1,7 @@
1
+ export declare const createCrypto: () => {
2
+ readonly crypto: any;
3
+ readonly SubtleCrypto: any;
4
+ };
1
5
  declare const endowmentModule: {
2
6
  names: readonly ["crypto", "SubtleCrypto"];
3
7
  factory: () => {
@@ -1,5 +1,6 @@
1
- import { StreamProvider } from '@metamask/providers';
2
- import { SnapsGlobalObject } from '@metamask/rpc-methods';
1
+ import type { StreamProvider } from '@metamask/providers';
2
+ import type { SnapsGlobalObject } from '@metamask/rpc-methods';
3
+ import type { SnapId } from '@metamask/snaps-utils';
3
4
  /**
4
5
  * Gets the endowments for a particular Snap. Some endowments, like `setTimeout`
5
6
  * and `clearTimeout`, must be attenuated so that they can only affect behavior
@@ -9,10 +10,11 @@ import { SnapsGlobalObject } from '@metamask/rpc-methods';
9
10
  *
10
11
  * @param snap - The Snaps global API object.
11
12
  * @param ethereum - The Snap's EIP-1193 provider object.
13
+ * @param snapId - The id of the snap that will use the created endowments.
12
14
  * @param endowments - The list of endowments to provide to the snap.
13
15
  * @returns An object containing the Snap's endowments.
14
16
  */
15
- export declare function createEndowments(snap: SnapsGlobalObject, ethereum: StreamProvider, endowments?: string[]): {
17
+ export declare function createEndowments(snap: SnapsGlobalObject, ethereum: StreamProvider, snapId: SnapId, endowments?: string[]): {
16
18
  endowments: Record<string, unknown>;
17
19
  teardown: () => Promise<void>;
18
20
  };
@@ -1,3 +1,4 @@
1
+ /// <reference types="webpack-env" />
1
2
  /// <reference types="node" />
2
3
  /**
3
4
  * Adds an event listener platform agnostically, trying both `globalThis.addEventListener` and `globalThis.process.on`
@@ -1,4 +1,4 @@
1
- import { JsonRpcParams } from '@metamask/utils';
1
+ import type { JsonRpcParams } from '@metamask/utils';
2
2
  /**
3
3
  * Deterministically sort JSON-RPC parameter keys. This makes it possible to
4
4
  * support both arrays and objects as parameters. Objects are sorted and turned
@@ -1,5 +1,5 @@
1
- import { StreamProvider } from '@metamask/providers';
2
- import { RequestArguments } from '@metamask/providers/dist/BaseProvider';
1
+ import type { StreamProvider } from '@metamask/providers';
2
+ import type { RequestArguments } from '@metamask/providers/dist/BaseProvider';
3
3
  /**
4
4
  * Takes an error that was thrown, determines if it is
5
5
  * an error object. If it is then it will return that. Otherwise,
@@ -19,9 +19,9 @@ export declare function constructError(originalError: unknown): Error | undefine
19
19
  * @param teardownRef.lastTeardown - Number of the last teardown.
20
20
  * @returns New proxy promise.
21
21
  */
22
- export declare function withTeardown<T>(originalPromise: Promise<T>, teardownRef: {
22
+ export declare function withTeardown<Type>(originalPromise: Promise<Type>, teardownRef: {
23
23
  lastTeardown: number;
24
- }): Promise<T>;
24
+ }): Promise<Type>;
25
25
  /**
26
26
  * Returns a Proxy that narrows down (attenuates) the fields available on
27
27
  * the StreamProvider and replaces the request implementation.
@@ -31,6 +31,7 @@ export declare function withTeardown<T>(originalPromise: Promise<T>, teardownRef
31
31
  * @returns Proxy to the StreamProvider instance.
32
32
  */
33
33
  export declare function proxyStreamProvider(provider: StreamProvider, request: unknown): StreamProvider;
34
+ export declare const BLOCKED_RPC_METHODS: readonly string[];
34
35
  /**
35
36
  * Asserts the validity of request arguments for a snap outbound request using the `snap.request` API.
36
37
  *
@@ -1,14 +1,6 @@
1
1
  import { HandlerType } from '@metamask/snaps-utils';
2
- import { Json, JsonRpcSuccess } from '@metamask/utils';
3
- import { Infer } from 'superstruct';
4
- /**
5
- * Validates a given snap export.
6
- *
7
- * @param type - The type of export expected.
8
- * @param snapExport - The export itself.
9
- * @returns True if the export matches the expected shape, false otherwise.
10
- */
11
- export declare function validateExport(type: HandlerType, snapExport: unknown): boolean;
2
+ import type { Json, JsonRpcSuccess } from '@metamask/utils';
3
+ import type { Infer } from 'superstruct';
12
4
  export declare const JsonRpcRequestWithoutIdStruct: import("superstruct").Struct<{
13
5
  method: string;
14
6
  jsonrpc: "2.0";
@@ -70,6 +62,30 @@ export declare type OnTransactionRequestArguments = Infer<typeof OnTransactionRe
70
62
  * object.
71
63
  */
72
64
  export declare function assertIsOnTransactionRequestArguments(value: unknown): asserts value is OnTransactionRequestArguments;
65
+ declare const baseNameLookupArgs: {
66
+ chainId: import("superstruct").Struct<string, null>;
67
+ };
68
+ export declare const OnNameLookupRequestArgumentsStruct: import("superstruct").Struct<{
69
+ chainId: string;
70
+ address: string;
71
+ } | {
72
+ chainId: string;
73
+ domain: string;
74
+ }, null>;
75
+ export declare type OnNameLookupRequestArguments = Infer<typeof OnNameLookupRequestArgumentsStruct>;
76
+ export declare type PossibleLookupRequestArgs = typeof baseNameLookupArgs & {
77
+ address?: string;
78
+ domain?: string;
79
+ };
80
+ /**
81
+ * Asserts that the given value is a valid {@link OnNameLookupRequestArguments}
82
+ * object.
83
+ *
84
+ * @param value - The value to validate.
85
+ * @throws If the value is not a valid {@link OnNameLookupRequestArguments}
86
+ * object.
87
+ */
88
+ export declare function assertIsOnNameLookupRequestArguments(value: unknown): asserts value is OnNameLookupRequestArguments;
73
89
  declare const OkResponseStruct: import("superstruct").Struct<{
74
90
  id: string | number | null;
75
91
  jsonrpc: "2.0";
@@ -1,4 +1,4 @@
1
- import { BasePostMessageStream } from '@metamask/post-message-stream';
1
+ import type { BasePostMessageStream } from '@metamask/post-message-stream';
2
2
  import { BaseSnapExecutor } from '../common/BaseSnapExecutor';
3
3
  export declare class IFrameSnapExecutor extends BaseSnapExecutor {
4
4
  /**
@@ -1,4 +1,5 @@
1
- import { BasePostMessageStream, WindowPostMessageStream } from '@metamask/post-message-stream';
1
+ import type { BasePostMessageStream } from '@metamask/post-message-stream';
2
+ import { WindowPostMessageStream } from '@metamask/post-message-stream';
2
3
  declare type ExecutorJob = {
3
4
  id: string;
4
5
  window: Window;
@@ -0,0 +1,13 @@
1
+ import type { BasePostMessageStream } from '@metamask/post-message-stream';
2
+ import { BaseSnapExecutor } from '../../common/BaseSnapExecutor';
3
+ export declare class WebWorkerSnapExecutor extends BaseSnapExecutor {
4
+ /**
5
+ * Initialize the WebWorkerSnapExecutor. This creates a post message stream
6
+ * from and to the parent window, for two-way communication with the iframe.
7
+ *
8
+ * @param stream - The stream to use for communication.
9
+ * @returns An instance of `WebWorkerSnapExecutor`, with the initialized post
10
+ * message streams.
11
+ */
12
+ static initialize(stream?: BasePostMessageStream): WebWorkerSnapExecutor;
13
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,23 @@
1
+ import type { BasePostMessageStream } from '@metamask/post-message-stream';
2
+ import { WebWorkerParentPostMessageStream } from '@metamask/post-message-stream';
3
+ declare type ExecutorJob = {
4
+ id: string;
5
+ worker: Worker;
6
+ stream: WebWorkerParentPostMessageStream;
7
+ };
8
+ /**
9
+ * A snap executor using the WebWorker API.
10
+ *
11
+ * This is not a traditional snap executor, as it does not execute snaps itself.
12
+ * Instead, it creates a pool of webworkers for each snap execution, and sends
13
+ * the snap execution request to the webworker. The webworker is responsible for
14
+ * executing the snap.
15
+ */
16
+ export declare class WebWorkerPool {
17
+ #private;
18
+ readonly pool: Worker[];
19
+ readonly jobs: Map<string, ExecutorJob>;
20
+ static initialize(stream?: BasePostMessageStream, url?: string, poolSize?: number): WebWorkerPool;
21
+ constructor(stream: BasePostMessageStream, url: string, poolSize?: number);
22
+ }
23
+ export {};
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,15 +1,20 @@
1
1
  {
2
2
  "name": "@metamask/snaps-execution-environments",
3
- "version": "1.0.2",
3
+ "version": "2.0.0",
4
4
  "description": "Snap sandbox environments for executing SES javascript",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/MetaMask/snaps.git"
8
8
  },
9
- "main": "dist/index.js",
10
- "types": "dist/index.d.ts",
9
+ "sideEffects": false,
10
+ "main": "./dist/cjs/index.js",
11
+ "module": "./dist/esm/index.js",
12
+ "types": "./dist/types/index.d.ts",
11
13
  "files": [
12
- "dist/"
14
+ "dist/cjs/**",
15
+ "dist/esm/**",
16
+ "dist/types/**",
17
+ "dist/browserify/**"
13
18
  ],
14
19
  "scripts": {
15
20
  "test": "rimraf coverage && jest && yarn test:browser && yarn posttest",
@@ -17,36 +22,38 @@
17
22
  "test:browser": "wdio run wdio.config.ts",
18
23
  "test:ci": "yarn test",
19
24
  "test:watch": "jest --watch",
20
- "lint:eslint": "eslint . --cache --ext js,ts",
21
- "lint:misc": "prettier '**/*.json' '**/*.md' '!CHANGELOG.md' --ignore-path .gitignore",
25
+ "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx",
26
+ "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ./.prettierignore",
22
27
  "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write",
23
- "lint:changelog": "yarn auto-changelog validate",
24
- "lint": "yarn lint:eslint && yarn lint:misc --check",
25
- "clean": "rimraf '*.tsbuildinfo' 'dist/*' 'src/__GENERATED__/' 'coverage/*' '__test__/*'",
28
+ "lint:changelog": "../../scripts/validate-changelog.sh @metamask/snaps-execution-environments",
29
+ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn lint:changelog && yarn lint:dependencies",
30
+ "clean": "rimraf '*.tsbuildinfo' 'dist' 'src/__GENERATED__/' 'coverage/*' '__test__/*'",
31
+ "build": "yarn build:source && yarn build:types",
32
+ "build:source": "yarn build:esm && yarn build:cjs",
33
+ "build:types": "tsc --project tsconfig.build.json",
34
+ "build:esm": "swc src --out-dir dist/esm --config-file ../../.swcrc.build.json --config module.type=es6",
35
+ "build:cjs": "swc src --out-dir dist/cjs --config-file ../../.swcrc.build.json --config module.type=commonjs",
26
36
  "build:clean": "yarn clean && yarn build",
27
37
  "build:post-tsc": "yarn build:lavamoat",
28
- "build:tsc": "tsc --project tsconfig.build.json",
29
- "build": "yarn build:tsc && yarn build:post-tsc",
30
- "build:test": "yarn build:lavamoat",
31
38
  "build:lavamoat": "lavamoat scripts/build.js --policy lavamoat/build-system/policy.json --policyOverride lavamoat/build-system/policy-override.json",
32
39
  "build:lavamoat:policy": "yarn build:lavamoat --writeAutoPolicy && node scripts/build.js --writeAutoPolicy",
33
40
  "auto-changelog-init": "auto-changelog init",
34
41
  "prepare-manifest:preview": "../../scripts/prepare-preview-manifest.sh",
35
42
  "publish:preview": "yarn npm publish --tag preview",
36
- "publish:package": "../../scripts/publish-package.sh"
43
+ "lint:ci": "yarn lint",
44
+ "start": "node scripts/start.js",
45
+ "lint:dependencies": "depcheck"
37
46
  },
38
47
  "dependencies": {
39
48
  "@metamask/object-multiplex": "^1.2.0",
40
- "@metamask/post-message-stream": "^6.1.1",
41
- "@metamask/providers": "^10.2.0",
42
- "@metamask/rpc-methods": "^1.0.2",
43
- "@metamask/snaps-utils": "^1.0.2",
44
- "@metamask/utils": "^6.0.1",
49
+ "@metamask/post-message-stream": "^7.0.0",
50
+ "@metamask/providers": "^11.1.1",
51
+ "@metamask/rpc-methods": "^2.0.0",
52
+ "@metamask/snaps-utils": "^2.0.0",
53
+ "@metamask/utils": "^8.1.0",
45
54
  "eth-rpc-errors": "^4.0.3",
46
55
  "json-rpc-engine": "^6.1.0",
47
- "pump": "^3.0.0",
48
- "ses": "^0.18.1",
49
- "stream-browserify": "^3.0.0",
56
+ "nanoid": "^3.1.31",
50
57
  "superstruct": "^1.0.3"
51
58
  },
52
59
  "devDependencies": {
@@ -59,57 +66,61 @@
59
66
  "@lavamoat/lavapack": "^5.2.1",
60
67
  "@lavamoat/lavatube": "^0.2.3",
61
68
  "@metamask/auto-changelog": "^3.1.0",
62
- "@metamask/eslint-config": "^11.0.0",
63
- "@metamask/eslint-config-jest": "^11.0.0",
64
- "@metamask/eslint-config-nodejs": "^11.0.1",
65
- "@metamask/eslint-config-typescript": "^11.0.0",
69
+ "@metamask/eslint-config": "^12.1.0",
70
+ "@metamask/eslint-config-jest": "^12.1.0",
71
+ "@metamask/eslint-config-nodejs": "^12.1.0",
72
+ "@metamask/eslint-config-typescript": "^12.1.0",
73
+ "@swc/cli": "^0.1.62",
74
+ "@swc/core": "1.3.78",
75
+ "@swc/jest": "^0.2.26",
76
+ "@types/express": "^4.17.17",
66
77
  "@types/jest": "^27.5.1",
67
- "@types/node": "^20.3.1",
78
+ "@types/node": "18.14.2",
68
79
  "@typescript-eslint/eslint-plugin": "^5.42.1",
69
80
  "@typescript-eslint/parser": "^5.42.1",
70
- "@wdio/browser-runner": "^8.3.10",
71
- "@wdio/cli": "^8.3.10",
72
- "@wdio/globals": "^8.3.10",
73
- "@wdio/mocha-framework": "^8.3.0",
74
- "@wdio/spec-reporter": "^8.3.0",
75
- "@wdio/static-server-service": "^8.3.0",
76
- "babel-loader": "^9.1.2",
81
+ "@wdio/browser-runner": "^8.15.9",
82
+ "@wdio/cli": "^8.15.9",
83
+ "@wdio/globals": "^8.15.9",
84
+ "@wdio/mocha-framework": "^8.15.9",
85
+ "@wdio/spec-reporter": "^8.15.7",
86
+ "@wdio/static-server-service": "^8.15.7",
77
87
  "babel-plugin-tsconfig-paths-module-resolver": "^1.0.4",
78
88
  "babelify": "^10.0.0",
79
89
  "browserify": "^17.0.0",
80
- "buffer": "^6.0.3",
81
90
  "deepmerge": "^4.2.2",
91
+ "depcheck": "^1.4.5",
92
+ "esbuild": "^0.18.10",
82
93
  "eslint": "^8.27.0",
83
94
  "eslint-config-prettier": "^8.5.0",
84
95
  "eslint-plugin-import": "^2.26.0",
85
96
  "eslint-plugin-jest": "^27.1.5",
86
97
  "eslint-plugin-jsdoc": "^39.6.2",
87
- "eslint-plugin-node": "^11.1.0",
98
+ "eslint-plugin-n": "^15.7.0",
88
99
  "eslint-plugin-prettier": "^4.2.1",
100
+ "eslint-plugin-promise": "^6.1.1",
89
101
  "expect-webdriverio": "^4.1.2",
102
+ "express": "^4.18.2",
90
103
  "istanbul-lib-coverage": "^3.2.0",
91
104
  "istanbul-lib-report": "^3.0.0",
92
105
  "istanbul-reports": "^3.1.5",
93
106
  "jest": "^29.0.2",
107
+ "jest-environment-node": "^29.5.0",
94
108
  "jest-fetch-mock": "^3.0.3",
95
109
  "lavamoat": "^7.0.0",
96
110
  "lavamoat-browserify": "^15.7.1",
97
- "memfs": "^3.4.13",
98
111
  "prettier": "^2.7.1",
99
112
  "prettier-plugin-packagejson": "^2.2.11",
100
- "process": "^0.11.10",
101
113
  "rimraf": "^4.1.2",
114
+ "serve-handler": "^6.1.5",
102
115
  "ses": "^0.18.7",
103
116
  "terser": "^5.17.7",
104
- "ts-jest": "^29.0.0",
105
117
  "ts-node": "^10.9.1",
106
- "tsconfig-paths": "^4.1.2",
107
118
  "typescript": "~4.8.4",
108
119
  "vite": "^4.3.9",
109
120
  "vite-tsconfig-paths": "^4.0.5",
110
121
  "wdio-chromedriver-service": "^8.1.1",
111
- "wdio-geckodriver-service": "^4.1.0",
112
- "webdriverio": "^8.3.10",
122
+ "wdio-geckodriver-service": "^5.0.2",
123
+ "webdriverio": "^8.15.9",
113
124
  "yargs": "^17.7.1"
114
125
  },
115
126
  "engines": {