@metamask/snaps-execution-environments 7.0.0 → 7.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -1
- package/dist/browserify/iframe/bundle.js +5 -5
- package/dist/browserify/node-process/bundle.js +4 -4
- package/dist/browserify/node-thread/bundle.js +4 -4
- package/dist/browserify/webview/index.html +5 -5
- package/dist/browserify/worker-executor/bundle.js +5 -5
- package/dist/browserify/worker-pool/bundle.js +5 -5
- package/dist/common/BaseSnapExecutor.cjs +30 -3
- package/dist/common/BaseSnapExecutor.cjs.map +1 -1
- package/dist/common/BaseSnapExecutor.d.cts.map +1 -1
- package/dist/common/BaseSnapExecutor.d.mts.map +1 -1
- package/dist/common/BaseSnapExecutor.mjs +30 -3
- package/dist/common/BaseSnapExecutor.mjs.map +1 -1
- package/dist/common/endowments/commonEndowmentFactory.cjs +1 -1
- package/dist/common/endowments/commonEndowmentFactory.cjs.map +1 -1
- package/dist/common/endowments/commonEndowmentFactory.d.cts.map +1 -1
- package/dist/common/endowments/commonEndowmentFactory.d.mts.map +1 -1
- package/dist/common/endowments/commonEndowmentFactory.mjs +1 -1
- package/dist/common/endowments/commonEndowmentFactory.mjs.map +1 -1
- package/dist/common/endowments/console.cjs.map +1 -1
- package/dist/common/endowments/console.d.cts.map +1 -1
- package/dist/common/endowments/console.d.mts.map +1 -1
- package/dist/common/endowments/console.mjs.map +1 -1
- package/dist/common/endowments/crypto.cjs +1 -1
- package/dist/common/endowments/crypto.cjs.map +1 -1
- package/dist/common/endowments/crypto.mjs +1 -1
- package/dist/common/endowments/crypto.mjs.map +1 -1
- package/dist/common/endowments/index.cjs +2 -2
- package/dist/common/endowments/index.cjs.map +1 -1
- package/dist/common/endowments/index.d.cts.map +1 -1
- package/dist/common/endowments/index.d.mts.map +1 -1
- package/dist/common/endowments/index.mjs +2 -2
- package/dist/common/endowments/index.mjs.map +1 -1
- package/dist/common/endowments/math.cjs +1 -1
- package/dist/common/endowments/math.cjs.map +1 -1
- package/dist/common/endowments/math.mjs +1 -1
- package/dist/common/endowments/math.mjs.map +1 -1
- package/dist/common/endowments/network.cjs.map +1 -1
- package/dist/common/endowments/network.d.cts.map +1 -1
- package/dist/common/endowments/network.d.mts.map +1 -1
- package/dist/common/endowments/network.mjs.map +1 -1
- package/dist/common/globalObject.cjs +2 -1
- package/dist/common/globalObject.cjs.map +1 -1
- package/dist/common/globalObject.d.cts.map +1 -1
- package/dist/common/globalObject.d.mts.map +1 -1
- package/dist/common/globalObject.mjs +2 -1
- package/dist/common/globalObject.mjs.map +1 -1
- package/dist/common/validation.cjs +2 -0
- package/dist/common/validation.cjs.map +1 -1
- package/dist/common/validation.d.cts +18 -2
- package/dist/common/validation.d.cts.map +1 -1
- package/dist/common/validation.d.mts +18 -2
- package/dist/common/validation.d.mts.map +1 -1
- package/dist/common/validation.mjs +2 -0
- package/dist/common/validation.mjs.map +1 -1
- package/dist/iframe/index.cjs +1 -1
- package/dist/iframe/index.cjs.map +1 -1
- package/dist/iframe/index.mjs +1 -1
- package/dist/iframe/index.mjs.map +1 -1
- package/dist/node-process/index.cjs +1 -1
- package/dist/node-process/index.cjs.map +1 -1
- package/dist/node-process/index.mjs +1 -1
- package/dist/node-process/index.mjs.map +1 -1
- package/dist/node-thread/index.cjs +1 -1
- package/dist/node-thread/index.cjs.map +1 -1
- package/dist/node-thread/index.mjs +1 -1
- package/dist/node-thread/index.mjs.map +1 -1
- package/dist/proxy/ProxySnapExecutor.cjs +1 -2
- package/dist/proxy/ProxySnapExecutor.cjs.map +1 -1
- package/dist/proxy/ProxySnapExecutor.mjs +1 -2
- package/dist/proxy/ProxySnapExecutor.mjs.map +1 -1
- package/dist/webview/WebViewExecutorStream.cjs +3 -0
- package/dist/webview/WebViewExecutorStream.cjs.map +1 -1
- package/dist/webview/WebViewExecutorStream.d.cts.map +1 -1
- package/dist/webview/WebViewExecutorStream.d.mts.map +1 -1
- package/dist/webview/WebViewExecutorStream.mjs +3 -0
- package/dist/webview/WebViewExecutorStream.mjs.map +1 -1
- package/dist/webview/index.cjs +1 -1
- package/dist/webview/index.cjs.map +1 -1
- package/dist/webview/index.mjs +1 -1
- package/dist/webview/index.mjs.map +1 -1
- package/dist/webworker/executor/index.cjs +1 -1
- package/dist/webworker/executor/index.cjs.map +1 -1
- package/dist/webworker/executor/index.mjs +1 -1
- package/dist/webworker/executor/index.mjs.map +1 -1
- package/dist/webworker/pool/index.cjs +1 -1
- package/dist/webworker/pool/index.cjs.map +1 -1
- package/dist/webworker/pool/index.mjs +1 -1
- package/dist/webworker/pool/index.mjs.map +1 -1
- package/package.json +12 -26
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.mjs","sourceRoot":"","sources":["../../../src/common/endowments/network.ts"],"names":[],"mappings":"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","sourcesContent":["import { assert } from '@metamask/utils';\n\nimport { withTeardown } from '../utils';\nimport type { EndowmentFactoryOptions } from './commonEndowmentFactory';\n\n/**\n * This class wraps a Response object.\n * That way, a teardown process can stop any processes left.\n */\nexport class ResponseWrapper implements Response {\n readonly #teardownRef: { lastTeardown: number };\n\n #ogResponse: Response;\n\n #onStart: () => Promise<void>;\n\n #onFinish: () => Promise<void>;\n\n constructor(\n ogResponse: Response,\n teardownRef: { lastTeardown: number },\n onStart: () => Promise<void>,\n onFinish: () => Promise<void>,\n ) {\n this.#ogResponse = ogResponse;\n this.#teardownRef = teardownRef;\n this.#onStart = onStart;\n this.#onFinish = onFinish;\n }\n\n get body(): ReadableStream<Uint8Array> | null {\n return this.#ogResponse.body;\n }\n\n get bodyUsed() {\n return this.#ogResponse.bodyUsed;\n }\n\n get headers() {\n return this.#ogResponse.headers;\n }\n\n get ok() {\n return this.#ogResponse.ok;\n }\n\n get redirected() {\n return this.#ogResponse.redirected;\n }\n\n get status() {\n return this.#ogResponse.status;\n }\n\n get statusText() {\n return this.#ogResponse.statusText;\n }\n\n get type() {\n return this.#ogResponse.type;\n }\n\n get url() {\n return this.#ogResponse.url;\n }\n\n async text() {\n return await withTeardown<string>(\n (async () => {\n await this.#onStart();\n try {\n return await this.#ogResponse.text();\n } finally {\n await this.#onFinish();\n }\n })(),\n this.#teardownRef,\n );\n }\n\n async arrayBuffer(): Promise<ArrayBuffer> {\n return await withTeardown<ArrayBuffer>(\n (async () => {\n await this.#onStart();\n try {\n return await this.#ogResponse.arrayBuffer();\n } finally {\n await this.#onFinish();\n }\n })(),\n this.#teardownRef,\n );\n }\n\n async blob(): Promise<Blob> {\n return await withTeardown<Blob>(\n (async () => {\n await this.#onStart();\n try {\n return await this.#ogResponse.blob();\n } finally {\n await this.#onFinish();\n }\n })(),\n this.#teardownRef,\n );\n }\n\n clone(): Response {\n const newResponse = this.#ogResponse.clone();\n return new ResponseWrapper(\n newResponse,\n this.#teardownRef,\n this.#onStart,\n this.#onFinish,\n );\n }\n\n async formData(): Promise<FormData> {\n return await withTeardown<FormData>(\n (async () => {\n await this.#onStart();\n try {\n return await this.#ogResponse.formData();\n } finally {\n await this.#onFinish();\n }\n })(),\n this.#teardownRef,\n );\n }\n\n async json(): Promise<any> {\n return await withTeardown(\n (async () => {\n await this.#onStart();\n try {\n return await this.#ogResponse.json();\n } finally {\n await this.#onFinish();\n }\n })(),\n this.#teardownRef,\n );\n }\n}\n\n// We redefine the global Response class to overwrite [Symbol.hasInstance].\n// This fixes problems where the response from `fetch` would not pass\n// instance of checks, leading to failures in WASM bindgen.\nclass AlteredResponse extends Response {\n static [Symbol.hasInstance](instance: unknown) {\n return instance instanceof Response || instance instanceof ResponseWrapper;\n }\n}\n\n/**\n * Create a network endowment, consisting of a `fetch` function.\n * This allows us to provide a teardown function, so that we can cancel\n * any pending requests, connections, streams, etc. that may be open when a snap\n * is terminated.\n *\n * This wraps the original implementation of `fetch`,\n * to ensure that a bad actor cannot get access to the original function, thus\n * potentially preventing the network requests from being torn down.\n *\n * @param options - An options bag.\n * @param options.notify - A reference to the notify function of the snap executor.\n * @returns An object containing a wrapped `fetch`\n * function, as well as a teardown function.\n */\nconst createNetwork = ({ notify }: EndowmentFactoryOptions = {}) => {\n assert(notify, 'Notify must be passed to network endowment factory');\n // Open fetch calls or open body streams\n const openConnections = new Set<{ cancel: () => Promise<void> }>();\n // Track last teardown count\n const teardownRef = { lastTeardown: 0 };\n\n // Remove items from openConnections after they were garbage collected\n const cleanup = new FinalizationRegistry<() => void>(\n /* istanbul ignore next: can't test garbage collection without modifying node parameters */\n (callback) => callback(),\n );\n\n const _fetch: typeof fetch = async (\n input: RequestInfo | URL,\n init?: RequestInit,\n ): Promise<Response> => {\n const abortController = new AbortController();\n if (init?.signal !== null && init?.signal !== undefined) {\n const originalSignal = init.signal;\n // Merge abort controllers\n originalSignal.addEventListener(\n 'abort',\n () => {\n abortController.abort((originalSignal as any).reason);\n },\n { once: true },\n );\n }\n\n let started = false;\n const onStart = async () => {\n if (!started) {\n started = true;\n await notify({\n method: 'OutboundRequest',\n params: { source: 'fetch' },\n });\n }\n };\n\n let finished = false;\n const onFinish = async () => {\n if (!finished) {\n finished = true;\n await notify({\n method: 'OutboundResponse',\n params: { source: 'fetch' },\n });\n }\n };\n\n let res: Response;\n let openFetchConnection: { cancel: () => Promise<void> } | undefined;\n return await withTeardown(\n (async () => {\n try {\n await notify({\n method: 'OutboundRequest',\n params: { source: 'fetch' },\n });\n const fetchPromise = fetch(input, {\n ...init,\n signal: abortController.signal,\n });\n\n openFetchConnection = {\n cancel: async () => {\n abortController.abort();\n try {\n await fetchPromise;\n } catch {\n /* do nothing */\n }\n },\n };\n openConnections.add(openFetchConnection);\n\n res = new ResponseWrapper(\n await fetchPromise,\n teardownRef,\n onStart,\n onFinish,\n );\n } finally {\n if (openFetchConnection !== undefined) {\n openConnections.delete(openFetchConnection);\n }\n await notify({\n method: 'OutboundResponse',\n params: { source: 'fetch' },\n });\n }\n\n if (res.body !== null) {\n const body = new WeakRef<ReadableStream>(res.body);\n\n const openBodyConnection = {\n cancel:\n /* istanbul ignore next: see it.todo('can be torn down during body read') test */\n async () => {\n try {\n await body.deref()?.cancel();\n } catch {\n /* do nothing */\n }\n },\n };\n openConnections.add(openBodyConnection);\n cleanup.register(\n res.body,\n /* istanbul ignore next: can't test garbage collection without modifying node parameters */\n () => openConnections.delete(openBodyConnection),\n );\n }\n return harden(res);\n })(),\n teardownRef,\n );\n };\n\n const teardownFunction = async () => {\n teardownRef.lastTeardown += 1;\n const promises: Promise<void>[] = [];\n openConnections.forEach(({ cancel }) => promises.push(cancel()));\n openConnections.clear();\n await Promise.all(promises);\n };\n\n return {\n fetch: harden(_fetch),\n // Request, Headers and Response are the endowments injected alongside fetch\n // only when 'endowment:network-access' permission is requested,\n // therefore these are hardened as part of fetch dependency injection within its factory.\n // These endowments are not (and should never be) available by default.\n Request: harden(Request),\n Headers: harden(Headers),\n Response: harden(AlteredResponse),\n teardownFunction,\n };\n};\n\nconst endowmentModule = {\n names: ['fetch', 'Request', 'Headers', 'Response'] as const,\n factory: createNetwork,\n};\nexport default endowmentModule;\n"]}
|
|
1
|
+
{"version":3,"file":"network.mjs","sourceRoot":"","sources":["../../../src/common/endowments/network.ts"],"names":[],"mappings":"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","sourcesContent":["import { assert } from '@metamask/utils';\n\nimport type { EndowmentFactoryOptions } from './commonEndowmentFactory';\nimport { withTeardown } from '../utils';\n\n/**\n * This class wraps a Response object.\n * That way, a teardown process can stop any processes left.\n */\nexport class ResponseWrapper implements Response {\n readonly #teardownRef: { lastTeardown: number };\n\n readonly #ogResponse: Response;\n\n readonly #onStart: () => Promise<void>;\n\n readonly #onFinish: () => Promise<void>;\n\n constructor(\n ogResponse: Response,\n teardownRef: { lastTeardown: number },\n onStart: () => Promise<void>,\n onFinish: () => Promise<void>,\n ) {\n this.#ogResponse = ogResponse;\n this.#teardownRef = teardownRef;\n this.#onStart = onStart;\n this.#onFinish = onFinish;\n }\n\n get body(): ReadableStream<Uint8Array> | null {\n return this.#ogResponse.body;\n }\n\n get bodyUsed() {\n return this.#ogResponse.bodyUsed;\n }\n\n get headers() {\n return this.#ogResponse.headers;\n }\n\n get ok() {\n return this.#ogResponse.ok;\n }\n\n get redirected() {\n return this.#ogResponse.redirected;\n }\n\n get status() {\n return this.#ogResponse.status;\n }\n\n get statusText() {\n return this.#ogResponse.statusText;\n }\n\n get type() {\n return this.#ogResponse.type;\n }\n\n get url() {\n return this.#ogResponse.url;\n }\n\n async text() {\n return await withTeardown<string>(\n (async () => {\n await this.#onStart();\n try {\n return await this.#ogResponse.text();\n } finally {\n await this.#onFinish();\n }\n })(),\n this.#teardownRef,\n );\n }\n\n async arrayBuffer(): Promise<ArrayBuffer> {\n return await withTeardown<ArrayBuffer>(\n (async () => {\n await this.#onStart();\n try {\n return await this.#ogResponse.arrayBuffer();\n } finally {\n await this.#onFinish();\n }\n })(),\n this.#teardownRef,\n );\n }\n\n async blob(): Promise<Blob> {\n return await withTeardown<Blob>(\n (async () => {\n await this.#onStart();\n try {\n return await this.#ogResponse.blob();\n } finally {\n await this.#onFinish();\n }\n })(),\n this.#teardownRef,\n );\n }\n\n clone(): Response {\n const newResponse = this.#ogResponse.clone();\n return new ResponseWrapper(\n newResponse,\n this.#teardownRef,\n this.#onStart,\n this.#onFinish,\n );\n }\n\n async formData(): Promise<FormData> {\n return await withTeardown<FormData>(\n (async () => {\n await this.#onStart();\n try {\n return await this.#ogResponse.formData();\n } finally {\n await this.#onFinish();\n }\n })(),\n this.#teardownRef,\n );\n }\n\n async json(): Promise<any> {\n return await withTeardown(\n (async () => {\n await this.#onStart();\n try {\n return await this.#ogResponse.json();\n } finally {\n await this.#onFinish();\n }\n })(),\n this.#teardownRef,\n );\n }\n}\n\n// We redefine the global Response class to overwrite [Symbol.hasInstance].\n// This fixes problems where the response from `fetch` would not pass\n// instance of checks, leading to failures in WASM bindgen.\nclass AlteredResponse extends Response {\n static [Symbol.hasInstance](instance: unknown) {\n return instance instanceof Response || instance instanceof ResponseWrapper;\n }\n}\n\n/**\n * Create a network endowment, consisting of a `fetch` function.\n * This allows us to provide a teardown function, so that we can cancel\n * any pending requests, connections, streams, etc. that may be open when a snap\n * is terminated.\n *\n * This wraps the original implementation of `fetch`,\n * to ensure that a bad actor cannot get access to the original function, thus\n * potentially preventing the network requests from being torn down.\n *\n * @param options - An options bag.\n * @param options.notify - A reference to the notify function of the snap executor.\n * @returns An object containing a wrapped `fetch`\n * function, as well as a teardown function.\n */\nconst createNetwork = ({ notify }: EndowmentFactoryOptions = {}) => {\n assert(notify, 'Notify must be passed to network endowment factory');\n // Open fetch calls or open body streams\n const openConnections = new Set<{ cancel: () => Promise<void> }>();\n // Track last teardown count\n const teardownRef = { lastTeardown: 0 };\n\n // Remove items from openConnections after they were garbage collected\n const cleanup = new FinalizationRegistry<() => void>(\n /* istanbul ignore next: can't test garbage collection without modifying node parameters */\n (callback) => callback(),\n );\n\n const _fetch: typeof fetch = async (\n input: RequestInfo | URL,\n init?: RequestInit,\n ): Promise<Response> => {\n const abortController = new AbortController();\n if (init?.signal !== null && init?.signal !== undefined) {\n const originalSignal = init.signal;\n // Merge abort controllers\n originalSignal.addEventListener(\n 'abort',\n () => {\n abortController.abort((originalSignal as any).reason);\n },\n { once: true },\n );\n }\n\n let started = false;\n const onStart = async () => {\n if (!started) {\n started = true;\n await notify({\n method: 'OutboundRequest',\n params: { source: 'fetch' },\n });\n }\n };\n\n let finished = false;\n const onFinish = async () => {\n if (!finished) {\n finished = true;\n await notify({\n method: 'OutboundResponse',\n params: { source: 'fetch' },\n });\n }\n };\n\n let res: Response;\n let openFetchConnection: { cancel: () => Promise<void> } | undefined;\n return await withTeardown(\n (async () => {\n try {\n await notify({\n method: 'OutboundRequest',\n params: { source: 'fetch' },\n });\n const fetchPromise = fetch(input, {\n ...init,\n signal: abortController.signal,\n });\n\n openFetchConnection = {\n cancel: async () => {\n abortController.abort();\n try {\n await fetchPromise;\n } catch {\n /* do nothing */\n }\n },\n };\n openConnections.add(openFetchConnection);\n\n res = new ResponseWrapper(\n await fetchPromise,\n teardownRef,\n onStart,\n onFinish,\n );\n } finally {\n if (openFetchConnection !== undefined) {\n openConnections.delete(openFetchConnection);\n }\n await notify({\n method: 'OutboundResponse',\n params: { source: 'fetch' },\n });\n }\n\n if (res.body !== null) {\n const body = new WeakRef<ReadableStream>(res.body);\n\n const openBodyConnection = {\n cancel:\n /* istanbul ignore next: see it.todo('can be torn down during body read') test */\n async () => {\n try {\n await body.deref()?.cancel();\n } catch {\n /* do nothing */\n }\n },\n };\n openConnections.add(openBodyConnection);\n cleanup.register(\n res.body,\n /* istanbul ignore next: can't test garbage collection without modifying node parameters */\n () => openConnections.delete(openBodyConnection),\n );\n }\n return harden(res);\n })(),\n teardownRef,\n );\n };\n\n const teardownFunction = async () => {\n teardownRef.lastTeardown += 1;\n const promises: Promise<void>[] = [];\n openConnections.forEach(({ cancel }) => promises.push(cancel()));\n openConnections.clear();\n await Promise.all(promises);\n };\n\n return {\n fetch: harden(_fetch),\n // Request, Headers and Response are the endowments injected alongside fetch\n // only when 'endowment:network-access' permission is requested,\n // therefore these are hardened as part of fetch dependency injection within its factory.\n // These endowments are not (and should never be) available by default.\n Request: harden(Request),\n Headers: harden(Headers),\n Response: harden(AlteredResponse),\n teardownFunction,\n };\n};\n\nconst endowmentModule = {\n names: ['fetch', 'Request', 'Headers', 'Response'] as const,\n factory: createNetwork,\n};\nexport default endowmentModule;\n"]}
|
|
@@ -6,7 +6,6 @@ var GlobalObjectNames;
|
|
|
6
6
|
// The globalThis entry is incorrectly identified as shadowing the global
|
|
7
7
|
// globalThis.
|
|
8
8
|
/* eslint-disable @typescript-eslint/naming-convention */
|
|
9
|
-
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
10
9
|
GlobalObjectNames["globalThis"] = "globalThis";
|
|
11
10
|
GlobalObjectNames["global"] = "global";
|
|
12
11
|
GlobalObjectNames["self"] = "self";
|
|
@@ -28,8 +27,10 @@ else if (typeof self !== 'undefined') {
|
|
|
28
27
|
else if (typeof window !== 'undefined') {
|
|
29
28
|
_rootRealmGlobal = window;
|
|
30
29
|
_rootRealmGlobalName = GlobalObjectNames.window;
|
|
30
|
+
// eslint-disable-next-line no-restricted-globals
|
|
31
31
|
}
|
|
32
32
|
else if (typeof global !== 'undefined') {
|
|
33
|
+
// eslint-disable-next-line no-restricted-globals
|
|
33
34
|
_rootRealmGlobal = global;
|
|
34
35
|
_rootRealmGlobalName = GlobalObjectNames.global;
|
|
35
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"globalObject.cjs","sourceRoot":"","sources":["../../src/common/globalObject.ts"],"names":[],"mappings":";;;AAAA,IAAK,
|
|
1
|
+
{"version":3,"file":"globalObject.cjs","sourceRoot":"","sources":["../../src/common/globalObject.ts"],"names":[],"mappings":";;;AAAA,IAAK,iBASJ;AATD,WAAK,iBAAiB;IACpB,yEAAyE;IACzE,cAAc;IACd,yDAAyD;IACzD,8CAAyB,CAAA;IACzB,sCAAiB,CAAA;IACjB,kCAAa,CAAA;IACb,sCAAiB,CAAA;IACjB,wDAAwD;AAC1D,CAAC,EATI,iBAAiB,KAAjB,iBAAiB,QASrB;AAED,IAAI,gBAAmC,CAAC;AACxC,IAAI,oBAA4B,CAAC;AAEjC,0BAA0B;AAC1B,yCAAyC;AACzC,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE,CAAC;IACtC,gBAAgB,GAAG,UAAU,CAAC;IAC9B,oBAAoB,GAAG,iBAAiB,CAAC,UAAU,CAAC;AACtD,CAAC;KAAM,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE,CAAC;IACvC,gBAAgB,GAAG,IAAI,CAAC;IACxB,oBAAoB,GAAG,iBAAiB,CAAC,IAAI,CAAC;AAChD,CAAC;KAAM,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IACzC,gBAAgB,GAAG,MAAM,CAAC;IAC1B,oBAAoB,GAAG,iBAAiB,CAAC,MAAM,CAAC;IAChD,iDAAiD;AACnD,CAAC;KAAM,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IACzC,iDAAiD;IACjD,gBAAgB,GAAG,MAAM,CAAC;IAC1B,oBAAoB,GAAG,iBAAiB,CAAC,MAAM,CAAC;AAClD,CAAC;KAAM,CAAC;IACN,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;AAC3E,CAAC;AACD,wCAAwC;AAExC;;GAEG;AACH,MAAM,eAAe,GAAG,gBAAgB,CAAC;AAOhC,0CAAe;AALxB;;GAEG;AACH,MAAM,mBAAmB,GAAG,oBAAoB,CAAC;AAEvB,kDAAmB","sourcesContent":["enum GlobalObjectNames {\n // The globalThis entry is incorrectly identified as shadowing the global\n // globalThis.\n /* eslint-disable @typescript-eslint/naming-convention */\n globalThis = 'globalThis',\n global = 'global',\n self = 'self',\n window = 'window',\n /* eslint-enable @typescript-eslint/naming-convention */\n}\n\nlet _rootRealmGlobal: typeof globalThis;\nlet _rootRealmGlobalName: string;\n\n/* istanbul ignore next */\n/* eslint-disable no-negated-condition */\nif (typeof globalThis !== 'undefined') {\n _rootRealmGlobal = globalThis;\n _rootRealmGlobalName = GlobalObjectNames.globalThis;\n} else if (typeof self !== 'undefined') {\n _rootRealmGlobal = self;\n _rootRealmGlobalName = GlobalObjectNames.self;\n} else if (typeof window !== 'undefined') {\n _rootRealmGlobal = window;\n _rootRealmGlobalName = GlobalObjectNames.window;\n // eslint-disable-next-line no-restricted-globals\n} else if (typeof global !== 'undefined') {\n // eslint-disable-next-line no-restricted-globals\n _rootRealmGlobal = global;\n _rootRealmGlobalName = GlobalObjectNames.global;\n} else {\n throw new Error('Unknown realm type; failed to identify global object.');\n}\n/* eslint-enable no-negated-condition */\n\n/**\n * A platform-agnostic alias for the root realm global object.\n */\nconst rootRealmGlobal = _rootRealmGlobal;\n\n/**\n * The string literal corresponding to the name of the root realm global object.\n */\nconst rootRealmGlobalName = _rootRealmGlobalName;\n\nexport { rootRealmGlobal, rootRealmGlobalName };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"globalObject.d.cts","sourceRoot":"","sources":["../../src/common/globalObject.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"globalObject.d.cts","sourceRoot":"","sources":["../../src/common/globalObject.ts"],"names":[],"mappings":"AAmCA;;GAEG;AACH,QAAA,MAAM,eAAe,mBAAmB,CAAC;AAEzC;;GAEG;AACH,QAAA,MAAM,mBAAmB,QAAuB,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"globalObject.d.mts","sourceRoot":"","sources":["../../src/common/globalObject.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"globalObject.d.mts","sourceRoot":"","sources":["../../src/common/globalObject.ts"],"names":[],"mappings":"AAmCA;;GAEG;AACH,QAAA,MAAM,eAAe,mBAAmB,CAAC;AAEzC;;GAEG;AACH,QAAA,MAAM,mBAAmB,QAAuB,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -3,7 +3,6 @@ var GlobalObjectNames;
|
|
|
3
3
|
// The globalThis entry is incorrectly identified as shadowing the global
|
|
4
4
|
// globalThis.
|
|
5
5
|
/* eslint-disable @typescript-eslint/naming-convention */
|
|
6
|
-
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
7
6
|
GlobalObjectNames["globalThis"] = "globalThis";
|
|
8
7
|
GlobalObjectNames["global"] = "global";
|
|
9
8
|
GlobalObjectNames["self"] = "self";
|
|
@@ -25,8 +24,10 @@ else if (typeof self !== 'undefined') {
|
|
|
25
24
|
else if (typeof window !== 'undefined') {
|
|
26
25
|
_rootRealmGlobal = window;
|
|
27
26
|
_rootRealmGlobalName = GlobalObjectNames.window;
|
|
27
|
+
// eslint-disable-next-line no-restricted-globals
|
|
28
28
|
}
|
|
29
29
|
else if (typeof global !== 'undefined') {
|
|
30
|
+
// eslint-disable-next-line no-restricted-globals
|
|
30
31
|
_rootRealmGlobal = global;
|
|
31
32
|
_rootRealmGlobalName = GlobalObjectNames.global;
|
|
32
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"globalObject.mjs","sourceRoot":"","sources":["../../src/common/globalObject.ts"],"names":[],"mappings":"AAAA,IAAK,
|
|
1
|
+
{"version":3,"file":"globalObject.mjs","sourceRoot":"","sources":["../../src/common/globalObject.ts"],"names":[],"mappings":"AAAA,IAAK,iBASJ;AATD,WAAK,iBAAiB;IACpB,yEAAyE;IACzE,cAAc;IACd,yDAAyD;IACzD,8CAAyB,CAAA;IACzB,sCAAiB,CAAA;IACjB,kCAAa,CAAA;IACb,sCAAiB,CAAA;IACjB,wDAAwD;AAC1D,CAAC,EATI,iBAAiB,KAAjB,iBAAiB,QASrB;AAED,IAAI,gBAAmC,CAAC;AACxC,IAAI,oBAA4B,CAAC;AAEjC,0BAA0B;AAC1B,yCAAyC;AACzC,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE,CAAC;IACtC,gBAAgB,GAAG,UAAU,CAAC;IAC9B,oBAAoB,GAAG,iBAAiB,CAAC,UAAU,CAAC;AACtD,CAAC;KAAM,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE,CAAC;IACvC,gBAAgB,GAAG,IAAI,CAAC;IACxB,oBAAoB,GAAG,iBAAiB,CAAC,IAAI,CAAC;AAChD,CAAC;KAAM,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IACzC,gBAAgB,GAAG,MAAM,CAAC;IAC1B,oBAAoB,GAAG,iBAAiB,CAAC,MAAM,CAAC;IAChD,iDAAiD;AACnD,CAAC;KAAM,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IACzC,iDAAiD;IACjD,gBAAgB,GAAG,MAAM,CAAC;IAC1B,oBAAoB,GAAG,iBAAiB,CAAC,MAAM,CAAC;AAClD,CAAC;KAAM,CAAC;IACN,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;AAC3E,CAAC;AACD,wCAAwC;AAExC;;GAEG;AACH,MAAM,eAAe,GAAG,gBAAgB,CAAC;AAEzC;;GAEG;AACH,MAAM,mBAAmB,GAAG,oBAAoB,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,CAAC","sourcesContent":["enum GlobalObjectNames {\n // The globalThis entry is incorrectly identified as shadowing the global\n // globalThis.\n /* eslint-disable @typescript-eslint/naming-convention */\n globalThis = 'globalThis',\n global = 'global',\n self = 'self',\n window = 'window',\n /* eslint-enable @typescript-eslint/naming-convention */\n}\n\nlet _rootRealmGlobal: typeof globalThis;\nlet _rootRealmGlobalName: string;\n\n/* istanbul ignore next */\n/* eslint-disable no-negated-condition */\nif (typeof globalThis !== 'undefined') {\n _rootRealmGlobal = globalThis;\n _rootRealmGlobalName = GlobalObjectNames.globalThis;\n} else if (typeof self !== 'undefined') {\n _rootRealmGlobal = self;\n _rootRealmGlobalName = GlobalObjectNames.self;\n} else if (typeof window !== 'undefined') {\n _rootRealmGlobal = window;\n _rootRealmGlobalName = GlobalObjectNames.window;\n // eslint-disable-next-line no-restricted-globals\n} else if (typeof global !== 'undefined') {\n // eslint-disable-next-line no-restricted-globals\n _rootRealmGlobal = global;\n _rootRealmGlobalName = GlobalObjectNames.global;\n} else {\n throw new Error('Unknown realm type; failed to identify global object.');\n}\n/* eslint-enable no-negated-condition */\n\n/**\n * A platform-agnostic alias for the root realm global object.\n */\nconst rootRealmGlobal = _rootRealmGlobal;\n\n/**\n * The string literal corresponding to the name of the root realm global object.\n */\nconst rootRealmGlobalName = _rootRealmGlobalName;\n\nexport { rootRealmGlobal, rootRealmGlobalName };\n"]}
|
|
@@ -180,6 +180,8 @@ function assertIsOnProtocolRequestArguments(value) {
|
|
|
180
180
|
(0, utils_1.assertStruct)(value, exports.OnProtocolRequestArgumentsStruct, 'Invalid request params', rpc_errors_1.rpcErrors.invalidParams);
|
|
181
181
|
}
|
|
182
182
|
exports.assertIsOnProtocolRequestArguments = assertIsOnProtocolRequestArguments;
|
|
183
|
+
// TODO: Either fix this lint violation or explain why it's necessary to ignore.
|
|
184
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
183
185
|
const OkResponseStruct = (0, superstruct_1.object)({
|
|
184
186
|
id: utils_1.JsonRpcIdStruct,
|
|
185
187
|
jsonrpc: utils_1.JsonRpcVersionStruct,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.cjs","sourceRoot":"","sources":["../../src/common/validation.ts"],"names":[],"mappings":"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","sourcesContent":["import { rpcErrors } from '@metamask/rpc-errors';\nimport {\n InterfaceContextStruct,\n UserInputEventStruct,\n} from '@metamask/snaps-sdk';\nimport { HandlerType } from '@metamask/snaps-utils';\nimport type { Infer, Struct } from '@metamask/superstruct';\nimport {\n any,\n array,\n assign,\n enums,\n is,\n literal,\n nullable,\n object,\n optional,\n record,\n size,\n string,\n tuple,\n union,\n} from '@metamask/superstruct';\nimport type {\n CaipChainId,\n Json,\n JsonRpcRequest,\n JsonRpcSuccess,\n} from '@metamask/utils';\nimport {\n assertStruct,\n CaipAssetTypeStruct,\n CaipChainIdStruct,\n JsonRpcIdStruct,\n JsonRpcParamsStruct,\n JsonRpcRequestStruct,\n JsonRpcSuccessStruct,\n JsonRpcVersionStruct,\n JsonStruct,\n} from '@metamask/utils';\n\nexport const JsonRpcRequestWithoutIdStruct = object({\n jsonrpc: optional(JsonRpcVersionStruct),\n id: optional(JsonRpcIdStruct),\n method: string(),\n params: optional(JsonRpcParamsStruct),\n});\n\nexport type JsonRpcRequestWithoutId = Infer<\n typeof JsonRpcRequestWithoutIdStruct\n>;\n\nexport const EndowmentStruct = string();\nexport type Endowment = Infer<typeof EndowmentStruct>;\n\n/**\n * Check if the given value is an endowment.\n *\n * @param value - The value to check.\n * @returns Whether the value is an endowment.\n */\nexport function isEndowment(value: unknown): value is Endowment {\n return is(value, EndowmentStruct);\n}\n\n/**\n * Check if the given value is an array of endowments.\n *\n * @param value - The value to check.\n * @returns Whether the value is an array of endowments.\n */\nexport function isEndowmentsArray(value: unknown): value is Endowment[] {\n return Array.isArray(value) && value.every(isEndowment);\n}\n\nconst OkStruct = literal('OK');\n\nexport const PingRequestArgumentsStruct = optional(\n union([literal(undefined), array()]),\n);\n\nexport const TerminateRequestArgumentsStruct = union([\n literal(undefined),\n array(),\n]);\n\nexport const ExecuteSnapRequestArgumentsStruct = tuple([\n string(),\n string(),\n array(EndowmentStruct),\n]);\n\nexport const SnapRpcRequestArgumentsStruct = tuple([\n string(),\n enums(Object.values(HandlerType)),\n string(),\n assign(\n JsonRpcRequestWithoutIdStruct,\n object({\n // Previously this would validate that the parameters were valid JSON.\n // This is already validated for all messages received by the executor.\n // If that assumption changes, this should once again validate JSON.\n params: optional(record(string(), any())),\n }),\n ),\n]);\n\nexport type PingRequestArguments = Infer<typeof PingRequestArgumentsStruct>;\nexport type TerminateRequestArguments = Infer<\n typeof TerminateRequestArgumentsStruct\n>;\n\nexport type ExecuteSnapRequestArguments = Infer<\n typeof ExecuteSnapRequestArgumentsStruct\n>;\n\nexport type SnapRpcRequestArguments = Infer<\n typeof SnapRpcRequestArgumentsStruct\n>;\n\nexport type RequestArguments =\n | PingRequestArguments\n | TerminateRequestArguments\n | ExecuteSnapRequestArguments\n | SnapRpcRequestArguments;\n\nexport const OnTransactionRequestArgumentsStruct = object({\n // TODO: Improve `transaction` type.\n transaction: record(string(), JsonStruct),\n chainId: CaipChainIdStruct,\n transactionOrigin: nullable(string()),\n});\n\nexport type OnTransactionRequestArguments = Infer<\n typeof OnTransactionRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnTransactionRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnTransactionRequestArguments}\n * object.\n */\nexport function assertIsOnTransactionRequestArguments(\n value: unknown,\n): asserts value is OnTransactionRequestArguments {\n assertStruct(\n value,\n OnTransactionRequestArgumentsStruct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\nexport const OnSignatureRequestArgumentsStruct = object({\n signature: record(string(), JsonStruct),\n signatureOrigin: nullable(string()),\n});\n\nexport type OnSignatureRequestArguments = Infer<\n typeof OnSignatureRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnSignatureRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnSignatureRequestArguments}\n * object.\n */\nexport function assertIsOnSignatureRequestArguments(\n value: unknown,\n): asserts value is OnSignatureRequestArguments {\n assertStruct(\n value,\n OnSignatureRequestArgumentsStruct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\nconst baseNameLookupArgs = { chainId: CaipChainIdStruct };\nconst domainRequestStruct = object({\n ...baseNameLookupArgs,\n address: string(),\n});\nconst addressRequestStruct = object({\n ...baseNameLookupArgs,\n domain: string(),\n});\n\nexport const OnNameLookupRequestArgumentsStruct = union([\n domainRequestStruct,\n addressRequestStruct,\n]);\n\nexport type OnNameLookupRequestArguments = Infer<\n typeof OnNameLookupRequestArgumentsStruct\n>;\n\nexport type PossibleLookupRequestArgs = typeof baseNameLookupArgs & {\n address?: string;\n domain?: string;\n};\n\n/**\n * Asserts that the given value is a valid {@link OnNameLookupRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnNameLookupRequestArguments}\n * object.\n */\nexport function assertIsOnNameLookupRequestArguments(\n value: unknown,\n): asserts value is OnNameLookupRequestArguments {\n assertStruct(\n value,\n OnNameLookupRequestArgumentsStruct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\nexport const OnAssetsLookupRequestArgumentsStruct = object({\n assets: size(array(CaipAssetTypeStruct), 1, Infinity),\n});\n\nexport type OnAssetsLookupRequestArguments = Infer<\n typeof OnAssetsLookupRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnAssetsLookupRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnAssetsLookupRequestArguments}\n * object.\n */\nexport function assertIsOnAssetsLookupRequestArguments(\n value: unknown,\n): asserts value is OnAssetsLookupRequestArguments {\n assertStruct(\n value,\n OnAssetsLookupRequestArgumentsStruct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\nexport const OnAssetsConversionRequestArgumentsStruct = object({\n conversions: size(\n array(\n object({\n from: CaipAssetTypeStruct,\n to: CaipAssetTypeStruct,\n }),\n ),\n 1,\n Infinity,\n ),\n});\n\nexport type OnAssetsConversionRequestArguments = Infer<\n typeof OnAssetsConversionRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnAssetsConversionRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnNameLookupRequestArguments}\n * object.\n */\nexport function assertIsOnAssetsConversionRequestArguments(\n value: unknown,\n): asserts value is OnAssetsConversionRequestArguments {\n assertStruct(\n value,\n OnAssetsConversionRequestArgumentsStruct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\nexport const OnUserInputArgumentsStruct = object({\n id: string(),\n event: UserInputEventStruct,\n context: optional(nullable(InterfaceContextStruct)),\n});\n\nexport type OnUserInputArguments = Infer<typeof OnUserInputArgumentsStruct>;\n\n/**\n * Asserts that the given value is a valid {@link OnUserInputArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnUserInputArguments}\n * object.\n */\nexport function assertIsOnUserInputRequestArguments(\n value: unknown,\n): asserts value is OnUserInputArguments {\n assertStruct(\n value,\n OnUserInputArgumentsStruct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\nexport const OnProtocolRequestArgumentsStruct = object({\n scope: CaipChainIdStruct,\n request: JsonRpcRequestStruct,\n}) as unknown as Struct<{ scope: CaipChainId; request: JsonRpcRequest }, null>;\n\nexport type OnProtocolRequestArguments = Infer<\n typeof OnProtocolRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnProtocolRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnProtocolRequestArguments}\n * object.\n */\nexport function assertIsOnProtocolRequestArguments(\n value: unknown,\n): asserts value is OnProtocolRequestArguments {\n assertStruct(\n value,\n OnProtocolRequestArgumentsStruct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\nconst OkResponseStruct = object({\n id: JsonRpcIdStruct,\n jsonrpc: JsonRpcVersionStruct,\n result: OkStruct,\n});\n\nconst SnapRpcResponse = JsonRpcSuccessStruct;\n\nexport type OkResponse = Infer<typeof OkResponseStruct>;\nexport type SnapRpcResponse = Infer<typeof SnapRpcResponse>;\n\nexport type Response = OkResponse | SnapRpcResponse;\n\ntype RequestParams<Params extends unknown[] | undefined> =\n Params extends undefined ? [] : Params;\n\ntype RequestFunction<\n Args extends RequestArguments,\n ResponseType extends JsonRpcSuccess<Json>,\n> = (...args: RequestParams<Args>) => Promise<ResponseType['result']>;\n\nexport type Ping = RequestFunction<PingRequestArguments, OkResponse>;\nexport type Terminate = RequestFunction<TerminateRequestArguments, OkResponse>;\nexport type ExecuteSnap = RequestFunction<\n ExecuteSnapRequestArguments,\n OkResponse\n>;\nexport type SnapRpc = RequestFunction<SnapRpcRequestArguments, SnapRpcResponse>;\n"]}
|
|
1
|
+
{"version":3,"file":"validation.cjs","sourceRoot":"","sources":["../../src/common/validation.ts"],"names":[],"mappings":"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","sourcesContent":["import { rpcErrors } from '@metamask/rpc-errors';\nimport {\n InterfaceContextStruct,\n UserInputEventStruct,\n} from '@metamask/snaps-sdk';\nimport { HandlerType } from '@metamask/snaps-utils';\nimport type { Infer, Struct } from '@metamask/superstruct';\nimport {\n any,\n array,\n assign,\n enums,\n is,\n literal,\n nullable,\n object,\n optional,\n record,\n size,\n string,\n tuple,\n union,\n} from '@metamask/superstruct';\nimport type {\n CaipChainId,\n Json,\n JsonRpcRequest,\n JsonRpcSuccess,\n} from '@metamask/utils';\nimport {\n assertStruct,\n CaipAssetTypeStruct,\n CaipChainIdStruct,\n JsonRpcIdStruct,\n JsonRpcParamsStruct,\n JsonRpcRequestStruct,\n JsonRpcSuccessStruct,\n JsonRpcVersionStruct,\n JsonStruct,\n} from '@metamask/utils';\n\nexport const JsonRpcRequestWithoutIdStruct = object({\n jsonrpc: optional(JsonRpcVersionStruct),\n id: optional(JsonRpcIdStruct),\n method: string(),\n params: optional(JsonRpcParamsStruct),\n});\n\nexport type JsonRpcRequestWithoutId = Infer<\n typeof JsonRpcRequestWithoutIdStruct\n>;\n\nexport const EndowmentStruct = string();\nexport type Endowment = Infer<typeof EndowmentStruct>;\n\n/**\n * Check if the given value is an endowment.\n *\n * @param value - The value to check.\n * @returns Whether the value is an endowment.\n */\nexport function isEndowment(value: unknown): value is Endowment {\n return is(value, EndowmentStruct);\n}\n\n/**\n * Check if the given value is an array of endowments.\n *\n * @param value - The value to check.\n * @returns Whether the value is an array of endowments.\n */\nexport function isEndowmentsArray(value: unknown): value is Endowment[] {\n return Array.isArray(value) && value.every(isEndowment);\n}\n\nconst OkStruct = literal('OK');\n\nexport const PingRequestArgumentsStruct = optional(\n union([literal(undefined), array()]),\n);\n\nexport const TerminateRequestArgumentsStruct = union([\n literal(undefined),\n array(),\n]);\n\nexport const ExecuteSnapRequestArgumentsStruct = tuple([\n string(),\n string(),\n array(EndowmentStruct),\n]);\n\nexport const SnapRpcRequestArgumentsStruct = tuple([\n string(),\n enums(Object.values(HandlerType)),\n string(),\n assign(\n JsonRpcRequestWithoutIdStruct,\n object({\n // Previously this would validate that the parameters were valid JSON.\n // This is already validated for all messages received by the executor.\n // If that assumption changes, this should once again validate JSON.\n params: optional(record(string(), any())),\n }),\n ),\n]);\n\nexport type PingRequestArguments = Infer<typeof PingRequestArgumentsStruct>;\nexport type TerminateRequestArguments = Infer<\n typeof TerminateRequestArgumentsStruct\n>;\n\nexport type ExecuteSnapRequestArguments = Infer<\n typeof ExecuteSnapRequestArgumentsStruct\n>;\n\nexport type SnapRpcRequestArguments = Infer<\n typeof SnapRpcRequestArgumentsStruct\n>;\n\nexport type RequestArguments =\n | PingRequestArguments\n | TerminateRequestArguments\n | ExecuteSnapRequestArguments\n | SnapRpcRequestArguments;\n\nexport const OnTransactionRequestArgumentsStruct = object({\n // TODO: Improve `transaction` type.\n transaction: record(string(), JsonStruct),\n chainId: CaipChainIdStruct,\n transactionOrigin: nullable(string()),\n});\n\nexport type OnTransactionRequestArguments = Infer<\n typeof OnTransactionRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnTransactionRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnTransactionRequestArguments}\n * object.\n */\nexport function assertIsOnTransactionRequestArguments(\n value: unknown,\n): asserts value is OnTransactionRequestArguments {\n assertStruct(\n value,\n OnTransactionRequestArgumentsStruct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\nexport const OnSignatureRequestArgumentsStruct = object({\n signature: record(string(), JsonStruct),\n signatureOrigin: nullable(string()),\n});\n\nexport type OnSignatureRequestArguments = Infer<\n typeof OnSignatureRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnSignatureRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnSignatureRequestArguments}\n * object.\n */\nexport function assertIsOnSignatureRequestArguments(\n value: unknown,\n): asserts value is OnSignatureRequestArguments {\n assertStruct(\n value,\n OnSignatureRequestArgumentsStruct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\nconst baseNameLookupArgs = { chainId: CaipChainIdStruct };\nconst domainRequestStruct = object({\n ...baseNameLookupArgs,\n address: string(),\n});\nconst addressRequestStruct = object({\n ...baseNameLookupArgs,\n domain: string(),\n});\n\nexport const OnNameLookupRequestArgumentsStruct = union([\n domainRequestStruct,\n addressRequestStruct,\n]);\n\nexport type OnNameLookupRequestArguments = Infer<\n typeof OnNameLookupRequestArgumentsStruct\n>;\n\nexport type PossibleLookupRequestArgs = typeof baseNameLookupArgs & {\n address?: string;\n domain?: string;\n};\n\n/**\n * Asserts that the given value is a valid {@link OnNameLookupRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnNameLookupRequestArguments}\n * object.\n */\nexport function assertIsOnNameLookupRequestArguments(\n value: unknown,\n): asserts value is OnNameLookupRequestArguments {\n assertStruct(\n value,\n OnNameLookupRequestArgumentsStruct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\nexport const OnAssetsLookupRequestArgumentsStruct = object({\n assets: size(array(CaipAssetTypeStruct), 1, Infinity),\n});\n\nexport type OnAssetsLookupRequestArguments = Infer<\n typeof OnAssetsLookupRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnAssetsLookupRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnAssetsLookupRequestArguments}\n * object.\n */\nexport function assertIsOnAssetsLookupRequestArguments(\n value: unknown,\n): asserts value is OnAssetsLookupRequestArguments {\n assertStruct(\n value,\n OnAssetsLookupRequestArgumentsStruct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\nexport const OnAssetsConversionRequestArgumentsStruct = object({\n conversions: size(\n array(\n object({\n from: CaipAssetTypeStruct,\n to: CaipAssetTypeStruct,\n }),\n ),\n 1,\n Infinity,\n ),\n});\n\nexport type OnAssetsConversionRequestArguments = Infer<\n typeof OnAssetsConversionRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnAssetsConversionRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnNameLookupRequestArguments}\n * object.\n */\nexport function assertIsOnAssetsConversionRequestArguments(\n value: unknown,\n): asserts value is OnAssetsConversionRequestArguments {\n assertStruct(\n value,\n OnAssetsConversionRequestArgumentsStruct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\nexport const OnUserInputArgumentsStruct = object({\n id: string(),\n event: UserInputEventStruct,\n context: optional(nullable(InterfaceContextStruct)),\n});\n\nexport type OnUserInputArguments = Infer<typeof OnUserInputArgumentsStruct>;\n\n/**\n * Asserts that the given value is a valid {@link OnUserInputArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnUserInputArguments}\n * object.\n */\nexport function assertIsOnUserInputRequestArguments(\n value: unknown,\n): asserts value is OnUserInputArguments {\n assertStruct(\n value,\n OnUserInputArgumentsStruct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\nexport const OnProtocolRequestArgumentsStruct = object({\n scope: CaipChainIdStruct,\n request: JsonRpcRequestStruct,\n}) as unknown as Struct<{ scope: CaipChainId; request: JsonRpcRequest }, null>;\n\nexport type OnProtocolRequestArguments = Infer<\n typeof OnProtocolRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnProtocolRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnProtocolRequestArguments}\n * object.\n */\nexport function assertIsOnProtocolRequestArguments(\n value: unknown,\n): asserts value is OnProtocolRequestArguments {\n assertStruct(\n value,\n OnProtocolRequestArgumentsStruct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\n// TODO: Either fix this lint violation or explain why it's necessary to ignore.\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst OkResponseStruct = object({\n id: JsonRpcIdStruct,\n jsonrpc: JsonRpcVersionStruct,\n result: OkStruct,\n});\n\nconst SnapRpcResponse = JsonRpcSuccessStruct;\n\nexport type OkResponse = Infer<typeof OkResponseStruct>;\nexport type SnapRpcResponse = Infer<typeof SnapRpcResponse>;\n\nexport type Response = OkResponse | SnapRpcResponse;\n\ntype RequestParams<Params extends unknown[] | undefined> =\n Params extends undefined ? [] : Params;\n\ntype RequestFunction<\n Args extends RequestArguments,\n ResponseType extends JsonRpcSuccess<Json>,\n> = (...args: RequestParams<Args>) => Promise<ResponseType['result']>;\n\nexport type Ping = RequestFunction<PingRequestArguments, OkResponse>;\nexport type Terminate = RequestFunction<TerminateRequestArguments, OkResponse>;\nexport type ExecuteSnap = RequestFunction<\n ExecuteSnapRequestArguments,\n OkResponse\n>;\nexport type SnapRpc = RequestFunction<SnapRpcRequestArguments, SnapRpcResponse>;\n"]}
|
|
@@ -158,11 +158,19 @@ export declare const OnUserInputArgumentsStruct: Struct<{
|
|
|
158
158
|
size: number;
|
|
159
159
|
contentType: string;
|
|
160
160
|
contents: string;
|
|
161
|
+
} | {
|
|
162
|
+
symbol: string;
|
|
163
|
+
name: string;
|
|
164
|
+
asset: `${string}:${string}/${string}:${string}`;
|
|
161
165
|
} | null>;
|
|
162
166
|
} | {
|
|
163
167
|
type: import("@metamask/snaps-sdk").UserInputEventType.InputChangeEvent;
|
|
164
168
|
name: string;
|
|
165
|
-
value: string | boolean
|
|
169
|
+
value: string | boolean | {
|
|
170
|
+
symbol: string;
|
|
171
|
+
name: string;
|
|
172
|
+
asset: `${string}:${string}/${string}:${string}`;
|
|
173
|
+
};
|
|
166
174
|
} | {
|
|
167
175
|
type: import("@metamask/snaps-sdk").UserInputEventType.FileUploadEvent;
|
|
168
176
|
file: {
|
|
@@ -187,11 +195,19 @@ export declare const OnUserInputArgumentsStruct: Struct<{
|
|
|
187
195
|
size: number;
|
|
188
196
|
contentType: string;
|
|
189
197
|
contents: string;
|
|
198
|
+
} | {
|
|
199
|
+
symbol: string;
|
|
200
|
+
name: string;
|
|
201
|
+
asset: `${string}:${string}/${string}:${string}`;
|
|
190
202
|
} | null>;
|
|
191
203
|
} | {
|
|
192
204
|
type: import("@metamask/snaps-sdk").UserInputEventType.InputChangeEvent;
|
|
193
205
|
name: string;
|
|
194
|
-
value: string | boolean
|
|
206
|
+
value: string | boolean | {
|
|
207
|
+
symbol: string;
|
|
208
|
+
name: string;
|
|
209
|
+
asset: `${string}:${string}/${string}:${string}`;
|
|
210
|
+
};
|
|
195
211
|
} | {
|
|
196
212
|
type: import("@metamask/snaps-sdk").UserInputEventType.FileUploadEvent;
|
|
197
213
|
file: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.cts","sourceRoot":"","sources":["../../src/common/validation.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"validation.d.cts","sourceRoot":"","sources":["../../src/common/validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -158,11 +158,19 @@ export declare const OnUserInputArgumentsStruct: Struct<{
|
|
|
158
158
|
size: number;
|
|
159
159
|
contentType: string;
|
|
160
160
|
contents: string;
|
|
161
|
+
} | {
|
|
162
|
+
symbol: string;
|
|
163
|
+
name: string;
|
|
164
|
+
asset: `${string}:${string}/${string}:${string}`;
|
|
161
165
|
} | null>;
|
|
162
166
|
} | {
|
|
163
167
|
type: import("@metamask/snaps-sdk").UserInputEventType.InputChangeEvent;
|
|
164
168
|
name: string;
|
|
165
|
-
value: string | boolean
|
|
169
|
+
value: string | boolean | {
|
|
170
|
+
symbol: string;
|
|
171
|
+
name: string;
|
|
172
|
+
asset: `${string}:${string}/${string}:${string}`;
|
|
173
|
+
};
|
|
166
174
|
} | {
|
|
167
175
|
type: import("@metamask/snaps-sdk").UserInputEventType.FileUploadEvent;
|
|
168
176
|
file: {
|
|
@@ -187,11 +195,19 @@ export declare const OnUserInputArgumentsStruct: Struct<{
|
|
|
187
195
|
size: number;
|
|
188
196
|
contentType: string;
|
|
189
197
|
contents: string;
|
|
198
|
+
} | {
|
|
199
|
+
symbol: string;
|
|
200
|
+
name: string;
|
|
201
|
+
asset: `${string}:${string}/${string}:${string}`;
|
|
190
202
|
} | null>;
|
|
191
203
|
} | {
|
|
192
204
|
type: import("@metamask/snaps-sdk").UserInputEventType.InputChangeEvent;
|
|
193
205
|
name: string;
|
|
194
|
-
value: string | boolean
|
|
206
|
+
value: string | boolean | {
|
|
207
|
+
symbol: string;
|
|
208
|
+
name: string;
|
|
209
|
+
asset: `${string}:${string}/${string}:${string}`;
|
|
210
|
+
};
|
|
195
211
|
} | {
|
|
196
212
|
type: import("@metamask/snaps-sdk").UserInputEventType.FileUploadEvent;
|
|
197
213
|
file: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.mts","sourceRoot":"","sources":["../../src/common/validation.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"validation.d.mts","sourceRoot":"","sources":["../../src/common/validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -168,6 +168,8 @@ export const OnProtocolRequestArgumentsStruct = object({
|
|
|
168
168
|
export function assertIsOnProtocolRequestArguments(value) {
|
|
169
169
|
assertStruct(value, OnProtocolRequestArgumentsStruct, 'Invalid request params', rpcErrors.invalidParams);
|
|
170
170
|
}
|
|
171
|
+
// TODO: Either fix this lint violation or explain why it's necessary to ignore.
|
|
172
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
171
173
|
const OkResponseStruct = object({
|
|
172
174
|
id: JsonRpcIdStruct,
|
|
173
175
|
jsonrpc: JsonRpcVersionStruct,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.mjs","sourceRoot":"","sources":["../../src/common/validation.ts"],"names":[],"mappings":"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","sourcesContent":["import { rpcErrors } from '@metamask/rpc-errors';\nimport {\n InterfaceContextStruct,\n UserInputEventStruct,\n} from '@metamask/snaps-sdk';\nimport { HandlerType } from '@metamask/snaps-utils';\nimport type { Infer, Struct } from '@metamask/superstruct';\nimport {\n any,\n array,\n assign,\n enums,\n is,\n literal,\n nullable,\n object,\n optional,\n record,\n size,\n string,\n tuple,\n union,\n} from '@metamask/superstruct';\nimport type {\n CaipChainId,\n Json,\n JsonRpcRequest,\n JsonRpcSuccess,\n} from '@metamask/utils';\nimport {\n assertStruct,\n CaipAssetTypeStruct,\n CaipChainIdStruct,\n JsonRpcIdStruct,\n JsonRpcParamsStruct,\n JsonRpcRequestStruct,\n JsonRpcSuccessStruct,\n JsonRpcVersionStruct,\n JsonStruct,\n} from '@metamask/utils';\n\nexport const JsonRpcRequestWithoutIdStruct = object({\n jsonrpc: optional(JsonRpcVersionStruct),\n id: optional(JsonRpcIdStruct),\n method: string(),\n params: optional(JsonRpcParamsStruct),\n});\n\nexport type JsonRpcRequestWithoutId = Infer<\n typeof JsonRpcRequestWithoutIdStruct\n>;\n\nexport const EndowmentStruct = string();\nexport type Endowment = Infer<typeof EndowmentStruct>;\n\n/**\n * Check if the given value is an endowment.\n *\n * @param value - The value to check.\n * @returns Whether the value is an endowment.\n */\nexport function isEndowment(value: unknown): value is Endowment {\n return is(value, EndowmentStruct);\n}\n\n/**\n * Check if the given value is an array of endowments.\n *\n * @param value - The value to check.\n * @returns Whether the value is an array of endowments.\n */\nexport function isEndowmentsArray(value: unknown): value is Endowment[] {\n return Array.isArray(value) && value.every(isEndowment);\n}\n\nconst OkStruct = literal('OK');\n\nexport const PingRequestArgumentsStruct = optional(\n union([literal(undefined), array()]),\n);\n\nexport const TerminateRequestArgumentsStruct = union([\n literal(undefined),\n array(),\n]);\n\nexport const ExecuteSnapRequestArgumentsStruct = tuple([\n string(),\n string(),\n array(EndowmentStruct),\n]);\n\nexport const SnapRpcRequestArgumentsStruct = tuple([\n string(),\n enums(Object.values(HandlerType)),\n string(),\n assign(\n JsonRpcRequestWithoutIdStruct,\n object({\n // Previously this would validate that the parameters were valid JSON.\n // This is already validated for all messages received by the executor.\n // If that assumption changes, this should once again validate JSON.\n params: optional(record(string(), any())),\n }),\n ),\n]);\n\nexport type PingRequestArguments = Infer<typeof PingRequestArgumentsStruct>;\nexport type TerminateRequestArguments = Infer<\n typeof TerminateRequestArgumentsStruct\n>;\n\nexport type ExecuteSnapRequestArguments = Infer<\n typeof ExecuteSnapRequestArgumentsStruct\n>;\n\nexport type SnapRpcRequestArguments = Infer<\n typeof SnapRpcRequestArgumentsStruct\n>;\n\nexport type RequestArguments =\n | PingRequestArguments\n | TerminateRequestArguments\n | ExecuteSnapRequestArguments\n | SnapRpcRequestArguments;\n\nexport const OnTransactionRequestArgumentsStruct = object({\n // TODO: Improve `transaction` type.\n transaction: record(string(), JsonStruct),\n chainId: CaipChainIdStruct,\n transactionOrigin: nullable(string()),\n});\n\nexport type OnTransactionRequestArguments = Infer<\n typeof OnTransactionRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnTransactionRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnTransactionRequestArguments}\n * object.\n */\nexport function assertIsOnTransactionRequestArguments(\n value: unknown,\n): asserts value is OnTransactionRequestArguments {\n assertStruct(\n value,\n OnTransactionRequestArgumentsStruct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\nexport const OnSignatureRequestArgumentsStruct = object({\n signature: record(string(), JsonStruct),\n signatureOrigin: nullable(string()),\n});\n\nexport type OnSignatureRequestArguments = Infer<\n typeof OnSignatureRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnSignatureRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnSignatureRequestArguments}\n * object.\n */\nexport function assertIsOnSignatureRequestArguments(\n value: unknown,\n): asserts value is OnSignatureRequestArguments {\n assertStruct(\n value,\n OnSignatureRequestArgumentsStruct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\nconst baseNameLookupArgs = { chainId: CaipChainIdStruct };\nconst domainRequestStruct = object({\n ...baseNameLookupArgs,\n address: string(),\n});\nconst addressRequestStruct = object({\n ...baseNameLookupArgs,\n domain: string(),\n});\n\nexport const OnNameLookupRequestArgumentsStruct = union([\n domainRequestStruct,\n addressRequestStruct,\n]);\n\nexport type OnNameLookupRequestArguments = Infer<\n typeof OnNameLookupRequestArgumentsStruct\n>;\n\nexport type PossibleLookupRequestArgs = typeof baseNameLookupArgs & {\n address?: string;\n domain?: string;\n};\n\n/**\n * Asserts that the given value is a valid {@link OnNameLookupRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnNameLookupRequestArguments}\n * object.\n */\nexport function assertIsOnNameLookupRequestArguments(\n value: unknown,\n): asserts value is OnNameLookupRequestArguments {\n assertStruct(\n value,\n OnNameLookupRequestArgumentsStruct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\nexport const OnAssetsLookupRequestArgumentsStruct = object({\n assets: size(array(CaipAssetTypeStruct), 1, Infinity),\n});\n\nexport type OnAssetsLookupRequestArguments = Infer<\n typeof OnAssetsLookupRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnAssetsLookupRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnAssetsLookupRequestArguments}\n * object.\n */\nexport function assertIsOnAssetsLookupRequestArguments(\n value: unknown,\n): asserts value is OnAssetsLookupRequestArguments {\n assertStruct(\n value,\n OnAssetsLookupRequestArgumentsStruct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\nexport const OnAssetsConversionRequestArgumentsStruct = object({\n conversions: size(\n array(\n object({\n from: CaipAssetTypeStruct,\n to: CaipAssetTypeStruct,\n }),\n ),\n 1,\n Infinity,\n ),\n});\n\nexport type OnAssetsConversionRequestArguments = Infer<\n typeof OnAssetsConversionRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnAssetsConversionRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnNameLookupRequestArguments}\n * object.\n */\nexport function assertIsOnAssetsConversionRequestArguments(\n value: unknown,\n): asserts value is OnAssetsConversionRequestArguments {\n assertStruct(\n value,\n OnAssetsConversionRequestArgumentsStruct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\nexport const OnUserInputArgumentsStruct = object({\n id: string(),\n event: UserInputEventStruct,\n context: optional(nullable(InterfaceContextStruct)),\n});\n\nexport type OnUserInputArguments = Infer<typeof OnUserInputArgumentsStruct>;\n\n/**\n * Asserts that the given value is a valid {@link OnUserInputArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnUserInputArguments}\n * object.\n */\nexport function assertIsOnUserInputRequestArguments(\n value: unknown,\n): asserts value is OnUserInputArguments {\n assertStruct(\n value,\n OnUserInputArgumentsStruct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\nexport const OnProtocolRequestArgumentsStruct = object({\n scope: CaipChainIdStruct,\n request: JsonRpcRequestStruct,\n}) as unknown as Struct<{ scope: CaipChainId; request: JsonRpcRequest }, null>;\n\nexport type OnProtocolRequestArguments = Infer<\n typeof OnProtocolRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnProtocolRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnProtocolRequestArguments}\n * object.\n */\nexport function assertIsOnProtocolRequestArguments(\n value: unknown,\n): asserts value is OnProtocolRequestArguments {\n assertStruct(\n value,\n OnProtocolRequestArgumentsStruct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\nconst OkResponseStruct = object({\n id: JsonRpcIdStruct,\n jsonrpc: JsonRpcVersionStruct,\n result: OkStruct,\n});\n\nconst SnapRpcResponse = JsonRpcSuccessStruct;\n\nexport type OkResponse = Infer<typeof OkResponseStruct>;\nexport type SnapRpcResponse = Infer<typeof SnapRpcResponse>;\n\nexport type Response = OkResponse | SnapRpcResponse;\n\ntype RequestParams<Params extends unknown[] | undefined> =\n Params extends undefined ? [] : Params;\n\ntype RequestFunction<\n Args extends RequestArguments,\n ResponseType extends JsonRpcSuccess<Json>,\n> = (...args: RequestParams<Args>) => Promise<ResponseType['result']>;\n\nexport type Ping = RequestFunction<PingRequestArguments, OkResponse>;\nexport type Terminate = RequestFunction<TerminateRequestArguments, OkResponse>;\nexport type ExecuteSnap = RequestFunction<\n ExecuteSnapRequestArguments,\n OkResponse\n>;\nexport type SnapRpc = RequestFunction<SnapRpcRequestArguments, SnapRpcResponse>;\n"]}
|
|
1
|
+
{"version":3,"file":"validation.mjs","sourceRoot":"","sources":["../../src/common/validation.ts"],"names":[],"mappings":"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","sourcesContent":["import { rpcErrors } from '@metamask/rpc-errors';\nimport {\n InterfaceContextStruct,\n UserInputEventStruct,\n} from '@metamask/snaps-sdk';\nimport { HandlerType } from '@metamask/snaps-utils';\nimport type { Infer, Struct } from '@metamask/superstruct';\nimport {\n any,\n array,\n assign,\n enums,\n is,\n literal,\n nullable,\n object,\n optional,\n record,\n size,\n string,\n tuple,\n union,\n} from '@metamask/superstruct';\nimport type {\n CaipChainId,\n Json,\n JsonRpcRequest,\n JsonRpcSuccess,\n} from '@metamask/utils';\nimport {\n assertStruct,\n CaipAssetTypeStruct,\n CaipChainIdStruct,\n JsonRpcIdStruct,\n JsonRpcParamsStruct,\n JsonRpcRequestStruct,\n JsonRpcSuccessStruct,\n JsonRpcVersionStruct,\n JsonStruct,\n} from '@metamask/utils';\n\nexport const JsonRpcRequestWithoutIdStruct = object({\n jsonrpc: optional(JsonRpcVersionStruct),\n id: optional(JsonRpcIdStruct),\n method: string(),\n params: optional(JsonRpcParamsStruct),\n});\n\nexport type JsonRpcRequestWithoutId = Infer<\n typeof JsonRpcRequestWithoutIdStruct\n>;\n\nexport const EndowmentStruct = string();\nexport type Endowment = Infer<typeof EndowmentStruct>;\n\n/**\n * Check if the given value is an endowment.\n *\n * @param value - The value to check.\n * @returns Whether the value is an endowment.\n */\nexport function isEndowment(value: unknown): value is Endowment {\n return is(value, EndowmentStruct);\n}\n\n/**\n * Check if the given value is an array of endowments.\n *\n * @param value - The value to check.\n * @returns Whether the value is an array of endowments.\n */\nexport function isEndowmentsArray(value: unknown): value is Endowment[] {\n return Array.isArray(value) && value.every(isEndowment);\n}\n\nconst OkStruct = literal('OK');\n\nexport const PingRequestArgumentsStruct = optional(\n union([literal(undefined), array()]),\n);\n\nexport const TerminateRequestArgumentsStruct = union([\n literal(undefined),\n array(),\n]);\n\nexport const ExecuteSnapRequestArgumentsStruct = tuple([\n string(),\n string(),\n array(EndowmentStruct),\n]);\n\nexport const SnapRpcRequestArgumentsStruct = tuple([\n string(),\n enums(Object.values(HandlerType)),\n string(),\n assign(\n JsonRpcRequestWithoutIdStruct,\n object({\n // Previously this would validate that the parameters were valid JSON.\n // This is already validated for all messages received by the executor.\n // If that assumption changes, this should once again validate JSON.\n params: optional(record(string(), any())),\n }),\n ),\n]);\n\nexport type PingRequestArguments = Infer<typeof PingRequestArgumentsStruct>;\nexport type TerminateRequestArguments = Infer<\n typeof TerminateRequestArgumentsStruct\n>;\n\nexport type ExecuteSnapRequestArguments = Infer<\n typeof ExecuteSnapRequestArgumentsStruct\n>;\n\nexport type SnapRpcRequestArguments = Infer<\n typeof SnapRpcRequestArgumentsStruct\n>;\n\nexport type RequestArguments =\n | PingRequestArguments\n | TerminateRequestArguments\n | ExecuteSnapRequestArguments\n | SnapRpcRequestArguments;\n\nexport const OnTransactionRequestArgumentsStruct = object({\n // TODO: Improve `transaction` type.\n transaction: record(string(), JsonStruct),\n chainId: CaipChainIdStruct,\n transactionOrigin: nullable(string()),\n});\n\nexport type OnTransactionRequestArguments = Infer<\n typeof OnTransactionRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnTransactionRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnTransactionRequestArguments}\n * object.\n */\nexport function assertIsOnTransactionRequestArguments(\n value: unknown,\n): asserts value is OnTransactionRequestArguments {\n assertStruct(\n value,\n OnTransactionRequestArgumentsStruct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\nexport const OnSignatureRequestArgumentsStruct = object({\n signature: record(string(), JsonStruct),\n signatureOrigin: nullable(string()),\n});\n\nexport type OnSignatureRequestArguments = Infer<\n typeof OnSignatureRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnSignatureRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnSignatureRequestArguments}\n * object.\n */\nexport function assertIsOnSignatureRequestArguments(\n value: unknown,\n): asserts value is OnSignatureRequestArguments {\n assertStruct(\n value,\n OnSignatureRequestArgumentsStruct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\nconst baseNameLookupArgs = { chainId: CaipChainIdStruct };\nconst domainRequestStruct = object({\n ...baseNameLookupArgs,\n address: string(),\n});\nconst addressRequestStruct = object({\n ...baseNameLookupArgs,\n domain: string(),\n});\n\nexport const OnNameLookupRequestArgumentsStruct = union([\n domainRequestStruct,\n addressRequestStruct,\n]);\n\nexport type OnNameLookupRequestArguments = Infer<\n typeof OnNameLookupRequestArgumentsStruct\n>;\n\nexport type PossibleLookupRequestArgs = typeof baseNameLookupArgs & {\n address?: string;\n domain?: string;\n};\n\n/**\n * Asserts that the given value is a valid {@link OnNameLookupRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnNameLookupRequestArguments}\n * object.\n */\nexport function assertIsOnNameLookupRequestArguments(\n value: unknown,\n): asserts value is OnNameLookupRequestArguments {\n assertStruct(\n value,\n OnNameLookupRequestArgumentsStruct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\nexport const OnAssetsLookupRequestArgumentsStruct = object({\n assets: size(array(CaipAssetTypeStruct), 1, Infinity),\n});\n\nexport type OnAssetsLookupRequestArguments = Infer<\n typeof OnAssetsLookupRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnAssetsLookupRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnAssetsLookupRequestArguments}\n * object.\n */\nexport function assertIsOnAssetsLookupRequestArguments(\n value: unknown,\n): asserts value is OnAssetsLookupRequestArguments {\n assertStruct(\n value,\n OnAssetsLookupRequestArgumentsStruct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\nexport const OnAssetsConversionRequestArgumentsStruct = object({\n conversions: size(\n array(\n object({\n from: CaipAssetTypeStruct,\n to: CaipAssetTypeStruct,\n }),\n ),\n 1,\n Infinity,\n ),\n});\n\nexport type OnAssetsConversionRequestArguments = Infer<\n typeof OnAssetsConversionRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnAssetsConversionRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnNameLookupRequestArguments}\n * object.\n */\nexport function assertIsOnAssetsConversionRequestArguments(\n value: unknown,\n): asserts value is OnAssetsConversionRequestArguments {\n assertStruct(\n value,\n OnAssetsConversionRequestArgumentsStruct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\nexport const OnUserInputArgumentsStruct = object({\n id: string(),\n event: UserInputEventStruct,\n context: optional(nullable(InterfaceContextStruct)),\n});\n\nexport type OnUserInputArguments = Infer<typeof OnUserInputArgumentsStruct>;\n\n/**\n * Asserts that the given value is a valid {@link OnUserInputArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnUserInputArguments}\n * object.\n */\nexport function assertIsOnUserInputRequestArguments(\n value: unknown,\n): asserts value is OnUserInputArguments {\n assertStruct(\n value,\n OnUserInputArgumentsStruct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\nexport const OnProtocolRequestArgumentsStruct = object({\n scope: CaipChainIdStruct,\n request: JsonRpcRequestStruct,\n}) as unknown as Struct<{ scope: CaipChainId; request: JsonRpcRequest }, null>;\n\nexport type OnProtocolRequestArguments = Infer<\n typeof OnProtocolRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnProtocolRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnProtocolRequestArguments}\n * object.\n */\nexport function assertIsOnProtocolRequestArguments(\n value: unknown,\n): asserts value is OnProtocolRequestArguments {\n assertStruct(\n value,\n OnProtocolRequestArgumentsStruct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\n// TODO: Either fix this lint violation or explain why it's necessary to ignore.\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst OkResponseStruct = object({\n id: JsonRpcIdStruct,\n jsonrpc: JsonRpcVersionStruct,\n result: OkStruct,\n});\n\nconst SnapRpcResponse = JsonRpcSuccessStruct;\n\nexport type OkResponse = Infer<typeof OkResponseStruct>;\nexport type SnapRpcResponse = Infer<typeof SnapRpcResponse>;\n\nexport type Response = OkResponse | SnapRpcResponse;\n\ntype RequestParams<Params extends unknown[] | undefined> =\n Params extends undefined ? [] : Params;\n\ntype RequestFunction<\n Args extends RequestArguments,\n ResponseType extends JsonRpcSuccess<Json>,\n> = (...args: RequestParams<Args>) => Promise<ResponseType['result']>;\n\nexport type Ping = RequestFunction<PingRequestArguments, OkResponse>;\nexport type Terminate = RequestFunction<TerminateRequestArguments, OkResponse>;\nexport type ExecuteSnap = RequestFunction<\n ExecuteSnapRequestArguments,\n OkResponse\n>;\nexport type SnapRpc = RequestFunction<SnapRpcRequestArguments, SnapRpcResponse>;\n"]}
|
package/dist/iframe/index.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const IFrameSnapExecutor_1 = require("./IFrameSnapExecutor.cjs");
|
|
3
4
|
const lockdown_events_1 = require("../common/lockdown/lockdown-events.cjs");
|
|
4
5
|
const lockdown_more_1 = require("../common/lockdown/lockdown-more.cjs");
|
|
5
|
-
const IFrameSnapExecutor_1 = require("./IFrameSnapExecutor.cjs");
|
|
6
6
|
// Lockdown is already applied in LavaMoat
|
|
7
7
|
(0, lockdown_more_1.executeLockdownMore)();
|
|
8
8
|
(0, lockdown_events_1.executeLockdownEvents)();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../src/iframe/index.ts"],"names":[],"mappings":";;AAAA,4EAA2E;AAC3E,wEAAuE;
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../src/iframe/index.ts"],"names":[],"mappings":";;AAAA,iEAA0D;AAC1D,4EAA2E;AAC3E,wEAAuE;AAEvE,0CAA0C;AAC1C,IAAA,mCAAmB,GAAE,CAAC;AACtB,IAAA,uCAAqB,GAAE,CAAC;AAExB,uCAAkB,CAAC,UAAU,EAAE,CAAC","sourcesContent":["import { IFrameSnapExecutor } from './IFrameSnapExecutor';\nimport { executeLockdownEvents } from '../common/lockdown/lockdown-events';\nimport { executeLockdownMore } from '../common/lockdown/lockdown-more';\n\n// Lockdown is already applied in LavaMoat\nexecuteLockdownMore();\nexecuteLockdownEvents();\n\nIFrameSnapExecutor.initialize();\n"]}
|
package/dist/iframe/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { IFrameSnapExecutor } from "./IFrameSnapExecutor.mjs";
|
|
1
2
|
import { executeLockdownEvents } from "../common/lockdown/lockdown-events.mjs";
|
|
2
3
|
import { executeLockdownMore } from "../common/lockdown/lockdown-more.mjs";
|
|
3
|
-
import { IFrameSnapExecutor } from "./IFrameSnapExecutor.mjs";
|
|
4
4
|
// Lockdown is already applied in LavaMoat
|
|
5
5
|
executeLockdownMore();
|
|
6
6
|
executeLockdownEvents();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/iframe/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/iframe/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,iCAA6B;AAC1D,OAAO,EAAE,qBAAqB,EAAE,+CAA2C;AAC3E,OAAO,EAAE,mBAAmB,EAAE,6CAAyC;AAEvE,0CAA0C;AAC1C,mBAAmB,EAAE,CAAC;AACtB,qBAAqB,EAAE,CAAC;AAExB,kBAAkB,CAAC,UAAU,EAAE,CAAC","sourcesContent":["import { IFrameSnapExecutor } from './IFrameSnapExecutor';\nimport { executeLockdownEvents } from '../common/lockdown/lockdown-events';\nimport { executeLockdownMore } from '../common/lockdown/lockdown-more';\n\n// Lockdown is already applied in LavaMoat\nexecuteLockdownMore();\nexecuteLockdownEvents();\n\nIFrameSnapExecutor.initialize();\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const lockdown_more_1 = require("../common/lockdown/lockdown-more.cjs");
|
|
4
3
|
const ChildProcessSnapExecutor_1 = require("./ChildProcessSnapExecutor.cjs");
|
|
4
|
+
const lockdown_more_1 = require("../common/lockdown/lockdown-more.cjs");
|
|
5
5
|
// Lockdown is already applied in LavaMoat
|
|
6
6
|
(0, lockdown_more_1.executeLockdownMore)();
|
|
7
7
|
ChildProcessSnapExecutor_1.ChildProcessSnapExecutor.initialize();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../src/node-process/index.ts"],"names":[],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../src/node-process/index.ts"],"names":[],"mappings":";;AAAA,6EAAsE;AACtE,wEAAuE;AAEvE,0CAA0C;AAC1C,IAAA,mCAAmB,GAAE,CAAC;AAEtB,mDAAwB,CAAC,UAAU,EAAE,CAAC","sourcesContent":["import { ChildProcessSnapExecutor } from './ChildProcessSnapExecutor';\nimport { executeLockdownMore } from '../common/lockdown/lockdown-more';\n\n// Lockdown is already applied in LavaMoat\nexecuteLockdownMore();\n\nChildProcessSnapExecutor.initialize();\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { executeLockdownMore } from "../common/lockdown/lockdown-more.mjs";
|
|
2
1
|
import { ChildProcessSnapExecutor } from "./ChildProcessSnapExecutor.mjs";
|
|
2
|
+
import { executeLockdownMore } from "../common/lockdown/lockdown-more.mjs";
|
|
3
3
|
// Lockdown is already applied in LavaMoat
|
|
4
4
|
executeLockdownMore();
|
|
5
5
|
ChildProcessSnapExecutor.initialize();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/node-process/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/node-process/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,uCAAmC;AACtE,OAAO,EAAE,mBAAmB,EAAE,6CAAyC;AAEvE,0CAA0C;AAC1C,mBAAmB,EAAE,CAAC;AAEtB,wBAAwB,CAAC,UAAU,EAAE,CAAC","sourcesContent":["import { ChildProcessSnapExecutor } from './ChildProcessSnapExecutor';\nimport { executeLockdownMore } from '../common/lockdown/lockdown-more';\n\n// Lockdown is already applied in LavaMoat\nexecuteLockdownMore();\n\nChildProcessSnapExecutor.initialize();\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const lockdown_more_1 = require("../common/lockdown/lockdown-more.cjs");
|
|
4
3
|
const ThreadSnapExecutor_1 = require("./ThreadSnapExecutor.cjs");
|
|
4
|
+
const lockdown_more_1 = require("../common/lockdown/lockdown-more.cjs");
|
|
5
5
|
// Lockdown is already applied in LavaMoat
|
|
6
6
|
(0, lockdown_more_1.executeLockdownMore)();
|
|
7
7
|
ThreadSnapExecutor_1.ThreadSnapExecutor.initialize();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../src/node-thread/index.ts"],"names":[],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../src/node-thread/index.ts"],"names":[],"mappings":";;AAAA,iEAA0D;AAC1D,wEAAuE;AAEvE,0CAA0C;AAC1C,IAAA,mCAAmB,GAAE,CAAC;AAEtB,uCAAkB,CAAC,UAAU,EAAE,CAAC","sourcesContent":["import { ThreadSnapExecutor } from './ThreadSnapExecutor';\nimport { executeLockdownMore } from '../common/lockdown/lockdown-more';\n\n// Lockdown is already applied in LavaMoat\nexecuteLockdownMore();\n\nThreadSnapExecutor.initialize();\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { executeLockdownMore } from "../common/lockdown/lockdown-more.mjs";
|
|
2
1
|
import { ThreadSnapExecutor } from "./ThreadSnapExecutor.mjs";
|
|
2
|
+
import { executeLockdownMore } from "../common/lockdown/lockdown-more.mjs";
|
|
3
3
|
// Lockdown is already applied in LavaMoat
|
|
4
4
|
executeLockdownMore();
|
|
5
5
|
ThreadSnapExecutor.initialize();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/node-thread/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/node-thread/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,iCAA6B;AAC1D,OAAO,EAAE,mBAAmB,EAAE,6CAAyC;AAEvE,0CAA0C;AAC1C,mBAAmB,EAAE,CAAC;AAEtB,kBAAkB,CAAC,UAAU,EAAE,CAAC","sourcesContent":["import { ThreadSnapExecutor } from './ThreadSnapExecutor';\nimport { executeLockdownMore } from '../common/lockdown/lockdown-more';\n\n// Lockdown is already applied in LavaMoat\nexecuteLockdownMore();\n\nThreadSnapExecutor.initialize();\n"]}
|
|
@@ -17,10 +17,9 @@ var _ProxySnapExecutor_instances, _ProxySnapExecutor_stream, _ProxySnapExecutor_
|
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.ProxySnapExecutor = void 0;
|
|
19
19
|
const post_message_stream_1 = require("@metamask/post-message-stream");
|
|
20
|
-
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
21
|
-
const package_json_1 = __importDefault(require("@metamask/snaps-execution-environments/package.json"));
|
|
22
20
|
const snaps_utils_1 = require("@metamask/snaps-utils");
|
|
23
21
|
const utils_1 = require("@metamask/utils");
|
|
22
|
+
const package_json_1 = __importDefault(require("@metamask/snaps-execution-environments/package.json"));
|
|
24
23
|
const IFRAME_URL = `https://execution.metamask.io/iframe/${package_json_1.default.version}/index.html`;
|
|
25
24
|
/**
|
|
26
25
|
* A "proxy" snap executor that uses a level of indirection to execute snaps.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProxySnapExecutor.cjs","sourceRoot":"","sources":["../../src/proxy/ProxySnapExecutor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AACA,uEAAwE;AACxE,
|
|
1
|
+
{"version":3,"file":"ProxySnapExecutor.cjs","sourceRoot":"","sources":["../../src/proxy/ProxySnapExecutor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AACA,uEAAwE;AACxE,uDAA+D;AAE/D,2CAAyC;AAEzC,uGAA8E;AAQ9E,MAAM,UAAU,GAAG,wCAAwC,sBAAW,CAAC,OAAO,aAAa,CAAC;AAE5F;;;;;;;;;;;;GAYG;AACH,MAAa,iBAAiB;IAO5B;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU,CAAC,MAA6B,EAAE,QAAQ,GAAG,UAAU;QACpE,OAAO,IAAI,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,YAAY,MAA6B,EAAE,QAAgB;;QAlBlD,4CAA+B;QAE/B,8CAAkB;QAElB,SAAI,GAAgC,EAAE,CAAC;QAe9C,uBAAA,IAAI,6BAAW,MAAM,MAAA,CAAC;QACtB,uBAAA,IAAI,iCAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,uBAAA,IAAI,+DAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,uBAAA,IAAI,+BAAa,QAAQ,MAAA,CAAC;IAC5B,CAAC;CA+EF;AAtGD,8CAsGC;qMApES,IAA6C;IACnD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAEtC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,qEAAqE;QACrE,mEAAmE;QACnE,kDAAkD;QAClD,uBAAA,IAAI,sEAAe,MAAnB,IAAI,EAAgB,KAAK,CAAC;aACvB,IAAI,CAAC,GAAG,EAAE;YACT,uBAAA,IAAI,+DAAQ,MAAZ,IAAI,EAAS,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,IAAA,sBAAQ,EAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEL,OAAO;IACT,CAAC;IAED,2EAA2E;IAC3E,uDAAuD;IACvD,IAAI,OAAO,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QACtC,uBAAA,IAAI,qEAAc,MAAlB,IAAI,EAAe,KAAK,CAAC,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC;AAED;;;;;GAKG;AACH,KAAK,2CAAgB,KAAa;IAChC,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAY,EAAC,EAAE,GAAG,EAAE,uBAAA,IAAI,mCAAU,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,IAAI,6CAAuB,CAAC;QAC5C,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,OAAO;QACf,YAAY,EAAE,MAAM,EAAE,2BAA2B;QACjD,YAAY,EAAE,GAAG;KAClB,CAAC,CAAC;IAEH,yEAAyE;IACzE,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QAC5B,uBAAA,IAAI,iCAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC5D,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC,6EAQa,KAAa;IACzB,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,QAAQ,KAAK,cAAc,CAAC,CAAC;IAEtD,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAA,cAAM,EAAC,MAAM,EAAE,mBAAmB,KAAK,cAAc,CAAC,CAAC;IAEvD,MAAM,CAAC,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAClC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC","sourcesContent":["import type { BasePostMessageStream } from '@metamask/post-message-stream';\nimport { WindowPostMessageStream } from '@metamask/post-message-stream';\nimport { createWindow, logError } from '@metamask/snaps-utils';\nimport type { JsonRpcRequest } from '@metamask/utils';\nimport { assert } from '@metamask/utils';\n\nimport packageJson from '@metamask/snaps-execution-environments/package.json';\n\ntype ExecutorJob = {\n id: string;\n window: Window;\n stream: WindowPostMessageStream;\n};\n\nconst IFRAME_URL = `https://execution.metamask.io/iframe/${packageJson.version}/index.html`;\n\n/**\n * A \"proxy\" snap executor that uses a level of indirection to execute snaps.\n *\n * Useful for multiple execution environments.\n *\n * This is not a traditional snap executor, as it does not execute snaps itself.\n * Instead, it creates an iframe window for each snap execution, and sends the\n * snap execution request to the iframe window. The iframe window is responsible\n * for executing the snap.\n *\n * This executor is persisted between snap executions. The executor essentially\n * acts as a proxy between the client and the iframe execution environment.\n */\nexport class ProxySnapExecutor {\n readonly #stream: BasePostMessageStream;\n\n readonly #frameUrl: string;\n\n readonly jobs: Record<string, ExecutorJob> = {};\n\n /**\n * Initialize the executor with the given stream. This is a wrapper around the\n * constructor.\n *\n * @param stream - The stream to use for communication.\n * @param frameUrl - An optional URL for the iframe to use.\n * @returns The initialized executor.\n */\n static initialize(stream: BasePostMessageStream, frameUrl = IFRAME_URL) {\n return new ProxySnapExecutor(stream, frameUrl);\n }\n\n constructor(stream: BasePostMessageStream, frameUrl: string) {\n this.#stream = stream;\n this.#stream.on('data', this.#onData.bind(this));\n this.#frameUrl = frameUrl;\n }\n\n /**\n * Handle an incoming message from a `ProxyExecutionService`. This\n * assumes that the message contains a `jobId` property, and a JSON-RPC\n * request in the `data` property.\n *\n * @param data - The message data.\n * @param data.data - The JSON-RPC request.\n * @param data.jobId - The job ID.\n */\n #onData(data: { data: JsonRpcRequest; jobId: string }) {\n const { jobId, data: request } = data;\n\n if (!this.jobs[jobId]) {\n // This ensures that a job is initialized before it is used. To avoid\n // code duplication, we call the `#onData` method again, which will\n // run the rest of the logic after initialization.\n this.#initializeJob(jobId)\n .then(() => {\n this.#onData(data);\n })\n .catch((error) => {\n logError('[Worker] Error initializing job:', error);\n });\n\n return;\n }\n\n // This is a method specific to the `OffscreenSnapExecutor`, as the service\n // itself does not have access to the iframes directly.\n if (request.method === 'terminateJob') {\n this.#terminateJob(jobId);\n return;\n }\n\n this.jobs[jobId].stream.write(request);\n }\n\n /**\n * Create a new iframe and set up a stream to communicate with it.\n *\n * @param jobId - The job ID.\n * @returns The executor job object.\n */\n async #initializeJob(jobId: string): Promise<ExecutorJob> {\n const window = await createWindow({ uri: this.#frameUrl, id: jobId });\n const jobStream = new WindowPostMessageStream({\n name: 'parent',\n target: 'child',\n targetWindow: window, // iframe's internal window\n targetOrigin: '*',\n });\n\n // Write messages from the iframe to the parent, wrapped with the job ID.\n jobStream.on('data', (data) => {\n this.#stream.write({ data, jobId });\n });\n\n this.jobs[jobId] = { id: jobId, window, stream: jobStream };\n return this.jobs[jobId];\n }\n\n /**\n * Terminate the job with the given ID. This will close the iframe and delete\n * the job from the internal job map.\n *\n * @param jobId - The job ID.\n */\n #terminateJob(jobId: string) {\n assert(this.jobs[jobId], `Job \"${jobId}\" not found.`);\n\n const iframe = document.getElementById(jobId);\n assert(iframe, `Iframe with ID \"${jobId}\" not found.`);\n\n iframe.remove();\n this.jobs[jobId].stream.destroy();\n delete this.jobs[jobId];\n }\n}\n"]}
|