@metamask/snaps-controllers 8.0.0 → 8.1.1
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 +18 -1
- package/dist/{chunk-GZ3RVSUA.js → chunk-2UAU42DO.js} +15 -22
- package/dist/chunk-2UAU42DO.js.map +1 -0
- package/dist/{chunk-JQLPWQIR.mjs → chunk-3Y4IJKZY.mjs} +2 -2
- package/dist/{chunk-DVTMXCTZ.js → chunk-74GN6MIJ.js} +3 -3
- package/dist/{chunk-JMP6XYRL.js → chunk-A6RUJL4K.js} +15 -5
- package/dist/chunk-A6RUJL4K.js.map +1 -0
- package/dist/{chunk-FOT4VRMQ.js → chunk-E5RRFMGF.js} +3 -3
- package/dist/{chunk-IRVUYBSV.mjs → chunk-FCCGRGQS.mjs} +19 -13
- package/dist/chunk-FCCGRGQS.mjs.map +1 -0
- package/dist/{chunk-M2NMZ4ER.js → chunk-FCRPOA4I.js} +12 -4
- package/dist/chunk-FCRPOA4I.js.map +1 -0
- package/dist/{chunk-DQLRXCST.js → chunk-G4S6UXQ2.js} +3 -3
- package/dist/{chunk-MD2JCQBG.mjs → chunk-P5MRZOGW.mjs} +2 -2
- package/dist/{chunk-ABKWEVW4.js → chunk-PAFO2KIN.js} +3 -3
- package/dist/{chunk-PGQXTXAQ.mjs → chunk-PXKCSAT6.mjs} +2 -2
- package/dist/{chunk-6QZJC5I2.mjs → chunk-QLEQIXCE.mjs} +2 -2
- package/dist/{chunk-SD6JM5ZU.mjs → chunk-QP5LV734.mjs} +17 -24
- package/dist/chunk-QP5LV734.mjs.map +1 -0
- package/dist/{chunk-HT7X5NPH.mjs → chunk-RS3WN6D3.mjs} +2 -2
- package/dist/{chunk-JZCXZEFV.js → chunk-SIW7ZXQF.js} +19 -13
- package/dist/chunk-SIW7ZXQF.js.map +1 -0
- package/dist/{chunk-MB23XAVD.mjs → chunk-TO6ZEBIA.mjs} +11 -3
- package/dist/chunk-TO6ZEBIA.mjs.map +1 -0
- package/dist/chunk-U4DZUKNN.js +80 -0
- package/dist/chunk-U4DZUKNN.js.map +1 -0
- package/dist/{chunk-HBNET6MY.mjs → chunk-WMT2TIOI.mjs} +15 -5
- package/dist/chunk-WMT2TIOI.mjs.map +1 -0
- package/dist/{chunk-7DLODFQK.mjs → chunk-X5MFC3VX.mjs} +2 -2
- package/dist/{chunk-CXT7XBMN.js → chunk-Y7ZOSPEN.js} +3 -3
- package/dist/chunk-ZQNBP53T.mjs +80 -0
- package/dist/chunk-ZQNBP53T.mjs.map +1 -0
- package/dist/{chunk-PRJADV7W.js → chunk-ZVGZG25U.js} +3 -3
- package/dist/cronjob/CronjobController.js +8 -8
- package/dist/cronjob/CronjobController.mjs +8 -8
- package/dist/cronjob/index.js +8 -8
- package/dist/cronjob/index.mjs +8 -8
- package/dist/index.js +9 -9
- package/dist/index.mjs +8 -8
- package/dist/interface/SnapInterfaceController.js +3 -3
- package/dist/interface/SnapInterfaceController.mjs +2 -2
- package/dist/interface/index.js +3 -3
- package/dist/interface/index.mjs +2 -2
- package/dist/interface/utils.js +2 -4
- package/dist/interface/utils.mjs +5 -7
- package/dist/node.js +11 -11
- package/dist/node.mjs +10 -10
- package/dist/react-native.js +10 -10
- package/dist/react-native.mjs +9 -9
- package/dist/services/AbstractExecutionService.js +2 -2
- package/dist/services/AbstractExecutionService.mjs +1 -1
- package/dist/services/browser.js +7 -7
- package/dist/services/browser.mjs +6 -6
- package/dist/services/iframe/IframeExecutionService.js +3 -3
- package/dist/services/iframe/IframeExecutionService.mjs +2 -2
- package/dist/services/iframe/index.js +3 -3
- package/dist/services/iframe/index.mjs +2 -2
- package/dist/services/index.js +6 -6
- package/dist/services/index.mjs +5 -5
- package/dist/services/node-js/NodeProcessExecutionService.js +7 -7
- package/dist/services/node-js/NodeProcessExecutionService.mjs +6 -6
- package/dist/services/node-js/NodeThreadExecutionService.js +7 -7
- package/dist/services/node-js/NodeThreadExecutionService.mjs +6 -6
- package/dist/services/node-js/index.js +8 -8
- package/dist/services/node-js/index.mjs +7 -7
- package/dist/services/node.js +8 -8
- package/dist/services/node.mjs +7 -7
- package/dist/services/offscreen/OffscreenExecutionService.js +4 -4
- package/dist/services/offscreen/OffscreenExecutionService.mjs +3 -3
- package/dist/services/offscreen/index.js +4 -4
- package/dist/services/offscreen/index.mjs +3 -3
- package/dist/services/proxy/ProxyExecutionService.js +3 -3
- package/dist/services/proxy/ProxyExecutionService.mjs +2 -2
- package/dist/services/react-native.js +7 -7
- package/dist/services/react-native.mjs +6 -6
- package/dist/services/webview/WebViewExecutionService.js +4 -4
- package/dist/services/webview/WebViewExecutionService.mjs +3 -3
- package/dist/services/webview/index.js +4 -4
- package/dist/services/webview/index.mjs +3 -3
- package/dist/services/webworker/WebWorkerExecutionService.js +3 -3
- package/dist/services/webworker/WebWorkerExecutionService.mjs +2 -2
- package/dist/services/webworker/index.js +3 -3
- package/dist/services/webworker/index.mjs +2 -2
- package/dist/snaps/SnapController.js +2 -2
- package/dist/snaps/SnapController.mjs +1 -1
- package/dist/snaps/index.js +2 -2
- package/dist/snaps/index.mjs +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types/interface/SnapInterfaceController.d.ts +5 -4
- package/dist/types/interface/utils.d.ts +11 -20
- package/dist/types/services/AbstractExecutionService.d.ts +2 -1
- package/dist/types/snaps/SnapController.d.ts +1 -1
- package/package.json +7 -7
- package/dist/chunk-GZ3RVSUA.js.map +0 -1
- package/dist/chunk-HBNET6MY.mjs.map +0 -1
- package/dist/chunk-IRVUYBSV.mjs.map +0 -1
- package/dist/chunk-JMP6XYRL.js.map +0 -1
- package/dist/chunk-JZCXZEFV.js.map +0 -1
- package/dist/chunk-KLK7ZRMH.js +0 -55
- package/dist/chunk-KLK7ZRMH.js.map +0 -1
- package/dist/chunk-M2NMZ4ER.js.map +0 -1
- package/dist/chunk-MB23XAVD.mjs.map +0 -1
- package/dist/chunk-RIU3ZIXZ.mjs +0 -55
- package/dist/chunk-RIU3ZIXZ.mjs.map +0 -1
- package/dist/chunk-SD6JM5ZU.mjs.map +0 -1
- /package/dist/{chunk-JQLPWQIR.mjs.map → chunk-3Y4IJKZY.mjs.map} +0 -0
- /package/dist/{chunk-DVTMXCTZ.js.map → chunk-74GN6MIJ.js.map} +0 -0
- /package/dist/{chunk-FOT4VRMQ.js.map → chunk-E5RRFMGF.js.map} +0 -0
- /package/dist/{chunk-DQLRXCST.js.map → chunk-G4S6UXQ2.js.map} +0 -0
- /package/dist/{chunk-MD2JCQBG.mjs.map → chunk-P5MRZOGW.mjs.map} +0 -0
- /package/dist/{chunk-ABKWEVW4.js.map → chunk-PAFO2KIN.js.map} +0 -0
- /package/dist/{chunk-PGQXTXAQ.mjs.map → chunk-PXKCSAT6.mjs.map} +0 -0
- /package/dist/{chunk-6QZJC5I2.mjs.map → chunk-QLEQIXCE.mjs.map} +0 -0
- /package/dist/{chunk-HT7X5NPH.mjs.map → chunk-RS3WN6D3.mjs.map} +0 -0
- /package/dist/{chunk-7DLODFQK.mjs.map → chunk-X5MFC3VX.mjs.map} +0 -0
- /package/dist/{chunk-CXT7XBMN.js.map → chunk-Y7ZOSPEN.js.map} +0 -0
- /package/dist/{chunk-PRJADV7W.js.map → chunk-ZVGZG25U.js.map} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [8.1.1]
|
|
10
|
+
### Fixed
|
|
11
|
+
- Re-instantiate preinstalled Snaps after clearing state ([#2393](https://github.com/MetaMask/snaps/pull/2393))
|
|
12
|
+
|
|
13
|
+
## [8.1.0]
|
|
14
|
+
### Added
|
|
15
|
+
- Add JSX support for custom UI ([#2258](https://github.com/MetaMask/snaps/pull/2258))
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
- Bump `@metamask/approval-controller` from `6.0.1` to `6.0.2` ([#2380](https://github.com/MetaMask/snaps/pull/2380))
|
|
19
|
+
- Bump `@metamask/base-controller` from `5.0.1` to `5.0.2` ([#2375](https://github.com/MetaMask/snaps/pull/2375))
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
- Fix an issue where certain types of executors would be timed out too quickly ([#2389](https://github.com/MetaMask/snaps/pull/2389))
|
|
23
|
+
|
|
9
24
|
## [8.0.0]
|
|
10
25
|
### Changed
|
|
11
26
|
- **BREAKING:** Move `maxInitTime` constructor argument from `SnapController` to `ExecutionService` ([#2348](https://github.com/MetaMask/snaps/pull/2348))
|
|
@@ -246,7 +261,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
246
261
|
- The version of the package no longer needs to match the version of all other
|
|
247
262
|
MetaMask Snaps packages.
|
|
248
263
|
|
|
249
|
-
[Unreleased]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@8.
|
|
264
|
+
[Unreleased]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@8.1.1...HEAD
|
|
265
|
+
[8.1.1]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@8.1.0...@metamask/snaps-controllers@8.1.1
|
|
266
|
+
[8.1.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@8.0.0...@metamask/snaps-controllers@8.1.0
|
|
250
267
|
[8.0.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@7.0.1...@metamask/snaps-controllers@8.0.0
|
|
251
268
|
[7.0.1]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@7.0.0...@metamask/snaps-controllers@7.0.1
|
|
252
269
|
[7.0.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@6.0.4...@metamask/snaps-controllers@7.0.0
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
|
|
4
|
+
var _chunkU4DZUKNNjs = require('./chunk-U4DZUKNN.js');
|
|
4
5
|
|
|
5
6
|
|
|
6
7
|
|
|
@@ -8,15 +9,10 @@ var _chunkEXN2TFDJjs = require('./chunk-EXN2TFDJ.js');
|
|
|
8
9
|
|
|
9
10
|
// src/interface/SnapInterfaceController.ts
|
|
10
11
|
var _basecontroller = require('@metamask/base-controller');
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
12
|
var _snapsutils = require('@metamask/snaps-utils');
|
|
16
13
|
var _utils = require('@metamask/utils');
|
|
17
14
|
var _nanoid = require('nanoid');
|
|
18
15
|
var MAX_UI_CONTENT_SIZE = 1e7;
|
|
19
|
-
var MAX_TEXT_LENGTH = 5e4;
|
|
20
16
|
var controllerName = "SnapInterfaceController";
|
|
21
17
|
var _registerMessageHandlers, registerMessageHandlers_fn, _validateArgs, validateArgs_fn, _triggerPhishingListUpdate, triggerPhishingListUpdate_fn, _checkPhishingList, checkPhishingList_fn, _validateContent, validateContent_fn;
|
|
22
18
|
var SnapInterfaceController = class extends _basecontroller.BaseController {
|
|
@@ -56,7 +52,7 @@ var SnapInterfaceController = class extends _basecontroller.BaseController {
|
|
|
56
52
|
* Utility function to validate the components of an interface.
|
|
57
53
|
* Throws if something is invalid.
|
|
58
54
|
*
|
|
59
|
-
* @param
|
|
55
|
+
* @param element - The JSX element to verify.
|
|
60
56
|
*/
|
|
61
57
|
_chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _validateContent);
|
|
62
58
|
_chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _registerMessageHandlers, registerMessageHandlers_fn).call(this);
|
|
@@ -69,13 +65,14 @@ var SnapInterfaceController = class extends _basecontroller.BaseController {
|
|
|
69
65
|
* @returns The newly interface id.
|
|
70
66
|
*/
|
|
71
67
|
async createInterface(snapId, content) {
|
|
72
|
-
|
|
68
|
+
const element = _chunkU4DZUKNNjs.getJsxInterface.call(void 0, content);
|
|
69
|
+
await _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _validateContent, validateContent_fn).call(this, element);
|
|
73
70
|
const id = _nanoid.nanoid.call(void 0, );
|
|
74
|
-
const componentState =
|
|
71
|
+
const componentState = _chunkU4DZUKNNjs.constructState.call(void 0, {}, element);
|
|
75
72
|
this.update((draftState) => {
|
|
76
73
|
draftState.interfaces[id] = {
|
|
77
74
|
snapId,
|
|
78
|
-
content,
|
|
75
|
+
content: element,
|
|
79
76
|
state: componentState
|
|
80
77
|
};
|
|
81
78
|
});
|
|
@@ -101,12 +98,13 @@ var SnapInterfaceController = class extends _basecontroller.BaseController {
|
|
|
101
98
|
*/
|
|
102
99
|
async updateInterface(snapId, id, content) {
|
|
103
100
|
_chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _validateArgs, validateArgs_fn).call(this, snapId, id);
|
|
104
|
-
|
|
101
|
+
const element = _chunkU4DZUKNNjs.getJsxInterface.call(void 0, content);
|
|
102
|
+
await _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _validateContent, validateContent_fn).call(this, element);
|
|
105
103
|
const oldState = this.state.interfaces[id].state;
|
|
106
|
-
const newState =
|
|
104
|
+
const newState = _chunkU4DZUKNNjs.constructState.call(void 0, oldState, element);
|
|
107
105
|
this.update((draftState) => {
|
|
108
106
|
draftState.interfaces[id].state = newState;
|
|
109
|
-
draftState.interfaces[id].content =
|
|
107
|
+
draftState.interfaces[id].content = element;
|
|
110
108
|
});
|
|
111
109
|
}
|
|
112
110
|
/**
|
|
@@ -175,22 +173,17 @@ checkPhishingList_fn = function(origin) {
|
|
|
175
173
|
return this.messagingSystem.call("PhishingController:testOrigin", origin).result;
|
|
176
174
|
};
|
|
177
175
|
_validateContent = new WeakSet();
|
|
178
|
-
validateContent_fn = async function(
|
|
179
|
-
const size = _snapsutils.getJsonSizeUnsafe.call(void 0,
|
|
176
|
+
validateContent_fn = async function(element) {
|
|
177
|
+
const size = _snapsutils.getJsonSizeUnsafe.call(void 0, element);
|
|
180
178
|
_utils.assert.call(void 0,
|
|
181
179
|
size <= MAX_UI_CONTENT_SIZE,
|
|
182
180
|
`A Snap UI may not be larger than ${MAX_UI_CONTENT_SIZE / 1e6} MB.`
|
|
183
181
|
);
|
|
184
|
-
const textSize = _snapsutils.getTotalTextLength.call(void 0, content);
|
|
185
|
-
_utils.assert.call(void 0,
|
|
186
|
-
textSize <= MAX_TEXT_LENGTH,
|
|
187
|
-
`The text in a Snap UI may not be larger than ${MAX_TEXT_LENGTH / 1e3} kB.`
|
|
188
|
-
);
|
|
189
182
|
await _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _triggerPhishingListUpdate, triggerPhishingListUpdate_fn).call(this);
|
|
190
|
-
_snapsutils.
|
|
183
|
+
_snapsutils.validateJsxLinks.call(void 0, element, _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _checkPhishingList, checkPhishingList_fn).bind(this));
|
|
191
184
|
};
|
|
192
185
|
|
|
193
186
|
|
|
194
187
|
|
|
195
188
|
exports.SnapInterfaceController = SnapInterfaceController;
|
|
196
|
-
//# sourceMappingURL=chunk-
|
|
189
|
+
//# sourceMappingURL=chunk-2UAU42DO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/interface/SnapInterfaceController.ts"],"names":[],"mappings":"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","sourcesContent":["import type { RestrictedControllerMessenger } from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport type {\n MaybeUpdateState,\n TestOrigin,\n} from '@metamask/phishing-controller';\nimport type {\n InterfaceState,\n SnapId,\n ComponentOrElement,\n} from '@metamask/snaps-sdk';\nimport type { JSXElement } from '@metamask/snaps-sdk/jsx';\nimport { getJsonSizeUnsafe, validateJsxLinks } from '@metamask/snaps-utils';\nimport { assert } from '@metamask/utils';\nimport { nanoid } from 'nanoid';\n\nimport { constructState, getJsxInterface } from './utils';\n\nconst MAX_UI_CONTENT_SIZE = 10_000_000; // 10 mb\n\nconst controllerName = 'SnapInterfaceController';\n\nexport type CreateInterface = {\n type: `${typeof controllerName}:createInterface`;\n handler: SnapInterfaceController['createInterface'];\n};\n\nexport type GetInterface = {\n type: `${typeof controllerName}:getInterface`;\n handler: SnapInterfaceController['getInterface'];\n};\n\nexport type UpdateInterface = {\n type: `${typeof controllerName}:updateInterface`;\n handler: SnapInterfaceController['updateInterface'];\n};\n\nexport type DeleteInterface = {\n type: `${typeof controllerName}:deleteInterface`;\n handler: SnapInterfaceController['deleteInterface'];\n};\n\nexport type UpdateInterfaceState = {\n type: `${typeof controllerName}:updateInterfaceState`;\n handler: SnapInterfaceController['updateInterfaceState'];\n};\n\nexport type SnapInterfaceControllerAllowedActions =\n | TestOrigin\n | MaybeUpdateState;\n\nexport type SnapInterfaceControllerActions =\n | CreateInterface\n | GetInterface\n | UpdateInterface\n | DeleteInterface\n | UpdateInterfaceState;\n\nexport type SnapInterfaceControllerMessenger = RestrictedControllerMessenger<\n typeof controllerName,\n SnapInterfaceControllerActions | SnapInterfaceControllerAllowedActions,\n never,\n SnapInterfaceControllerAllowedActions['type'],\n never\n>;\n\nexport type StoredInterface = {\n snapId: SnapId;\n content: JSXElement;\n state: InterfaceState;\n};\n\nexport type SnapInterfaceControllerState = {\n interfaces: Record<string, StoredInterface>;\n};\n\nexport type SnapInterfaceControllerArgs = {\n messenger: SnapInterfaceControllerMessenger;\n state?: SnapInterfaceControllerState;\n};\n\n/**\n * Use this controller to manage snaps UI interfaces using RPC method hooks.\n */\nexport class SnapInterfaceController extends BaseController<\n typeof controllerName,\n SnapInterfaceControllerState,\n SnapInterfaceControllerMessenger\n> {\n constructor({ messenger, state }: SnapInterfaceControllerArgs) {\n super({\n messenger,\n metadata: {\n interfaces: { persist: false, anonymous: false },\n },\n name: controllerName,\n state: { interfaces: {}, ...state },\n });\n\n this.#registerMessageHandlers();\n }\n\n /**\n * Constructor helper for registering this controller's messaging system\n * actions.\n */\n #registerMessageHandlers() {\n this.messagingSystem.registerActionHandler(\n `${controllerName}:createInterface`,\n this.createInterface.bind(this),\n );\n\n this.messagingSystem.registerActionHandler(\n `${controllerName}:getInterface`,\n this.getInterface.bind(this),\n );\n\n this.messagingSystem.registerActionHandler(\n `${controllerName}:updateInterface`,\n this.updateInterface.bind(this),\n );\n\n this.messagingSystem.registerActionHandler(\n `${controllerName}:deleteInterface`,\n this.deleteInterface.bind(this),\n );\n\n this.messagingSystem.registerActionHandler(\n `${controllerName}:updateInterfaceState`,\n this.updateInterfaceState.bind(this),\n );\n }\n\n /**\n * Create an interface in the controller state with the associated data.\n *\n * @param snapId - The snap id that created the interface.\n * @param content - The interface content.\n * @returns The newly interface id.\n */\n async createInterface(snapId: SnapId, content: ComponentOrElement) {\n const element = getJsxInterface(content);\n await this.#validateContent(element);\n\n const id = nanoid();\n const componentState = constructState({}, element);\n\n this.update((draftState) => {\n // @ts-expect-error - TS2589: Type instantiation is excessively deep and\n // possibly infinite.\n draftState.interfaces[id] = {\n snapId,\n content: element,\n state: componentState,\n };\n });\n\n return id;\n }\n\n /**\n * Get the data of a given interface id.\n *\n * @param snapId - The snap id requesting the interface data.\n * @param id - The interface id.\n * @returns The interface state.\n */\n getInterface(snapId: SnapId, id: string) {\n this.#validateArgs(snapId, id);\n\n return this.state.interfaces[id];\n }\n\n /**\n * Update the interface with the given content.\n *\n * @param snapId - The snap id requesting the update.\n * @param id - The interface id.\n * @param content - The new content.\n */\n async updateInterface(\n snapId: SnapId,\n id: string,\n content: ComponentOrElement,\n ) {\n this.#validateArgs(snapId, id);\n const element = getJsxInterface(content);\n await this.#validateContent(element);\n\n const oldState = this.state.interfaces[id].state;\n const newState = constructState(oldState, element);\n\n this.update((draftState) => {\n draftState.interfaces[id].state = newState;\n draftState.interfaces[id].content = element;\n });\n }\n\n /**\n * Delete an interface from state.\n *\n * @param id - The interface id.\n */\n deleteInterface(id: string) {\n this.update((draftState) => {\n delete draftState.interfaces[id];\n });\n }\n\n /**\n * Update the interface state.\n *\n * @param id - The interface id.\n * @param state - The new state.\n */\n updateInterfaceState(id: string, state: InterfaceState) {\n this.update((draftState) => {\n draftState.interfaces[id].state = state;\n });\n }\n\n /**\n * Utility function to validate the args passed to the other methods.\n *\n * @param snapId - The snap id.\n * @param id - The interface id.\n */\n #validateArgs(snapId: SnapId, id: string) {\n const existingInterface = this.state.interfaces[id];\n\n assert(\n existingInterface !== undefined,\n `Interface with id '${id}' not found.`,\n );\n assert(\n existingInterface.snapId === snapId,\n `Interface not created by ${snapId}.`,\n );\n }\n\n /**\n * Trigger a Phishing list update if needed.\n */\n async #triggerPhishingListUpdate() {\n await this.messagingSystem.call('PhishingController:maybeUpdateState');\n }\n\n /**\n * Check an origin against the phishing list.\n *\n * @param origin - The origin to check.\n * @returns True if the origin is on the phishing list, otherwise false.\n */\n #checkPhishingList(origin: string) {\n return this.messagingSystem.call('PhishingController:testOrigin', origin)\n .result;\n }\n\n /**\n * Utility function to validate the components of an interface.\n * Throws if something is invalid.\n *\n * @param element - The JSX element to verify.\n */\n async #validateContent(element: JSXElement) {\n // We assume the validity of this JSON to be validated by the caller.\n // E.g., in the RPC method implementation.\n const size = getJsonSizeUnsafe(element);\n assert(\n size <= MAX_UI_CONTENT_SIZE,\n `A Snap UI may not be larger than ${MAX_UI_CONTENT_SIZE / 1000000} MB.`,\n );\n\n await this.#triggerPhishingListUpdate();\n validateJsxLinks(element, this.#checkPhishingList.bind(this));\n }\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AbstractExecutionService
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-FCCGRGQS.mjs";
|
|
4
4
|
import {
|
|
5
5
|
__require
|
|
6
6
|
} from "./chunk-YRZVIDCF.mjs";
|
|
@@ -36,4 +36,4 @@ var NodeThreadExecutionService = class extends AbstractExecutionService {
|
|
|
36
36
|
export {
|
|
37
37
|
NodeThreadExecutionService
|
|
38
38
|
};
|
|
39
|
-
//# sourceMappingURL=chunk-
|
|
39
|
+
//# sourceMappingURL=chunk-3Y4IJKZY.mjs.map
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var _chunkC4D6GBMYjs = require('./chunk-C4D6GBMY.js');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkFCRPOA4Ijs = require('./chunk-FCRPOA4I.js');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
@@ -13,7 +13,7 @@ var _chunkEXN2TFDJjs = require('./chunk-EXN2TFDJ.js');
|
|
|
13
13
|
|
|
14
14
|
// src/services/webview/WebViewExecutionService.ts
|
|
15
15
|
var _getWebView, _ensureWebViewLoaded, ensureWebViewLoaded_fn;
|
|
16
|
-
var WebViewExecutionService = class extends
|
|
16
|
+
var WebViewExecutionService = class extends _chunkFCRPOA4Ijs.ProxyExecutionService {
|
|
17
17
|
constructor({
|
|
18
18
|
messenger,
|
|
19
19
|
setupSnapProvider,
|
|
@@ -55,4 +55,4 @@ ensureWebViewLoaded_fn = async function() {
|
|
|
55
55
|
|
|
56
56
|
|
|
57
57
|
exports.WebViewExecutionService = WebViewExecutionService;
|
|
58
|
-
//# sourceMappingURL=chunk-
|
|
58
|
+
//# sourceMappingURL=chunk-74GN6MIJ.js.map
|
|
@@ -117,7 +117,7 @@ function truncateSnap(snap) {
|
|
|
117
117
|
return truncatedSnap;
|
|
118
118
|
}
|
|
119
119
|
var name = "SnapController";
|
|
120
|
-
var _closeAllConnections, _dynamicPermissions, _environmentEndowmentPermissions, _excludedPermissions, _featureFlags, _fetchFunction, _idleTimeCheckInterval, _maxIdleTime, _encryptor, _getMnemonic, _detectSnapLocation, _snapsRuntimeData, _rollbackSnapshots, _timeoutForLastRequestStatus, _statusMachine, _initializeStateMachine, initializeStateMachine_fn, _registerMessageHandlers, registerMessageHandlers_fn, _handlePreinstalledSnaps, handlePreinstalledSnaps_fn, _pollForLastRequestStatus, pollForLastRequestStatus_fn, _blockSnap, blockSnap_fn, _unblockSnap, unblockSnap_fn, _assertIsInstallAllowed, assertIsInstallAllowed_fn, _stopSnapsLastRequestPastMax, stopSnapsLastRequestPastMax_fn, _transition, transition_fn, _terminateSnap, terminateSnap_fn, _getSnapEncryptionKey, getSnapEncryptionKey_fn, _decryptSnapState, decryptSnapState_fn, _encryptSnapState, encryptSnapState_fn, _handleInitialConnections, handleInitialConnections_fn, _addSnapToSubject, addSnapToSubject_fn, _removeSnapFromSubjects, removeSnapFromSubjects_fn, _revokeAllSnapPermissions, revokeAllSnapPermissions_fn, _createApproval, createApproval_fn, _updateApproval, updateApproval_fn, _resolveAllowlistVersion, resolveAllowlistVersion_fn, _add, add_fn, _startSnap, startSnap_fn, _getEndowments, getEndowments_fn, _set, set_fn, _validateSnapPermissions, validateSnapPermissions_fn, _getExecutionTimeout, getExecutionTimeout_fn, _getRpcRequestHandler, getRpcRequestHandler_fn, _createInterface, createInterface_fn, _assertInterfaceExists, assertInterfaceExists_fn, _transformSnapRpcRequestResult, transformSnapRpcRequestResult_fn, _assertSnapRpcRequestResult, assertSnapRpcRequestResult_fn, _recordSnapRpcRequestStart, recordSnapRpcRequestStart_fn, _recordSnapRpcRequestFinish, recordSnapRpcRequestFinish_fn, _getRollbackSnapshot, getRollbackSnapshot_fn, _createRollbackSnapshot, createRollbackSnapshot_fn, _rollbackSnap, rollbackSnap_fn, _rollbackSnaps, rollbackSnaps_fn, _getRuntime, getRuntime_fn, _getRuntimeExpect, getRuntimeExpect_fn, _setupRuntime, setupRuntime_fn, _calculatePermissionsChange, calculatePermissionsChange_fn, _updatePermissions, updatePermissions_fn, _isValidUpdate, isValidUpdate_fn, _callLifecycleHook, callLifecycleHook_fn;
|
|
120
|
+
var _closeAllConnections, _dynamicPermissions, _environmentEndowmentPermissions, _excludedPermissions, _featureFlags, _fetchFunction, _idleTimeCheckInterval, _maxIdleTime, _encryptor, _getMnemonic, _detectSnapLocation, _snapsRuntimeData, _rollbackSnapshots, _timeoutForLastRequestStatus, _statusMachine, _preinstalledSnaps, _initializeStateMachine, initializeStateMachine_fn, _registerMessageHandlers, registerMessageHandlers_fn, _handlePreinstalledSnaps, handlePreinstalledSnaps_fn, _pollForLastRequestStatus, pollForLastRequestStatus_fn, _blockSnap, blockSnap_fn, _unblockSnap, unblockSnap_fn, _assertIsInstallAllowed, assertIsInstallAllowed_fn, _stopSnapsLastRequestPastMax, stopSnapsLastRequestPastMax_fn, _transition, transition_fn, _terminateSnap, terminateSnap_fn, _getSnapEncryptionKey, getSnapEncryptionKey_fn, _decryptSnapState, decryptSnapState_fn, _encryptSnapState, encryptSnapState_fn, _handleInitialConnections, handleInitialConnections_fn, _addSnapToSubject, addSnapToSubject_fn, _removeSnapFromSubjects, removeSnapFromSubjects_fn, _revokeAllSnapPermissions, revokeAllSnapPermissions_fn, _createApproval, createApproval_fn, _updateApproval, updateApproval_fn, _resolveAllowlistVersion, resolveAllowlistVersion_fn, _add, add_fn, _startSnap, startSnap_fn, _getEndowments, getEndowments_fn, _set, set_fn, _validateSnapPermissions, validateSnapPermissions_fn, _getExecutionTimeout, getExecutionTimeout_fn, _getRpcRequestHandler, getRpcRequestHandler_fn, _createInterface, createInterface_fn, _assertInterfaceExists, assertInterfaceExists_fn, _transformSnapRpcRequestResult, transformSnapRpcRequestResult_fn, _assertSnapRpcRequestResult, assertSnapRpcRequestResult_fn, _recordSnapRpcRequestStart, recordSnapRpcRequestStart_fn, _recordSnapRpcRequestFinish, recordSnapRpcRequestFinish_fn, _getRollbackSnapshot, getRollbackSnapshot_fn, _createRollbackSnapshot, createRollbackSnapshot_fn, _rollbackSnap, rollbackSnap_fn, _rollbackSnaps, rollbackSnaps_fn, _getRuntime, getRuntime_fn, _getRuntimeExpect, getRuntimeExpect_fn, _setupRuntime, setupRuntime_fn, _calculatePermissionsChange, calculatePermissionsChange_fn, _updatePermissions, updatePermissions_fn, _isValidUpdate, isValidUpdate_fn, _callLifecycleHook, callLifecycleHook_fn;
|
|
121
121
|
var SnapController = class extends _basecontroller.BaseController {
|
|
122
122
|
constructor({
|
|
123
123
|
closeAllConnections,
|
|
@@ -132,7 +132,7 @@ var SnapController = class extends _basecontroller.BaseController {
|
|
|
132
132
|
fetchFunction = globalThis.fetch.bind(globalThis),
|
|
133
133
|
featureFlags = {},
|
|
134
134
|
detectSnapLocation: detectSnapLocationFunction = _chunkPT22IXNSjs.detectSnapLocation,
|
|
135
|
-
preinstalledSnaps,
|
|
135
|
+
preinstalledSnaps = null,
|
|
136
136
|
encryptor,
|
|
137
137
|
getMnemonic
|
|
138
138
|
}) {
|
|
@@ -448,6 +448,7 @@ var SnapController = class extends _basecontroller.BaseController {
|
|
|
448
448
|
_chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _rollbackSnapshots, void 0);
|
|
449
449
|
_chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _timeoutForLastRequestStatus, void 0);
|
|
450
450
|
_chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _statusMachine, void 0);
|
|
451
|
+
_chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _preinstalledSnaps, void 0);
|
|
451
452
|
_chunkEXN2TFDJjs.__privateSet.call(void 0, this, _closeAllConnections, closeAllConnections);
|
|
452
453
|
_chunkEXN2TFDJjs.__privateSet.call(void 0, this, _dynamicPermissions, dynamicPermissions);
|
|
453
454
|
_chunkEXN2TFDJjs.__privateSet.call(void 0, this, _environmentEndowmentPermissions, environmentEndowmentPermissions);
|
|
@@ -460,6 +461,7 @@ var SnapController = class extends _basecontroller.BaseController {
|
|
|
460
461
|
_chunkEXN2TFDJjs.__privateSet.call(void 0, this, _detectSnapLocation, detectSnapLocationFunction);
|
|
461
462
|
_chunkEXN2TFDJjs.__privateSet.call(void 0, this, _encryptor, encryptor);
|
|
462
463
|
_chunkEXN2TFDJjs.__privateSet.call(void 0, this, _getMnemonic, getMnemonic);
|
|
464
|
+
_chunkEXN2TFDJjs.__privateSet.call(void 0, this, _preinstalledSnaps, preinstalledSnaps);
|
|
463
465
|
this._onUnhandledSnapError = this._onUnhandledSnapError.bind(this);
|
|
464
466
|
this._onOutboundRequest = this._onOutboundRequest.bind(this);
|
|
465
467
|
this._onOutboundResponse = this._onOutboundResponse.bind(this);
|
|
@@ -498,8 +500,8 @@ var SnapController = class extends _basecontroller.BaseController {
|
|
|
498
500
|
});
|
|
499
501
|
_chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _initializeStateMachine, initializeStateMachine_fn).call(this);
|
|
500
502
|
_chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _registerMessageHandlers, registerMessageHandlers_fn).call(this);
|
|
501
|
-
if (
|
|
502
|
-
_chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _handlePreinstalledSnaps, handlePreinstalledSnaps_fn).call(this,
|
|
503
|
+
if (_chunkEXN2TFDJjs.__privateGet.call(void 0, this, _preinstalledSnaps)) {
|
|
504
|
+
_chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _handlePreinstalledSnaps, handlePreinstalledSnaps_fn).call(this, _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _preinstalledSnaps));
|
|
503
505
|
}
|
|
504
506
|
Object.values(this.state?.snaps ?? {}).forEach(
|
|
505
507
|
(snap) => _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _setupRuntime, setupRuntime_fn).call(this, snap.id)
|
|
@@ -801,6 +803,13 @@ var SnapController = class extends _basecontroller.BaseController {
|
|
|
801
803
|
state.snaps = {};
|
|
802
804
|
state.snapStates = {};
|
|
803
805
|
});
|
|
806
|
+
_chunkEXN2TFDJjs.__privateGet.call(void 0, this, _snapsRuntimeData).clear();
|
|
807
|
+
if (_chunkEXN2TFDJjs.__privateGet.call(void 0, this, _preinstalledSnaps)) {
|
|
808
|
+
_chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _handlePreinstalledSnaps, handlePreinstalledSnaps_fn).call(this, _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _preinstalledSnaps));
|
|
809
|
+
Object.values(this.state?.snaps).forEach(
|
|
810
|
+
(snap) => _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _setupRuntime, setupRuntime_fn).call(this, snap.id)
|
|
811
|
+
);
|
|
812
|
+
}
|
|
804
813
|
}
|
|
805
814
|
/**
|
|
806
815
|
* Removes the given snap from state, and clears all associated handlers
|
|
@@ -1420,6 +1429,7 @@ _snapsRuntimeData = new WeakMap();
|
|
|
1420
1429
|
_rollbackSnapshots = new WeakMap();
|
|
1421
1430
|
_timeoutForLastRequestStatus = new WeakMap();
|
|
1422
1431
|
_statusMachine = new WeakMap();
|
|
1432
|
+
_preinstalledSnaps = new WeakMap();
|
|
1423
1433
|
_initializeStateMachine = new WeakSet();
|
|
1424
1434
|
initializeStateMachine_fn = function() {
|
|
1425
1435
|
const disableGuard = ({ snapId }) => {
|
|
@@ -2434,4 +2444,4 @@ callLifecycleHook_fn = async function(snapId, handler) {
|
|
|
2434
2444
|
|
|
2435
2445
|
|
|
2436
2446
|
exports.controllerName = controllerName; exports.SNAP_APPROVAL_INSTALL = SNAP_APPROVAL_INSTALL; exports.SNAP_APPROVAL_UPDATE = SNAP_APPROVAL_UPDATE; exports.SNAP_APPROVAL_RESULT = SNAP_APPROVAL_RESULT; exports.SnapController = SnapController;
|
|
2437
|
-
//# sourceMappingURL=chunk-
|
|
2447
|
+
//# sourceMappingURL=chunk-A6RUJL4K.js.map
|