@metamask/snaps-simulation 3.5.0 → 3.6.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 +26 -1
- package/dist/controllers.cjs +39 -32
- package/dist/controllers.cjs.map +1 -1
- package/dist/controllers.d.cts +3 -3
- package/dist/controllers.d.cts.map +1 -1
- package/dist/controllers.d.mts +3 -3
- package/dist/controllers.d.mts.map +1 -1
- package/dist/controllers.mjs +39 -32
- package/dist/controllers.mjs.map +1 -1
- package/dist/interface.cjs +49 -1
- package/dist/interface.cjs.map +1 -1
- package/dist/interface.d.cts +11 -0
- package/dist/interface.d.cts.map +1 -1
- package/dist/interface.d.mts +11 -0
- package/dist/interface.d.mts.map +1 -1
- package/dist/interface.mjs +47 -0
- package/dist/interface.mjs.map +1 -1
- package/dist/simulation.cjs +8 -6
- package/dist/simulation.cjs.map +1 -1
- package/dist/simulation.d.cts +9 -3
- package/dist/simulation.d.cts.map +1 -1
- package/dist/simulation.d.mts +9 -3
- package/dist/simulation.d.mts.map +1 -1
- package/dist/simulation.mjs +8 -6
- package/dist/simulation.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +7 -0
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +7 -0
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/package.json +9 -9
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [3.6.0]
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Add support for the `DateTimePicker` component ([#3698](https://github.com/MetaMask/snaps/pull/3698))
|
|
15
|
+
- The `pickDateTime` function can be used to interact with the component in tests.
|
|
16
|
+
- Include client versions in `snap_getClientStatus` ([#3724](https://github.com/MetaMask/snaps/pull/3724))
|
|
17
|
+
|
|
18
|
+
## Changed
|
|
19
|
+
|
|
20
|
+
- Bump `@metamask/permission-controller` from `12.0.0` to `12.1.1` ([#3746](https://github.com/MetaMask/snaps/pull/3746)), ([#3714](https://github.com/MetaMask/snaps/pull/3714))
|
|
21
|
+
- Bump `@metamask/phishing-controller` from `13.1.0` to `15.0.0` ([#3707](https://github.com/MetaMask/snaps/pull/3707))
|
|
22
|
+
|
|
23
|
+
## [3.5.1]
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
|
|
27
|
+
- Bump `@metamask/permission-controller` from `^11.0.6` to `^12.0.0`(([#3611](https://github.com/MetaMask/snaps/pull/3611))
|
|
28
|
+
|
|
29
|
+
### Removed
|
|
30
|
+
|
|
31
|
+
- Remove `@metamask/base-controller` dependency ([#3611](https://github.com/MetaMask/snaps/pull/3611))
|
|
32
|
+
|
|
10
33
|
## [3.5.0]
|
|
11
34
|
|
|
12
35
|
### Added
|
|
@@ -223,7 +246,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
223
246
|
|
|
224
247
|
- Initial release of `@metamask/snaps-simulation` package ([#2727](https://github.com/MetaMask/snaps/pull/2727))
|
|
225
248
|
|
|
226
|
-
[Unreleased]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-simulation@3.
|
|
249
|
+
[Unreleased]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-simulation@3.6.0...HEAD
|
|
250
|
+
[3.6.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-simulation@3.5.1...@metamask/snaps-simulation@3.6.0
|
|
251
|
+
[3.5.1]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-simulation@3.5.0...@metamask/snaps-simulation@3.5.1
|
|
227
252
|
[3.5.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-simulation@3.4.2...@metamask/snaps-simulation@3.5.0
|
|
228
253
|
[3.4.2]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-simulation@3.4.1...@metamask/snaps-simulation@3.4.2
|
|
229
254
|
[3.4.1]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-simulation@3.4.0...@metamask/snaps-simulation@3.4.1
|
package/dist/controllers.cjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.registerSnap = exports.getControllers = void 0;
|
|
4
|
+
const messenger_1 = require("@metamask/messenger");
|
|
4
5
|
const permission_controller_1 = require("@metamask/permission-controller");
|
|
5
6
|
const snaps_controllers_1 = require("@metamask/snaps-controllers");
|
|
6
7
|
const snaps_rpc_methods_1 = require("@metamask/snaps-rpc-methods");
|
|
@@ -16,29 +17,31 @@ const constants_1 = require("./methods/constants.cjs");
|
|
|
16
17
|
function getControllers(options) {
|
|
17
18
|
const { controllerMessenger } = options;
|
|
18
19
|
const subjectMetadataController = new permission_controller_1.SubjectMetadataController({
|
|
19
|
-
messenger:
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
allowedEvents: [],
|
|
20
|
+
messenger: new messenger_1.Messenger({
|
|
21
|
+
namespace: 'SubjectMetadataController',
|
|
22
|
+
parent: controllerMessenger,
|
|
23
23
|
}),
|
|
24
24
|
subjectCacheLimit: 100,
|
|
25
25
|
});
|
|
26
|
+
const interfaceControllerMessenger = new messenger_1.Messenger({
|
|
27
|
+
namespace: 'SnapInterfaceController',
|
|
28
|
+
parent: controllerMessenger,
|
|
29
|
+
});
|
|
30
|
+
controllerMessenger.delegate({
|
|
31
|
+
messenger: interfaceControllerMessenger,
|
|
32
|
+
actions: [
|
|
33
|
+
'PhishingController:testOrigin',
|
|
34
|
+
'ApprovalController:hasRequest',
|
|
35
|
+
'ApprovalController:acceptRequest',
|
|
36
|
+
'AccountsController:getAccountByAddress',
|
|
37
|
+
'AccountsController:getSelectedMultichainAccount',
|
|
38
|
+
'AccountsController:listMultichainAccounts',
|
|
39
|
+
'MultichainAssetsController:getState',
|
|
40
|
+
],
|
|
41
|
+
events: ['NotificationServicesController:notificationsListUpdated'],
|
|
42
|
+
});
|
|
26
43
|
const interfaceController = new snaps_controllers_1.SnapInterfaceController({
|
|
27
|
-
messenger:
|
|
28
|
-
name: 'SnapInterfaceController',
|
|
29
|
-
allowedActions: [
|
|
30
|
-
'PhishingController:testOrigin',
|
|
31
|
-
'ApprovalController:hasRequest',
|
|
32
|
-
'ApprovalController:acceptRequest',
|
|
33
|
-
'AccountsController:getAccountByAddress',
|
|
34
|
-
'AccountsController:getSelectedMultichainAccount',
|
|
35
|
-
'AccountsController:listMultichainAccounts',
|
|
36
|
-
'MultichainAssetsController:getState',
|
|
37
|
-
],
|
|
38
|
-
allowedEvents: [
|
|
39
|
-
'NotificationServicesController:notificationsListUpdated',
|
|
40
|
-
],
|
|
41
|
-
}),
|
|
44
|
+
messenger: interfaceControllerMessenger,
|
|
42
45
|
});
|
|
43
46
|
const permissionController = getPermissionController(options);
|
|
44
47
|
return {
|
|
@@ -59,20 +62,24 @@ exports.getControllers = getControllers;
|
|
|
59
62
|
function getPermissionController(options) {
|
|
60
63
|
const { controllerMessenger } = options;
|
|
61
64
|
const permissionSpecifications = (0, methods_1.getPermissionSpecifications)(options);
|
|
65
|
+
const messenger = new messenger_1.Messenger({
|
|
66
|
+
namespace: 'PermissionController',
|
|
67
|
+
parent: controllerMessenger,
|
|
68
|
+
});
|
|
69
|
+
controllerMessenger.delegate({
|
|
70
|
+
messenger,
|
|
71
|
+
actions: [
|
|
72
|
+
`ApprovalController:addRequest`,
|
|
73
|
+
`ApprovalController:hasRequest`,
|
|
74
|
+
`ApprovalController:acceptRequest`,
|
|
75
|
+
`ApprovalController:rejectRequest`,
|
|
76
|
+
`SnapController:getPermitted`,
|
|
77
|
+
`SnapController:install`,
|
|
78
|
+
`SubjectMetadataController:getSubjectMetadata`,
|
|
79
|
+
],
|
|
80
|
+
});
|
|
62
81
|
return new permission_controller_1.PermissionController({
|
|
63
|
-
messenger
|
|
64
|
-
name: 'PermissionController',
|
|
65
|
-
allowedActions: [
|
|
66
|
-
`ApprovalController:addRequest`,
|
|
67
|
-
`ApprovalController:hasRequest`,
|
|
68
|
-
`ApprovalController:acceptRequest`,
|
|
69
|
-
`ApprovalController:rejectRequest`,
|
|
70
|
-
`SnapController:getPermitted`,
|
|
71
|
-
`SnapController:install`,
|
|
72
|
-
`SubjectMetadataController:getSubjectMetadata`,
|
|
73
|
-
],
|
|
74
|
-
allowedEvents: [],
|
|
75
|
-
}),
|
|
82
|
+
messenger,
|
|
76
83
|
caveatSpecifications: {
|
|
77
84
|
...snaps_rpc_methods_1.caveatSpecifications,
|
|
78
85
|
...snaps_rpc_methods_1.endowmentCaveatSpecifications,
|
package/dist/controllers.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controllers.cjs","sourceRoot":"","sources":["../src/controllers.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"controllers.cjs","sourceRoot":"","sources":["../src/controllers.ts"],"names":[],"mappings":";;;AAAA,mDAAgD;AAOhD,2EAIyC;AACzC,mEAAsE;AAOtE,mEAIqC;AAGrC,2CAA8C;AAE9C,iDAAwD;AACxD,uDAA2D;AAqC3D;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,OAA8B;IAC3D,MAAM,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC;IACxC,MAAM,yBAAyB,GAAG,IAAI,iDAAyB,CAAC;QAC9D,SAAS,EAAE,IAAI,qBAAS,CAAC;YACvB,SAAS,EAAE,2BAA2B;YACtC,MAAM,EAAE,mBAAmB;SAC5B,CAAC;QACF,iBAAiB,EAAE,GAAG;KACvB,CAAC,CAAC;IAEH,MAAM,4BAA4B,GAAG,IAAI,qBAAS,CAAC;QACjD,SAAS,EAAE,yBAAyB;QACpC,MAAM,EAAE,mBAAmB;KAC5B,CAAC,CAAC;IAEH,mBAAmB,CAAC,QAAQ,CAAC;QAC3B,SAAS,EAAE,4BAA4B;QACvC,OAAO,EAAE;YACP,+BAA+B;YAC/B,+BAA+B;YAC/B,kCAAkC;YAClC,wCAAwC;YACxC,iDAAiD;YACjD,2CAA2C;YAC3C,qCAAqC;SACtC;QACD,MAAM,EAAE,CAAC,yDAAyD,CAAC;KACpE,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,IAAI,2CAAuB,CAAC;QACtD,SAAS,EAAE,4BAA4B;KACxC,CAAC,CAAC;IAEH,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAE9D,OAAO;QACL,oBAAoB;QACpB,yBAAyB;QACzB,mBAAmB;KACpB,CAAC;AACJ,CAAC;AAxCD,wCAwCC;AAED;;;;;;;GAOG;AACH,SAAS,uBAAuB,CAAC,OAA8B;IAC7D,MAAM,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC;IACxC,MAAM,wBAAwB,GAAG,IAAA,qCAA2B,EAAC,OAAO,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,IAAI,qBAAS,CAAC;QAC9B,SAAS,EAAE,sBAAsB;QACjC,MAAM,EAAE,mBAAmB;KAC5B,CAAC,CAAC;IAEH,mBAAmB,CAAC,QAAQ,CAAC;QAC3B,SAAS;QACT,OAAO,EAAE;YACP,+BAA+B;YAC/B,+BAA+B;YAC/B,kCAAkC;YAClC,kCAAkC;YAClC,6BAA6B;YAC7B,wBAAwB;YACxB,8CAA8C;SAC/C;KACF,CAAC,CAAC;IAEH,OAAO,IAAI,4CAAoB,CAAC;QAC9B,SAAS;QACT,oBAAoB,EAAE;YACpB,GAAG,wCAA0B;YAC7B,GAAG,iDAAkC;SACtC;QACD,wBAAwB;QACxB,mBAAmB,EAAE,gCAAoB;KAC1C,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,QAAsB,EACtB,EACE,oBAAoB,EACpB,yBAAyB,GACgB;IAE3C,yBAAyB,CAAC,kBAAkB,CAAC;QAC3C,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,mCAAW,CAAC,IAAI;KAC9B,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,IAAA,0CAAsB,EAChD,IAAA,mBAAW,EAAC,QAAQ,CAAC,kBAAkB,CAAC,CACzC,CAAC;IAEF,oBAAoB,CAAC,gBAAgB,CAAC;QACpC,mBAAmB;QACnB,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;QAC3B,2BAA2B,EAAE,KAAK;KACnC,CAAC,CAAC;AACL,CAAC;AAtBD,oCAsBC","sourcesContent":["import { Messenger } from '@metamask/messenger';\nimport type {\n CaveatSpecificationConstraint,\n PermissionSpecificationConstraint,\n PermissionControllerActions,\n SubjectMetadataControllerActions,\n} from '@metamask/permission-controller';\nimport {\n PermissionController,\n SubjectMetadataController,\n SubjectType,\n} from '@metamask/permission-controller';\nimport { SnapInterfaceController } from '@metamask/snaps-controllers';\nimport type {\n ExecutionServiceActions,\n SnapInterfaceControllerActions,\n SnapInterfaceControllerAllowedActions,\n SnapInterfaceControllerStateChangeEvent,\n} from '@metamask/snaps-controllers';\nimport {\n caveatSpecifications as snapsCaveatsSpecifications,\n endowmentCaveatSpecifications as snapsEndowmentCaveatSpecifications,\n processSnapPermissions,\n} from '@metamask/snaps-rpc-methods';\nimport type { SnapId } from '@metamask/snaps-sdk';\nimport type { SnapManifest } from '@metamask/snaps-utils';\nimport { getSafeJson } from '@metamask/utils';\n\nimport { getPermissionSpecifications } from './methods';\nimport { UNRESTRICTED_METHODS } from './methods/constants';\nimport type { SimulationOptions } from './options';\nimport type { RestrictedMiddlewareHooks } from './simulation';\nimport type { RunSagaFunction } from './store';\n\nexport type RootControllerAllowedActions =\n | SnapInterfaceControllerActions\n | SnapInterfaceControllerAllowedActions\n | PermissionControllerActions\n | ExecutionServiceActions\n | SubjectMetadataControllerActions;\n\nexport type RootControllerAllowedEvents =\n SnapInterfaceControllerStateChangeEvent;\n\nexport type RootControllerMessenger = Messenger<\n any,\n RootControllerAllowedActions,\n RootControllerAllowedEvents\n>;\n\nexport type GetControllersOptions = {\n controllerMessenger: Messenger<any, any, any>;\n hooks: RestrictedMiddlewareHooks;\n runSaga: RunSagaFunction;\n options: SimulationOptions;\n};\n\nexport type Controllers = {\n permissionController: PermissionController<\n PermissionSpecificationConstraint,\n CaveatSpecificationConstraint\n >;\n subjectMetadataController: SubjectMetadataController;\n interfaceController: SnapInterfaceController;\n};\n\n/**\n * Get the controllers for the Snap.\n *\n * @param options - The options.\n * @returns The controllers for the Snap.\n */\nexport function getControllers(options: GetControllersOptions): Controllers {\n const { controllerMessenger } = options;\n const subjectMetadataController = new SubjectMetadataController({\n messenger: new Messenger({\n namespace: 'SubjectMetadataController',\n parent: controllerMessenger,\n }),\n subjectCacheLimit: 100,\n });\n\n const interfaceControllerMessenger = new Messenger({\n namespace: 'SnapInterfaceController',\n parent: controllerMessenger,\n });\n\n controllerMessenger.delegate({\n messenger: interfaceControllerMessenger,\n actions: [\n 'PhishingController:testOrigin',\n 'ApprovalController:hasRequest',\n 'ApprovalController:acceptRequest',\n 'AccountsController:getAccountByAddress',\n 'AccountsController:getSelectedMultichainAccount',\n 'AccountsController:listMultichainAccounts',\n 'MultichainAssetsController:getState',\n ],\n events: ['NotificationServicesController:notificationsListUpdated'],\n });\n\n const interfaceController = new SnapInterfaceController({\n messenger: interfaceControllerMessenger,\n });\n\n const permissionController = getPermissionController(options);\n\n return {\n permissionController,\n subjectMetadataController,\n interfaceController,\n };\n}\n\n/**\n * Get the permission controller for the Snap.\n *\n * @param options - The options.\n * @param options.controllerMessenger - The controller messenger.\n * @param options.options - Miscellaneous options.\n * @returns The permission controller for the Snap.\n */\nfunction getPermissionController(options: GetControllersOptions) {\n const { controllerMessenger } = options;\n const permissionSpecifications = getPermissionSpecifications(options);\n const messenger = new Messenger({\n namespace: 'PermissionController',\n parent: controllerMessenger,\n });\n\n controllerMessenger.delegate({\n messenger,\n actions: [\n `ApprovalController:addRequest`,\n `ApprovalController:hasRequest`,\n `ApprovalController:acceptRequest`,\n `ApprovalController:rejectRequest`,\n `SnapController:getPermitted`,\n `SnapController:install`,\n `SubjectMetadataController:getSubjectMetadata`,\n ],\n });\n\n return new PermissionController({\n messenger,\n caveatSpecifications: {\n ...snapsCaveatsSpecifications,\n ...snapsEndowmentCaveatSpecifications,\n },\n permissionSpecifications,\n unrestrictedMethods: UNRESTRICTED_METHODS,\n });\n}\n\n/**\n * Register the Snap. This sets up the Snap's permissions and subject metadata.\n *\n * @param snapId - The ID of the Snap to install.\n * @param manifest - The parsed manifest.\n * @param controllers - The controllers for the Snap.\n * @param controllers.permissionController - The permission controller.\n * @param controllers.subjectMetadataController - The subject metadata controller.\n */\nexport async function registerSnap(\n snapId: SnapId,\n manifest: SnapManifest,\n {\n permissionController,\n subjectMetadataController,\n }: Omit<Controllers, 'interfaceController'>,\n) {\n subjectMetadataController.addSubjectMetadata({\n origin: snapId,\n subjectType: SubjectType.Snap,\n });\n\n const approvedPermissions = processSnapPermissions(\n getSafeJson(manifest.initialPermissions),\n );\n\n permissionController.grantPermissions({\n approvedPermissions,\n subject: { origin: snapId },\n preserveExistingPermissions: false,\n });\n}\n"]}
|
package/dist/controllers.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Messenger } from "@metamask/messenger";
|
|
2
2
|
import type { CaveatSpecificationConstraint, PermissionSpecificationConstraint, PermissionControllerActions, SubjectMetadataControllerActions } from "@metamask/permission-controller";
|
|
3
3
|
import { PermissionController, SubjectMetadataController } from "@metamask/permission-controller";
|
|
4
4
|
import { SnapInterfaceController } from "@metamask/snaps-controllers";
|
|
@@ -10,9 +10,9 @@ import type { RestrictedMiddlewareHooks } from "./simulation.cjs";
|
|
|
10
10
|
import type { RunSagaFunction } from "./store/index.cjs";
|
|
11
11
|
export type RootControllerAllowedActions = SnapInterfaceControllerActions | SnapInterfaceControllerAllowedActions | PermissionControllerActions | ExecutionServiceActions | SubjectMetadataControllerActions;
|
|
12
12
|
export type RootControllerAllowedEvents = SnapInterfaceControllerStateChangeEvent;
|
|
13
|
-
export type RootControllerMessenger = Messenger<RootControllerAllowedActions, RootControllerAllowedEvents>;
|
|
13
|
+
export type RootControllerMessenger = Messenger<any, RootControllerAllowedActions, RootControllerAllowedEvents>;
|
|
14
14
|
export type GetControllersOptions = {
|
|
15
|
-
controllerMessenger: Messenger<any, any>;
|
|
15
|
+
controllerMessenger: Messenger<any, any, any>;
|
|
16
16
|
hooks: RestrictedMiddlewareHooks;
|
|
17
17
|
runSaga: RunSagaFunction;
|
|
18
18
|
options: SimulationOptions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controllers.d.cts","sourceRoot":"","sources":["../src/controllers.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"controllers.d.cts","sourceRoot":"","sources":["../src/controllers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,4BAA4B;AAChD,OAAO,KAAK,EACV,6BAA6B,EAC7B,iCAAiC,EACjC,2BAA2B,EAC3B,gCAAgC,EACjC,wCAAwC;AACzC,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EAE1B,wCAAwC;AACzC,OAAO,EAAE,uBAAuB,EAAE,oCAAoC;AACtE,OAAO,KAAK,EACV,uBAAuB,EACvB,8BAA8B,EAC9B,qCAAqC,EACrC,uCAAuC,EACxC,oCAAoC;AAMrC,OAAO,KAAK,EAAE,MAAM,EAAE,4BAA4B;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,8BAA8B;AAK1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAkB;AACnD,OAAO,KAAK,EAAE,yBAAyB,EAAE,yBAAqB;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,0BAAgB;AAE/C,MAAM,MAAM,4BAA4B,GACpC,8BAA8B,GAC9B,qCAAqC,GACrC,2BAA2B,GAC3B,uBAAuB,GACvB,gCAAgC,CAAC;AAErC,MAAM,MAAM,2BAA2B,GACrC,uCAAuC,CAAC;AAE1C,MAAM,MAAM,uBAAuB,GAAG,SAAS,CAC7C,GAAG,EACH,4BAA4B,EAC5B,2BAA2B,CAC5B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,mBAAmB,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9C,KAAK,EAAE,yBAAyB,CAAC;IACjC,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,iBAAiB,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,oBAAoB,EAAE,oBAAoB,CACxC,iCAAiC,EACjC,6BAA6B,CAC9B,CAAC;IACF,yBAAyB,EAAE,yBAAyB,CAAC;IACrD,mBAAmB,EAAE,uBAAuB,CAAC;CAC9C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,WAAW,CAwC1E;AA0CD;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,YAAY,EACtB,EACE,oBAAoB,EACpB,yBAAyB,GAC1B,EAAE,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,iBAgB5C"}
|
package/dist/controllers.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Messenger } from "@metamask/messenger";
|
|
2
2
|
import type { CaveatSpecificationConstraint, PermissionSpecificationConstraint, PermissionControllerActions, SubjectMetadataControllerActions } from "@metamask/permission-controller";
|
|
3
3
|
import { PermissionController, SubjectMetadataController } from "@metamask/permission-controller";
|
|
4
4
|
import { SnapInterfaceController } from "@metamask/snaps-controllers";
|
|
@@ -10,9 +10,9 @@ import type { RestrictedMiddlewareHooks } from "./simulation.mjs";
|
|
|
10
10
|
import type { RunSagaFunction } from "./store/index.mjs";
|
|
11
11
|
export type RootControllerAllowedActions = SnapInterfaceControllerActions | SnapInterfaceControllerAllowedActions | PermissionControllerActions | ExecutionServiceActions | SubjectMetadataControllerActions;
|
|
12
12
|
export type RootControllerAllowedEvents = SnapInterfaceControllerStateChangeEvent;
|
|
13
|
-
export type RootControllerMessenger = Messenger<RootControllerAllowedActions, RootControllerAllowedEvents>;
|
|
13
|
+
export type RootControllerMessenger = Messenger<any, RootControllerAllowedActions, RootControllerAllowedEvents>;
|
|
14
14
|
export type GetControllersOptions = {
|
|
15
|
-
controllerMessenger: Messenger<any, any>;
|
|
15
|
+
controllerMessenger: Messenger<any, any, any>;
|
|
16
16
|
hooks: RestrictedMiddlewareHooks;
|
|
17
17
|
runSaga: RunSagaFunction;
|
|
18
18
|
options: SimulationOptions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controllers.d.mts","sourceRoot":"","sources":["../src/controllers.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"controllers.d.mts","sourceRoot":"","sources":["../src/controllers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,4BAA4B;AAChD,OAAO,KAAK,EACV,6BAA6B,EAC7B,iCAAiC,EACjC,2BAA2B,EAC3B,gCAAgC,EACjC,wCAAwC;AACzC,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EAE1B,wCAAwC;AACzC,OAAO,EAAE,uBAAuB,EAAE,oCAAoC;AACtE,OAAO,KAAK,EACV,uBAAuB,EACvB,8BAA8B,EAC9B,qCAAqC,EACrC,uCAAuC,EACxC,oCAAoC;AAMrC,OAAO,KAAK,EAAE,MAAM,EAAE,4BAA4B;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,8BAA8B;AAK1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAkB;AACnD,OAAO,KAAK,EAAE,yBAAyB,EAAE,yBAAqB;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,0BAAgB;AAE/C,MAAM,MAAM,4BAA4B,GACpC,8BAA8B,GAC9B,qCAAqC,GACrC,2BAA2B,GAC3B,uBAAuB,GACvB,gCAAgC,CAAC;AAErC,MAAM,MAAM,2BAA2B,GACrC,uCAAuC,CAAC;AAE1C,MAAM,MAAM,uBAAuB,GAAG,SAAS,CAC7C,GAAG,EACH,4BAA4B,EAC5B,2BAA2B,CAC5B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,mBAAmB,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9C,KAAK,EAAE,yBAAyB,CAAC;IACjC,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,iBAAiB,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,oBAAoB,EAAE,oBAAoB,CACxC,iCAAiC,EACjC,6BAA6B,CAC9B,CAAC;IACF,yBAAyB,EAAE,yBAAyB,CAAC;IACrD,mBAAmB,EAAE,uBAAuB,CAAC;CAC9C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,WAAW,CAwC1E;AA0CD;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,YAAY,EACtB,EACE,oBAAoB,EACpB,yBAAyB,GAC1B,EAAE,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,iBAgB5C"}
|
package/dist/controllers.mjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Messenger } from "@metamask/messenger";
|
|
1
2
|
import { PermissionController, SubjectMetadataController, SubjectType } from "@metamask/permission-controller";
|
|
2
3
|
import { SnapInterfaceController } from "@metamask/snaps-controllers";
|
|
3
4
|
import { caveatSpecifications as snapsCaveatsSpecifications, endowmentCaveatSpecifications as snapsEndowmentCaveatSpecifications, processSnapPermissions } from "@metamask/snaps-rpc-methods";
|
|
@@ -13,29 +14,31 @@ import { UNRESTRICTED_METHODS } from "./methods/constants.mjs";
|
|
|
13
14
|
export function getControllers(options) {
|
|
14
15
|
const { controllerMessenger } = options;
|
|
15
16
|
const subjectMetadataController = new SubjectMetadataController({
|
|
16
|
-
messenger:
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
allowedEvents: [],
|
|
17
|
+
messenger: new Messenger({
|
|
18
|
+
namespace: 'SubjectMetadataController',
|
|
19
|
+
parent: controllerMessenger,
|
|
20
20
|
}),
|
|
21
21
|
subjectCacheLimit: 100,
|
|
22
22
|
});
|
|
23
|
+
const interfaceControllerMessenger = new Messenger({
|
|
24
|
+
namespace: 'SnapInterfaceController',
|
|
25
|
+
parent: controllerMessenger,
|
|
26
|
+
});
|
|
27
|
+
controllerMessenger.delegate({
|
|
28
|
+
messenger: interfaceControllerMessenger,
|
|
29
|
+
actions: [
|
|
30
|
+
'PhishingController:testOrigin',
|
|
31
|
+
'ApprovalController:hasRequest',
|
|
32
|
+
'ApprovalController:acceptRequest',
|
|
33
|
+
'AccountsController:getAccountByAddress',
|
|
34
|
+
'AccountsController:getSelectedMultichainAccount',
|
|
35
|
+
'AccountsController:listMultichainAccounts',
|
|
36
|
+
'MultichainAssetsController:getState',
|
|
37
|
+
],
|
|
38
|
+
events: ['NotificationServicesController:notificationsListUpdated'],
|
|
39
|
+
});
|
|
23
40
|
const interfaceController = new SnapInterfaceController({
|
|
24
|
-
messenger:
|
|
25
|
-
name: 'SnapInterfaceController',
|
|
26
|
-
allowedActions: [
|
|
27
|
-
'PhishingController:testOrigin',
|
|
28
|
-
'ApprovalController:hasRequest',
|
|
29
|
-
'ApprovalController:acceptRequest',
|
|
30
|
-
'AccountsController:getAccountByAddress',
|
|
31
|
-
'AccountsController:getSelectedMultichainAccount',
|
|
32
|
-
'AccountsController:listMultichainAccounts',
|
|
33
|
-
'MultichainAssetsController:getState',
|
|
34
|
-
],
|
|
35
|
-
allowedEvents: [
|
|
36
|
-
'NotificationServicesController:notificationsListUpdated',
|
|
37
|
-
],
|
|
38
|
-
}),
|
|
41
|
+
messenger: interfaceControllerMessenger,
|
|
39
42
|
});
|
|
40
43
|
const permissionController = getPermissionController(options);
|
|
41
44
|
return {
|
|
@@ -55,20 +58,24 @@ export function getControllers(options) {
|
|
|
55
58
|
function getPermissionController(options) {
|
|
56
59
|
const { controllerMessenger } = options;
|
|
57
60
|
const permissionSpecifications = getPermissionSpecifications(options);
|
|
61
|
+
const messenger = new Messenger({
|
|
62
|
+
namespace: 'PermissionController',
|
|
63
|
+
parent: controllerMessenger,
|
|
64
|
+
});
|
|
65
|
+
controllerMessenger.delegate({
|
|
66
|
+
messenger,
|
|
67
|
+
actions: [
|
|
68
|
+
`ApprovalController:addRequest`,
|
|
69
|
+
`ApprovalController:hasRequest`,
|
|
70
|
+
`ApprovalController:acceptRequest`,
|
|
71
|
+
`ApprovalController:rejectRequest`,
|
|
72
|
+
`SnapController:getPermitted`,
|
|
73
|
+
`SnapController:install`,
|
|
74
|
+
`SubjectMetadataController:getSubjectMetadata`,
|
|
75
|
+
],
|
|
76
|
+
});
|
|
58
77
|
return new PermissionController({
|
|
59
|
-
messenger
|
|
60
|
-
name: 'PermissionController',
|
|
61
|
-
allowedActions: [
|
|
62
|
-
`ApprovalController:addRequest`,
|
|
63
|
-
`ApprovalController:hasRequest`,
|
|
64
|
-
`ApprovalController:acceptRequest`,
|
|
65
|
-
`ApprovalController:rejectRequest`,
|
|
66
|
-
`SnapController:getPermitted`,
|
|
67
|
-
`SnapController:install`,
|
|
68
|
-
`SubjectMetadataController:getSubjectMetadata`,
|
|
69
|
-
],
|
|
70
|
-
allowedEvents: [],
|
|
71
|
-
}),
|
|
78
|
+
messenger,
|
|
72
79
|
caveatSpecifications: {
|
|
73
80
|
...snapsCaveatsSpecifications,
|
|
74
81
|
...snapsEndowmentCaveatSpecifications,
|
package/dist/controllers.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controllers.mjs","sourceRoot":"","sources":["../src/controllers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"controllers.mjs","sourceRoot":"","sources":["../src/controllers.ts"],"names":[],"mappings":"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","sourcesContent":["import { Messenger } from '@metamask/messenger';\nimport type {\n CaveatSpecificationConstraint,\n PermissionSpecificationConstraint,\n PermissionControllerActions,\n SubjectMetadataControllerActions,\n} from '@metamask/permission-controller';\nimport {\n PermissionController,\n SubjectMetadataController,\n SubjectType,\n} from '@metamask/permission-controller';\nimport { SnapInterfaceController } from '@metamask/snaps-controllers';\nimport type {\n ExecutionServiceActions,\n SnapInterfaceControllerActions,\n SnapInterfaceControllerAllowedActions,\n SnapInterfaceControllerStateChangeEvent,\n} from '@metamask/snaps-controllers';\nimport {\n caveatSpecifications as snapsCaveatsSpecifications,\n endowmentCaveatSpecifications as snapsEndowmentCaveatSpecifications,\n processSnapPermissions,\n} from '@metamask/snaps-rpc-methods';\nimport type { SnapId } from '@metamask/snaps-sdk';\nimport type { SnapManifest } from '@metamask/snaps-utils';\nimport { getSafeJson } from '@metamask/utils';\n\nimport { getPermissionSpecifications } from './methods';\nimport { UNRESTRICTED_METHODS } from './methods/constants';\nimport type { SimulationOptions } from './options';\nimport type { RestrictedMiddlewareHooks } from './simulation';\nimport type { RunSagaFunction } from './store';\n\nexport type RootControllerAllowedActions =\n | SnapInterfaceControllerActions\n | SnapInterfaceControllerAllowedActions\n | PermissionControllerActions\n | ExecutionServiceActions\n | SubjectMetadataControllerActions;\n\nexport type RootControllerAllowedEvents =\n SnapInterfaceControllerStateChangeEvent;\n\nexport type RootControllerMessenger = Messenger<\n any,\n RootControllerAllowedActions,\n RootControllerAllowedEvents\n>;\n\nexport type GetControllersOptions = {\n controllerMessenger: Messenger<any, any, any>;\n hooks: RestrictedMiddlewareHooks;\n runSaga: RunSagaFunction;\n options: SimulationOptions;\n};\n\nexport type Controllers = {\n permissionController: PermissionController<\n PermissionSpecificationConstraint,\n CaveatSpecificationConstraint\n >;\n subjectMetadataController: SubjectMetadataController;\n interfaceController: SnapInterfaceController;\n};\n\n/**\n * Get the controllers for the Snap.\n *\n * @param options - The options.\n * @returns The controllers for the Snap.\n */\nexport function getControllers(options: GetControllersOptions): Controllers {\n const { controllerMessenger } = options;\n const subjectMetadataController = new SubjectMetadataController({\n messenger: new Messenger({\n namespace: 'SubjectMetadataController',\n parent: controllerMessenger,\n }),\n subjectCacheLimit: 100,\n });\n\n const interfaceControllerMessenger = new Messenger({\n namespace: 'SnapInterfaceController',\n parent: controllerMessenger,\n });\n\n controllerMessenger.delegate({\n messenger: interfaceControllerMessenger,\n actions: [\n 'PhishingController:testOrigin',\n 'ApprovalController:hasRequest',\n 'ApprovalController:acceptRequest',\n 'AccountsController:getAccountByAddress',\n 'AccountsController:getSelectedMultichainAccount',\n 'AccountsController:listMultichainAccounts',\n 'MultichainAssetsController:getState',\n ],\n events: ['NotificationServicesController:notificationsListUpdated'],\n });\n\n const interfaceController = new SnapInterfaceController({\n messenger: interfaceControllerMessenger,\n });\n\n const permissionController = getPermissionController(options);\n\n return {\n permissionController,\n subjectMetadataController,\n interfaceController,\n };\n}\n\n/**\n * Get the permission controller for the Snap.\n *\n * @param options - The options.\n * @param options.controllerMessenger - The controller messenger.\n * @param options.options - Miscellaneous options.\n * @returns The permission controller for the Snap.\n */\nfunction getPermissionController(options: GetControllersOptions) {\n const { controllerMessenger } = options;\n const permissionSpecifications = getPermissionSpecifications(options);\n const messenger = new Messenger({\n namespace: 'PermissionController',\n parent: controllerMessenger,\n });\n\n controllerMessenger.delegate({\n messenger,\n actions: [\n `ApprovalController:addRequest`,\n `ApprovalController:hasRequest`,\n `ApprovalController:acceptRequest`,\n `ApprovalController:rejectRequest`,\n `SnapController:getPermitted`,\n `SnapController:install`,\n `SubjectMetadataController:getSubjectMetadata`,\n ],\n });\n\n return new PermissionController({\n messenger,\n caveatSpecifications: {\n ...snapsCaveatsSpecifications,\n ...snapsEndowmentCaveatSpecifications,\n },\n permissionSpecifications,\n unrestrictedMethods: UNRESTRICTED_METHODS,\n });\n}\n\n/**\n * Register the Snap. This sets up the Snap's permissions and subject metadata.\n *\n * @param snapId - The ID of the Snap to install.\n * @param manifest - The parsed manifest.\n * @param controllers - The controllers for the Snap.\n * @param controllers.permissionController - The permission controller.\n * @param controllers.subjectMetadataController - The subject metadata controller.\n */\nexport async function registerSnap(\n snapId: SnapId,\n manifest: SnapManifest,\n {\n permissionController,\n subjectMetadataController,\n }: Omit<Controllers, 'interfaceController'>,\n) {\n subjectMetadataController.addSubjectMetadata({\n origin: snapId,\n subjectType: SubjectType.Snap,\n });\n\n const approvedPermissions = processSnapPermissions(\n getSafeJson(manifest.initialPermissions),\n );\n\n permissionController.grantPermissions({\n approvedPermissions,\n subject: { origin: snapId },\n preserveExistingPermissions: false,\n });\n}\n"]}
|
package/dist/interface.cjs
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getInterface = exports.getInterfaceActions = exports.uploadFile = exports.waitForUpdate = exports.selectFromSelector = exports.getValueFromSelector = exports.selectFromRadioGroup = exports.selectInDropdown = exports.typeInField = exports.mergeValue = exports.clickElement = exports.getElementByType = exports.getElement = exports.resolveWithSaga = exports.getInterfaceResponse = void 0;
|
|
6
|
+
exports.getInterface = exports.getInterfaceActions = exports.uploadFile = exports.waitForUpdate = exports.pickDateTime = exports.selectFromSelector = exports.getValueFromSelector = exports.selectFromRadioGroup = exports.selectInDropdown = exports.typeInField = exports.mergeValue = exports.clickElement = exports.getElementByType = exports.getElement = exports.resolveWithSaga = exports.getInterfaceResponse = void 0;
|
|
7
7
|
const snaps_rpc_methods_1 = require("@metamask/snaps-rpc-methods");
|
|
8
8
|
const snaps_sdk_1 = require("@metamask/snaps-sdk");
|
|
9
9
|
const snaps_utils_1 = require("@metamask/snaps-utils");
|
|
@@ -549,6 +549,51 @@ async function selectFromSelector(controllerMessenger, options, id, content, sna
|
|
|
549
549
|
});
|
|
550
550
|
}
|
|
551
551
|
exports.selectFromSelector = selectFromSelector;
|
|
552
|
+
/**
|
|
553
|
+
* Pick a date or time in a DateTimePicker interface element.
|
|
554
|
+
*
|
|
555
|
+
* @param controllerMessenger - The controller messenger used to call actions.
|
|
556
|
+
* @param id - The interface ID.
|
|
557
|
+
* @param content - The interface Components.
|
|
558
|
+
* @param snapId - The Snap ID.
|
|
559
|
+
* @param name - The element name.
|
|
560
|
+
* @param value - The value to pick in the element.
|
|
561
|
+
*/
|
|
562
|
+
async function pickDateTime(controllerMessenger, id, content, snapId, name, value) {
|
|
563
|
+
const result = getElement(content, name);
|
|
564
|
+
(0, snaps_sdk_1.assert)(result !== undefined, `Could not find an element in the interface with the name "${name}".`);
|
|
565
|
+
(0, snaps_sdk_1.assert)(result.element.type === 'DateTimePicker', `Expected an element of type "DateTimePicker", but found "${result.element.type}".`);
|
|
566
|
+
(0, snaps_sdk_1.assert)(!isNaN(value.getTime()), `Expected "value" to be a valid Date object.`);
|
|
567
|
+
const parsedDate = value.toISOString();
|
|
568
|
+
const now = new Date();
|
|
569
|
+
if (result.element.props.disableFuture) {
|
|
570
|
+
(0, snaps_sdk_1.assert)(value <= now, `The selected date "${parsedDate}" is in the future, but the DateTimePicker with the name "${name}" has future dates disabled.`);
|
|
571
|
+
}
|
|
572
|
+
if (result.element.props.disablePast) {
|
|
573
|
+
(0, snaps_sdk_1.assert)(value >= now, `The selected date "${parsedDate}" is in the past, but the DateTimePicker with the name "${name}" has past dates disabled.`);
|
|
574
|
+
}
|
|
575
|
+
const { state, context } = controllerMessenger.call('SnapInterfaceController:getInterface', snapId, id);
|
|
576
|
+
const newState = mergeValue(state, name, parsedDate, result.form);
|
|
577
|
+
controllerMessenger.call('SnapInterfaceController:updateInterfaceState', id, newState);
|
|
578
|
+
await controllerMessenger.call('ExecutionService:handleRpcRequest', snapId, {
|
|
579
|
+
origin: 'metamask',
|
|
580
|
+
handler: snaps_utils_1.HandlerType.OnUserInput,
|
|
581
|
+
request: {
|
|
582
|
+
jsonrpc: '2.0',
|
|
583
|
+
method: ' ',
|
|
584
|
+
params: {
|
|
585
|
+
event: {
|
|
586
|
+
type: snaps_sdk_1.UserInputEventType.InputChangeEvent,
|
|
587
|
+
name: result.element.props.name,
|
|
588
|
+
value: parsedDate,
|
|
589
|
+
},
|
|
590
|
+
id,
|
|
591
|
+
context,
|
|
592
|
+
},
|
|
593
|
+
},
|
|
594
|
+
});
|
|
595
|
+
}
|
|
596
|
+
exports.pickDateTime = pickDateTime;
|
|
552
597
|
/**
|
|
553
598
|
* Wait for an interface to be updated.
|
|
554
599
|
*
|
|
@@ -656,6 +701,9 @@ function getInterfaceActions(snapId, controllerMessenger, simulationOptions, { c
|
|
|
656
701
|
clickElement: async (name) => {
|
|
657
702
|
await clickElement(controllerMessenger, id, content, snapId, name);
|
|
658
703
|
},
|
|
704
|
+
pickDateTime: async (name, value) => {
|
|
705
|
+
await pickDateTime(controllerMessenger, id, content, snapId, name, value);
|
|
706
|
+
},
|
|
659
707
|
typeInField: async (name, value) => {
|
|
660
708
|
await typeInField(controllerMessenger, id, content, snapId, name, value);
|
|
661
709
|
},
|