@metamask/snaps-controllers 0.38.0-flask.1 → 1.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 +568 -11
- package/dist/{types/cronjob → cronjob}/CronjobController.d.ts +6 -7
- package/dist/cronjob/CronjobController.js +248 -0
- package/dist/cronjob/CronjobController.js.map +1 -0
- package/dist/cronjob/index.js +18 -0
- package/dist/cronjob/index.js.map +1 -0
- package/dist/{types/fsm.d.ts → fsm.d.ts} +1 -1
- package/dist/fsm.js +75 -0
- package/dist/fsm.js.map +1 -0
- package/dist/{types/index.d.ts → index.d.ts} +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/logging.js +13 -0
- package/dist/logging.js.map +1 -0
- package/dist/multichain/MultiChainController.d.ts +137 -0
- package/dist/multichain/MultiChainController.js +339 -0
- package/dist/multichain/MultiChainController.js.map +1 -0
- package/dist/multichain/index.d.ts +3 -0
- package/dist/multichain/index.js +20 -0
- package/dist/multichain/index.js.map +1 -0
- package/dist/multichain/matching.d.ts +9 -0
- package/dist/multichain/matching.js +57 -0
- package/dist/multichain/matching.js.map +1 -0
- package/dist/multichain/middleware.d.ts +14 -0
- package/dist/multichain/middleware.js +42 -0
- package/dist/multichain/middleware.js.map +1 -0
- package/dist/{types/services → services}/AbstractExecutionService.d.ts +4 -4
- package/dist/services/AbstractExecutionService.js +318 -0
- package/dist/services/AbstractExecutionService.js.map +1 -0
- package/dist/{types/services → services}/ExecutionService.d.ts +3 -3
- package/dist/services/ExecutionService.js +4 -0
- package/dist/services/ExecutionService.js.map +1 -0
- package/dist/{types/services → services}/browser.d.ts +0 -2
- package/dist/services/browser.js +22 -0
- package/dist/services/browser.js.map +1 -0
- package/dist/{types/services → services}/iframe/IframeExecutionService.d.ts +2 -3
- package/dist/services/iframe/IframeExecutionService.js +30 -0
- package/dist/services/iframe/IframeExecutionService.js.map +1 -0
- package/dist/services/iframe/index.js +18 -0
- package/dist/services/iframe/index.js.map +1 -0
- package/dist/{types/services → services}/index.d.ts +0 -2
- package/dist/services/index.js +22 -0
- package/dist/services/index.js.map +1 -0
- package/dist/{types/services → services}/node/NodeProcessExecutionService.d.ts +3 -4
- package/dist/services/node/NodeProcessExecutionService.js +18 -0
- package/dist/services/node/NodeProcessExecutionService.js.map +1 -0
- package/dist/{types/services → services}/node/NodeThreadExecutionService.d.ts +2 -3
- package/dist/services/node/NodeThreadExecutionService.js +19 -0
- package/dist/services/node/NodeThreadExecutionService.js.map +1 -0
- package/dist/services/node/index.js +19 -0
- package/dist/services/node/index.js.map +1 -0
- package/dist/{types/services → services}/offscreen/OffscreenExecutionService.d.ts +3 -4
- package/dist/services/offscreen/OffscreenExecutionService.js +100 -0
- package/dist/services/offscreen/OffscreenExecutionService.js.map +1 -0
- package/dist/{types/services/ProxyPostMessageStream.d.ts → services/offscreen/OffscreenPostMessageStream.d.ts} +10 -10
- package/dist/services/offscreen/OffscreenPostMessageStream.js +66 -0
- package/dist/services/offscreen/OffscreenPostMessageStream.js.map +1 -0
- package/dist/services/offscreen/index.d.ts +2 -0
- package/dist/services/offscreen/index.js +19 -0
- package/dist/services/offscreen/index.js.map +1 -0
- package/dist/snaps/RequestQueue.js +44 -0
- package/dist/snaps/RequestQueue.js.map +1 -0
- package/dist/{types/snaps → snaps}/SnapController.d.ts +38 -62
- package/dist/snaps/SnapController.js +1478 -0
- package/dist/snaps/SnapController.js.map +1 -0
- package/dist/snaps/Timer.js +86 -0
- package/dist/snaps/Timer.js.map +1 -0
- package/dist/{types/snaps → snaps}/endowments/cronjob.d.ts +3 -5
- package/dist/snaps/endowments/cronjob.js +105 -0
- package/dist/snaps/endowments/cronjob.js.map +1 -0
- package/dist/{types/snaps → snaps}/endowments/enum.d.ts +2 -2
- package/dist/snaps/endowments/enum.js +15 -0
- package/dist/snaps/endowments/enum.js.map +1 -0
- package/dist/{types/snaps → snaps}/endowments/ethereum-provider.d.ts +1 -2
- package/dist/snaps/endowments/ethereum-provider.js +32 -0
- package/dist/snaps/endowments/ethereum-provider.js.map +1 -0
- package/dist/{types/snaps → snaps}/endowments/index.d.ts +14 -11
- package/dist/snaps/endowments/index.js +60 -0
- package/dist/snaps/endowments/index.js.map +1 -0
- package/dist/snaps/endowments/keyring.d.ts +40 -0
- package/dist/snaps/endowments/keyring.js +103 -0
- package/dist/snaps/endowments/keyring.js.map +1 -0
- package/dist/{types/snaps → snaps}/endowments/long-running.d.ts +1 -2
- package/dist/snaps/endowments/long-running.js +29 -0
- package/dist/snaps/endowments/long-running.js.map +1 -0
- package/dist/{types/snaps → snaps}/endowments/network-access.d.ts +1 -2
- package/dist/snaps/endowments/network-access.js +30 -0
- package/dist/snaps/endowments/network-access.js.map +1 -0
- package/dist/{types/snaps → snaps}/endowments/rpc.d.ts +3 -5
- package/dist/snaps/endowments/rpc.js +92 -0
- package/dist/snaps/endowments/rpc.js.map +1 -0
- package/dist/{types/snaps → snaps}/endowments/transaction-insight.d.ts +2 -3
- package/dist/snaps/endowments/transaction-insight.js +106 -0
- package/dist/snaps/endowments/transaction-insight.js.map +1 -0
- package/dist/{types/snaps → snaps}/endowments/web-assembly.d.ts +1 -2
- package/dist/snaps/endowments/web-assembly.js +31 -0
- package/dist/snaps/endowments/web-assembly.js.map +1 -0
- package/dist/{types/snaps → snaps}/index.d.ts +0 -2
- package/dist/snaps/index.js +21 -0
- package/dist/snaps/index.js.map +1 -0
- package/dist/{types/snaps → snaps}/location/http.d.ts +2 -3
- package/dist/{esm/snaps → snaps}/location/http.js +31 -52
- package/dist/snaps/location/http.js.map +1 -0
- package/dist/snaps/location/index.js +21 -0
- package/dist/snaps/location/index.js.map +1 -0
- package/dist/{types/snaps → snaps}/location/local.d.ts +3 -3
- package/dist/snaps/location/local.js +51 -0
- package/dist/snaps/location/local.js.map +1 -0
- package/dist/{types/snaps → snaps}/location/location.d.ts +2 -2
- package/dist/snaps/location/location.js +34 -0
- package/dist/snaps/location/location.js.map +1 -0
- package/dist/snaps/location/npm.d.ts +28 -0
- package/dist/{esm/snaps → snaps}/location/npm.js +117 -141
- package/dist/snaps/location/npm.js.map +1 -0
- package/dist/snaps/registry/index.js +19 -0
- package/dist/snaps/registry/index.js.map +1 -0
- package/dist/{types/snaps → snaps}/registry/json.d.ts +4 -5
- package/dist/snaps/registry/json.js +171 -0
- package/dist/snaps/registry/json.js.map +1 -0
- package/dist/{types/snaps → snaps}/registry/registry.d.ts +5 -5
- package/dist/snaps/registry/registry.js +11 -0
- package/dist/snaps/registry/registry.js.map +1 -0
- package/dist/snaps/selectors.d.ts +2 -0
- package/dist/snaps/selectors.js +6 -0
- package/dist/snaps/selectors.js.map +1 -0
- package/dist/{types/utils.d.ts → utils.d.ts} +14 -14
- package/dist/{esm/utils.js → utils.js} +30 -21
- package/dist/utils.js.map +1 -0
- package/package.json +32 -46
- package/dist/cjs/cronjob/CronjobController.js +0 -290
- package/dist/cjs/cronjob/CronjobController.js.map +0 -1
- package/dist/cjs/cronjob/index.js +0 -20
- package/dist/cjs/cronjob/index.js.map +0 -1
- package/dist/cjs/fsm.js +0 -69
- package/dist/cjs/fsm.js.map +0 -1
- package/dist/cjs/index.js +0 -23
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/logging.js +0 -15
- package/dist/cjs/logging.js.map +0 -1
- package/dist/cjs/services/AbstractExecutionService.js +0 -386
- package/dist/cjs/services/AbstractExecutionService.js.map +0 -1
- package/dist/cjs/services/ExecutionService.js +0 -7
- package/dist/cjs/services/ExecutionService.js.map +0 -1
- package/dist/cjs/services/ProxyPostMessageStream.js +0 -116
- package/dist/cjs/services/ProxyPostMessageStream.js.map +0 -1
- package/dist/cjs/services/browser.js +0 -32
- package/dist/cjs/services/browser.js.map +0 -1
- package/dist/cjs/services/iframe/IframeExecutionService.js +0 -54
- package/dist/cjs/services/iframe/IframeExecutionService.js.map +0 -1
- package/dist/cjs/services/iframe/index.js +0 -20
- package/dist/cjs/services/iframe/index.js.map +0 -1
- package/dist/cjs/services/index.js +0 -32
- package/dist/cjs/services/index.js.map +0 -1
- package/dist/cjs/services/node/NodeProcessExecutionService.js +0 -30
- package/dist/cjs/services/node/NodeProcessExecutionService.js.map +0 -1
- package/dist/cjs/services/node/NodeThreadExecutionService.js +0 -30
- package/dist/cjs/services/node/NodeThreadExecutionService.js.map +0 -1
- package/dist/cjs/services/node/index.js +0 -21
- package/dist/cjs/services/node/index.js.map +0 -1
- package/dist/cjs/services/offscreen/OffscreenExecutionService.js +0 -159
- package/dist/cjs/services/offscreen/OffscreenExecutionService.js.map +0 -1
- package/dist/cjs/services/offscreen/index.js +0 -20
- package/dist/cjs/services/offscreen/index.js.map +0 -1
- package/dist/cjs/services/webworker/WebWorkerExecutionService.js +0 -148
- package/dist/cjs/services/webworker/WebWorkerExecutionService.js.map +0 -1
- package/dist/cjs/services/webworker/index.js +0 -20
- package/dist/cjs/services/webworker/index.js.map +0 -1
- package/dist/cjs/snaps/RequestQueue.js +0 -63
- package/dist/cjs/snaps/RequestQueue.js.map +0 -1
- package/dist/cjs/snaps/SnapController.js +0 -1735
- package/dist/cjs/snaps/SnapController.js.map +0 -1
- package/dist/cjs/snaps/Timer.js +0 -117
- package/dist/cjs/snaps/Timer.js.map +0 -1
- package/dist/cjs/snaps/endowments/cronjob.js +0 -100
- package/dist/cjs/snaps/endowments/cronjob.js.map +0 -1
- package/dist/cjs/snaps/endowments/enum.js +0 -23
- package/dist/cjs/snaps/endowments/enum.js.map +0 -1
- package/dist/cjs/snaps/endowments/ethereum-provider.js +0 -43
- package/dist/cjs/snaps/endowments/ethereum-provider.js.map +0 -1
- package/dist/cjs/snaps/endowments/index.js +0 -82
- package/dist/cjs/snaps/endowments/index.js.map +0 -1
- package/dist/cjs/snaps/endowments/lifecycle-hooks.js +0 -37
- package/dist/cjs/snaps/endowments/lifecycle-hooks.js.map +0 -1
- package/dist/cjs/snaps/endowments/long-running.js +0 -38
- package/dist/cjs/snaps/endowments/long-running.js.map +0 -1
- package/dist/cjs/snaps/endowments/network-access.js +0 -44
- package/dist/cjs/snaps/endowments/network-access.js.map +0 -1
- package/dist/cjs/snaps/endowments/rpc.js +0 -99
- package/dist/cjs/snaps/endowments/rpc.js.map +0 -1
- package/dist/cjs/snaps/endowments/transaction-insight.js +0 -106
- package/dist/cjs/snaps/endowments/transaction-insight.js.map +0 -1
- package/dist/cjs/snaps/endowments/web-assembly.js +0 -42
- package/dist/cjs/snaps/endowments/web-assembly.js.map +0 -1
- package/dist/cjs/snaps/index.js +0 -25
- package/dist/cjs/snaps/index.js.map +0 -1
- package/dist/cjs/snaps/location/http.js +0 -106
- package/dist/cjs/snaps/location/http.js.map +0 -1
- package/dist/cjs/snaps/location/index.js +0 -23
- package/dist/cjs/snaps/location/index.js.map +0 -1
- package/dist/cjs/snaps/location/local.js +0 -93
- package/dist/cjs/snaps/location/local.js.map +0 -1
- package/dist/cjs/snaps/location/location.js +0 -34
- package/dist/cjs/snaps/location/location.js.map +0 -1
- package/dist/cjs/snaps/location/npm.js +0 -291
- package/dist/cjs/snaps/location/npm.js.map +0 -1
- package/dist/cjs/snaps/permissions.js +0 -61
- package/dist/cjs/snaps/permissions.js.map +0 -1
- package/dist/cjs/snaps/registry/index.js +0 -21
- package/dist/cjs/snaps/registry/index.js.map +0 -1
- package/dist/cjs/snaps/registry/json.js +0 -250
- package/dist/cjs/snaps/registry/json.js.map +0 -1
- package/dist/cjs/snaps/registry/registry.js +0 -18
- package/dist/cjs/snaps/registry/registry.js.map +0 -1
- package/dist/cjs/snaps/selectors.js +0 -13
- package/dist/cjs/snaps/selectors.js.map +0 -1
- package/dist/cjs/utils.js +0 -70
- package/dist/cjs/utils.js.map +0 -1
- package/dist/esm/cronjob/CronjobController.js +0 -275
- package/dist/esm/cronjob/CronjobController.js.map +0 -1
- package/dist/esm/cronjob/index.js +0 -3
- package/dist/esm/cronjob/index.js.map +0 -1
- package/dist/esm/fsm.js +0 -70
- package/dist/esm/fsm.js.map +0 -1
- package/dist/esm/index.js +0 -6
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/logging.js +0 -10
- package/dist/esm/logging.js.map +0 -1
- package/dist/esm/services/AbstractExecutionService.js +0 -369
- package/dist/esm/services/AbstractExecutionService.js.map +0 -1
- package/dist/esm/services/ExecutionService.js +0 -4
- package/dist/esm/services/ExecutionService.js.map +0 -1
- package/dist/esm/services/ProxyPostMessageStream.js +0 -109
- package/dist/esm/services/ProxyPostMessageStream.js.map +0 -1
- package/dist/esm/services/browser.js +0 -9
- package/dist/esm/services/browser.js.map +0 -1
- package/dist/esm/services/iframe/IframeExecutionService.js +0 -44
- package/dist/esm/services/iframe/IframeExecutionService.js.map +0 -1
- package/dist/esm/services/iframe/index.js +0 -3
- package/dist/esm/services/iframe/index.js.map +0 -1
- package/dist/esm/services/index.js +0 -9
- package/dist/esm/services/index.js.map +0 -1
- package/dist/esm/services/node/NodeProcessExecutionService.js +0 -20
- package/dist/esm/services/node/NodeProcessExecutionService.js.map +0 -1
- package/dist/esm/services/node/NodeThreadExecutionService.js +0 -21
- package/dist/esm/services/node/NodeThreadExecutionService.js.map +0 -1
- package/dist/esm/services/node/index.js +0 -4
- package/dist/esm/services/node/index.js.map +0 -1
- package/dist/esm/services/offscreen/OffscreenExecutionService.js +0 -149
- package/dist/esm/services/offscreen/OffscreenExecutionService.js.map +0 -1
- package/dist/esm/services/offscreen/index.js +0 -3
- package/dist/esm/services/offscreen/index.js.map +0 -1
- package/dist/esm/services/webworker/WebWorkerExecutionService.js +0 -130
- package/dist/esm/services/webworker/WebWorkerExecutionService.js.map +0 -1
- package/dist/esm/services/webworker/index.js +0 -3
- package/dist/esm/services/webworker/index.js.map +0 -1
- package/dist/esm/snaps/RequestQueue.js +0 -53
- package/dist/esm/snaps/RequestQueue.js.map +0 -1
- package/dist/esm/snaps/SnapController.js +0 -1714
- package/dist/esm/snaps/SnapController.js.map +0 -1
- package/dist/esm/snaps/Timer.js +0 -107
- package/dist/esm/snaps/Timer.js.map +0 -1
- package/dist/esm/snaps/endowments/cronjob.js +0 -99
- package/dist/esm/snaps/endowments/cronjob.js.map +0 -1
- package/dist/esm/snaps/endowments/enum.js +0 -13
- package/dist/esm/snaps/endowments/enum.js.map +0 -1
- package/dist/esm/snaps/endowments/ethereum-provider.js +0 -33
- package/dist/esm/snaps/endowments/ethereum-provider.js.map +0 -1
- package/dist/esm/snaps/endowments/index.js +0 -41
- package/dist/esm/snaps/endowments/index.js.map +0 -1
- package/dist/esm/snaps/endowments/lifecycle-hooks.js +0 -27
- package/dist/esm/snaps/endowments/lifecycle-hooks.js.map +0 -1
- package/dist/esm/snaps/endowments/long-running.js +0 -28
- package/dist/esm/snaps/endowments/long-running.js.map +0 -1
- package/dist/esm/snaps/endowments/network-access.js +0 -34
- package/dist/esm/snaps/endowments/network-access.js.map +0 -1
- package/dist/esm/snaps/endowments/rpc.js +0 -88
- package/dist/esm/snaps/endowments/rpc.js.map +0 -1
- package/dist/esm/snaps/endowments/transaction-insight.js +0 -99
- package/dist/esm/snaps/endowments/transaction-insight.js.map +0 -1
- package/dist/esm/snaps/endowments/web-assembly.js +0 -32
- package/dist/esm/snaps/endowments/web-assembly.js.map +0 -1
- package/dist/esm/snaps/index.js +0 -8
- package/dist/esm/snaps/index.js.map +0 -1
- package/dist/esm/snaps/location/http.js.map +0 -1
- package/dist/esm/snaps/location/index.js +0 -6
- package/dist/esm/snaps/location/index.js.map +0 -1
- package/dist/esm/snaps/location/local.js +0 -83
- package/dist/esm/snaps/location/local.js.map +0 -1
- package/dist/esm/snaps/location/location.js +0 -30
- package/dist/esm/snaps/location/location.js.map +0 -1
- package/dist/esm/snaps/location/npm.js.map +0 -1
- package/dist/esm/snaps/permissions.js +0 -50
- package/dist/esm/snaps/permissions.js.map +0 -1
- package/dist/esm/snaps/registry/index.js +0 -4
- package/dist/esm/snaps/registry/index.js.map +0 -1
- package/dist/esm/snaps/registry/json.js +0 -240
- package/dist/esm/snaps/registry/json.js.map +0 -1
- package/dist/esm/snaps/registry/registry.js +0 -8
- package/dist/esm/snaps/registry/registry.js.map +0 -1
- package/dist/esm/snaps/selectors.js +0 -3
- package/dist/esm/snaps/selectors.js.map +0 -1
- package/dist/esm/utils.js.map +0 -1
- package/dist/types/services/offscreen/index.d.ts +0 -1
- package/dist/types/services/webworker/WebWorkerExecutionService.d.ts +0 -45
- package/dist/types/services/webworker/index.d.ts +0 -1
- package/dist/types/snaps/endowments/lifecycle-hooks.d.ts +0 -15
- package/dist/types/snaps/location/npm.d.ts +0 -49
- package/dist/types/snaps/permissions.d.ts +0 -16
- package/dist/types/snaps/selectors.d.ts +0 -2
- /package/dist/{types/cronjob → cronjob}/index.d.ts +0 -0
- /package/dist/{types/logging.d.ts → logging.d.ts} +0 -0
- /package/dist/{types/services → services}/iframe/index.d.ts +0 -0
- /package/dist/{types/services → services}/node/index.d.ts +0 -0
- /package/dist/{types/snaps → snaps}/RequestQueue.d.ts +0 -0
- /package/dist/{types/snaps → snaps}/Timer.d.ts +0 -0
- /package/dist/{types/snaps → snaps}/location/index.d.ts +0 -0
- /package/dist/{types/snaps → snaps}/registry/index.d.ts +0 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./NodeProcessExecutionService"), exports);
|
|
18
|
+
__exportStar(require("./NodeThreadExecutionService"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/node/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA8C;AAC9C,+DAA6C","sourcesContent":["export * from './NodeProcessExecutionService';\nexport * from './NodeThreadExecutionService';\n"]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import { ProxyPostMessageStream } from '../ProxyPostMessageStream';
|
|
1
|
+
import { AbstractExecutionService, ExecutionServiceArgs, Job } from '../AbstractExecutionService';
|
|
2
|
+
import { OffscreenPostMessageStream } from './OffscreenPostMessageStream';
|
|
4
3
|
declare type OffscreenExecutionEnvironmentServiceArgs = {
|
|
5
4
|
documentUrl: URL;
|
|
6
5
|
frameUrl: URL;
|
|
@@ -38,7 +37,7 @@ export declare class OffscreenExecutionService extends AbstractExecutionService<
|
|
|
38
37
|
*/
|
|
39
38
|
protected initEnvStream(jobId: string): Promise<{
|
|
40
39
|
worker: string;
|
|
41
|
-
stream:
|
|
40
|
+
stream: OffscreenPostMessageStream;
|
|
42
41
|
}>;
|
|
43
42
|
/**
|
|
44
43
|
* Creates the offscreen document to be used as the execution environment.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
6
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
7
|
+
};
|
|
8
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
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
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
|
+
};
|
|
13
|
+
var _OffscreenExecutionService_runtimeStream;
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.OffscreenExecutionService = void 0;
|
|
16
|
+
const post_message_stream_1 = require("@metamask/post-message-stream");
|
|
17
|
+
const nanoid_1 = require("nanoid");
|
|
18
|
+
const AbstractExecutionService_1 = require("../AbstractExecutionService");
|
|
19
|
+
const OffscreenPostMessageStream_1 = require("./OffscreenPostMessageStream");
|
|
20
|
+
class OffscreenExecutionService extends AbstractExecutionService_1.AbstractExecutionService {
|
|
21
|
+
/**
|
|
22
|
+
* Create a new offscreen execution service.
|
|
23
|
+
*
|
|
24
|
+
* @param args - The constructor arguments.
|
|
25
|
+
* @param args.documentUrl - The URL of the offscreen document to use as the
|
|
26
|
+
* execution environment. This must be a URL relative to the location where
|
|
27
|
+
* this is called. This cannot be a public (http(s)) URL.
|
|
28
|
+
* @param args.frameUrl - The URL of the iframe to load inside the offscreen
|
|
29
|
+
* document.
|
|
30
|
+
* @param args.messenger - The messenger to use for communication with the
|
|
31
|
+
* `SnapController`.
|
|
32
|
+
* @param args.setupSnapProvider - The function to use to set up the snap
|
|
33
|
+
* provider.
|
|
34
|
+
*/
|
|
35
|
+
constructor({ documentUrl, frameUrl, messenger, setupSnapProvider, }) {
|
|
36
|
+
super({
|
|
37
|
+
messenger,
|
|
38
|
+
setupSnapProvider,
|
|
39
|
+
});
|
|
40
|
+
_OffscreenExecutionService_runtimeStream.set(this, void 0);
|
|
41
|
+
this.documentUrl = documentUrl;
|
|
42
|
+
this.frameUrl = frameUrl;
|
|
43
|
+
__classPrivateFieldSet(this, _OffscreenExecutionService_runtimeStream, new post_message_stream_1.BrowserRuntimePostMessageStream({
|
|
44
|
+
name: 'parent',
|
|
45
|
+
target: 'child',
|
|
46
|
+
}), "f");
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Send a termination command to the offscreen document.
|
|
50
|
+
*
|
|
51
|
+
* @param job - The job to terminate.
|
|
52
|
+
*/
|
|
53
|
+
async terminateJob(job) {
|
|
54
|
+
// The `AbstractExecutionService` will have already closed the job stream,
|
|
55
|
+
// so we write to the runtime stream directly.
|
|
56
|
+
__classPrivateFieldGet(this, _OffscreenExecutionService_runtimeStream, "f").write({
|
|
57
|
+
jobId: job.id,
|
|
58
|
+
data: {
|
|
59
|
+
jsonrpc: '2.0',
|
|
60
|
+
method: 'terminateJob',
|
|
61
|
+
id: (0, nanoid_1.nanoid)(),
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Create a new stream for the specified job. This wraps the runtime stream
|
|
67
|
+
* in a stream specific to the job.
|
|
68
|
+
*
|
|
69
|
+
* @param jobId - The job ID.
|
|
70
|
+
*/
|
|
71
|
+
async initEnvStream(jobId) {
|
|
72
|
+
// Lazily create the offscreen document.
|
|
73
|
+
await this.createDocument();
|
|
74
|
+
const stream = new OffscreenPostMessageStream_1.OffscreenPostMessageStream({
|
|
75
|
+
stream: __classPrivateFieldGet(this, _OffscreenExecutionService_runtimeStream, "f"),
|
|
76
|
+
frameUrl: this.frameUrl.toString(),
|
|
77
|
+
jobId,
|
|
78
|
+
});
|
|
79
|
+
return { worker: jobId, stream };
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Creates the offscreen document to be used as the execution environment.
|
|
83
|
+
*
|
|
84
|
+
* If the document already exists, this does nothing.
|
|
85
|
+
*/
|
|
86
|
+
async createDocument() {
|
|
87
|
+
// Extensions can only have a single offscreen document.
|
|
88
|
+
if (await chrome.offscreen.hasDocument()) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
await chrome.offscreen.createDocument({
|
|
92
|
+
justification: 'MetaMask Snaps Execution Environment',
|
|
93
|
+
reasons: ['IFRAME_SCRIPTING'],
|
|
94
|
+
url: this.documentUrl.toString(),
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
exports.OffscreenExecutionService = OffscreenExecutionService;
|
|
99
|
+
_OffscreenExecutionService_runtimeStream = new WeakMap();
|
|
100
|
+
//# sourceMappingURL=OffscreenExecutionService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OffscreenExecutionService.js","sourceRoot":"","sources":["../../../src/services/offscreen/OffscreenExecutionService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,uEAAgF;AAChF,mCAAgC;AAEhC,0EAIqC;AACrC,6EAA0E;AAO1E,MAAa,yBAA0B,SAAQ,mDAAgC;IAO7E;;;;;;;;;;;;;OAaG;IACH,YAAY,EACV,WAAW,EACX,QAAQ,EACR,SAAS,EACT,iBAAiB,GACwB;QACzC,KAAK,CAAC;YACJ,SAAS;YACT,iBAAiB;SAClB,CAAC,CAAC;QAzBL,2DAAyD;QA2BvD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,uBAAA,IAAI,4CAAkB,IAAI,qDAA+B,CAAC;YACxD,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,OAAO;SAChB,CAAC,MAAA,CAAC;IACL,CAAC;IAED;;;;OAIG;IACO,KAAK,CAAC,YAAY,CAAC,GAAgB;QAC3C,0EAA0E;QAC1E,8CAA8C;QAC9C,uBAAA,IAAI,gDAAe,CAAC,KAAK,CAAC;YACxB,KAAK,EAAE,GAAG,CAAC,EAAE;YACb,IAAI,EAAE;gBACJ,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,cAAc;gBACtB,EAAE,EAAE,IAAA,eAAM,GAAE;aACb;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACO,KAAK,CAAC,aAAa,CAAC,KAAa;QACzC,wCAAwC;QACxC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,MAAM,GAAG,IAAI,uDAA0B,CAAC;YAC5C,MAAM,EAAE,uBAAA,IAAI,gDAAe;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;YAClC,KAAK;SACN,CAAC,CAAC;QAEH,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,cAAc;QAC1B,wDAAwD;QACxD,IAAI,MAAM,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE;YACxC,OAAO;SACR;QAED,MAAM,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;YACpC,aAAa,EAAE,sCAAsC;YACrD,OAAO,EAAE,CAAC,kBAAkB,CAAC;YAC7B,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;SACjC,CAAC,CAAC;IACL,CAAC;CACF;AA9FD,8DA8FC","sourcesContent":["import { BrowserRuntimePostMessageStream } from '@metamask/post-message-stream';\nimport { nanoid } from 'nanoid';\n\nimport {\n AbstractExecutionService,\n ExecutionServiceArgs,\n Job,\n} from '../AbstractExecutionService';\nimport { OffscreenPostMessageStream } from './OffscreenPostMessageStream';\n\ntype OffscreenExecutionEnvironmentServiceArgs = {\n documentUrl: URL;\n frameUrl: URL;\n} & ExecutionServiceArgs;\n\nexport class OffscreenExecutionService extends AbstractExecutionService<string> {\n public readonly documentUrl: URL;\n\n public readonly frameUrl: URL;\n\n readonly #runtimeStream: BrowserRuntimePostMessageStream;\n\n /**\n * Create a new offscreen execution service.\n *\n * @param args - The constructor arguments.\n * @param args.documentUrl - The URL of the offscreen document to use as the\n * execution environment. This must be a URL relative to the location where\n * this is called. This cannot be a public (http(s)) URL.\n * @param args.frameUrl - The URL of the iframe to load inside the offscreen\n * document.\n * @param args.messenger - The messenger to use for communication with the\n * `SnapController`.\n * @param args.setupSnapProvider - The function to use to set up the snap\n * provider.\n */\n constructor({\n documentUrl,\n frameUrl,\n messenger,\n setupSnapProvider,\n }: OffscreenExecutionEnvironmentServiceArgs) {\n super({\n messenger,\n setupSnapProvider,\n });\n\n this.documentUrl = documentUrl;\n this.frameUrl = frameUrl;\n this.#runtimeStream = new BrowserRuntimePostMessageStream({\n name: 'parent',\n target: 'child',\n });\n }\n\n /**\n * Send a termination command to the offscreen document.\n *\n * @param job - The job to terminate.\n */\n protected async terminateJob(job: Job<string>) {\n // The `AbstractExecutionService` will have already closed the job stream,\n // so we write to the runtime stream directly.\n this.#runtimeStream.write({\n jobId: job.id,\n data: {\n jsonrpc: '2.0',\n method: 'terminateJob',\n id: nanoid(),\n },\n });\n }\n\n /**\n * Create a new stream for the specified job. This wraps the runtime stream\n * in a stream specific to the job.\n *\n * @param jobId - The job ID.\n */\n protected async initEnvStream(jobId: string) {\n // Lazily create the offscreen document.\n await this.createDocument();\n\n const stream = new OffscreenPostMessageStream({\n stream: this.#runtimeStream,\n frameUrl: this.frameUrl.toString(),\n jobId,\n });\n\n return { worker: jobId, stream };\n }\n\n /**\n * Creates the offscreen document to be used as the execution environment.\n *\n * If the document already exists, this does nothing.\n */\n private async createDocument() {\n // Extensions can only have a single offscreen document.\n if (await chrome.offscreen.hasDocument()) {\n return;\n }\n\n await chrome.offscreen.createDocument({\n justification: 'MetaMask Snaps Execution Environment',\n reasons: ['IFRAME_SCRIPTING'],\n url: this.documentUrl.toString(),\n });\n }\n}\n"]}
|
|
@@ -1,35 +1,35 @@
|
|
|
1
1
|
import { BasePostMessageStream } from '@metamask/post-message-stream';
|
|
2
|
-
import
|
|
3
|
-
export declare type
|
|
2
|
+
import { JsonRpcRequest } from '@metamask/utils';
|
|
3
|
+
export declare type OffscreenPostMessageStreamArgs = {
|
|
4
4
|
stream: BasePostMessageStream;
|
|
5
5
|
jobId: string;
|
|
6
|
-
|
|
6
|
+
frameUrl: string;
|
|
7
7
|
};
|
|
8
|
-
export declare type
|
|
8
|
+
export declare type OffscreenPostMessage = {
|
|
9
9
|
jobId: string;
|
|
10
10
|
data: JsonRpcRequest;
|
|
11
|
-
extra?: Record<string, unknown>;
|
|
12
11
|
};
|
|
13
12
|
/**
|
|
14
13
|
* A post message stream that wraps messages in a job ID, before sending them
|
|
15
14
|
* over the underlying stream.
|
|
16
15
|
*/
|
|
17
|
-
export declare class
|
|
16
|
+
export declare class OffscreenPostMessageStream extends BasePostMessageStream {
|
|
18
17
|
#private;
|
|
19
18
|
/**
|
|
20
|
-
* Initializes a new `
|
|
19
|
+
* Initializes a new `OffscreenPostMessageStream` instance.
|
|
21
20
|
*
|
|
22
21
|
* @param args - The constructor arguments.
|
|
23
22
|
* @param args.stream - The underlying stream to use for communication.
|
|
24
23
|
* @param args.jobId - The ID of the job this stream is associated with.
|
|
25
|
-
* @param args.
|
|
24
|
+
* @param args.frameUrl - The URL of the frame to load inside the offscreen
|
|
25
|
+
* document.
|
|
26
26
|
*/
|
|
27
|
-
constructor({ stream, jobId,
|
|
27
|
+
constructor({ stream, jobId, frameUrl }: OffscreenPostMessageStreamArgs);
|
|
28
28
|
/**
|
|
29
29
|
* Write data to the underlying stream. This wraps the data in an object with
|
|
30
30
|
* the job ID.
|
|
31
31
|
*
|
|
32
32
|
* @param data - The data to write.
|
|
33
33
|
*/
|
|
34
|
-
_postMessage(data:
|
|
34
|
+
_postMessage(data: OffscreenPostMessage): void;
|
|
35
35
|
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
6
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
7
|
+
};
|
|
8
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
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
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
|
+
};
|
|
13
|
+
var _OffscreenPostMessageStream_instances, _OffscreenPostMessageStream_stream, _OffscreenPostMessageStream_jobId, _OffscreenPostMessageStream_frameUrl, _OffscreenPostMessageStream_onData;
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.OffscreenPostMessageStream = void 0;
|
|
16
|
+
const post_message_stream_1 = require("@metamask/post-message-stream");
|
|
17
|
+
/**
|
|
18
|
+
* A post message stream that wraps messages in a job ID, before sending them
|
|
19
|
+
* over the underlying stream.
|
|
20
|
+
*/
|
|
21
|
+
class OffscreenPostMessageStream extends post_message_stream_1.BasePostMessageStream {
|
|
22
|
+
/**
|
|
23
|
+
* Initializes a new `OffscreenPostMessageStream` instance.
|
|
24
|
+
*
|
|
25
|
+
* @param args - The constructor arguments.
|
|
26
|
+
* @param args.stream - The underlying stream to use for communication.
|
|
27
|
+
* @param args.jobId - The ID of the job this stream is associated with.
|
|
28
|
+
* @param args.frameUrl - The URL of the frame to load inside the offscreen
|
|
29
|
+
* document.
|
|
30
|
+
*/
|
|
31
|
+
constructor({ stream, jobId, frameUrl }) {
|
|
32
|
+
super();
|
|
33
|
+
_OffscreenPostMessageStream_instances.add(this);
|
|
34
|
+
_OffscreenPostMessageStream_stream.set(this, void 0);
|
|
35
|
+
_OffscreenPostMessageStream_jobId.set(this, void 0);
|
|
36
|
+
_OffscreenPostMessageStream_frameUrl.set(this, void 0);
|
|
37
|
+
__classPrivateFieldSet(this, _OffscreenPostMessageStream_stream, stream, "f");
|
|
38
|
+
__classPrivateFieldSet(this, _OffscreenPostMessageStream_jobId, jobId, "f");
|
|
39
|
+
__classPrivateFieldSet(this, _OffscreenPostMessageStream_frameUrl, frameUrl, "f");
|
|
40
|
+
__classPrivateFieldGet(this, _OffscreenPostMessageStream_stream, "f").on('data', __classPrivateFieldGet(this, _OffscreenPostMessageStream_instances, "m", _OffscreenPostMessageStream_onData).bind(this));
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Write data to the underlying stream. This wraps the data in an object with
|
|
44
|
+
* the job ID.
|
|
45
|
+
*
|
|
46
|
+
* @param data - The data to write.
|
|
47
|
+
*/
|
|
48
|
+
_postMessage(data) {
|
|
49
|
+
__classPrivateFieldGet(this, _OffscreenPostMessageStream_stream, "f").write({
|
|
50
|
+
jobId: __classPrivateFieldGet(this, _OffscreenPostMessageStream_jobId, "f"),
|
|
51
|
+
// TODO: Rather than injecting the frame URL here, we should come up with
|
|
52
|
+
// a better way to do this. The frame URL is needed to avoid hard coding
|
|
53
|
+
// it in the offscreen execution environment.
|
|
54
|
+
frameUrl: __classPrivateFieldGet(this, _OffscreenPostMessageStream_frameUrl, "f"),
|
|
55
|
+
data,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.OffscreenPostMessageStream = OffscreenPostMessageStream;
|
|
60
|
+
_OffscreenPostMessageStream_stream = new WeakMap(), _OffscreenPostMessageStream_jobId = new WeakMap(), _OffscreenPostMessageStream_frameUrl = new WeakMap(), _OffscreenPostMessageStream_instances = new WeakSet(), _OffscreenPostMessageStream_onData = function _OffscreenPostMessageStream_onData(data) {
|
|
61
|
+
if (data.jobId !== __classPrivateFieldGet(this, _OffscreenPostMessageStream_jobId, "f")) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
this.push(data.data);
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=OffscreenPostMessageStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OffscreenPostMessageStream.js","sourceRoot":"","sources":["../../../src/services/offscreen/OffscreenPostMessageStream.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,uEAAsE;AActE;;;GAGG;AACH,MAAa,0BAA2B,SAAQ,2CAAqB;IAOnE;;;;;;;;OAQG;IACH,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAkC;QACrE,KAAK,EAAE,CAAC;;QAhBV,qDAAwC;QAExC,oDAAwB;QAExB,uDAA2B;QAczB,uBAAA,IAAI,sCAAW,MAAM,MAAA,CAAC;QACtB,uBAAA,IAAI,qCAAU,KAAK,MAAA,CAAC;QACpB,uBAAA,IAAI,wCAAa,QAAQ,MAAA,CAAC;QAE1B,uBAAA,IAAI,0CAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,uBAAA,IAAI,iFAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;IAgBD;;;;;OAKG;IACH,YAAY,CAAC,IAA0B;QACrC,uBAAA,IAAI,0CAAQ,CAAC,KAAK,CAAC;YACjB,KAAK,EAAE,uBAAA,IAAI,yCAAO;YAClB,yEAAyE;YACzE,wEAAwE;YACxE,6CAA6C;YAC7C,QAAQ,EAAE,uBAAA,IAAI,4CAAU;YACxB,IAAI;SACL,CAAC,CAAC;IACL,CAAC;CACF;AAxDD,gEAwDC;qSAxBS,IAA0B;IAChC,IAAI,IAAI,CAAC,KAAK,KAAK,uBAAA,IAAI,yCAAO,EAAE;QAC9B,OAAO;KACR;IAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,CAAC","sourcesContent":["import { BasePostMessageStream } from '@metamask/post-message-stream';\nimport { JsonRpcRequest } from '@metamask/utils';\n\nexport type OffscreenPostMessageStreamArgs = {\n stream: BasePostMessageStream;\n jobId: string;\n frameUrl: string;\n};\n\nexport type OffscreenPostMessage = {\n jobId: string;\n data: JsonRpcRequest;\n};\n\n/**\n * A post message stream that wraps messages in a job ID, before sending them\n * over the underlying stream.\n */\nexport class OffscreenPostMessageStream extends BasePostMessageStream {\n readonly #stream: BasePostMessageStream;\n\n readonly #jobId: string;\n\n readonly #frameUrl: string;\n\n /**\n * Initializes a new `OffscreenPostMessageStream` instance.\n *\n * @param args - The constructor arguments.\n * @param args.stream - The underlying stream to use for communication.\n * @param args.jobId - The ID of the job this stream is associated with.\n * @param args.frameUrl - The URL of the frame to load inside the offscreen\n * document.\n */\n constructor({ stream, jobId, frameUrl }: OffscreenPostMessageStreamArgs) {\n super();\n\n this.#stream = stream;\n this.#jobId = jobId;\n this.#frameUrl = frameUrl;\n\n this.#stream.on('data', this.#onData.bind(this));\n }\n\n /**\n * Handle incoming data from the underlying stream. This checks that the job\n * ID matches the expected job ID, and pushes the data to the stream if so.\n *\n * @param data - The data to handle.\n */\n #onData(data: OffscreenPostMessage) {\n if (data.jobId !== this.#jobId) {\n return;\n }\n\n this.push(data.data);\n }\n\n /**\n * Write data to the underlying stream. This wraps the data in an object with\n * the job ID.\n *\n * @param data - The data to write.\n */\n _postMessage(data: OffscreenPostMessage) {\n this.#stream.write({\n jobId: this.#jobId,\n // TODO: Rather than injecting the frame URL here, we should come up with\n // a better way to do this. The frame URL is needed to avoid hard coding\n // it in the offscreen execution environment.\n frameUrl: this.#frameUrl,\n data,\n });\n }\n}\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./OffscreenExecutionService"), exports);
|
|
18
|
+
__exportStar(require("./OffscreenPostMessageStream"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/offscreen/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C;AAC5C,+DAA6C","sourcesContent":["export * from './OffscreenExecutionService';\nexport * from './OffscreenPostMessageStream';\n"]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RequestQueue = void 0;
|
|
4
|
+
class RequestQueue {
|
|
5
|
+
constructor(maxQueueSize) {
|
|
6
|
+
this.maxQueueSize = maxQueueSize;
|
|
7
|
+
this.queueSizes = new Map();
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Increments the queue count for a particular origin.
|
|
11
|
+
*
|
|
12
|
+
* @param origin - A string identifying the origin.
|
|
13
|
+
*/
|
|
14
|
+
increment(origin) {
|
|
15
|
+
const currentCount = this.queueSizes.get(origin) ?? 0;
|
|
16
|
+
if (currentCount >= this.maxQueueSize) {
|
|
17
|
+
throw new Error('Maximum number of requests reached. Try again later.');
|
|
18
|
+
}
|
|
19
|
+
this.queueSizes.set(origin, currentCount + 1);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Decrements the queue count for a particular origin.
|
|
23
|
+
*
|
|
24
|
+
* @param origin - A string identifying the origin.
|
|
25
|
+
*/
|
|
26
|
+
decrement(origin) {
|
|
27
|
+
const currentCount = this.queueSizes.get(origin) ?? 0;
|
|
28
|
+
if (currentCount === 0) {
|
|
29
|
+
throw new Error(`Cannot decrement, ${origin} does not have any outstanding requests.`);
|
|
30
|
+
}
|
|
31
|
+
this.queueSizes.set(origin, currentCount - 1);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Gets the queue count for a particular origin.
|
|
35
|
+
*
|
|
36
|
+
* @param origin - A string identifying the origin.
|
|
37
|
+
* @returns The queue count for the origin.
|
|
38
|
+
*/
|
|
39
|
+
get(origin) {
|
|
40
|
+
return this.queueSizes.get(origin) ?? 0;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.RequestQueue = RequestQueue;
|
|
44
|
+
//# sourceMappingURL=RequestQueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequestQueue.js","sourceRoot":"","sources":["../../src/snaps/RequestQueue.ts"],"names":[],"mappings":";;;AAAA,MAAa,YAAY;IAKvB,YAAY,YAAoB;QAC9B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACI,SAAS,CAAC,MAAc;QAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,YAAY,IAAI,IAAI,CAAC,YAAY,EAAE;YACrC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;SACzE;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACI,SAAS,CAAC,MAAc;QAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,YAAY,KAAK,CAAC,EAAE;YACtB,MAAM,IAAI,KAAK,CACb,qBAAqB,MAAM,0CAA0C,CACtE,CAAC;SACH;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;IAChD,CAAC;IAED;;;;;OAKG;IACI,GAAG,CAAC,MAAc;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF;AA/CD,oCA+CC","sourcesContent":["export class RequestQueue {\n public readonly maxQueueSize: number;\n\n private readonly queueSizes: Map<string, number>;\n\n constructor(maxQueueSize: number) {\n this.maxQueueSize = maxQueueSize;\n this.queueSizes = new Map<string, number>();\n }\n\n /**\n * Increments the queue count for a particular origin.\n *\n * @param origin - A string identifying the origin.\n */\n public increment(origin: string) {\n const currentCount = this.queueSizes.get(origin) ?? 0;\n if (currentCount >= this.maxQueueSize) {\n throw new Error('Maximum number of requests reached. Try again later.');\n }\n this.queueSizes.set(origin, currentCount + 1);\n }\n\n /**\n * Decrements the queue count for a particular origin.\n *\n * @param origin - A string identifying the origin.\n */\n public decrement(origin: string) {\n const currentCount = this.queueSizes.get(origin) ?? 0;\n if (currentCount === 0) {\n throw new Error(\n `Cannot decrement, ${origin} does not have any outstanding requests.`,\n );\n }\n this.queueSizes.set(origin, currentCount - 1);\n }\n\n /**\n * Gets the queue count for a particular origin.\n *\n * @param origin - A string identifying the origin.\n * @returns The queue count for the origin.\n */\n public get(origin: string): number {\n return this.queueSizes.get(origin) ?? 0;\n }\n}\n"]}
|
|
@@ -1,17 +1,14 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
8
|
-
import type { Json, NonEmptyArray } from '@metamask/utils';
|
|
9
|
-
import type { StateMachine } from '@xstate/fsm';
|
|
1
|
+
import { AddApprovalRequest, UpdateRequestState } from '@metamask/approval-controller';
|
|
2
|
+
import { BaseControllerV2 as BaseController, RestrictedControllerMessenger } from '@metamask/base-controller';
|
|
3
|
+
import { GetEndowments, GetPermissions, GetSubjects, GrantPermissions, HasPermission, HasPermissions, RevokeAllPermissions, RevokePermissionForAllSubjects, RevokePermissions, UpdateCaveat, GetSubjectMetadata } from '@metamask/permission-controller';
|
|
4
|
+
import { BlockReason } from '@metamask/snaps-registry';
|
|
5
|
+
import { InstallSnapsResult, PersistedSnap, RequestedSnapPermissions, Snap, SnapId, SnapRpcHook, SnapRpcHookArgs, SnapStatusEvents, StatusContext, StatusEvents, StatusStates, TruncatedSnap, ValidatedSnapId } from '@metamask/snaps-utils';
|
|
6
|
+
import { Json } from '@metamask/utils';
|
|
7
|
+
import { StateMachine } from '@xstate/fsm';
|
|
10
8
|
import type { Patch } from 'immer';
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import {
|
|
14
|
-
import type { GetMetadata, GetResult, SnapsRegistryMetadata, Update } from './registry';
|
|
9
|
+
import { ExecuteSnapAction, ExecutionServiceEvents, HandleRpcRequestAction, SnapErrorJson, TerminateAllSnapsAction, TerminateSnapAction } from '../services';
|
|
10
|
+
import { detectSnapLocation, SnapLocation } from './location';
|
|
11
|
+
import { GetMetadata, GetResult, SnapsRegistryMetadata, Update } from './registry';
|
|
15
12
|
import { Timer } from './Timer';
|
|
16
13
|
export declare const controllerName = "SnapController";
|
|
17
14
|
export declare const SNAP_APPROVAL_INSTALL = "wallet_installSnap";
|
|
@@ -66,10 +63,10 @@ export declare type SnapError = {
|
|
|
66
63
|
data?: Json;
|
|
67
64
|
};
|
|
68
65
|
declare type CloseAllConnectionsFunction = (origin: string) => void;
|
|
69
|
-
declare type StoredSnaps = Record<
|
|
66
|
+
declare type StoredSnaps = Record<SnapId, Snap>;
|
|
70
67
|
export declare type SnapControllerState = {
|
|
71
68
|
snaps: StoredSnaps;
|
|
72
|
-
snapStates: Record<
|
|
69
|
+
snapStates: Record<SnapId, string | null>;
|
|
73
70
|
snapErrors: {
|
|
74
71
|
[internalID: string]: SnapError & {
|
|
75
72
|
internalID: string;
|
|
@@ -77,8 +74,8 @@ export declare type SnapControllerState = {
|
|
|
77
74
|
};
|
|
78
75
|
};
|
|
79
76
|
export declare type PersistedSnapControllerState = SnapControllerState & {
|
|
80
|
-
snaps: Record<
|
|
81
|
-
snapStates: Record<
|
|
77
|
+
snaps: Record<SnapId, PersistedSnap>;
|
|
78
|
+
snapStates: Record<SnapId, string>;
|
|
82
79
|
};
|
|
83
80
|
/**
|
|
84
81
|
* Gets the specified Snap from state.
|
|
@@ -169,15 +166,7 @@ export declare type GetRegistryMetadata = {
|
|
|
169
166
|
type: `${typeof controllerName}:getRegistryMetadata`;
|
|
170
167
|
handler: SnapController['getRegistryMetadata'];
|
|
171
168
|
};
|
|
172
|
-
export declare type
|
|
173
|
-
type: `${typeof controllerName}:disconnectOrigin`;
|
|
174
|
-
handler: SnapController['removeSnapFromSubject'];
|
|
175
|
-
};
|
|
176
|
-
export declare type RevokeDynamicPermissions = {
|
|
177
|
-
type: `${typeof controllerName}:revokeDynamicPermissions`;
|
|
178
|
-
handler: SnapController['revokeDynamicSnapPermissions'];
|
|
179
|
-
};
|
|
180
|
-
export declare type SnapControllerActions = ClearSnapState | GetSnap | GetSnapState | HandleSnapRequest | HasSnap | UpdateBlockedSnaps | UpdateSnapState | EnableSnap | DisableSnap | RemoveSnap | GetPermittedSnaps | InstallSnaps | RemoveSnapError | GetAllSnaps | IncrementActiveReferences | DecrementActiveReferences | GetRegistryMetadata | DisconnectOrigin | RevokeDynamicPermissions;
|
|
169
|
+
export declare type SnapControllerActions = ClearSnapState | GetSnap | GetSnapState | HandleSnapRequest | HasSnap | UpdateBlockedSnaps | UpdateSnapState | EnableSnap | DisableSnap | RemoveSnap | GetPermittedSnaps | InstallSnaps | RemoveSnapError | GetAllSnaps | IncrementActiveReferences | DecrementActiveReferences | GetRegistryMetadata;
|
|
181
170
|
export declare type SnapStateChange = {
|
|
182
171
|
type: `${typeof controllerName}:stateChange`;
|
|
183
172
|
payload: [SnapControllerState, Patch[]];
|
|
@@ -242,7 +231,7 @@ export declare type SnapTerminated = {
|
|
|
242
231
|
};
|
|
243
232
|
export declare type SnapControllerEvents = SnapAdded | SnapBlocked | SnapInstalled | SnapRemoved | SnapStateChange | SnapUnblocked | SnapUpdated | SnapRolledback | SnapTerminated;
|
|
244
233
|
export declare type AllowedActions = GetEndowments | GetPermissions | GetSubjects | GetSubjectMetadata | HasPermission | HasPermissions | RevokePermissions | RevokeAllPermissions | RevokePermissionForAllSubjects | GrantPermissions | AddApprovalRequest | HandleRpcRequestAction | ExecuteSnapAction | TerminateAllSnapsAction | TerminateSnapAction | UpdateCaveat | UpdateRequestState | GetResult | GetMetadata | Update;
|
|
245
|
-
export declare type AllowedEvents = ExecutionServiceEvents
|
|
234
|
+
export declare type AllowedEvents = ExecutionServiceEvents;
|
|
246
235
|
declare type SnapControllerMessenger = RestrictedControllerMessenger<typeof controllerName, SnapControllerActions | AllowedActions, SnapControllerEvents | AllowedEvents, AllowedActions['type'], AllowedEvents['type']>;
|
|
247
236
|
declare type FeatureFlags = {
|
|
248
237
|
/**
|
|
@@ -262,10 +251,6 @@ declare type SnapControllerArgs = {
|
|
|
262
251
|
* for a running snap.
|
|
263
252
|
*/
|
|
264
253
|
closeAllConnections: CloseAllConnectionsFunction;
|
|
265
|
-
/**
|
|
266
|
-
* A list of permissions that are allowed to be dynamic, meaning they can be revoked from the snap whenever.
|
|
267
|
-
*/
|
|
268
|
-
dynamicPermissions: string[];
|
|
269
254
|
/**
|
|
270
255
|
* The names of endowment permissions whose values are the names of JavaScript
|
|
271
256
|
* APIs that will be added to the snap execution environment at runtime.
|
|
@@ -320,7 +305,7 @@ declare type SnapControllerArgs = {
|
|
|
320
305
|
export declare class SnapController extends BaseController<string, SnapControllerState, SnapControllerMessenger> {
|
|
321
306
|
#private;
|
|
322
307
|
private readonly maxRequestTime;
|
|
323
|
-
constructor({ closeAllConnections, messenger, state,
|
|
308
|
+
constructor({ closeAllConnections, messenger, state, environmentEndowmentPermissions, excludedPermissions, idleTimeCheckInterval, maxIdleTime, maxRequestTime, fetchFunction, featureFlags, detectSnapLocation: detectSnapLocationFunction, }: SnapControllerArgs);
|
|
324
309
|
/**
|
|
325
310
|
* Checks all installed snaps against the block list and
|
|
326
311
|
* blocks/unblocks snaps as appropriate. See {@link SnapController.blockSnap}
|
|
@@ -336,21 +321,21 @@ export declare class SnapController extends BaseController<string, SnapControlle
|
|
|
336
321
|
*
|
|
337
322
|
* @param snapId - The id of the Snap to start.
|
|
338
323
|
*/
|
|
339
|
-
startSnap(snapId:
|
|
324
|
+
startSnap(snapId: SnapId): Promise<void>;
|
|
340
325
|
/**
|
|
341
326
|
* Enables the given snap. A snap can only be started if it is enabled. A snap
|
|
342
327
|
* can only be enabled if it isn't blocked.
|
|
343
328
|
*
|
|
344
329
|
* @param snapId - The id of the Snap to enable.
|
|
345
330
|
*/
|
|
346
|
-
enableSnap(snapId:
|
|
331
|
+
enableSnap(snapId: SnapId): void;
|
|
347
332
|
/**
|
|
348
333
|
* Disables the given snap. A snap can only be started if it is enabled.
|
|
349
334
|
*
|
|
350
335
|
* @param snapId - The id of the Snap to disable.
|
|
351
336
|
* @returns A promise that resolves once the snap has been disabled.
|
|
352
337
|
*/
|
|
353
|
-
disableSnap(snapId:
|
|
338
|
+
disableSnap(snapId: SnapId): Promise<void>;
|
|
354
339
|
/**
|
|
355
340
|
* Stops the given snap, removes all hooks, closes all connections, and
|
|
356
341
|
* terminates its worker.
|
|
@@ -359,7 +344,7 @@ export declare class SnapController extends BaseController<string, SnapControlle
|
|
|
359
344
|
* @param statusEvent - The Snap status event that caused the snap to be
|
|
360
345
|
* stopped.
|
|
361
346
|
*/
|
|
362
|
-
stopSnap(snapId:
|
|
347
|
+
stopSnap(snapId: SnapId, statusEvent?: SnapStatusEvents.Stop | SnapStatusEvents.Crash): Promise<void>;
|
|
363
348
|
/**
|
|
364
349
|
* Returns whether the given snap is running.
|
|
365
350
|
* Throws an error if the snap doesn't exist.
|
|
@@ -367,14 +352,14 @@ export declare class SnapController extends BaseController<string, SnapControlle
|
|
|
367
352
|
* @param snapId - The id of the Snap to check.
|
|
368
353
|
* @returns `true` if the snap is running, otherwise `false`.
|
|
369
354
|
*/
|
|
370
|
-
isRunning(snapId:
|
|
355
|
+
isRunning(snapId: SnapId): boolean;
|
|
371
356
|
/**
|
|
372
357
|
* Returns whether the given snap has been added to state.
|
|
373
358
|
*
|
|
374
359
|
* @param snapId - The id of the Snap to check for.
|
|
375
360
|
* @returns `true` if the snap exists in the controller state, otherwise `false`.
|
|
376
361
|
*/
|
|
377
|
-
has(snapId:
|
|
362
|
+
has(snapId: SnapId): boolean;
|
|
378
363
|
/**
|
|
379
364
|
* Gets the snap with the given id if it exists, including all data.
|
|
380
365
|
* This should not be used if the snap is to be serializable, as e.g.
|
|
@@ -394,7 +379,7 @@ export declare class SnapController extends BaseController<string, SnapControlle
|
|
|
394
379
|
* @param snapId - The id of the snap to get.
|
|
395
380
|
* @returns The entire snap object.
|
|
396
381
|
*/
|
|
397
|
-
getExpect(snapId:
|
|
382
|
+
getExpect(snapId: SnapId): Snap;
|
|
398
383
|
/**
|
|
399
384
|
* Gets the snap with the given id if it exists, excluding any
|
|
400
385
|
* non-serializable or expensive-to-serialize data.
|
|
@@ -402,7 +387,7 @@ export declare class SnapController extends BaseController<string, SnapControlle
|
|
|
402
387
|
* @param snapId - The id of the Snap to get.
|
|
403
388
|
* @returns A truncated version of the snap state, that is less expensive to serialize.
|
|
404
389
|
*/
|
|
405
|
-
getTruncated(snapId:
|
|
390
|
+
getTruncated(snapId: SnapId): TruncatedSnap | null;
|
|
406
391
|
/**
|
|
407
392
|
* Gets the snap with the given id, throw if it doesn't exist.
|
|
408
393
|
*
|
|
@@ -410,7 +395,7 @@ export declare class SnapController extends BaseController<string, SnapControlle
|
|
|
410
395
|
* @param snapId - The id of the snap to get.
|
|
411
396
|
* @returns A truncated version of the snap state, that is less expensive to serialize.
|
|
412
397
|
*/
|
|
413
|
-
getTruncatedExpect(snapId:
|
|
398
|
+
getTruncatedExpect(snapId: SnapId): TruncatedSnap;
|
|
414
399
|
/**
|
|
415
400
|
* Updates the own state of the snap with the given id.
|
|
416
401
|
* This is distinct from the state MetaMask uses to manage snaps.
|
|
@@ -418,14 +403,14 @@ export declare class SnapController extends BaseController<string, SnapControlle
|
|
|
418
403
|
* @param snapId - The id of the Snap whose state should be updated.
|
|
419
404
|
* @param newSnapState - The new state of the snap.
|
|
420
405
|
*/
|
|
421
|
-
updateSnapState(snapId:
|
|
406
|
+
updateSnapState(snapId: SnapId, newSnapState: string): Promise<void>;
|
|
422
407
|
/**
|
|
423
408
|
* Clears the state of the snap with the given id.
|
|
424
409
|
* This is distinct from the state MetaMask uses to manage snaps.
|
|
425
410
|
*
|
|
426
411
|
* @param snapId - The id of the Snap whose state should be cleared.
|
|
427
412
|
*/
|
|
428
|
-
clearSnapState(snapId:
|
|
413
|
+
clearSnapState(snapId: SnapId): void;
|
|
429
414
|
/**
|
|
430
415
|
* Adds error from a snap to the SnapController state.
|
|
431
416
|
*
|
|
@@ -450,7 +435,7 @@ export declare class SnapController extends BaseController<string, SnapControlle
|
|
|
450
435
|
* @returns A promise that resolves with the decrypted snap state or null if no state exists.
|
|
451
436
|
* @throws If the snap state decryption fails.
|
|
452
437
|
*/
|
|
453
|
-
getSnapState(snapId:
|
|
438
|
+
getSnapState(snapId: SnapId): Promise<Json>;
|
|
454
439
|
/**
|
|
455
440
|
* Completely clear the controller's state: delete all associated data,
|
|
456
441
|
* handlers, event listeners, and permissions; tear down all snap providers.
|
|
@@ -463,41 +448,32 @@ export declare class SnapController extends BaseController<string, SnapControlle
|
|
|
463
448
|
* @param snapId - The id of the Snap.
|
|
464
449
|
* @returns A promise that resolves once the snap has been removed.
|
|
465
450
|
*/
|
|
466
|
-
removeSnap(snapId:
|
|
451
|
+
removeSnap(snapId: SnapId): Promise<void>;
|
|
467
452
|
/**
|
|
468
453
|
* Stops the given snaps, removes them from state, and clears all associated
|
|
469
454
|
* permissions, handlers, and listeners.
|
|
470
455
|
*
|
|
471
456
|
* @param snapIds - The ids of the Snaps.
|
|
472
457
|
*/
|
|
473
|
-
removeSnaps(snapIds:
|
|
474
|
-
/**
|
|
475
|
-
* Removes a snap's permission (caveat) from the specified subject.
|
|
476
|
-
*
|
|
477
|
-
* @param origin - The origin from which to remove the snap.
|
|
478
|
-
* @param snapId - The id of the snap to remove.
|
|
479
|
-
*/
|
|
480
|
-
removeSnapFromSubject(origin: string, snapId: ValidatedSnapId): void;
|
|
458
|
+
removeSnaps(snapIds: string[]): Promise<void>;
|
|
481
459
|
/**
|
|
482
|
-
*
|
|
460
|
+
* Safely revokes all permissions granted to a Snap.
|
|
483
461
|
*
|
|
484
462
|
* @param snapId - The snap ID.
|
|
485
|
-
* @param permissionNames - The names of the permissions.
|
|
486
|
-
* @throws If non-dynamic permissions are passed.
|
|
487
463
|
*/
|
|
488
|
-
|
|
464
|
+
private revokeAllSnapPermissions;
|
|
489
465
|
/**
|
|
490
466
|
* Handles incrementing the activeReferences counter.
|
|
491
467
|
*
|
|
492
468
|
* @param snapId - The snap id of the snap that was referenced.
|
|
493
469
|
*/
|
|
494
|
-
incrementActiveReferences(snapId:
|
|
470
|
+
incrementActiveReferences(snapId: SnapId): void;
|
|
495
471
|
/**
|
|
496
472
|
* Handles decrement the activeReferences counter.
|
|
497
473
|
*
|
|
498
474
|
* @param snapId - The snap id of the snap that was referenced..
|
|
499
475
|
*/
|
|
500
|
-
decrementActiveReferences(snapId:
|
|
476
|
+
decrementActiveReferences(snapId: SnapId): void;
|
|
501
477
|
/**
|
|
502
478
|
* Gets all snaps in their truncated format.
|
|
503
479
|
*
|
|
@@ -559,7 +535,7 @@ export declare class SnapController extends BaseController<string, SnapControlle
|
|
|
559
535
|
* @returns The metadata for the given snap ID, or `null` if the snap is not
|
|
560
536
|
* verified.
|
|
561
537
|
*/
|
|
562
|
-
getRegistryMetadata(snapId:
|
|
538
|
+
getRegistryMetadata(snapId: SnapId): Promise<SnapsRegistryMetadata | null>;
|
|
563
539
|
/**
|
|
564
540
|
* Initiates a request for the given snap's initial permissions.
|
|
565
541
|
* Must be called in order. See processRequestedSnap.
|
|
@@ -582,8 +558,8 @@ export declare class SnapController extends BaseController<string, SnapControlle
|
|
|
582
558
|
* @param options.request - The JSON-RPC request object.
|
|
583
559
|
* @returns The result of the JSON-RPC request.
|
|
584
560
|
*/
|
|
585
|
-
handleRequest({ snapId, origin, handler: handlerType, request
|
|
586
|
-
snapId:
|
|
561
|
+
handleRequest({ snapId, origin, handler: handlerType, request, }: SnapRpcHookArgs & {
|
|
562
|
+
snapId: SnapId;
|
|
587
563
|
}): Promise<unknown>;
|
|
588
564
|
}
|
|
589
565
|
export {};
|