@metamask/snaps-controllers 11.2.3 → 12.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.
- package/CHANGELOG.md +22 -1
- package/dist/cronjob/CronjobController.cjs +6 -9
- package/dist/cronjob/CronjobController.cjs.map +1 -1
- package/dist/cronjob/CronjobController.d.cts +1 -1
- package/dist/cronjob/CronjobController.d.cts.map +1 -1
- package/dist/cronjob/CronjobController.d.mts +1 -1
- package/dist/cronjob/CronjobController.d.mts.map +1 -1
- package/dist/cronjob/CronjobController.mjs +6 -9
- package/dist/cronjob/CronjobController.mjs.map +1 -1
- package/dist/services/browser.cjs +0 -3
- package/dist/services/browser.cjs.map +1 -1
- package/dist/services/browser.d.cts +0 -1
- package/dist/services/browser.d.cts.map +1 -1
- package/dist/services/browser.d.mts +0 -1
- package/dist/services/browser.d.mts.map +1 -1
- package/dist/services/browser.mjs +0 -1
- package/dist/services/browser.mjs.map +1 -1
- package/dist/services/index.cjs +0 -3
- package/dist/services/index.cjs.map +1 -1
- package/dist/services/index.d.cts +0 -1
- package/dist/services/index.d.cts.map +1 -1
- package/dist/services/index.d.mts +0 -1
- package/dist/services/index.d.mts.map +1 -1
- package/dist/services/index.mjs +0 -1
- package/dist/services/index.mjs.map +1 -1
- package/dist/services/node-js/NodeProcessExecutionService.cjs +3 -3
- package/dist/services/node-js/NodeProcessExecutionService.cjs.map +1 -1
- package/dist/services/node-js/NodeProcessExecutionService.d.cts.map +1 -1
- package/dist/services/node-js/NodeProcessExecutionService.d.mts.map +1 -1
- package/dist/services/node-js/NodeProcessExecutionService.mjs +2 -2
- package/dist/services/node-js/NodeProcessExecutionService.mjs.map +1 -1
- package/dist/services/node-js/NodeThreadExecutionService.cjs +3 -3
- package/dist/services/node-js/NodeThreadExecutionService.cjs.map +1 -1
- package/dist/services/node-js/NodeThreadExecutionService.d.cts.map +1 -1
- package/dist/services/node-js/NodeThreadExecutionService.d.mts.map +1 -1
- package/dist/services/node-js/NodeThreadExecutionService.mjs +2 -2
- package/dist/services/node-js/NodeThreadExecutionService.mjs.map +1 -1
- package/dist/services/webview/WebViewMessageStream.cjs +4 -5
- package/dist/services/webview/WebViewMessageStream.cjs.map +1 -1
- package/dist/services/webview/WebViewMessageStream.d.cts.map +1 -1
- package/dist/services/webview/WebViewMessageStream.d.mts.map +1 -1
- package/dist/services/webview/WebViewMessageStream.mjs +1 -2
- package/dist/services/webview/WebViewMessageStream.mjs.map +1 -1
- package/dist/snaps/SnapController.cjs +36 -18
- package/dist/snaps/SnapController.cjs.map +1 -1
- package/dist/snaps/SnapController.d.cts +13 -15
- package/dist/snaps/SnapController.d.cts.map +1 -1
- package/dist/snaps/SnapController.d.mts +13 -15
- package/dist/snaps/SnapController.d.mts.map +1 -1
- package/dist/snaps/SnapController.mjs +37 -19
- package/dist/snaps/SnapController.mjs.map +1 -1
- package/dist/snaps/registry/json.cjs +3 -12
- package/dist/snaps/registry/json.cjs.map +1 -1
- package/dist/snaps/registry/json.d.cts.map +1 -1
- package/dist/snaps/registry/json.d.mts.map +1 -1
- package/dist/snaps/registry/json.mjs +3 -12
- package/dist/snaps/registry/json.mjs.map +1 -1
- package/dist/snaps/registry/registry.cjs.map +1 -1
- package/dist/snaps/registry/registry.d.cts +1 -1
- package/dist/snaps/registry/registry.d.cts.map +1 -1
- package/dist/snaps/registry/registry.d.mts +1 -1
- package/dist/snaps/registry/registry.d.mts.map +1 -1
- package/dist/snaps/registry/registry.mjs.map +1 -1
- package/dist/utils.cjs +63 -1
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.cts +24 -0
- package/dist/utils.d.cts.map +1 -1
- package/dist/utils.d.mts +24 -0
- package/dist/utils.d.mts.map +1 -1
- package/dist/utils.mjs +61 -1
- package/dist/utils.mjs.map +1 -1
- package/package.json +10 -10
- package/dist/services/webworker/WebWorkerExecutionService.cjs +0 -112
- package/dist/services/webworker/WebWorkerExecutionService.cjs.map +0 -1
- package/dist/services/webworker/WebWorkerExecutionService.d.cts +0 -47
- package/dist/services/webworker/WebWorkerExecutionService.d.cts.map +0 -1
- package/dist/services/webworker/WebWorkerExecutionService.d.mts +0 -47
- package/dist/services/webworker/WebWorkerExecutionService.d.mts.map +0 -1
- package/dist/services/webworker/WebWorkerExecutionService.mjs +0 -108
- package/dist/services/webworker/WebWorkerExecutionService.mjs.map +0 -1
- package/dist/services/webworker/index.cjs +0 -18
- package/dist/services/webworker/index.cjs.map +0 -1
- package/dist/services/webworker/index.d.cts +0 -2
- package/dist/services/webworker/index.d.cts.map +0 -1
- package/dist/services/webworker/index.d.mts +0 -2
- package/dist/services/webworker/index.d.mts.map +0 -1
- package/dist/services/webworker/index.mjs +0 -2
- package/dist/services/webworker/index.mjs.map +0 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.NodeProcessExecutionService = void 0;
|
|
4
|
-
const
|
|
4
|
+
const node_1 = require("@metamask/post-message-stream/node");
|
|
5
5
|
const child_process_1 = require("child_process");
|
|
6
6
|
const __1 = require("../index.cjs");
|
|
7
7
|
class NodeProcessExecutionService extends __1.AbstractExecutionService {
|
|
8
8
|
async initEnvStream() {
|
|
9
|
-
const worker = (0, child_process_1.fork)(require.resolve('@metamask/snaps-execution-environments/
|
|
9
|
+
const worker = (0, child_process_1.fork)(require.resolve('@metamask/snaps-execution-environments/node-process'), {
|
|
10
10
|
stdio: 'pipe',
|
|
11
11
|
});
|
|
12
12
|
// Capturing `stdout` and `stderr` from the worker prevents the worker from
|
|
@@ -19,7 +19,7 @@ class NodeProcessExecutionService extends __1.AbstractExecutionService {
|
|
|
19
19
|
// eslint-disable-next-line no-console
|
|
20
20
|
console.error(data.toString());
|
|
21
21
|
});
|
|
22
|
-
const stream = new
|
|
22
|
+
const stream = new node_1.ProcessParentMessageStream({ process: worker });
|
|
23
23
|
return Promise.resolve({ worker, stream });
|
|
24
24
|
}
|
|
25
25
|
terminateJob(jobWrapper) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeProcessExecutionService.cjs","sourceRoot":"","sources":["../../../src/services/node-js/NodeProcessExecutionService.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"NodeProcessExecutionService.cjs","sourceRoot":"","sources":["../../../src/services/node-js/NodeProcessExecutionService.ts"],"names":[],"mappings":";;;AACA,6DAAgF;AAEhF,iDAAqC;AAGrC,oCAA8C;AAE9C,MAAa,2BAA4B,SAAQ,4BAAsC;IAC3E,KAAK,CAAC,aAAa;QAI3B,MAAM,MAAM,GAAG,IAAA,oBAAI,EACjB,OAAO,CAAC,OAAO,CAAC,qDAAqD,CAAC,EACtE;YACE,KAAK,EAAE,MAAM;SACd,CACF,CAAC;QAEF,2EAA2E;QAC3E,mEAAmE;QACnE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACjC,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACjC,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,iCAA0B,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACnE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;IAES,YAAY,CAAC,UAA0C;QAC/D,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;CACF;AA/BD,kEA+BC","sourcesContent":["import type { BasePostMessageStream } from '@metamask/post-message-stream';\nimport { ProcessParentMessageStream } from '@metamask/post-message-stream/node';\nimport type { ChildProcess } from 'child_process';\nimport { fork } from 'child_process';\n\nimport type { TerminateJobArgs } from '..';\nimport { AbstractExecutionService } from '..';\n\nexport class NodeProcessExecutionService extends AbstractExecutionService<ChildProcess> {\n protected async initEnvStream(): Promise<{\n worker: ChildProcess;\n stream: BasePostMessageStream;\n }> {\n const worker = fork(\n require.resolve('@metamask/snaps-execution-environments/node-process'),\n {\n stdio: 'pipe',\n },\n );\n\n // Capturing `stdout` and `stderr` from the worker prevents the worker from\n // writing to them directly, making it easier to capture them Jest.\n worker.stdout?.on('data', (data) => {\n // eslint-disable-next-line no-console\n console.log(data.toString());\n });\n\n worker.stderr?.on('data', (data) => {\n // eslint-disable-next-line no-console\n console.error(data.toString());\n });\n\n const stream = new ProcessParentMessageStream({ process: worker });\n return Promise.resolve({ worker, stream });\n }\n\n protected terminateJob(jobWrapper: TerminateJobArgs<ChildProcess>): void {\n jobWrapper.worker?.kill();\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeProcessExecutionService.d.cts","sourceRoot":"","sources":["../../../src/services/node-js/NodeProcessExecutionService.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,sCAAsC;AAE3E,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB;AAGlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAW;AAC3C,OAAO,EAAE,wBAAwB,EAAE,qBAAW;AAE9C,qBAAa,2BAA4B,SAAQ,wBAAwB,CAAC,YAAY,CAAC;cACrE,aAAa,IAAI,OAAO,CAAC;QACvC,MAAM,EAAE,YAAY,CAAC;QACrB,MAAM,EAAE,qBAAqB,CAAC;KAC/B,CAAC;
|
|
1
|
+
{"version":3,"file":"NodeProcessExecutionService.d.cts","sourceRoot":"","sources":["../../../src/services/node-js/NodeProcessExecutionService.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,sCAAsC;AAE3E,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB;AAGlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAW;AAC3C,OAAO,EAAE,wBAAwB,EAAE,qBAAW;AAE9C,qBAAa,2BAA4B,SAAQ,wBAAwB,CAAC,YAAY,CAAC;cACrE,aAAa,IAAI,OAAO,CAAC;QACvC,MAAM,EAAE,YAAY,CAAC;QACrB,MAAM,EAAE,qBAAqB,CAAC;KAC/B,CAAC;IAwBF,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,gBAAgB,CAAC,YAAY,CAAC,GAAG,IAAI;CAGzE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeProcessExecutionService.d.mts","sourceRoot":"","sources":["../../../src/services/node-js/NodeProcessExecutionService.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,sCAAsC;AAE3E,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB;AAGlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAW;AAC3C,OAAO,EAAE,wBAAwB,EAAE,qBAAW;AAE9C,qBAAa,2BAA4B,SAAQ,wBAAwB,CAAC,YAAY,CAAC;cACrE,aAAa,IAAI,OAAO,CAAC;QACvC,MAAM,EAAE,YAAY,CAAC;QACrB,MAAM,EAAE,qBAAqB,CAAC;KAC/B,CAAC;
|
|
1
|
+
{"version":3,"file":"NodeProcessExecutionService.d.mts","sourceRoot":"","sources":["../../../src/services/node-js/NodeProcessExecutionService.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,sCAAsC;AAE3E,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB;AAGlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAW;AAC3C,OAAO,EAAE,wBAAwB,EAAE,qBAAW;AAE9C,qBAAa,2BAA4B,SAAQ,wBAAwB,CAAC,YAAY,CAAC;cACrE,aAAa,IAAI,OAAO,CAAC;QACvC,MAAM,EAAE,YAAY,CAAC;QACrB,MAAM,EAAE,qBAAqB,CAAC;KAC/B,CAAC;IAwBF,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,gBAAgB,CAAC,YAAY,CAAC,GAAG,IAAI;CAGzE"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { createRequire as $createRequire } from "module";
|
|
2
2
|
const $require = $createRequire(import.meta.url);
|
|
3
|
-
import { ProcessParentMessageStream } from "@metamask/post-message-stream";
|
|
3
|
+
import { ProcessParentMessageStream } from "@metamask/post-message-stream/node";
|
|
4
4
|
import { fork } from "child_process";
|
|
5
5
|
import { AbstractExecutionService } from "../index.mjs";
|
|
6
6
|
export class NodeProcessExecutionService extends AbstractExecutionService {
|
|
7
7
|
async initEnvStream() {
|
|
8
|
-
const worker = fork($require.resolve('@metamask/snaps-execution-environments/
|
|
8
|
+
const worker = fork($require.resolve('@metamask/snaps-execution-environments/node-process'), {
|
|
9
9
|
stdio: 'pipe',
|
|
10
10
|
});
|
|
11
11
|
// Capturing `stdout` and `stderr` from the worker prevents the worker from
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeProcessExecutionService.mjs","sourceRoot":"","sources":["../../../src/services/node-js/NodeProcessExecutionService.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,0BAA0B,EAAE,
|
|
1
|
+
{"version":3,"file":"NodeProcessExecutionService.mjs","sourceRoot":"","sources":["../../../src/services/node-js/NodeProcessExecutionService.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,0BAA0B,EAAE,2CAA2C;AAEhF,OAAO,EAAE,IAAI,EAAE,sBAAsB;AAGrC,OAAO,EAAE,wBAAwB,EAAE,qBAAW;AAE9C,MAAM,OAAO,2BAA4B,SAAQ,wBAAsC;IAC3E,KAAK,CAAC,aAAa;QAI3B,MAAM,MAAM,GAAG,IAAI,kBACD,qDAAqD,GACrE;YACE,KAAK,EAAE,MAAM;SACd,CACF,CAAC;QAEF,2EAA2E;QAC3E,mEAAmE;QACnE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACjC,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACjC,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,0BAA0B,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACnE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;IAES,YAAY,CAAC,UAA0C;QAC/D,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;CACF","sourcesContent":["import type { BasePostMessageStream } from '@metamask/post-message-stream';\nimport { ProcessParentMessageStream } from '@metamask/post-message-stream/node';\nimport type { ChildProcess } from 'child_process';\nimport { fork } from 'child_process';\n\nimport type { TerminateJobArgs } from '..';\nimport { AbstractExecutionService } from '..';\n\nexport class NodeProcessExecutionService extends AbstractExecutionService<ChildProcess> {\n protected async initEnvStream(): Promise<{\n worker: ChildProcess;\n stream: BasePostMessageStream;\n }> {\n const worker = fork(\n require.resolve('@metamask/snaps-execution-environments/node-process'),\n {\n stdio: 'pipe',\n },\n );\n\n // Capturing `stdout` and `stderr` from the worker prevents the worker from\n // writing to them directly, making it easier to capture them Jest.\n worker.stdout?.on('data', (data) => {\n // eslint-disable-next-line no-console\n console.log(data.toString());\n });\n\n worker.stderr?.on('data', (data) => {\n // eslint-disable-next-line no-console\n console.error(data.toString());\n });\n\n const stream = new ProcessParentMessageStream({ process: worker });\n return Promise.resolve({ worker, stream });\n }\n\n protected terminateJob(jobWrapper: TerminateJobArgs<ChildProcess>): void {\n jobWrapper.worker?.kill();\n }\n}\n"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.NodeThreadExecutionService = void 0;
|
|
4
|
-
const
|
|
4
|
+
const node_1 = require("@metamask/post-message-stream/node");
|
|
5
5
|
const worker_threads_1 = require("worker_threads");
|
|
6
6
|
const __1 = require("../index.cjs");
|
|
7
7
|
class NodeThreadExecutionService extends __1.AbstractExecutionService {
|
|
8
8
|
async initEnvStream() {
|
|
9
|
-
const worker = new worker_threads_1.Worker(require.resolve('@metamask/snaps-execution-environments/
|
|
9
|
+
const worker = new worker_threads_1.Worker(require.resolve('@metamask/snaps-execution-environments/node-thread'), {
|
|
10
10
|
stdout: true,
|
|
11
11
|
stderr: true,
|
|
12
12
|
});
|
|
@@ -20,7 +20,7 @@ class NodeThreadExecutionService extends __1.AbstractExecutionService {
|
|
|
20
20
|
// eslint-disable-next-line no-console
|
|
21
21
|
console.error(data.toString());
|
|
22
22
|
});
|
|
23
|
-
const stream = new
|
|
23
|
+
const stream = new node_1.ThreadParentMessageStream({ thread: worker });
|
|
24
24
|
return Promise.resolve({ worker, stream });
|
|
25
25
|
}
|
|
26
26
|
// TODO: Either fix this lint violation or explain why it's necessary to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeThreadExecutionService.cjs","sourceRoot":"","sources":["../../../src/services/node-js/NodeThreadExecutionService.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"NodeThreadExecutionService.cjs","sourceRoot":"","sources":["../../../src/services/node-js/NodeThreadExecutionService.ts"],"names":[],"mappings":";;;AACA,6DAA+E;AAC/E,mDAAwC;AAGxC,oCAA8C;AAE9C,MAAa,0BAA2B,SAAQ,4BAAgC;IACpE,KAAK,CAAC,aAAa;QAI3B,MAAM,MAAM,GAAG,IAAI,uBAAM,CACvB,OAAO,CAAC,OAAO,CAAC,oDAAoD,CAAC,EACrE;YACE,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;SACb,CACF,CAAC;QAEF,2EAA2E;QAC3E,mEAAmE;QACnE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAChC,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAChC,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,gCAAyB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACjE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,wEAAwE;IACxE,WAAW;IACX,kEAAkE;IACxD,KAAK,CAAC,YAAY,CAC1B,UAAoC;QAEpC,MAAM,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;IACvC,CAAC;CACF;AArCD,gEAqCC","sourcesContent":["import type { BasePostMessageStream } from '@metamask/post-message-stream';\nimport { ThreadParentMessageStream } from '@metamask/post-message-stream/node';\nimport { Worker } from 'worker_threads';\n\nimport type { TerminateJobArgs } from '..';\nimport { AbstractExecutionService } from '..';\n\nexport class NodeThreadExecutionService extends AbstractExecutionService<Worker> {\n protected async initEnvStream(): Promise<{\n worker: Worker;\n stream: BasePostMessageStream;\n }> {\n const worker = new Worker(\n require.resolve('@metamask/snaps-execution-environments/node-thread'),\n {\n stdout: true,\n stderr: true,\n },\n );\n\n // Capturing `stdout` and `stderr` from the worker prevents the worker from\n // writing to them directly, making it easier to capture them Jest.\n worker.stdout.on('data', (data) => {\n // eslint-disable-next-line no-console\n console.log(data.toString());\n });\n\n worker.stderr.on('data', (data) => {\n // eslint-disable-next-line no-console\n console.error(data.toString());\n });\n\n const stream = new ThreadParentMessageStream({ thread: worker });\n return Promise.resolve({ worker, stream });\n }\n\n // TODO: Either fix this lint violation or explain why it's necessary to\n // ignore.\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n protected async terminateJob(\n jobWrapper: TerminateJobArgs<Worker>,\n ): Promise<void> {\n await jobWrapper.worker?.terminate();\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeThreadExecutionService.d.cts","sourceRoot":"","sources":["../../../src/services/node-js/NodeThreadExecutionService.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,sCAAsC;AAE3E,OAAO,EAAE,MAAM,EAAE,uBAAuB;AAExC,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAW;AAC3C,OAAO,EAAE,wBAAwB,EAAE,qBAAW;AAE9C,qBAAa,0BAA2B,SAAQ,wBAAwB,CAAC,MAAM,CAAC;cAC9D,aAAa,IAAI,OAAO,CAAC;QACvC,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,qBAAqB,CAAC;KAC/B,CAAC;
|
|
1
|
+
{"version":3,"file":"NodeThreadExecutionService.d.cts","sourceRoot":"","sources":["../../../src/services/node-js/NodeThreadExecutionService.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,sCAAsC;AAE3E,OAAO,EAAE,MAAM,EAAE,uBAAuB;AAExC,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAW;AAC3C,OAAO,EAAE,wBAAwB,EAAE,qBAAW;AAE9C,qBAAa,0BAA2B,SAAQ,wBAAwB,CAAC,MAAM,CAAC;cAC9D,aAAa,IAAI,OAAO,CAAC;QACvC,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,qBAAqB,CAAC;KAC/B,CAAC;cA4Bc,YAAY,CAC1B,UAAU,EAAE,gBAAgB,CAAC,MAAM,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC;CAGjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeThreadExecutionService.d.mts","sourceRoot":"","sources":["../../../src/services/node-js/NodeThreadExecutionService.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,sCAAsC;AAE3E,OAAO,EAAE,MAAM,EAAE,uBAAuB;AAExC,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAW;AAC3C,OAAO,EAAE,wBAAwB,EAAE,qBAAW;AAE9C,qBAAa,0BAA2B,SAAQ,wBAAwB,CAAC,MAAM,CAAC;cAC9D,aAAa,IAAI,OAAO,CAAC;QACvC,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,qBAAqB,CAAC;KAC/B,CAAC;
|
|
1
|
+
{"version":3,"file":"NodeThreadExecutionService.d.mts","sourceRoot":"","sources":["../../../src/services/node-js/NodeThreadExecutionService.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,sCAAsC;AAE3E,OAAO,EAAE,MAAM,EAAE,uBAAuB;AAExC,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAW;AAC3C,OAAO,EAAE,wBAAwB,EAAE,qBAAW;AAE9C,qBAAa,0BAA2B,SAAQ,wBAAwB,CAAC,MAAM,CAAC;cAC9D,aAAa,IAAI,OAAO,CAAC;QACvC,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,qBAAqB,CAAC;KAC/B,CAAC;cA4Bc,YAAY,CAC1B,UAAU,EAAE,gBAAgB,CAAC,MAAM,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC;CAGjB"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { createRequire as $createRequire } from "module";
|
|
2
2
|
const $require = $createRequire(import.meta.url);
|
|
3
|
-
import { ThreadParentMessageStream } from "@metamask/post-message-stream";
|
|
3
|
+
import { ThreadParentMessageStream } from "@metamask/post-message-stream/node";
|
|
4
4
|
import { Worker } from "worker_threads";
|
|
5
5
|
import { AbstractExecutionService } from "../index.mjs";
|
|
6
6
|
export class NodeThreadExecutionService extends AbstractExecutionService {
|
|
7
7
|
async initEnvStream() {
|
|
8
|
-
const worker = new Worker($require.resolve('@metamask/snaps-execution-environments/
|
|
8
|
+
const worker = new Worker($require.resolve('@metamask/snaps-execution-environments/node-thread'), {
|
|
9
9
|
stdout: true,
|
|
10
10
|
stderr: true,
|
|
11
11
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeThreadExecutionService.mjs","sourceRoot":"","sources":["../../../src/services/node-js/NodeThreadExecutionService.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,yBAAyB,EAAE,
|
|
1
|
+
{"version":3,"file":"NodeThreadExecutionService.mjs","sourceRoot":"","sources":["../../../src/services/node-js/NodeThreadExecutionService.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,yBAAyB,EAAE,2CAA2C;AAC/E,OAAO,EAAE,MAAM,EAAE,uBAAuB;AAGxC,OAAO,EAAE,wBAAwB,EAAE,qBAAW;AAE9C,MAAM,OAAO,0BAA2B,SAAQ,wBAAgC;IACpE,KAAK,CAAC,aAAa;QAI3B,MAAM,MAAM,GAAG,IAAI,MAAM,kBACP,oDAAoD,GACpE;YACE,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;SACb,CACF,CAAC;QAEF,2EAA2E;QAC3E,mEAAmE;QACnE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAChC,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAChC,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,yBAAyB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACjE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,wEAAwE;IACxE,WAAW;IACX,kEAAkE;IACxD,KAAK,CAAC,YAAY,CAC1B,UAAoC;QAEpC,MAAM,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;IACvC,CAAC;CACF","sourcesContent":["import type { BasePostMessageStream } from '@metamask/post-message-stream';\nimport { ThreadParentMessageStream } from '@metamask/post-message-stream/node';\nimport { Worker } from 'worker_threads';\n\nimport type { TerminateJobArgs } from '..';\nimport { AbstractExecutionService } from '..';\n\nexport class NodeThreadExecutionService extends AbstractExecutionService<Worker> {\n protected async initEnvStream(): Promise<{\n worker: Worker;\n stream: BasePostMessageStream;\n }> {\n const worker = new Worker(\n require.resolve('@metamask/snaps-execution-environments/node-thread'),\n {\n stdout: true,\n stderr: true,\n },\n );\n\n // Capturing `stdout` and `stderr` from the worker prevents the worker from\n // writing to them directly, making it easier to capture them Jest.\n worker.stdout.on('data', (data) => {\n // eslint-disable-next-line no-console\n console.log(data.toString());\n });\n\n worker.stderr.on('data', (data) => {\n // eslint-disable-next-line no-console\n console.error(data.toString());\n });\n\n const stream = new ThreadParentMessageStream({ thread: worker });\n return Promise.resolve({ worker, stream });\n }\n\n // TODO: Either fix this lint violation or explain why it's necessary to\n // ignore.\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n protected async terminateJob(\n jobWrapper: TerminateJobArgs<Worker>,\n ): Promise<void> {\n await jobWrapper.worker?.terminate();\n }\n}\n"]}
|
|
@@ -14,8 +14,7 @@ var _WebViewMessageStream_name, _WebViewMessageStream_target, _WebViewMessageStr
|
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.WebViewMessageStream = void 0;
|
|
16
16
|
const post_message_stream_1 = require("@metamask/post-message-stream");
|
|
17
|
-
const utils_1 = require("@metamask/
|
|
18
|
-
const utils_2 = require("@metamask/utils");
|
|
17
|
+
const utils_1 = require("@metamask/utils");
|
|
19
18
|
/**
|
|
20
19
|
* A special postMessage stream used to interface with a WebView.
|
|
21
20
|
*/
|
|
@@ -44,7 +43,7 @@ class WebViewMessageStream extends post_message_stream_1.BasePostMessageStream {
|
|
|
44
43
|
this._handshake();
|
|
45
44
|
}
|
|
46
45
|
_postMessage(data) {
|
|
47
|
-
(0,
|
|
46
|
+
(0, utils_1.assert)(__classPrivateFieldGet(this, _WebViewMessageStream_webView, "f"));
|
|
48
47
|
const json = JSON.stringify({
|
|
49
48
|
target: __classPrivateFieldGet(this, _WebViewMessageStream_target, "f"),
|
|
50
49
|
data,
|
|
@@ -62,13 +61,13 @@ class WebViewMessageStream extends post_message_stream_1.BasePostMessageStream {
|
|
|
62
61
|
const message = JSON.parse(event.data);
|
|
63
62
|
// Notice that we don't check targetWindow or targetOrigin here.
|
|
64
63
|
// This doesn't seem possible to do in RN.
|
|
65
|
-
if (!(0,
|
|
64
|
+
if (!(0, post_message_stream_1.isValidStreamMessage)(message) || message.target !== __classPrivateFieldGet(this, _WebViewMessageStream_name, "f")) {
|
|
66
65
|
return;
|
|
67
66
|
}
|
|
68
67
|
this._onData(message.data);
|
|
69
68
|
}
|
|
70
69
|
_destroy() {
|
|
71
|
-
(0,
|
|
70
|
+
(0, utils_1.assert)(__classPrivateFieldGet(this, _WebViewMessageStream_webView, "f"));
|
|
72
71
|
// This method is already bound.
|
|
73
72
|
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
74
73
|
__classPrivateFieldGet(this, _WebViewMessageStream_webView, "f").unregisterMessageListener(this._onMessage);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebViewMessageStream.cjs","sourceRoot":"","sources":["../../../src/services/webview/WebViewMessageStream.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,
|
|
1
|
+
{"version":3,"file":"WebViewMessageStream.cjs","sourceRoot":"","sources":["../../../src/services/webview/WebViewMessageStream.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,uEAGuC;AACvC,2CAAyC;AAczC;;GAEG;AACH,MAAa,oBAAqB,SAAQ,2CAAqB;IAO7D;;;;;;;;OAQG;IACH,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAqB;QACtD,KAAK,EAAE,CAAC;QAhBD,6CAAM;QAEN,+CAAQ;QAER,gDAAuC;QAc9C,uBAAA,IAAI,8BAAS,IAAI,MAAA,CAAC;QAClB,uBAAA,IAAI,gCAAW,MAAM,MAAA,CAAC;QAEtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7C,uBAAA,IAAI,iCAAY,OAAO,MAAA,CAAC;QACxB,gCAAgC;QAChC,6DAA6D;QAC7D,uBAAA,IAAI,qCAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvD,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAES,YAAY,CAAC,IAAa;QAClC,IAAA,cAAM,EAAC,uBAAA,IAAI,qCAAS,CAAC,CAAC;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;YAC1B,MAAM,EAAE,uBAAA,IAAI,oCAAQ;YACpB,IAAI;SACL,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAErC,uBAAA,IAAI,qCAAS,CAAC,gBAAgB,CAAC,sBAAsB,OAAO,GAAG,CAAC,CAAC;IACnE,CAAC;IAED,wEAAwE;IACxE,WAAW;IACX,gDAAgD;IACxC,UAAU,CAAC,KAAuB;QACxC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnC,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEvC,gEAAgE;QAChE,0CAA0C;QAC1C,IAAI,CAAC,IAAA,0CAAoB,EAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,uBAAA,IAAI,kCAAM,EAAE,CAAC;YACpE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,QAAQ;QACN,IAAA,cAAM,EAAC,uBAAA,IAAI,qCAAS,CAAC,CAAC;QACtB,gCAAgC;QAChC,6DAA6D;QAC7D,uBAAA,IAAI,qCAAS,CAAC,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3D,CAAC;CACF;AApED,oDAoEC","sourcesContent":["import type { PostMessageEvent } from '@metamask/post-message-stream';\nimport {\n BasePostMessageStream,\n isValidStreamMessage,\n} from '@metamask/post-message-stream';\nimport { assert } from '@metamask/utils';\n\nexport type WebViewInterface = {\n injectJavaScript(js: string): void;\n registerMessageListener(listener: (event: PostMessageEvent) => void): void;\n unregisterMessageListener(listener: (event: PostMessageEvent) => void): void;\n};\n\nexport type WebViewStreamArgs = {\n name: string;\n target: string;\n webView: WebViewInterface;\n};\n\n/**\n * A special postMessage stream used to interface with a WebView.\n */\nexport class WebViewMessageStream extends BasePostMessageStream {\n readonly #name;\n\n readonly #target;\n\n readonly #webView: WebViewInterface | undefined;\n\n /**\n * Creates a stream for communicating with other streams inside a WebView.\n *\n * @param args - Options bag.\n * @param args.name - The name of the stream. Used to differentiate between\n * multiple streams sharing the same window object.\n * @param args.target - The name of the stream to exchange messages with.\n * @param args.webView - A reference to the WebView.\n */\n constructor({ name, target, webView }: WebViewStreamArgs) {\n super();\n\n this.#name = name;\n this.#target = target;\n\n this._onMessage = this._onMessage.bind(this);\n\n this.#webView = webView;\n // This method is already bound.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.#webView.registerMessageListener(this._onMessage);\n this._handshake();\n }\n\n protected _postMessage(data: unknown): void {\n assert(this.#webView);\n const json = JSON.stringify({\n target: this.#target,\n data,\n });\n\n const encoded = JSON.stringify(json);\n\n this.#webView.injectJavaScript(`window.postMessage(${encoded})`);\n }\n\n // TODO: Either fix this lint violation or explain why it's necessary to\n // ignore.\n // eslint-disable-next-line no-restricted-syntax\n private _onMessage(event: PostMessageEvent): void {\n if (typeof event.data !== 'string') {\n return;\n }\n\n const message = JSON.parse(event.data);\n\n // Notice that we don't check targetWindow or targetOrigin here.\n // This doesn't seem possible to do in RN.\n if (!isValidStreamMessage(message) || message.target !== this.#name) {\n return;\n }\n\n this._onData(message.data);\n }\n\n _destroy() {\n assert(this.#webView);\n // This method is already bound.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.#webView.unregisterMessageListener(this._onMessage);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebViewMessageStream.d.cts","sourceRoot":"","sources":["../../../src/services/webview/WebViewMessageStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,sCAAsC;AACtE,OAAO,
|
|
1
|
+
{"version":3,"file":"WebViewMessageStream.d.cts","sourceRoot":"","sources":["../../../src/services/webview/WebViewMessageStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,sCAAsC;AACtE,OAAO,EACL,qBAAqB,EAEtB,sCAAsC;AAGvC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,uBAAuB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,GAAG,IAAI,CAAC;IAC3E,yBAAyB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,GAAG,IAAI,CAAC;CAC9E,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,qBAAqB;;IAO7D;;;;;;;;OAQG;gBACS,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,iBAAiB;IAexD,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAe3C,OAAO,CAAC,UAAU;IAgBlB,QAAQ;CAMT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebViewMessageStream.d.mts","sourceRoot":"","sources":["../../../src/services/webview/WebViewMessageStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,sCAAsC;AACtE,OAAO,
|
|
1
|
+
{"version":3,"file":"WebViewMessageStream.d.mts","sourceRoot":"","sources":["../../../src/services/webview/WebViewMessageStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,sCAAsC;AACtE,OAAO,EACL,qBAAqB,EAEtB,sCAAsC;AAGvC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,uBAAuB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,GAAG,IAAI,CAAC;IAC3E,yBAAyB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,GAAG,IAAI,CAAC;CAC9E,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,qBAAqB;;IAO7D;;;;;;;;OAQG;gBACS,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,iBAAiB;IAexD,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAe3C,OAAO,CAAC,UAAU;IAgBlB,QAAQ;CAMT"}
|
|
@@ -10,8 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
10
10
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
11
|
};
|
|
12
12
|
var _WebViewMessageStream_name, _WebViewMessageStream_target, _WebViewMessageStream_webView;
|
|
13
|
-
import { BasePostMessageStream } from "@metamask/post-message-stream";
|
|
14
|
-
import { isValidStreamMessage } from "@metamask/post-message-stream/dist/utils.js";
|
|
13
|
+
import { BasePostMessageStream, isValidStreamMessage } from "@metamask/post-message-stream";
|
|
15
14
|
import { assert } from "@metamask/utils";
|
|
16
15
|
/**
|
|
17
16
|
* A special postMessage stream used to interface with a WebView.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebViewMessageStream.mjs","sourceRoot":"","sources":["../../../src/services/webview/WebViewMessageStream.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"WebViewMessageStream.mjs","sourceRoot":"","sources":["../../../src/services/webview/WebViewMessageStream.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACrB,sCAAsC;AACvC,OAAO,EAAE,MAAM,EAAE,wBAAwB;AAczC;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,qBAAqB;IAO7D;;;;;;;;OAQG;IACH,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAqB;QACtD,KAAK,EAAE,CAAC;QAhBD,6CAAM;QAEN,+CAAQ;QAER,gDAAuC;QAc9C,uBAAA,IAAI,8BAAS,IAAI,MAAA,CAAC;QAClB,uBAAA,IAAI,gCAAW,MAAM,MAAA,CAAC;QAEtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7C,uBAAA,IAAI,iCAAY,OAAO,MAAA,CAAC;QACxB,gCAAgC;QAChC,6DAA6D;QAC7D,uBAAA,IAAI,qCAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvD,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAES,YAAY,CAAC,IAAa;QAClC,MAAM,CAAC,uBAAA,IAAI,qCAAS,CAAC,CAAC;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;YAC1B,MAAM,EAAE,uBAAA,IAAI,oCAAQ;YACpB,IAAI;SACL,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAErC,uBAAA,IAAI,qCAAS,CAAC,gBAAgB,CAAC,sBAAsB,OAAO,GAAG,CAAC,CAAC;IACnE,CAAC;IAED,wEAAwE;IACxE,WAAW;IACX,gDAAgD;IACxC,UAAU,CAAC,KAAuB;QACxC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnC,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEvC,gEAAgE;QAChE,0CAA0C;QAC1C,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,uBAAA,IAAI,kCAAM,EAAE,CAAC;YACpE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,QAAQ;QACN,MAAM,CAAC,uBAAA,IAAI,qCAAS,CAAC,CAAC;QACtB,gCAAgC;QAChC,6DAA6D;QAC7D,uBAAA,IAAI,qCAAS,CAAC,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3D,CAAC;CACF","sourcesContent":["import type { PostMessageEvent } from '@metamask/post-message-stream';\nimport {\n BasePostMessageStream,\n isValidStreamMessage,\n} from '@metamask/post-message-stream';\nimport { assert } from '@metamask/utils';\n\nexport type WebViewInterface = {\n injectJavaScript(js: string): void;\n registerMessageListener(listener: (event: PostMessageEvent) => void): void;\n unregisterMessageListener(listener: (event: PostMessageEvent) => void): void;\n};\n\nexport type WebViewStreamArgs = {\n name: string;\n target: string;\n webView: WebViewInterface;\n};\n\n/**\n * A special postMessage stream used to interface with a WebView.\n */\nexport class WebViewMessageStream extends BasePostMessageStream {\n readonly #name;\n\n readonly #target;\n\n readonly #webView: WebViewInterface | undefined;\n\n /**\n * Creates a stream for communicating with other streams inside a WebView.\n *\n * @param args - Options bag.\n * @param args.name - The name of the stream. Used to differentiate between\n * multiple streams sharing the same window object.\n * @param args.target - The name of the stream to exchange messages with.\n * @param args.webView - A reference to the WebView.\n */\n constructor({ name, target, webView }: WebViewStreamArgs) {\n super();\n\n this.#name = name;\n this.#target = target;\n\n this._onMessage = this._onMessage.bind(this);\n\n this.#webView = webView;\n // This method is already bound.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.#webView.registerMessageListener(this._onMessage);\n this._handshake();\n }\n\n protected _postMessage(data: unknown): void {\n assert(this.#webView);\n const json = JSON.stringify({\n target: this.#target,\n data,\n });\n\n const encoded = JSON.stringify(json);\n\n this.#webView.injectJavaScript(`window.postMessage(${encoded})`);\n }\n\n // TODO: Either fix this lint violation or explain why it's necessary to\n // ignore.\n // eslint-disable-next-line no-restricted-syntax\n private _onMessage(event: PostMessageEvent): void {\n if (typeof event.data !== 'string') {\n return;\n }\n\n const message = JSON.parse(event.data);\n\n // Notice that we don't check targetWindow or targetOrigin here.\n // This doesn't seem possible to do in RN.\n if (!isValidStreamMessage(message) || message.target !== this.#name) {\n return;\n }\n\n this._onData(message.data);\n }\n\n _destroy() {\n assert(this.#webView);\n // This method is already bound.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.#webView.unregisterMessageListener(this._onMessage);\n }\n}\n"]}
|
|
@@ -10,7 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
10
10
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
11
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
12
|
};
|
|
13
|
-
var _SnapController_instances, _SnapController_closeAllConnections, _SnapController_dynamicPermissions, _SnapController_environmentEndowmentPermissions, _SnapController_excludedPermissions, _SnapController_featureFlags, _SnapController_fetchFunction, _SnapController_idleTimeCheckInterval, _SnapController_maxIdleTime, _SnapController_encryptor, _SnapController_getMnemonicSeed, _SnapController_getFeatureFlags, _SnapController_clientCryptography, _SnapController_detectSnapLocation, _SnapController_snapsRuntimeData, _SnapController_rollbackSnapshots, _SnapController_timeoutForLastRequestStatus, _SnapController_statusMachine, _SnapController_preinstalledSnaps, _SnapController_initializeStateMachine, _SnapController_registerMessageHandlers, _SnapController_handlePreinstalledSnaps, _SnapController_pollForLastRequestStatus, _SnapController_blockSnap, _SnapController_unblockSnap, _SnapController_assertIsInstallAllowed, _SnapController_assertCanInstallSnaps, _SnapController_assertCanUsePlatform, _SnapController_stopSnapsLastRequestPastMax, _SnapController_transition, _SnapController_terminateSnap, _SnapController_hasCachedEncryptionKey, _SnapController_getSnapEncryptionKey, _SnapController_decryptSnapState, _SnapController_encryptSnapState, _SnapController_getStateToPersist, _SnapController_persistSnapState, _SnapController_handleInitialConnections, _SnapController_addSnapToSubject, _SnapController_removeSnapFromSubjects, _SnapController_revokeAllSnapPermissions, _SnapController_createApproval, _SnapController_updateApproval, _SnapController_resolveAllowlistVersion, _SnapController_add, _SnapController_startSnap, _SnapController_getEndowments, _SnapController_set, _SnapController_validateSnapPermissions, _SnapController_validatePlatformVersion, _SnapController_getExecutionTimeout, _SnapController_getRpcRequestHandler, _SnapController_createInterface, _SnapController_assertInterfaceExists, _SnapController_transformSnapRpcResponse, _SnapController_transformOnAssetsLookupResult, _SnapController_transformOnAssetsConversionResult, _SnapController_transformSnapRpcRequest, _SnapController_assertSnapRpcResponse, _SnapController_recordSnapRpcRequestStart, _SnapController_recordSnapRpcRequestFinish, _SnapController_getRollbackSnapshot, _SnapController_createRollbackSnapshot, _SnapController_rollbackSnap, _SnapController_rollbackSnaps, _SnapController_getRuntime, _SnapController_getRuntimeExpect, _SnapController_setupRuntime, _SnapController_calculatePermissionsChange, _SnapController_isSubjectConnectedToSnap, _SnapController_calculateConnectionsChange, _SnapController_updatePermissions, _SnapController_isValidUpdate, _SnapController_callLifecycleHook, _SnapController_handleLock;
|
|
13
|
+
var _SnapController_instances, _SnapController_closeAllConnections, _SnapController_dynamicPermissions, _SnapController_environmentEndowmentPermissions, _SnapController_excludedPermissions, _SnapController_featureFlags, _SnapController_fetchFunction, _SnapController_idleTimeCheckInterval, _SnapController_maxIdleTime, _SnapController_encryptor, _SnapController_getMnemonicSeed, _SnapController_getFeatureFlags, _SnapController_clientCryptography, _SnapController_detectSnapLocation, _SnapController_snapsRuntimeData, _SnapController_rollbackSnapshots, _SnapController_timeoutForLastRequestStatus, _SnapController_statusMachine, _SnapController_preinstalledSnaps, _SnapController_trackEvent, _SnapController_trackSnapExport, _SnapController_initializeStateMachine, _SnapController_registerMessageHandlers, _SnapController_handlePreinstalledSnaps, _SnapController_pollForLastRequestStatus, _SnapController_blockSnap, _SnapController_unblockSnap, _SnapController_assertIsInstallAllowed, _SnapController_assertCanInstallSnaps, _SnapController_assertCanUsePlatform, _SnapController_stopSnapsLastRequestPastMax, _SnapController_transition, _SnapController_terminateSnap, _SnapController_hasCachedEncryptionKey, _SnapController_getSnapEncryptionKey, _SnapController_decryptSnapState, _SnapController_encryptSnapState, _SnapController_getStateToPersist, _SnapController_persistSnapState, _SnapController_handleInitialConnections, _SnapController_addSnapToSubject, _SnapController_removeSnapFromSubjects, _SnapController_revokeAllSnapPermissions, _SnapController_createApproval, _SnapController_updateApproval, _SnapController_resolveAllowlistVersion, _SnapController_add, _SnapController_startSnap, _SnapController_getEndowments, _SnapController_set, _SnapController_validateSnapPermissions, _SnapController_validatePlatformVersion, _SnapController_getExecutionTimeout, _SnapController_getRpcRequestHandler, _SnapController_createInterface, _SnapController_assertInterfaceExists, _SnapController_transformSnapRpcResponse, _SnapController_transformOnAssetsLookupResult, _SnapController_transformOnAssetsConversionResult, _SnapController_transformSnapRpcRequest, _SnapController_assertSnapRpcResponse, _SnapController_recordSnapRpcRequestStart, _SnapController_recordSnapRpcRequestFinish, _SnapController_getRollbackSnapshot, _SnapController_createRollbackSnapshot, _SnapController_rollbackSnap, _SnapController_rollbackSnaps, _SnapController_getRuntime, _SnapController_getRuntimeExpect, _SnapController_setupRuntime, _SnapController_calculatePermissionsChange, _SnapController_isSubjectConnectedToSnap, _SnapController_calculateConnectionsChange, _SnapController_updatePermissions, _SnapController_isValidUpdate, _SnapController_callLifecycleHook, _SnapController_handleLock;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.SnapController = exports.SNAP_APPROVAL_RESULT = exports.SNAP_APPROVAL_UPDATE = exports.SNAP_APPROVAL_INSTALL = exports.controllerName = void 0;
|
|
16
16
|
const base_controller_1 = require("@metamask/base-controller");
|
|
@@ -72,7 +72,7 @@ function truncateSnap(snap) {
|
|
|
72
72
|
* - Start: Initializes the snap in its SES realm with the authorized permissions.
|
|
73
73
|
*/
|
|
74
74
|
class SnapController extends base_controller_1.BaseController {
|
|
75
|
-
constructor({ closeAllConnections, messenger, state, dynamicPermissions = ['eth_accounts'], environmentEndowmentPermissions = [], excludedPermissions = {}, idleTimeCheckInterval = (0, utils_1.inMilliseconds)(5, utils_1.Duration.Second), maxIdleTime = (0, utils_1.inMilliseconds)(30, utils_1.Duration.Second), maxRequestTime = (0, utils_1.inMilliseconds)(60, utils_1.Duration.Second), fetchFunction = globalThis.fetch.bind(undefined), featureFlags = {}, detectSnapLocation: detectSnapLocationFunction = location_1.detectSnapLocation, preinstalledSnaps = null, encryptor, getMnemonicSeed, getFeatureFlags = () => ({}), clientCryptography, }) {
|
|
75
|
+
constructor({ closeAllConnections, messenger, state, dynamicPermissions = ['eth_accounts'], environmentEndowmentPermissions = [], excludedPermissions = {}, idleTimeCheckInterval = (0, utils_1.inMilliseconds)(5, utils_1.Duration.Second), maxIdleTime = (0, utils_1.inMilliseconds)(30, utils_1.Duration.Second), maxRequestTime = (0, utils_1.inMilliseconds)(60, utils_1.Duration.Second), fetchFunction = globalThis.fetch.bind(undefined), featureFlags = {}, detectSnapLocation: detectSnapLocationFunction = location_1.detectSnapLocation, preinstalledSnaps = null, encryptor, getMnemonicSeed, getFeatureFlags = () => ({}), clientCryptography, trackEvent, }) {
|
|
76
76
|
super({
|
|
77
77
|
messenger,
|
|
78
78
|
metadata: {
|
|
@@ -130,6 +130,8 @@ class SnapController extends base_controller_1.BaseController {
|
|
|
130
130
|
_SnapController_timeoutForLastRequestStatus.set(this, void 0);
|
|
131
131
|
_SnapController_statusMachine.set(this, void 0);
|
|
132
132
|
_SnapController_preinstalledSnaps.set(this, void 0);
|
|
133
|
+
_SnapController_trackEvent.set(this, void 0);
|
|
134
|
+
_SnapController_trackSnapExport.set(this, void 0);
|
|
133
135
|
/**
|
|
134
136
|
* Persist the state of a Snap.
|
|
135
137
|
*
|
|
@@ -179,6 +181,7 @@ class SnapController extends base_controller_1.BaseController {
|
|
|
179
181
|
this._onOutboundResponse = this._onOutboundResponse.bind(this);
|
|
180
182
|
__classPrivateFieldSet(this, _SnapController_rollbackSnapshots, new Map(), "f");
|
|
181
183
|
__classPrivateFieldSet(this, _SnapController_snapsRuntimeData, new Map(), "f");
|
|
184
|
+
__classPrivateFieldSet(this, _SnapController_trackEvent, trackEvent, "f");
|
|
182
185
|
__classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_pollForLastRequestStatus).call(this);
|
|
183
186
|
/* eslint-disable @typescript-eslint/unbound-method */
|
|
184
187
|
this.messagingSystem.subscribe('ExecutionService:unhandledError', this._onUnhandledSnapError);
|
|
@@ -202,6 +205,22 @@ class SnapController extends base_controller_1.BaseController {
|
|
|
202
205
|
__classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_handlePreinstalledSnaps).call(this, __classPrivateFieldGet(this, _SnapController_preinstalledSnaps, "f"));
|
|
203
206
|
}
|
|
204
207
|
Object.values(this.state?.snaps ?? {}).forEach((snap) => __classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_setupRuntime).call(this, snap.id));
|
|
208
|
+
__classPrivateFieldSet(this, _SnapController_trackSnapExport, (0, utils_2.throttleTracking)((snapId, handler, success, origin) => {
|
|
209
|
+
const snapMetadata = this.messagingSystem.call('SnapsRegistry:getMetadata', snapId);
|
|
210
|
+
__classPrivateFieldGet(this, _SnapController_trackEvent, "f").call(this, {
|
|
211
|
+
event: 'SnapExportUsed',
|
|
212
|
+
category: 'Snaps',
|
|
213
|
+
properties: {
|
|
214
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
215
|
+
snap_id: snapId,
|
|
216
|
+
export: handler,
|
|
217
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
218
|
+
snap_category: snapMetadata?.category ?? null,
|
|
219
|
+
success,
|
|
220
|
+
origin,
|
|
221
|
+
},
|
|
222
|
+
});
|
|
223
|
+
}), "f");
|
|
205
224
|
}
|
|
206
225
|
/**
|
|
207
226
|
* Checks all installed snaps against the block list and
|
|
@@ -523,8 +542,10 @@ class SnapController extends base_controller_1.BaseController {
|
|
|
523
542
|
this.update((state) => {
|
|
524
543
|
state.snaps = {};
|
|
525
544
|
state.snapStates = {};
|
|
545
|
+
state.unencryptedSnapStates = {};
|
|
526
546
|
});
|
|
527
547
|
__classPrivateFieldGet(this, _SnapController_snapsRuntimeData, "f").clear();
|
|
548
|
+
__classPrivateFieldGet(this, _SnapController_rollbackSnapshots, "f").clear();
|
|
528
549
|
// We want to remove all snaps & permissions, except for preinstalled snaps
|
|
529
550
|
if (__classPrivateFieldGet(this, _SnapController_preinstalledSnaps, "f")) {
|
|
530
551
|
__classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_handlePreinstalledSnaps).call(this, __classPrivateFieldGet(this, _SnapController_preinstalledSnaps, "f"));
|
|
@@ -946,17 +967,6 @@ class SnapController extends base_controller_1.BaseController {
|
|
|
946
967
|
throw error;
|
|
947
968
|
}
|
|
948
969
|
}
|
|
949
|
-
/**
|
|
950
|
-
* Get metadata for the given snap ID.
|
|
951
|
-
*
|
|
952
|
-
* @param snapId - The ID of the snap to get metadata for.
|
|
953
|
-
* @returns The metadata for the given snap ID, or `null` if the snap is not
|
|
954
|
-
* verified.
|
|
955
|
-
*/
|
|
956
|
-
async getRegistryMetadata(snapId) {
|
|
957
|
-
__classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_assertCanUsePlatform).call(this);
|
|
958
|
-
return await this.messagingSystem.call('SnapsRegistry:getMetadata', snapId);
|
|
959
|
-
}
|
|
960
970
|
/**
|
|
961
971
|
* Initiates a request for the given snap's initial permissions.
|
|
962
972
|
* Must be called in order. See processRequestedSnap.
|
|
@@ -1060,7 +1070,7 @@ class SnapController extends base_controller_1.BaseController {
|
|
|
1060
1070
|
}
|
|
1061
1071
|
}
|
|
1062
1072
|
exports.SnapController = SnapController;
|
|
1063
|
-
_SnapController_closeAllConnections = new WeakMap(), _SnapController_dynamicPermissions = new WeakMap(), _SnapController_environmentEndowmentPermissions = new WeakMap(), _SnapController_excludedPermissions = new WeakMap(), _SnapController_featureFlags = new WeakMap(), _SnapController_fetchFunction = new WeakMap(), _SnapController_idleTimeCheckInterval = new WeakMap(), _SnapController_maxIdleTime = new WeakMap(), _SnapController_encryptor = new WeakMap(), _SnapController_getMnemonicSeed = new WeakMap(), _SnapController_getFeatureFlags = new WeakMap(), _SnapController_clientCryptography = new WeakMap(), _SnapController_detectSnapLocation = new WeakMap(), _SnapController_snapsRuntimeData = new WeakMap(), _SnapController_rollbackSnapshots = new WeakMap(), _SnapController_timeoutForLastRequestStatus = new WeakMap(), _SnapController_statusMachine = new WeakMap(), _SnapController_preinstalledSnaps = new WeakMap(), _SnapController_persistSnapState = new WeakMap(), _SnapController_instances = new WeakSet(), _SnapController_initializeStateMachine = function _SnapController_initializeStateMachine() {
|
|
1073
|
+
_SnapController_closeAllConnections = new WeakMap(), _SnapController_dynamicPermissions = new WeakMap(), _SnapController_environmentEndowmentPermissions = new WeakMap(), _SnapController_excludedPermissions = new WeakMap(), _SnapController_featureFlags = new WeakMap(), _SnapController_fetchFunction = new WeakMap(), _SnapController_idleTimeCheckInterval = new WeakMap(), _SnapController_maxIdleTime = new WeakMap(), _SnapController_encryptor = new WeakMap(), _SnapController_getMnemonicSeed = new WeakMap(), _SnapController_getFeatureFlags = new WeakMap(), _SnapController_clientCryptography = new WeakMap(), _SnapController_detectSnapLocation = new WeakMap(), _SnapController_snapsRuntimeData = new WeakMap(), _SnapController_rollbackSnapshots = new WeakMap(), _SnapController_timeoutForLastRequestStatus = new WeakMap(), _SnapController_statusMachine = new WeakMap(), _SnapController_preinstalledSnaps = new WeakMap(), _SnapController_trackEvent = new WeakMap(), _SnapController_trackSnapExport = new WeakMap(), _SnapController_persistSnapState = new WeakMap(), _SnapController_instances = new WeakSet(), _SnapController_initializeStateMachine = function _SnapController_initializeStateMachine() {
|
|
1064
1074
|
const disableGuard = ({ snapId }) => {
|
|
1065
1075
|
return this.getExpect(snapId).enabled;
|
|
1066
1076
|
};
|
|
@@ -1129,7 +1139,6 @@ _SnapController_closeAllConnections = new WeakMap(), _SnapController_dynamicPerm
|
|
|
1129
1139
|
this.messagingSystem.registerActionHandler(`${exports.controllerName}:getRunnableSnaps`, (...args) => this.getRunnableSnaps(...args));
|
|
1130
1140
|
this.messagingSystem.registerActionHandler(`${exports.controllerName}:incrementActiveReferences`, (...args) => this.incrementActiveReferences(...args));
|
|
1131
1141
|
this.messagingSystem.registerActionHandler(`${exports.controllerName}:decrementActiveReferences`, (...args) => this.decrementActiveReferences(...args));
|
|
1132
|
-
this.messagingSystem.registerActionHandler(`${exports.controllerName}:getRegistryMetadata`, async (...args) => this.getRegistryMetadata(...args));
|
|
1133
1142
|
this.messagingSystem.registerActionHandler(`${exports.controllerName}:disconnectOrigin`, (...args) => this.removeSnapFromSubject(...args));
|
|
1134
1143
|
this.messagingSystem.registerActionHandler(`${exports.controllerName}:revokeDynamicPermissions`, (...args) => this.revokeDynamicSnapPermissions(...args));
|
|
1135
1144
|
this.messagingSystem.registerActionHandler(`${exports.controllerName}:getFile`, async (...args) => this.getSnapFile(...args));
|
|
@@ -1734,12 +1743,12 @@ async function _SnapController_getEndowments(snapId) {
|
|
|
1734
1743
|
}
|
|
1735
1744
|
await __classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_assertSnapRpcResponse).call(this, snapId, handlerType, result);
|
|
1736
1745
|
const transformedResult = await __classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_transformSnapRpcResponse).call(this, snapId, handlerType, transformedRequest, result);
|
|
1737
|
-
__classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_recordSnapRpcRequestFinish).call(this, snapId, transformedRequest.id);
|
|
1746
|
+
__classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_recordSnapRpcRequestFinish).call(this, snapId, transformedRequest.id, handlerType, origin, true);
|
|
1738
1747
|
return transformedResult;
|
|
1739
1748
|
}
|
|
1740
1749
|
catch (error) {
|
|
1741
1750
|
// We flag the RPC request as finished early since termination may affect pending requests
|
|
1742
|
-
__classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_recordSnapRpcRequestFinish).call(this, snapId, transformedRequest.id);
|
|
1751
|
+
__classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_recordSnapRpcRequestFinish).call(this, snapId, transformedRequest.id, handlerType, origin, false);
|
|
1743
1752
|
const [jsonRpcError, handled] = (0, snaps_utils_1.unwrapError)(error);
|
|
1744
1753
|
if (!handled) {
|
|
1745
1754
|
await this.stopSnap(snapId, snaps_utils_1.SnapStatusEvents.Crash);
|
|
@@ -1902,12 +1911,21 @@ async function _SnapController_assertSnapRpcResponse(snapId, handlerType, result
|
|
|
1902
1911
|
const runtime = __classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_getRuntimeExpect).call(this, snapId);
|
|
1903
1912
|
runtime.pendingInboundRequests.push({ requestId, timer });
|
|
1904
1913
|
runtime.lastRequest = null;
|
|
1905
|
-
}, _SnapController_recordSnapRpcRequestFinish = function _SnapController_recordSnapRpcRequestFinish(snapId, requestId) {
|
|
1914
|
+
}, _SnapController_recordSnapRpcRequestFinish = function _SnapController_recordSnapRpcRequestFinish(snapId, requestId, handlerType, origin, success) {
|
|
1906
1915
|
const runtime = __classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_getRuntimeExpect).call(this, snapId);
|
|
1907
1916
|
runtime.pendingInboundRequests = runtime.pendingInboundRequests.filter((request) => request.requestId !== requestId);
|
|
1908
1917
|
if (runtime.pendingInboundRequests.length === 0) {
|
|
1909
1918
|
runtime.lastRequest = Date.now();
|
|
1910
1919
|
}
|
|
1920
|
+
const snap = this.get(snapId);
|
|
1921
|
+
if ((0, utils_2.isTrackableHandler)(handlerType) && !snap?.preinstalled) {
|
|
1922
|
+
try {
|
|
1923
|
+
__classPrivateFieldGet(this, _SnapController_trackSnapExport, "f").call(this, snapId, handlerType, success, origin);
|
|
1924
|
+
}
|
|
1925
|
+
catch (error) {
|
|
1926
|
+
(0, snaps_utils_1.logError)(`Error when calling MetaMetrics hook for snap "${snap?.id}": ${(0, snaps_sdk_1.getErrorMessage)(error)}`);
|
|
1927
|
+
}
|
|
1928
|
+
}
|
|
1911
1929
|
}, _SnapController_getRollbackSnapshot = function _SnapController_getRollbackSnapshot(snapId) {
|
|
1912
1930
|
return __classPrivateFieldGet(this, _SnapController_rollbackSnapshots, "f").get(snapId);
|
|
1913
1931
|
}, _SnapController_createRollbackSnapshot = function _SnapController_createRollbackSnapshot(snapId) {
|