@metamask-previews/wallet 0.0.0-preview-73cf60340 → 0.0.0-preview-ea54cecca

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.
Files changed (82) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/Wallet.cjs +79 -0
  3. package/dist/Wallet.cjs.map +1 -0
  4. package/dist/Wallet.d.cts +20 -0
  5. package/dist/Wallet.d.cts.map +1 -0
  6. package/dist/Wallet.d.mts +20 -0
  7. package/dist/Wallet.d.mts.map +1 -0
  8. package/dist/Wallet.mjs +75 -0
  9. package/dist/Wallet.mjs.map +1 -0
  10. package/dist/index.cjs +3 -10
  11. package/dist/index.cjs.map +1 -1
  12. package/dist/index.d.cts +3 -7
  13. package/dist/index.d.cts.map +1 -1
  14. package/dist/index.d.mts +3 -7
  15. package/dist/index.d.mts.map +1 -1
  16. package/dist/index.mjs +1 -9
  17. package/dist/index.mjs.map +1 -1
  18. package/dist/initialization/defaults.cjs +29 -0
  19. package/dist/initialization/defaults.cjs.map +1 -0
  20. package/dist/initialization/defaults.d.cts +25 -0
  21. package/dist/initialization/defaults.d.cts.map +1 -0
  22. package/dist/initialization/defaults.d.mts +25 -0
  23. package/dist/initialization/defaults.d.mts.map +1 -0
  24. package/dist/initialization/defaults.mjs +3 -0
  25. package/dist/initialization/defaults.mjs.map +1 -0
  26. package/dist/initialization/index.cjs +6 -0
  27. package/dist/initialization/index.cjs.map +1 -0
  28. package/dist/initialization/index.d.cts +4 -0
  29. package/dist/initialization/index.d.cts.map +1 -0
  30. package/dist/initialization/index.d.mts +4 -0
  31. package/dist/initialization/index.d.mts.map +1 -0
  32. package/dist/initialization/index.mjs +2 -0
  33. package/dist/initialization/index.mjs.map +1 -0
  34. package/dist/initialization/initialization.cjs +24 -0
  35. package/dist/initialization/initialization.cjs.map +1 -0
  36. package/dist/initialization/initialization.d.cts +9 -0
  37. package/dist/initialization/initialization.d.cts.map +1 -0
  38. package/dist/initialization/initialization.d.mts +9 -0
  39. package/dist/initialization/initialization.d.mts.map +1 -0
  40. package/dist/initialization/initialization.mjs +20 -0
  41. package/dist/initialization/initialization.mjs.map +1 -0
  42. package/dist/initialization/instances/index.cjs +6 -0
  43. package/dist/initialization/instances/index.cjs.map +1 -0
  44. package/dist/initialization/instances/index.d.cts +2 -0
  45. package/dist/initialization/instances/index.d.cts.map +1 -0
  46. package/dist/initialization/instances/index.d.mts +2 -0
  47. package/dist/initialization/instances/index.d.mts.map +1 -0
  48. package/dist/initialization/instances/index.mjs +2 -0
  49. package/dist/initialization/instances/index.mjs.map +1 -0
  50. package/dist/initialization/instances/keyring-controller.cjs +97 -0
  51. package/dist/initialization/instances/keyring-controller.cjs.map +1 -0
  52. package/dist/initialization/instances/keyring-controller.d.cts +4 -0
  53. package/dist/initialization/instances/keyring-controller.d.cts.map +1 -0
  54. package/dist/initialization/instances/keyring-controller.d.mts +4 -0
  55. package/dist/initialization/instances/keyring-controller.d.mts.map +1 -0
  56. package/dist/initialization/instances/keyring-controller.mjs +94 -0
  57. package/dist/initialization/instances/keyring-controller.mjs.map +1 -0
  58. package/dist/initialization/types.cjs +3 -0
  59. package/dist/initialization/types.cjs.map +1 -0
  60. package/dist/initialization/types.d.cts +21 -0
  61. package/dist/initialization/types.d.cts.map +1 -0
  62. package/dist/initialization/types.d.mts +21 -0
  63. package/dist/initialization/types.d.mts.map +1 -0
  64. package/dist/initialization/types.mjs +2 -0
  65. package/dist/initialization/types.mjs.map +1 -0
  66. package/dist/types.cjs +3 -0
  67. package/dist/types.cjs.map +1 -0
  68. package/dist/types.d.cts +12 -0
  69. package/dist/types.d.cts.map +1 -0
  70. package/dist/types.d.mts +12 -0
  71. package/dist/types.d.mts.map +1 -0
  72. package/dist/types.mjs +2 -0
  73. package/dist/types.mjs.map +1 -0
  74. package/dist/utilities.cjs +20 -0
  75. package/dist/utilities.cjs.map +1 -0
  76. package/dist/utilities.d.cts +10 -0
  77. package/dist/utilities.d.cts.map +1 -0
  78. package/dist/utilities.d.mts +10 -0
  79. package/dist/utilities.d.mts.map +1 -0
  80. package/dist/utilities.mjs +16 -0
  81. package/dist/utilities.mjs.map +1 -0
  82. package/package.json +9 -1
package/CHANGELOG.md CHANGED
@@ -7,4 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ### Added
11
+
12
+ - Initial release ([#8838](https://github.com/MetaMask/core/pull/8838))
13
+
10
14
  [Unreleased]: https://github.com/MetaMask/core/
@@ -0,0 +1,79 @@
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 _Wallet_messenger, _Wallet_instances, _Wallet_controllerMetadata, _Wallet_destroyed;
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.Wallet = void 0;
16
+ const messenger_1 = require("@metamask/messenger");
17
+ const utils_1 = require("@metamask/utils");
18
+ const initialization_1 = require("./initialization/index.cjs");
19
+ class Wallet {
20
+ constructor(options) {
21
+ // TODO: Expand default types when passing additionalConfigurations.
22
+ _Wallet_messenger.set(this, void 0);
23
+ _Wallet_instances.set(this, void 0);
24
+ _Wallet_controllerMetadata.set(this, void 0);
25
+ _Wallet_destroyed.set(this, false);
26
+ __classPrivateFieldSet(this, _Wallet_messenger, new messenger_1.Messenger({
27
+ namespace: 'Wallet',
28
+ }), "f");
29
+ __classPrivateFieldSet(this, _Wallet_instances, (0, initialization_1.initialize)({
30
+ options,
31
+ messenger: __classPrivateFieldGet(this, _Wallet_messenger, "f"),
32
+ }), "f");
33
+ __classPrivateFieldSet(this, _Wallet_controllerMetadata, Object.fromEntries(Object.entries(__classPrivateFieldGet(this, _Wallet_instances, "f"))
34
+ .filter(([_, instance]) => (0, utils_1.hasProperty)(instance, 'metadata'))
35
+ .map(([name, instance]) => [name, instance.metadata])), "f");
36
+ }
37
+ get messenger() {
38
+ return __classPrivateFieldGet(this, _Wallet_messenger, "f");
39
+ }
40
+ get state() {
41
+ return Object.entries(__classPrivateFieldGet(this, _Wallet_instances, "f")).reduce((totalState, [name, instance]) => {
42
+ totalState[name] = instance.state ?? null;
43
+ return totalState;
44
+ }, {});
45
+ }
46
+ get controllerMetadata() {
47
+ return __classPrivateFieldGet(this, _Wallet_controllerMetadata, "f");
48
+ }
49
+ /**
50
+ * Get an instantiated controller or service.
51
+ *
52
+ * @param name - The name.
53
+ * @returns - The instance.
54
+ * @deprecated - Please use the messenger instead of direct access.
55
+ */
56
+ getInstance(name) {
57
+ return __classPrivateFieldGet(this, _Wallet_instances, "f")[name];
58
+ }
59
+ async destroy() {
60
+ if (__classPrivateFieldGet(this, _Wallet_destroyed, "f")) {
61
+ return;
62
+ }
63
+ __classPrivateFieldSet(this, _Wallet_destroyed, true, "f");
64
+ await Promise.allSettled(Object.values(__classPrivateFieldGet(this, _Wallet_instances, "f")).map(async (instance) => {
65
+ // @ts-expect-error Accessing protected property.
66
+ if (typeof instance.destroy === 'function') {
67
+ // @ts-expect-error Accessing protected property.
68
+ // eslint-disable-next-line @typescript-eslint/await-thenable
69
+ return await instance.destroy();
70
+ }
71
+ /* istanbul ignore next */
72
+ return undefined;
73
+ }));
74
+ this.messenger.publish('Wallet:destroyed');
75
+ }
76
+ }
77
+ exports.Wallet = Wallet;
78
+ _Wallet_messenger = new WeakMap(), _Wallet_instances = new WeakMap(), _Wallet_controllerMetadata = new WeakMap(), _Wallet_destroyed = new WeakMap();
79
+ //# sourceMappingURL=Wallet.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Wallet.cjs","sourceRoot":"","sources":["../src/Wallet.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,mDAAgD;AAChD,2CAA8C;AAS9C,+DAA8C;AAG9C,MAAa,MAAM;IAYjB,YAAY,OAAsB;QAXlC,oEAAoE;QAC3D,oCAAyD;QAEzD,oCAA6B;QAE7B,6CAEP;QAEF,4BAAa,KAAK,EAAC;QAGjB,uBAAA,IAAI,qBAAc,IAAI,qBAAS,CAAC;YAC9B,SAAS,EAAE,QAAQ;SACpB,CAAC,MAAA,CAAC;QAEH,uBAAA,IAAI,qBAAc,IAAA,2BAAU,EAAC;YAC3B,OAAO;YACP,SAAS,EAAE,uBAAA,IAAI,yBAAW;SAC3B,CAAC,MAAA,CAAC;QAEH,uBAAA,IAAI,8BAAuB,MAAM,CAAC,WAAW,CAC3C,MAAM,CAAC,OAAO,CAAC,uBAAA,IAAI,yBAAW,CAAC;aAC5B,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,IAAA,mBAAW,EAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;aAC5D,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CACxD,MAAA,CAAC;IACJ,CAAC;IAED,IAAI,SAAS;QACX,OAAO,uBAAA,IAAI,yBAAW,CAAC;IACzB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,MAAM,CAAC,OAAO,CAAC,uBAAA,IAAI,yBAAW,CAAC,CAAC,MAAM,CAC3C,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE;YAC/B,UAAU,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC;YAC1C,OAAO,UAAU,CAAC;QACpB,CAAC,EACD,EAAE,CACa,CAAC;IACpB,CAAC;IAED,IAAI,kBAAkB;QAGpB,OAAO,uBAAA,IAAI,kCAAoB,CAAC;IAClC,CAAC;IAED;;;;;;OAMG;IACH,WAAW,CAAC,IAA4B;QACtC,OAAO,uBAAA,IAAI,yBAAW,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,uBAAA,IAAI,yBAAW,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,uBAAA,IAAI,qBAAc,IAAI,MAAA,CAAC;QAEvB,MAAM,OAAO,CAAC,UAAU,CACtB,MAAM,CAAC,MAAM,CAAC,uBAAA,IAAI,yBAAW,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YACpD,iDAAiD;YACjD,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC3C,iDAAiD;gBACjD,6DAA6D;gBAC7D,OAAO,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;YAClC,CAAC;YACD,0BAA0B;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC,CACH,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC7C,CAAC;CACF;AAlFD,wBAkFC","sourcesContent":["import type { StateMetadataConstraint } from '@metamask/base-controller';\nimport { Messenger } from '@metamask/messenger';\nimport { hasProperty } from '@metamask/utils';\n\nimport type {\n DefaultActions,\n DefaultEvents,\n DefaultInstances,\n DefaultState,\n RootMessenger,\n} from './initialization';\nimport { initialize } from './initialization';\nimport { WalletOptions } from './types';\n\nexport class Wallet {\n // TODO: Expand default types when passing additionalConfigurations.\n readonly #messenger: RootMessenger<DefaultActions, DefaultEvents>;\n\n readonly #instances: DefaultInstances;\n\n readonly #controllerMetadata: Readonly<\n Record<string, Readonly<StateMetadataConstraint>>\n >;\n\n #destroyed = false;\n\n constructor(options: WalletOptions) {\n this.#messenger = new Messenger({\n namespace: 'Wallet',\n });\n\n this.#instances = initialize({\n options,\n messenger: this.#messenger,\n });\n\n this.#controllerMetadata = Object.fromEntries(\n Object.entries(this.#instances)\n .filter(([_, instance]) => hasProperty(instance, 'metadata'))\n .map(([name, instance]) => [name, instance.metadata]),\n );\n }\n\n get messenger(): Readonly<RootMessenger<DefaultActions, DefaultEvents>> {\n return this.#messenger;\n }\n\n get state(): DefaultState {\n return Object.entries(this.#instances).reduce<Record<string, unknown>>(\n (totalState, [name, instance]) => {\n totalState[name] = instance.state ?? null;\n return totalState;\n },\n {},\n ) as DefaultState;\n }\n\n get controllerMetadata(): Readonly<\n Record<string, Readonly<StateMetadataConstraint>>\n > {\n return this.#controllerMetadata;\n }\n\n /**\n * Get an instantiated controller or service.\n * \n * @param name - The name.\n * @returns - The instance.\n * @deprecated - Please use the messenger instead of direct access.\n */\n getInstance(name: keyof DefaultInstances) {\n return this.#instances[name];\n }\n\n async destroy(): Promise<void> {\n if (this.#destroyed) {\n return;\n }\n\n this.#destroyed = true;\n\n await Promise.allSettled(\n Object.values(this.#instances).map(async (instance) => {\n // @ts-expect-error Accessing protected property.\n if (typeof instance.destroy === 'function') {\n // @ts-expect-error Accessing protected property.\n // eslint-disable-next-line @typescript-eslint/await-thenable\n return await instance.destroy();\n }\n /* istanbul ignore next */\n return undefined;\n }),\n );\n\n this.messenger.publish('Wallet:destroyed');\n }\n}\n"]}
@@ -0,0 +1,20 @@
1
+ import type { StateMetadataConstraint } from "@metamask/base-controller";
2
+ import type { DefaultActions, DefaultEvents, DefaultInstances, DefaultState, RootMessenger } from "./initialization/index.cjs";
3
+ import { WalletOptions } from "./types.cjs";
4
+ export declare class Wallet {
5
+ #private;
6
+ constructor(options: WalletOptions);
7
+ get messenger(): Readonly<RootMessenger<DefaultActions, DefaultEvents>>;
8
+ get state(): DefaultState;
9
+ get controllerMetadata(): Readonly<Record<string, Readonly<StateMetadataConstraint>>>;
10
+ /**
11
+ * Get an instantiated controller or service.
12
+ *
13
+ * @param name - The name.
14
+ * @returns - The instance.
15
+ * @deprecated - Please use the messenger instead of direct access.
16
+ */
17
+ getInstance(name: keyof DefaultInstances): import("@metamask/keyring-controller").KeyringController<import("@metamask/browser-passworder").EncryptionKey | CryptoKey, import("@metamask/browser-passworder").KeyDerivationOptions, import("@metamask/keyring-controller").DefaultEncryptionResult<import("@metamask/browser-passworder").KeyDerivationOptions>>;
18
+ destroy(): Promise<void>;
19
+ }
20
+ //# sourceMappingURL=Wallet.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Wallet.d.cts","sourceRoot":"","sources":["../src/Wallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,kCAAkC;AAIzE,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACd,mCAAyB;AAE1B,OAAO,EAAE,aAAa,EAAE,oBAAgB;AAExC,qBAAa,MAAM;;gBAYL,OAAO,EAAE,aAAa;IAiBlC,IAAI,SAAS,IAAI,QAAQ,CAAC,aAAa,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC,CAEtE;IAED,IAAI,KAAK,IAAI,YAAY,CAQxB;IAED,IAAI,kBAAkB,IAAI,QAAQ,CAChC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CAClD,CAEA;IAED;;;;;;OAMG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,gBAAgB;IAIlC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAsB/B"}
@@ -0,0 +1,20 @@
1
+ import type { StateMetadataConstraint } from "@metamask/base-controller";
2
+ import type { DefaultActions, DefaultEvents, DefaultInstances, DefaultState, RootMessenger } from "./initialization/index.mjs";
3
+ import { WalletOptions } from "./types.mjs";
4
+ export declare class Wallet {
5
+ #private;
6
+ constructor(options: WalletOptions);
7
+ get messenger(): Readonly<RootMessenger<DefaultActions, DefaultEvents>>;
8
+ get state(): DefaultState;
9
+ get controllerMetadata(): Readonly<Record<string, Readonly<StateMetadataConstraint>>>;
10
+ /**
11
+ * Get an instantiated controller or service.
12
+ *
13
+ * @param name - The name.
14
+ * @returns - The instance.
15
+ * @deprecated - Please use the messenger instead of direct access.
16
+ */
17
+ getInstance(name: keyof DefaultInstances): import("@metamask/keyring-controller").KeyringController<import("@metamask/browser-passworder").EncryptionKey | CryptoKey, import("@metamask/browser-passworder").KeyDerivationOptions, import("@metamask/keyring-controller").DefaultEncryptionResult<import("@metamask/browser-passworder").KeyDerivationOptions>>;
18
+ destroy(): Promise<void>;
19
+ }
20
+ //# sourceMappingURL=Wallet.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Wallet.d.mts","sourceRoot":"","sources":["../src/Wallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,kCAAkC;AAIzE,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACd,mCAAyB;AAE1B,OAAO,EAAE,aAAa,EAAE,oBAAgB;AAExC,qBAAa,MAAM;;gBAYL,OAAO,EAAE,aAAa;IAiBlC,IAAI,SAAS,IAAI,QAAQ,CAAC,aAAa,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC,CAEtE;IAED,IAAI,KAAK,IAAI,YAAY,CAQxB;IAED,IAAI,kBAAkB,IAAI,QAAQ,CAChC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CAClD,CAEA;IAED;;;;;;OAMG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,gBAAgB;IAIlC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAsB/B"}
@@ -0,0 +1,75 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ 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");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ 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");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _Wallet_messenger, _Wallet_instances, _Wallet_controllerMetadata, _Wallet_destroyed;
13
+ import { Messenger } from "@metamask/messenger";
14
+ import { hasProperty } from "@metamask/utils";
15
+ import { initialize } from "./initialization/index.mjs";
16
+ export class Wallet {
17
+ constructor(options) {
18
+ // TODO: Expand default types when passing additionalConfigurations.
19
+ _Wallet_messenger.set(this, void 0);
20
+ _Wallet_instances.set(this, void 0);
21
+ _Wallet_controllerMetadata.set(this, void 0);
22
+ _Wallet_destroyed.set(this, false);
23
+ __classPrivateFieldSet(this, _Wallet_messenger, new Messenger({
24
+ namespace: 'Wallet',
25
+ }), "f");
26
+ __classPrivateFieldSet(this, _Wallet_instances, initialize({
27
+ options,
28
+ messenger: __classPrivateFieldGet(this, _Wallet_messenger, "f"),
29
+ }), "f");
30
+ __classPrivateFieldSet(this, _Wallet_controllerMetadata, Object.fromEntries(Object.entries(__classPrivateFieldGet(this, _Wallet_instances, "f"))
31
+ .filter(([_, instance]) => hasProperty(instance, 'metadata'))
32
+ .map(([name, instance]) => [name, instance.metadata])), "f");
33
+ }
34
+ get messenger() {
35
+ return __classPrivateFieldGet(this, _Wallet_messenger, "f");
36
+ }
37
+ get state() {
38
+ return Object.entries(__classPrivateFieldGet(this, _Wallet_instances, "f")).reduce((totalState, [name, instance]) => {
39
+ totalState[name] = instance.state ?? null;
40
+ return totalState;
41
+ }, {});
42
+ }
43
+ get controllerMetadata() {
44
+ return __classPrivateFieldGet(this, _Wallet_controllerMetadata, "f");
45
+ }
46
+ /**
47
+ * Get an instantiated controller or service.
48
+ *
49
+ * @param name - The name.
50
+ * @returns - The instance.
51
+ * @deprecated - Please use the messenger instead of direct access.
52
+ */
53
+ getInstance(name) {
54
+ return __classPrivateFieldGet(this, _Wallet_instances, "f")[name];
55
+ }
56
+ async destroy() {
57
+ if (__classPrivateFieldGet(this, _Wallet_destroyed, "f")) {
58
+ return;
59
+ }
60
+ __classPrivateFieldSet(this, _Wallet_destroyed, true, "f");
61
+ await Promise.allSettled(Object.values(__classPrivateFieldGet(this, _Wallet_instances, "f")).map(async (instance) => {
62
+ // @ts-expect-error Accessing protected property.
63
+ if (typeof instance.destroy === 'function') {
64
+ // @ts-expect-error Accessing protected property.
65
+ // eslint-disable-next-line @typescript-eslint/await-thenable
66
+ return await instance.destroy();
67
+ }
68
+ /* istanbul ignore next */
69
+ return undefined;
70
+ }));
71
+ this.messenger.publish('Wallet:destroyed');
72
+ }
73
+ }
74
+ _Wallet_messenger = new WeakMap(), _Wallet_instances = new WeakMap(), _Wallet_controllerMetadata = new WeakMap(), _Wallet_destroyed = new WeakMap();
75
+ //# sourceMappingURL=Wallet.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Wallet.mjs","sourceRoot":"","sources":["../src/Wallet.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EAAE,SAAS,EAAE,4BAA4B;AAChD,OAAO,EAAE,WAAW,EAAE,wBAAwB;AAS9C,OAAO,EAAE,UAAU,EAAE,mCAAyB;AAG9C,MAAM,OAAO,MAAM;IAYjB,YAAY,OAAsB;QAXlC,oEAAoE;QAC3D,oCAAyD;QAEzD,oCAA6B;QAE7B,6CAEP;QAEF,4BAAa,KAAK,EAAC;QAGjB,uBAAA,IAAI,qBAAc,IAAI,SAAS,CAAC;YAC9B,SAAS,EAAE,QAAQ;SACpB,CAAC,MAAA,CAAC;QAEH,uBAAA,IAAI,qBAAc,UAAU,CAAC;YAC3B,OAAO;YACP,SAAS,EAAE,uBAAA,IAAI,yBAAW;SAC3B,CAAC,MAAA,CAAC;QAEH,uBAAA,IAAI,8BAAuB,MAAM,CAAC,WAAW,CAC3C,MAAM,CAAC,OAAO,CAAC,uBAAA,IAAI,yBAAW,CAAC;aAC5B,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;aAC5D,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CACxD,MAAA,CAAC;IACJ,CAAC;IAED,IAAI,SAAS;QACX,OAAO,uBAAA,IAAI,yBAAW,CAAC;IACzB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,MAAM,CAAC,OAAO,CAAC,uBAAA,IAAI,yBAAW,CAAC,CAAC,MAAM,CAC3C,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE;YAC/B,UAAU,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC;YAC1C,OAAO,UAAU,CAAC;QACpB,CAAC,EACD,EAAE,CACa,CAAC;IACpB,CAAC;IAED,IAAI,kBAAkB;QAGpB,OAAO,uBAAA,IAAI,kCAAoB,CAAC;IAClC,CAAC;IAED;;;;;;OAMG;IACH,WAAW,CAAC,IAA4B;QACtC,OAAO,uBAAA,IAAI,yBAAW,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,uBAAA,IAAI,yBAAW,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,uBAAA,IAAI,qBAAc,IAAI,MAAA,CAAC;QAEvB,MAAM,OAAO,CAAC,UAAU,CACtB,MAAM,CAAC,MAAM,CAAC,uBAAA,IAAI,yBAAW,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YACpD,iDAAiD;YACjD,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC3C,iDAAiD;gBACjD,6DAA6D;gBAC7D,OAAO,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;YAClC,CAAC;YACD,0BAA0B;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC,CACH,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC7C,CAAC;CACF","sourcesContent":["import type { StateMetadataConstraint } from '@metamask/base-controller';\nimport { Messenger } from '@metamask/messenger';\nimport { hasProperty } from '@metamask/utils';\n\nimport type {\n DefaultActions,\n DefaultEvents,\n DefaultInstances,\n DefaultState,\n RootMessenger,\n} from './initialization';\nimport { initialize } from './initialization';\nimport { WalletOptions } from './types';\n\nexport class Wallet {\n // TODO: Expand default types when passing additionalConfigurations.\n readonly #messenger: RootMessenger<DefaultActions, DefaultEvents>;\n\n readonly #instances: DefaultInstances;\n\n readonly #controllerMetadata: Readonly<\n Record<string, Readonly<StateMetadataConstraint>>\n >;\n\n #destroyed = false;\n\n constructor(options: WalletOptions) {\n this.#messenger = new Messenger({\n namespace: 'Wallet',\n });\n\n this.#instances = initialize({\n options,\n messenger: this.#messenger,\n });\n\n this.#controllerMetadata = Object.fromEntries(\n Object.entries(this.#instances)\n .filter(([_, instance]) => hasProperty(instance, 'metadata'))\n .map(([name, instance]) => [name, instance.metadata]),\n );\n }\n\n get messenger(): Readonly<RootMessenger<DefaultActions, DefaultEvents>> {\n return this.#messenger;\n }\n\n get state(): DefaultState {\n return Object.entries(this.#instances).reduce<Record<string, unknown>>(\n (totalState, [name, instance]) => {\n totalState[name] = instance.state ?? null;\n return totalState;\n },\n {},\n ) as DefaultState;\n }\n\n get controllerMetadata(): Readonly<\n Record<string, Readonly<StateMetadataConstraint>>\n > {\n return this.#controllerMetadata;\n }\n\n /**\n * Get an instantiated controller or service.\n * \n * @param name - The name.\n * @returns - The instance.\n * @deprecated - Please use the messenger instead of direct access.\n */\n getInstance(name: keyof DefaultInstances) {\n return this.#instances[name];\n }\n\n async destroy(): Promise<void> {\n if (this.#destroyed) {\n return;\n }\n\n this.#destroyed = true;\n\n await Promise.allSettled(\n Object.values(this.#instances).map(async (instance) => {\n // @ts-expect-error Accessing protected property.\n if (typeof instance.destroy === 'function') {\n // @ts-expect-error Accessing protected property.\n // eslint-disable-next-line @typescript-eslint/await-thenable\n return await instance.destroy();\n }\n /* istanbul ignore next */\n return undefined;\n }),\n );\n\n this.messenger.publish('Wallet:destroyed');\n }\n}\n"]}
package/dist/index.cjs CHANGED
@@ -1,13 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- /**
4
- * Example function that returns a greeting for the given name.
5
- *
6
- * @param name - The name to greet.
7
- * @returns The greeting.
8
- */
9
- function greeter(name) {
10
- return `Hello, ${name}!`;
11
- }
12
- exports.default = greeter;
3
+ exports.Wallet = void 0;
4
+ var Wallet_1 = require("./Wallet.cjs");
5
+ Object.defineProperty(exports, "Wallet", { enumerable: true, get: function () { return Wallet_1.Wallet; } });
13
6
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA;;;;;GAKG;AACH,SAAwB,OAAO,CAAC,IAAY;IAC1C,OAAO,UAAU,IAAI,GAAG,CAAC;AAC3B,CAAC;AAFD,0BAEC","sourcesContent":["/**\n * Example function that returns a greeting for the given name.\n *\n * @param name - The name to greet.\n * @returns The greeting.\n */\nexport default function greeter(name: string): string {\n return `Hello, ${name}!`;\n}\n"]}
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uCAAkC;AAAzB,gGAAA,MAAM,OAAA","sourcesContent":["export { Wallet } from './Wallet';\nexport type { WalletOptions } from './types';\nexport type {\n DefaultActions,\n DefaultEvents,\n RootMessenger,\n WalletDestroyedEvent,\n} from './initialization';\n"]}
package/dist/index.d.cts CHANGED
@@ -1,8 +1,4 @@
1
- /**
2
- * Example function that returns a greeting for the given name.
3
- *
4
- * @param name - The name to greet.
5
- * @returns The greeting.
6
- */
7
- export default function greeter(name: string): string;
1
+ export { Wallet } from "./Wallet.cjs";
2
+ export type { WalletOptions } from "./types.cjs";
3
+ export type { DefaultActions, DefaultEvents, RootMessenger, WalletDestroyedEvent, } from "./initialization/index.cjs";
8
4
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD"}
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,qBAAiB;AAClC,YAAY,EAAE,aAAa,EAAE,oBAAgB;AAC7C,YAAY,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACb,oBAAoB,GACrB,mCAAyB"}
package/dist/index.d.mts CHANGED
@@ -1,8 +1,4 @@
1
- /**
2
- * Example function that returns a greeting for the given name.
3
- *
4
- * @param name - The name to greet.
5
- * @returns The greeting.
6
- */
7
- export default function greeter(name: string): string;
1
+ export { Wallet } from "./Wallet.mjs";
2
+ export type { WalletOptions } from "./types.mjs";
3
+ export type { DefaultActions, DefaultEvents, RootMessenger, WalletDestroyedEvent, } from "./initialization/index.mjs";
8
4
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,qBAAiB;AAClC,YAAY,EAAE,aAAa,EAAE,oBAAgB;AAC7C,YAAY,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACb,oBAAoB,GACrB,mCAAyB"}
package/dist/index.mjs CHANGED
@@ -1,10 +1,2 @@
1
- /**
2
- * Example function that returns a greeting for the given name.
3
- *
4
- * @param name - The name to greet.
5
- * @returns The greeting.
6
- */
7
- export default function greeter(name) {
8
- return `Hello, ${name}!`;
9
- }
1
+ export { Wallet } from "./Wallet.mjs";
10
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,IAAY;IAC1C,OAAO,UAAU,IAAI,GAAG,CAAC;AAC3B,CAAC","sourcesContent":["/**\n * Example function that returns a greeting for the given name.\n *\n * @param name - The name to greet.\n * @returns The greeting.\n */\nexport default function greeter(name: string): string {\n return `Hello, ${name}!`;\n}\n"]}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,qBAAiB","sourcesContent":["export { Wallet } from './Wallet';\nexport type { WalletOptions } from './types';\nexport type {\n DefaultActions,\n DefaultEvents,\n RootMessenger,\n WalletDestroyedEvent,\n} from './initialization';\n"]}
@@ -0,0 +1,29 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.defaultConfigurations = void 0;
27
+ const defaultConfigurations = __importStar(require("./instances/index.cjs"));
28
+ exports.defaultConfigurations = defaultConfigurations;
29
+ //# sourceMappingURL=defaults.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.cjs","sourceRoot":"","sources":["../../src/initialization/defaults.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,6EAAqD;AAG5C,sDAAqB","sourcesContent":["import type {\n ActionConstraint,\n EventConstraint,\n Messenger,\n MessengerActions,\n MessengerEvents,\n} from '@metamask/messenger';\n\nimport * as defaultConfigurations from './instances';\nimport type { InitializationConfiguration, InstanceState } from './types';\n\nexport { defaultConfigurations };\n\ntype ExtractInstance<Config> =\n Config extends InitializationConfiguration<infer Instance, unknown>\n ? Instance\n : never;\n\ntype ExtractInstanceMessenger<Config> =\n Config extends InitializationConfiguration<unknown, infer InferredMessenger>\n ? InferredMessenger\n : never;\n\ntype ExtractName<Config> =\n ExtractInstance<Config> extends { name: infer Name extends string }\n ? Name\n : never;\n\ntype Configs = typeof defaultConfigurations;\n\ntype AllMessengers = ExtractInstanceMessenger<Configs[keyof Configs]>;\n\nexport type DefaultInstances = {\n [Key in keyof Configs as ExtractName<Configs[Key]>]: ExtractInstance<\n Configs[Key]\n >;\n};\n\nexport type DefaultActions = MessengerActions<AllMessengers>;\n\nexport type WalletDestroyedEvent = {\n type: 'Wallet:destroyed';\n payload: [];\n};\n\nexport type DefaultEvents =\n | MessengerEvents<AllMessengers>\n | WalletDestroyedEvent;\n\nexport type RootMessenger<\n AllowedActions extends ActionConstraint = ActionConstraint,\n AllowedEvents extends EventConstraint = EventConstraint,\n> = Messenger<'Wallet', AllowedActions, AllowedEvents>;\n\nexport type DefaultState = {\n [Key in keyof DefaultInstances]: InstanceState<DefaultInstances[Key]>;\n};\n"]}
@@ -0,0 +1,25 @@
1
+ import type { ActionConstraint, EventConstraint, Messenger, MessengerActions, MessengerEvents } from "@metamask/messenger";
2
+ import * as defaultConfigurations from "./instances/index.cjs";
3
+ import type { InitializationConfiguration, InstanceState } from "./types.cjs";
4
+ export { defaultConfigurations };
5
+ type ExtractInstance<Config> = Config extends InitializationConfiguration<infer Instance, unknown> ? Instance : never;
6
+ type ExtractInstanceMessenger<Config> = Config extends InitializationConfiguration<unknown, infer InferredMessenger> ? InferredMessenger : never;
7
+ type ExtractName<Config> = ExtractInstance<Config> extends {
8
+ name: infer Name extends string;
9
+ } ? Name : never;
10
+ type Configs = typeof defaultConfigurations;
11
+ type AllMessengers = ExtractInstanceMessenger<Configs[keyof Configs]>;
12
+ export type DefaultInstances = {
13
+ [Key in keyof Configs as ExtractName<Configs[Key]>]: ExtractInstance<Configs[Key]>;
14
+ };
15
+ export type DefaultActions = MessengerActions<AllMessengers>;
16
+ export type WalletDestroyedEvent = {
17
+ type: 'Wallet:destroyed';
18
+ payload: [];
19
+ };
20
+ export type DefaultEvents = MessengerEvents<AllMessengers> | WalletDestroyedEvent;
21
+ export type RootMessenger<AllowedActions extends ActionConstraint = ActionConstraint, AllowedEvents extends EventConstraint = EventConstraint> = Messenger<'Wallet', AllowedActions, AllowedEvents>;
22
+ export type DefaultState = {
23
+ [Key in keyof DefaultInstances]: InstanceState<DefaultInstances[Key]>;
24
+ };
25
+ //# sourceMappingURL=defaults.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.cts","sourceRoot":"","sources":["../../src/initialization/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,gBAAgB,EAChB,eAAe,EAChB,4BAA4B;AAE7B,OAAO,KAAK,qBAAqB,8BAAoB;AACrD,OAAO,KAAK,EAAE,2BAA2B,EAAE,aAAa,EAAE,oBAAgB;AAE1E,OAAO,EAAE,qBAAqB,EAAE,CAAC;AAEjC,KAAK,eAAe,CAAC,MAAM,IACzB,MAAM,SAAS,2BAA2B,CAAC,MAAM,QAAQ,EAAE,OAAO,CAAC,GAC/D,QAAQ,GACR,KAAK,CAAC;AAEZ,KAAK,wBAAwB,CAAC,MAAM,IAClC,MAAM,SAAS,2BAA2B,CAAC,OAAO,EAAE,MAAM,iBAAiB,CAAC,GACxE,iBAAiB,GACjB,KAAK,CAAC;AAEZ,KAAK,WAAW,CAAC,MAAM,IACrB,eAAe,CAAC,MAAM,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,IAAI,SAAS,MAAM,CAAA;CAAE,GAC/D,IAAI,GACJ,KAAK,CAAC;AAEZ,KAAK,OAAO,GAAG,OAAO,qBAAqB,CAAC;AAE5C,KAAK,aAAa,GAAG,wBAAwB,CAAC,OAAO,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC;AAEtE,MAAM,MAAM,gBAAgB,GAAG;KAC5B,GAAG,IAAI,MAAM,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,eAAe,CAClE,OAAO,CAAC,GAAG,CAAC,CACb;CACF,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;AAE7D,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE,EAAE,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,aAAa,GACrB,eAAe,CAAC,aAAa,CAAC,GAC9B,oBAAoB,CAAC;AAEzB,MAAM,MAAM,aAAa,CACvB,cAAc,SAAS,gBAAgB,GAAG,gBAAgB,EAC1D,aAAa,SAAS,eAAe,GAAG,eAAe,IACrD,SAAS,CAAC,QAAQ,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;AAEvD,MAAM,MAAM,YAAY,GAAG;KACxB,GAAG,IAAI,MAAM,gBAAgB,GAAG,aAAa,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;CACtE,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { ActionConstraint, EventConstraint, Messenger, MessengerActions, MessengerEvents } from "@metamask/messenger";
2
+ import * as defaultConfigurations from "./instances/index.mjs";
3
+ import type { InitializationConfiguration, InstanceState } from "./types.mjs";
4
+ export { defaultConfigurations };
5
+ type ExtractInstance<Config> = Config extends InitializationConfiguration<infer Instance, unknown> ? Instance : never;
6
+ type ExtractInstanceMessenger<Config> = Config extends InitializationConfiguration<unknown, infer InferredMessenger> ? InferredMessenger : never;
7
+ type ExtractName<Config> = ExtractInstance<Config> extends {
8
+ name: infer Name extends string;
9
+ } ? Name : never;
10
+ type Configs = typeof defaultConfigurations;
11
+ type AllMessengers = ExtractInstanceMessenger<Configs[keyof Configs]>;
12
+ export type DefaultInstances = {
13
+ [Key in keyof Configs as ExtractName<Configs[Key]>]: ExtractInstance<Configs[Key]>;
14
+ };
15
+ export type DefaultActions = MessengerActions<AllMessengers>;
16
+ export type WalletDestroyedEvent = {
17
+ type: 'Wallet:destroyed';
18
+ payload: [];
19
+ };
20
+ export type DefaultEvents = MessengerEvents<AllMessengers> | WalletDestroyedEvent;
21
+ export type RootMessenger<AllowedActions extends ActionConstraint = ActionConstraint, AllowedEvents extends EventConstraint = EventConstraint> = Messenger<'Wallet', AllowedActions, AllowedEvents>;
22
+ export type DefaultState = {
23
+ [Key in keyof DefaultInstances]: InstanceState<DefaultInstances[Key]>;
24
+ };
25
+ //# sourceMappingURL=defaults.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.mts","sourceRoot":"","sources":["../../src/initialization/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,gBAAgB,EAChB,eAAe,EAChB,4BAA4B;AAE7B,OAAO,KAAK,qBAAqB,8BAAoB;AACrD,OAAO,KAAK,EAAE,2BAA2B,EAAE,aAAa,EAAE,oBAAgB;AAE1E,OAAO,EAAE,qBAAqB,EAAE,CAAC;AAEjC,KAAK,eAAe,CAAC,MAAM,IACzB,MAAM,SAAS,2BAA2B,CAAC,MAAM,QAAQ,EAAE,OAAO,CAAC,GAC/D,QAAQ,GACR,KAAK,CAAC;AAEZ,KAAK,wBAAwB,CAAC,MAAM,IAClC,MAAM,SAAS,2BAA2B,CAAC,OAAO,EAAE,MAAM,iBAAiB,CAAC,GACxE,iBAAiB,GACjB,KAAK,CAAC;AAEZ,KAAK,WAAW,CAAC,MAAM,IACrB,eAAe,CAAC,MAAM,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,IAAI,SAAS,MAAM,CAAA;CAAE,GAC/D,IAAI,GACJ,KAAK,CAAC;AAEZ,KAAK,OAAO,GAAG,OAAO,qBAAqB,CAAC;AAE5C,KAAK,aAAa,GAAG,wBAAwB,CAAC,OAAO,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC;AAEtE,MAAM,MAAM,gBAAgB,GAAG;KAC5B,GAAG,IAAI,MAAM,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,eAAe,CAClE,OAAO,CAAC,GAAG,CAAC,CACb;CACF,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;AAE7D,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE,EAAE,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,aAAa,GACrB,eAAe,CAAC,aAAa,CAAC,GAC9B,oBAAoB,CAAC;AAEzB,MAAM,MAAM,aAAa,CACvB,cAAc,SAAS,gBAAgB,GAAG,gBAAgB,EAC1D,aAAa,SAAS,eAAe,GAAG,eAAe,IACrD,SAAS,CAAC,QAAQ,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;AAEvD,MAAM,MAAM,YAAY,GAAG;KACxB,GAAG,IAAI,MAAM,gBAAgB,GAAG,aAAa,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;CACtE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import * as defaultConfigurations from "./instances/index.mjs";
2
+ export { defaultConfigurations };
3
+ //# sourceMappingURL=defaults.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.mjs","sourceRoot":"","sources":["../../src/initialization/defaults.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,qBAAqB,8BAAoB;AAGrD,OAAO,EAAE,qBAAqB,EAAE,CAAC","sourcesContent":["import type {\n ActionConstraint,\n EventConstraint,\n Messenger,\n MessengerActions,\n MessengerEvents,\n} from '@metamask/messenger';\n\nimport * as defaultConfigurations from './instances';\nimport type { InitializationConfiguration, InstanceState } from './types';\n\nexport { defaultConfigurations };\n\ntype ExtractInstance<Config> =\n Config extends InitializationConfiguration<infer Instance, unknown>\n ? Instance\n : never;\n\ntype ExtractInstanceMessenger<Config> =\n Config extends InitializationConfiguration<unknown, infer InferredMessenger>\n ? InferredMessenger\n : never;\n\ntype ExtractName<Config> =\n ExtractInstance<Config> extends { name: infer Name extends string }\n ? Name\n : never;\n\ntype Configs = typeof defaultConfigurations;\n\ntype AllMessengers = ExtractInstanceMessenger<Configs[keyof Configs]>;\n\nexport type DefaultInstances = {\n [Key in keyof Configs as ExtractName<Configs[Key]>]: ExtractInstance<\n Configs[Key]\n >;\n};\n\nexport type DefaultActions = MessengerActions<AllMessengers>;\n\nexport type WalletDestroyedEvent = {\n type: 'Wallet:destroyed';\n payload: [];\n};\n\nexport type DefaultEvents =\n | MessengerEvents<AllMessengers>\n | WalletDestroyedEvent;\n\nexport type RootMessenger<\n AllowedActions extends ActionConstraint = ActionConstraint,\n AllowedEvents extends EventConstraint = EventConstraint,\n> = Messenger<'Wallet', AllowedActions, AllowedEvents>;\n\nexport type DefaultState = {\n [Key in keyof DefaultInstances]: InstanceState<DefaultInstances[Key]>;\n};\n"]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initialize = void 0;
4
+ var initialization_1 = require("./initialization.cjs");
5
+ Object.defineProperty(exports, "initialize", { enumerable: true, get: function () { return initialization_1.initialize; } });
6
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../src/initialization/index.ts"],"names":[],"mappings":";;;AAQA,uDAA8C;AAArC,4GAAA,UAAU,OAAA","sourcesContent":["export type {\n DefaultActions,\n DefaultEvents,\n DefaultInstances,\n DefaultState,\n RootMessenger,\n WalletDestroyedEvent,\n} from './defaults';\nexport { initialize } from './initialization';\nexport type {\n InstanceState,\n InitFunctionArguments,\n InitializationConfiguration,\n} from './types';\n"]}
@@ -0,0 +1,4 @@
1
+ export type { DefaultActions, DefaultEvents, DefaultInstances, DefaultState, RootMessenger, WalletDestroyedEvent, } from "./defaults.cjs";
2
+ export { initialize } from "./initialization.cjs";
3
+ export type { InstanceState, InitFunctionArguments, InitializationConfiguration, } from "./types.cjs";
4
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../src/initialization/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,oBAAoB,GACrB,uBAAmB;AACpB,OAAO,EAAE,UAAU,EAAE,6BAAyB;AAC9C,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,2BAA2B,GAC5B,oBAAgB"}
@@ -0,0 +1,4 @@
1
+ export type { DefaultActions, DefaultEvents, DefaultInstances, DefaultState, RootMessenger, WalletDestroyedEvent, } from "./defaults.mjs";
2
+ export { initialize } from "./initialization.mjs";
3
+ export type { InstanceState, InitFunctionArguments, InitializationConfiguration, } from "./types.mjs";
4
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/initialization/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,oBAAoB,GACrB,uBAAmB;AACpB,OAAO,EAAE,UAAU,EAAE,6BAAyB;AAC9C,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,2BAA2B,GAC5B,oBAAgB"}
@@ -0,0 +1,2 @@
1
+ export { initialize } from "./initialization.mjs";
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/initialization/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,6BAAyB","sourcesContent":["export type {\n DefaultActions,\n DefaultEvents,\n DefaultInstances,\n DefaultState,\n RootMessenger,\n WalletDestroyedEvent,\n} from './defaults';\nexport { initialize } from './initialization';\nexport type {\n InstanceState,\n InitFunctionArguments,\n InitializationConfiguration,\n} from './types';\n"]}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initialize = void 0;
4
+ const defaults_1 = require("./defaults.cjs");
5
+ function initialize({ options, messenger, }) {
6
+ const { state = {}, initializationConfigurations = [] } = options;
7
+ const overriddenConfiguration = initializationConfigurations.map((config) => config.name);
8
+ const configurationEntries = initializationConfigurations.concat(Object.values(defaults_1.defaultConfigurations).filter((config) => !overriddenConfiguration.includes(config.name)));
9
+ const instances = {};
10
+ for (const config of configurationEntries) {
11
+ const { name } = config;
12
+ const instanceState = state[name];
13
+ const instanceMessenger = config.messenger(messenger);
14
+ const instance = config.init({
15
+ state: instanceState,
16
+ messenger: instanceMessenger,
17
+ options: options.instanceOptions?.[name] ?? {},
18
+ });
19
+ instances[name] = instance;
20
+ }
21
+ return instances;
22
+ }
23
+ exports.initialize = initialize;
24
+ //# sourceMappingURL=initialization.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialization.cjs","sourceRoot":"","sources":["../../src/initialization/initialization.ts"],"names":[],"mappings":";;;AAEA,6CAAkE;AAOlE,SAAgB,UAAU,CAAC,EACzB,OAAO,EACP,SAAS,GACM;IACf,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,4BAA4B,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IAElE,MAAM,uBAAuB,GAAG,4BAA4B,CAAC,GAAG,CAC9D,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CACxB,CAAC;IAEF,MAAM,oBAAoB,GAAG,4BAA4B,CAAC,MAAM,CAC9D,MAAM,CAAC,MAAM,CAAC,gCAAqB,CAAC,CAAC,MAAM,CACzC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,uBAAuB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAC3D,CACF,CAAC;IAEF,MAAM,SAAS,GAA4B,EAAE,CAAC;IAE9C,KAAK,MAAM,MAAM,IAAI,oBAAoB,EAAE,CAAC;QAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;QAExB,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QAElC,MAAM,iBAAiB,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAEtD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;YAC3B,KAAK,EAAE,aAAa;YACpB,SAAS,EAAE,iBAAiB;YAC5B,OAAO,EACL,OAAO,CAAC,eAAe,EAAE,CAAC,IAAqC,CAAC,IAAI,EAAE;SACzE,CAAC,CAAC;QAEH,SAAS,CAAC,IAAI,CAAC,GAAG,QAAmC,CAAC;IACxD,CAAC;IAED,OAAO,SAA6B,CAAC;AACvC,CAAC;AApCD,gCAoCC","sourcesContent":["import type { InstanceSpecificOptions, WalletOptions } from '../types';\nimport type { DefaultInstances } from './defaults';\nimport { defaultConfigurations, RootMessenger } from './defaults';\n\nexport type InitializeArgs = {\n options: WalletOptions;\n messenger: RootMessenger;\n};\n\nexport function initialize({\n options,\n messenger,\n}: InitializeArgs): DefaultInstances {\n const { state = {}, initializationConfigurations = [] } = options;\n\n const overriddenConfiguration = initializationConfigurations.map(\n (config) => config.name,\n );\n\n const configurationEntries = initializationConfigurations.concat(\n Object.values(defaultConfigurations).filter(\n (config) => !overriddenConfiguration.includes(config.name),\n ),\n );\n\n const instances: Record<string, unknown> = {};\n\n for (const config of configurationEntries) {\n const { name } = config;\n\n const instanceState = state[name];\n\n const instanceMessenger = config.messenger(messenger);\n\n const instance = config.init({\n state: instanceState,\n messenger: instanceMessenger,\n options:\n options.instanceOptions?.[name as keyof InstanceSpecificOptions] ?? {},\n });\n\n instances[name] = instance as Record<string, unknown>;\n }\n\n return instances as DefaultInstances;\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import type { WalletOptions } from "../types.cjs";
2
+ import type { DefaultInstances } from "./defaults.cjs";
3
+ import { RootMessenger } from "./defaults.cjs";
4
+ export type InitializeArgs = {
5
+ options: WalletOptions;
6
+ messenger: RootMessenger;
7
+ };
8
+ export declare function initialize({ options, messenger, }: InitializeArgs): DefaultInstances;
9
+ //# sourceMappingURL=initialization.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialization.d.cts","sourceRoot":"","sources":["../../src/initialization/initialization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA2B,aAAa,EAAE,qBAAiB;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,uBAAmB;AACnD,OAAO,EAAyB,aAAa,EAAE,uBAAmB;AAElE,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE,aAAa,CAAC;CAC1B,CAAC;AAEF,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,SAAS,GACV,EAAE,cAAc,GAAG,gBAAgB,CAiCnC"}
@@ -0,0 +1,9 @@
1
+ import type { WalletOptions } from "../types.mjs";
2
+ import type { DefaultInstances } from "./defaults.mjs";
3
+ import { RootMessenger } from "./defaults.mjs";
4
+ export type InitializeArgs = {
5
+ options: WalletOptions;
6
+ messenger: RootMessenger;
7
+ };
8
+ export declare function initialize({ options, messenger, }: InitializeArgs): DefaultInstances;
9
+ //# sourceMappingURL=initialization.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialization.d.mts","sourceRoot":"","sources":["../../src/initialization/initialization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA2B,aAAa,EAAE,qBAAiB;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,uBAAmB;AACnD,OAAO,EAAyB,aAAa,EAAE,uBAAmB;AAElE,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE,aAAa,CAAC;CAC1B,CAAC;AAEF,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,SAAS,GACV,EAAE,cAAc,GAAG,gBAAgB,CAiCnC"}
@@ -0,0 +1,20 @@
1
+ import { defaultConfigurations } from "./defaults.mjs";
2
+ export function initialize({ options, messenger, }) {
3
+ const { state = {}, initializationConfigurations = [] } = options;
4
+ const overriddenConfiguration = initializationConfigurations.map((config) => config.name);
5
+ const configurationEntries = initializationConfigurations.concat(Object.values(defaultConfigurations).filter((config) => !overriddenConfiguration.includes(config.name)));
6
+ const instances = {};
7
+ for (const config of configurationEntries) {
8
+ const { name } = config;
9
+ const instanceState = state[name];
10
+ const instanceMessenger = config.messenger(messenger);
11
+ const instance = config.init({
12
+ state: instanceState,
13
+ messenger: instanceMessenger,
14
+ options: options.instanceOptions?.[name] ?? {},
15
+ });
16
+ instances[name] = instance;
17
+ }
18
+ return instances;
19
+ }
20
+ //# sourceMappingURL=initialization.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialization.mjs","sourceRoot":"","sources":["../../src/initialization/initialization.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAiB,uBAAmB;AAOlE,MAAM,UAAU,UAAU,CAAC,EACzB,OAAO,EACP,SAAS,GACM;IACf,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,4BAA4B,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IAElE,MAAM,uBAAuB,GAAG,4BAA4B,CAAC,GAAG,CAC9D,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CACxB,CAAC;IAEF,MAAM,oBAAoB,GAAG,4BAA4B,CAAC,MAAM,CAC9D,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,MAAM,CACzC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,uBAAuB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAC3D,CACF,CAAC;IAEF,MAAM,SAAS,GAA4B,EAAE,CAAC;IAE9C,KAAK,MAAM,MAAM,IAAI,oBAAoB,EAAE,CAAC;QAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;QAExB,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QAElC,MAAM,iBAAiB,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAEtD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;YAC3B,KAAK,EAAE,aAAa;YACpB,SAAS,EAAE,iBAAiB;YAC5B,OAAO,EACL,OAAO,CAAC,eAAe,EAAE,CAAC,IAAqC,CAAC,IAAI,EAAE;SACzE,CAAC,CAAC;QAEH,SAAS,CAAC,IAAI,CAAC,GAAG,QAAmC,CAAC;IACxD,CAAC;IAED,OAAO,SAA6B,CAAC;AACvC,CAAC","sourcesContent":["import type { InstanceSpecificOptions, WalletOptions } from '../types';\nimport type { DefaultInstances } from './defaults';\nimport { defaultConfigurations, RootMessenger } from './defaults';\n\nexport type InitializeArgs = {\n options: WalletOptions;\n messenger: RootMessenger;\n};\n\nexport function initialize({\n options,\n messenger,\n}: InitializeArgs): DefaultInstances {\n const { state = {}, initializationConfigurations = [] } = options;\n\n const overriddenConfiguration = initializationConfigurations.map(\n (config) => config.name,\n );\n\n const configurationEntries = initializationConfigurations.concat(\n Object.values(defaultConfigurations).filter(\n (config) => !overriddenConfiguration.includes(config.name),\n ),\n );\n\n const instances: Record<string, unknown> = {};\n\n for (const config of configurationEntries) {\n const { name } = config;\n\n const instanceState = state[name];\n\n const instanceMessenger = config.messenger(messenger);\n\n const instance = config.init({\n state: instanceState,\n messenger: instanceMessenger,\n options:\n options.instanceOptions?.[name as keyof InstanceSpecificOptions] ?? {},\n });\n\n instances[name] = instance as Record<string, unknown>;\n }\n\n return instances as DefaultInstances;\n}\n"]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.keyringController = void 0;
4
+ var keyring_controller_1 = require("./keyring-controller.cjs");
5
+ Object.defineProperty(exports, "keyringController", { enumerable: true, get: function () { return keyring_controller_1.keyringController; } });
6
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../../src/initialization/instances/index.ts"],"names":[],"mappings":";;;AAAA,+DAAyD;AAAhD,uHAAA,iBAAiB,OAAA","sourcesContent":["export { keyringController } from './keyring-controller';\n"]}
@@ -0,0 +1,2 @@
1
+ export { keyringController } from "./keyring-controller.cjs";
2
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../../src/initialization/instances/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iCAA6B"}
@@ -0,0 +1,2 @@
1
+ export { keyringController } from "./keyring-controller.mjs";
2
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../src/initialization/instances/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iCAA6B"}
@@ -0,0 +1,2 @@
1
+ export { keyringController } from "./keyring-controller.mjs";
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../src/initialization/instances/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iCAA6B","sourcesContent":["export { keyringController } from './keyring-controller';\n"]}
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.keyringController = void 0;
4
+ const browser_passworder_1 = require("@metamask/browser-passworder");
5
+ const keyring_controller_1 = require("@metamask/keyring-controller");
6
+ const messenger_1 = require("@metamask/messenger");
7
+ /**
8
+ * A factory function for the encrypt method of the browser-passworder library,
9
+ * that encrypts with a given number of iterations.
10
+ *
11
+ * @param iterations - The number of iterations to use for the PBKDF2 algorithm.
12
+ * @returns A function that encrypts with the given number of iterations.
13
+ */
14
+ const encryptFactory = (iterations) => async (password, data, key, salt) => (0, browser_passworder_1.encrypt)(password, data, key, salt, {
15
+ algorithm: 'PBKDF2',
16
+ params: {
17
+ iterations,
18
+ },
19
+ });
20
+ /**
21
+ * A factory function for the encryptWithDetail method of the browser-passworder library,
22
+ * that encrypts with a given number of iterations.
23
+ *
24
+ * @param iterations - The number of iterations to use for the PBKDF2 algorithm.
25
+ * @returns A function that encrypts with the given number of iterations.
26
+ */
27
+ const encryptWithDetailFactory = (iterations) => async (password, object, salt) => (0, browser_passworder_1.encryptWithDetail)(password, object, salt, {
28
+ algorithm: 'PBKDF2',
29
+ params: {
30
+ iterations,
31
+ },
32
+ });
33
+ /**
34
+ * A factory function for the keyFromPassword method of the browser-passworder library,
35
+ * that generates a key from a password and a salt.
36
+ *
37
+ * This factory function overrides the default key derivation options with the specified
38
+ * number of iterations, unless existing key derivation options are passed in.
39
+ *
40
+ * @param iterations - The number of iterations to use for the PBKDF2 algorithm.
41
+ * @returns A function that generates a key with a potentially overriden number of iterations.
42
+ */
43
+ const keyFromPasswordFactory = (iterations) => async (password, salt, exportable, opts) => (0, browser_passworder_1.keyFromPassword)(password, salt, exportable, opts ?? {
44
+ algorithm: 'PBKDF2',
45
+ params: {
46
+ iterations,
47
+ },
48
+ });
49
+ /**
50
+ * A factory function for the isVaultUpdated method of the browser-passworder library,
51
+ * that checks if the given vault was encrypted with the given number of iterations.
52
+ *
53
+ * @param iterations - The number of iterations to use for the PBKDF2 algorithm.
54
+ * @returns A function that checks if the vault was encrypted with the given number of iterations.
55
+ */
56
+ const isVaultUpdatedFactory = (iterations) => (vault) => (0, browser_passworder_1.isVaultUpdated)(vault, {
57
+ algorithm: 'PBKDF2',
58
+ params: {
59
+ iterations,
60
+ },
61
+ });
62
+ /**
63
+ * A factory function that returns an encryptor with the given number of iterations.
64
+ *
65
+ * The returned encryptor is a wrapper around the browser-passworder library, that
66
+ * calls the encrypt and encryptWithDetail methods with the given number of iterations.
67
+ *
68
+ * @param iterations - The number of iterations to use for the PBKDF2 algorithm.
69
+ * @returns An encryptor set with the given number of iterations.
70
+ */
71
+ const encryptorFactory = (iterations) => ({
72
+ encrypt: encryptFactory(iterations),
73
+ encryptWithKey: browser_passworder_1.encryptWithKey,
74
+ encryptWithDetail: encryptWithDetailFactory(iterations),
75
+ decrypt: browser_passworder_1.decrypt,
76
+ decryptWithKey: browser_passworder_1.decryptWithKey,
77
+ decryptWithDetail: browser_passworder_1.decryptWithDetail,
78
+ keyFromPassword: keyFromPasswordFactory(iterations),
79
+ isVaultUpdated: isVaultUpdatedFactory(iterations),
80
+ importKey: browser_passworder_1.importKey,
81
+ exportKey: browser_passworder_1.exportKey,
82
+ generateSalt: browser_passworder_1.generateSalt,
83
+ });
84
+ exports.keyringController = {
85
+ name: 'KeyringController',
86
+ init: ({ state, messenger, options }) => new keyring_controller_1.KeyringController({
87
+ state,
88
+ messenger,
89
+ keyringBuilders: options.keyringBuilders,
90
+ encryptor: options.encryptor ?? encryptorFactory(600000),
91
+ }),
92
+ messenger: (parent) => new messenger_1.Messenger({
93
+ namespace: 'KeyringController',
94
+ parent,
95
+ }),
96
+ };
97
+ //# sourceMappingURL=keyring-controller.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyring-controller.cjs","sourceRoot":"","sources":["../../../src/initialization/instances/keyring-controller.ts"],"names":[],"mappings":";;;AAKA,qEAYsC;AAEtC,qEAGsC;AACtC,mDAAgD;AAIhD;;;;;;GAMG;AACH,MAAM,cAAc,GAClB,CAAC,UAAkB,EAAE,EAAE,CACvB,KAAK,EACH,QAAgB,EAChB,IAAa,EACb,GAA+B,EAC/B,IAAa,EACI,EAAE,CACnB,IAAA,4BAAO,EAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;IACjC,SAAS,EAAE,QAAQ;IACnB,MAAM,EAAE;QACN,UAAU;KACX;CACF,CAAC,CAAC;AAEP;;;;;;GAMG;AACH,MAAM,wBAAwB,GAC5B,CAAC,UAAkB,EAAE,EAAE,CACvB,KAAK,EACH,QAAgB,EAChB,MAAe,EACf,IAAa,EACsB,EAAE,CACrC,IAAA,sCAAiB,EAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;IACxC,SAAS,EAAE,QAAQ;IACnB,MAAM,EAAE;QACN,UAAU;KACX;CACF,CAAC,CAAC;AAEP;;;;;;;;;GASG;AACH,MAAM,sBAAsB,GAC1B,CAAC,UAAkB,EAAE,EAAE,CACvB,KAAK,EACH,QAAgB,EAChB,IAAY,EACZ,UAAoB,EACpB,IAA2B,EACH,EAAE,CAC1B,IAAA,oCAAe,EACb,QAAQ,EACR,IAAI,EACJ,UAAU,EACV,IAAI,IAAI;IACN,SAAS,EAAE,QAAQ;IACnB,MAAM,EAAE;QACN,UAAU;KACX;CACF,CACF,CAAC;AAEN;;;;;;GAMG;AACH,MAAM,qBAAqB,GACzB,CAAC,UAAkB,EAAE,EAAE,CACvB,CAAC,KAAa,EAAW,EAAE,CACzB,IAAA,mCAAc,EAAC,KAAK,EAAE;IACpB,SAAS,EAAE,QAAQ;IACnB,MAAM,EAAE;QACN,UAAU;KACX;CACF,CAAC,CAAC;AAEP;;;;;;;;GAQG;AACH,MAAM,gBAAgB,GAAG,CAAC,UAAkB,EAAa,EAAE,CAAC,CAAC;IAC3D,OAAO,EAAE,cAAc,CAAC,UAAU,CAAC;IACnC,cAAc,EAAd,mCAAc;IACd,iBAAiB,EAAE,wBAAwB,CAAC,UAAU,CAAC;IACvD,OAAO,EAAP,4BAAO;IACP,cAAc,EAAd,mCAAc;IACd,iBAAiB,EAAjB,sCAAiB;IACjB,eAAe,EAAE,sBAAsB,CAAC,UAAU,CAAC;IACnD,cAAc,EAAE,qBAAqB,CAAC,UAAU,CAAC;IACjD,SAAS,EAAT,8BAAS;IACT,SAAS,EAAT,8BAAS;IACT,YAAY,EAAZ,iCAAY;CACb,CAAC,CAAC;AAEU,QAAA,iBAAiB,GAG1B;IACF,IAAI,EAAE,mBAAmB;IACzB,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,CACtC,IAAI,sCAAiB,CAAC;QACpB,KAAK;QACL,SAAS;QACT,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,gBAAgB,CAAC,MAAO,CAAC;KAC1D,CAAC;IACJ,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CACpB,IAAI,qBAAS,CAAmD;QAC9D,SAAS,EAAE,mBAAmB;QAC9B,MAAM;KACP,CAAC;CACL,CAAC","sourcesContent":["import type {\n DetailedEncryptionResult,\n EncryptionKey,\n KeyDerivationOptions,\n} from '@metamask/browser-passworder';\nimport {\n encrypt,\n encryptWithDetail,\n encryptWithKey,\n decrypt,\n decryptWithDetail,\n decryptWithKey,\n isVaultUpdated,\n keyFromPassword,\n importKey,\n exportKey,\n generateSalt,\n} from '@metamask/browser-passworder';\nimport type { Encryptor } from '@metamask/keyring-controller';\nimport {\n KeyringController,\n KeyringControllerMessenger,\n} from '@metamask/keyring-controller';\nimport { Messenger } from '@metamask/messenger';\n\nimport { InitializationConfiguration } from '../types';\n\n/**\n * A factory function for the encrypt method of the browser-passworder library,\n * that encrypts with a given number of iterations.\n *\n * @param iterations - The number of iterations to use for the PBKDF2 algorithm.\n * @returns A function that encrypts with the given number of iterations.\n */\nconst encryptFactory =\n (iterations: number) =>\n async (\n password: string,\n data: unknown,\n key?: EncryptionKey | CryptoKey,\n salt?: string,\n ): Promise<string> =>\n encrypt(password, data, key, salt, {\n algorithm: 'PBKDF2',\n params: {\n iterations,\n },\n });\n\n/**\n * A factory function for the encryptWithDetail method of the browser-passworder library,\n * that encrypts with a given number of iterations.\n *\n * @param iterations - The number of iterations to use for the PBKDF2 algorithm.\n * @returns A function that encrypts with the given number of iterations.\n */\nconst encryptWithDetailFactory =\n (iterations: number) =>\n async (\n password: string,\n object: unknown,\n salt?: string,\n ): Promise<DetailedEncryptionResult> =>\n encryptWithDetail(password, object, salt, {\n algorithm: 'PBKDF2',\n params: {\n iterations,\n },\n });\n\n/**\n * A factory function for the keyFromPassword method of the browser-passworder library,\n * that generates a key from a password and a salt.\n *\n * This factory function overrides the default key derivation options with the specified\n * number of iterations, unless existing key derivation options are passed in.\n *\n * @param iterations - The number of iterations to use for the PBKDF2 algorithm.\n * @returns A function that generates a key with a potentially overriden number of iterations.\n */\nconst keyFromPasswordFactory =\n (iterations: number) =>\n async (\n password: string,\n salt: string,\n exportable?: boolean,\n opts?: KeyDerivationOptions,\n ): Promise<EncryptionKey> =>\n keyFromPassword(\n password,\n salt,\n exportable,\n opts ?? {\n algorithm: 'PBKDF2',\n params: {\n iterations,\n },\n },\n );\n\n/**\n * A factory function for the isVaultUpdated method of the browser-passworder library,\n * that checks if the given vault was encrypted with the given number of iterations.\n *\n * @param iterations - The number of iterations to use for the PBKDF2 algorithm.\n * @returns A function that checks if the vault was encrypted with the given number of iterations.\n */\nconst isVaultUpdatedFactory =\n (iterations: number) =>\n (vault: string): boolean =>\n isVaultUpdated(vault, {\n algorithm: 'PBKDF2',\n params: {\n iterations,\n },\n });\n\n/**\n * A factory function that returns an encryptor with the given number of iterations.\n *\n * The returned encryptor is a wrapper around the browser-passworder library, that\n * calls the encrypt and encryptWithDetail methods with the given number of iterations.\n *\n * @param iterations - The number of iterations to use for the PBKDF2 algorithm.\n * @returns An encryptor set with the given number of iterations.\n */\nconst encryptorFactory = (iterations: number): Encryptor => ({\n encrypt: encryptFactory(iterations),\n encryptWithKey,\n encryptWithDetail: encryptWithDetailFactory(iterations),\n decrypt,\n decryptWithKey,\n decryptWithDetail,\n keyFromPassword: keyFromPasswordFactory(iterations),\n isVaultUpdated: isVaultUpdatedFactory(iterations),\n importKey,\n exportKey,\n generateSalt,\n});\n\nexport const keyringController: InitializationConfiguration<\n KeyringController,\n KeyringControllerMessenger\n> = {\n name: 'KeyringController',\n init: ({ state, messenger, options }) =>\n new KeyringController({\n state,\n messenger,\n keyringBuilders: options.keyringBuilders,\n encryptor: options.encryptor ?? encryptorFactory(600_000),\n }),\n messenger: (parent) =>\n new Messenger<'KeyringController', never, never, typeof parent>({\n namespace: 'KeyringController',\n parent,\n }),\n};\n"]}
@@ -0,0 +1,4 @@
1
+ import { KeyringController, KeyringControllerMessenger } from "@metamask/keyring-controller";
2
+ import { InitializationConfiguration } from "../types.cjs";
3
+ export declare const keyringController: InitializationConfiguration<KeyringController, KeyringControllerMessenger>;
4
+ //# sourceMappingURL=keyring-controller.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyring-controller.d.cts","sourceRoot":"","sources":["../../../src/initialization/instances/keyring-controller.ts"],"names":[],"mappings":"AAmBA,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC3B,qCAAqC;AAGtC,OAAO,EAAE,2BAA2B,EAAE,qBAAiB;AAmHvD,eAAO,MAAM,iBAAiB,EAAE,2BAA2B,CACzD,iBAAiB,EACjB,0BAA0B,CAe3B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { KeyringController, KeyringControllerMessenger } from "@metamask/keyring-controller";
2
+ import { InitializationConfiguration } from "../types.mjs";
3
+ export declare const keyringController: InitializationConfiguration<KeyringController, KeyringControllerMessenger>;
4
+ //# sourceMappingURL=keyring-controller.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyring-controller.d.mts","sourceRoot":"","sources":["../../../src/initialization/instances/keyring-controller.ts"],"names":[],"mappings":"AAmBA,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC3B,qCAAqC;AAGtC,OAAO,EAAE,2BAA2B,EAAE,qBAAiB;AAmHvD,eAAO,MAAM,iBAAiB,EAAE,2BAA2B,CACzD,iBAAiB,EACjB,0BAA0B,CAe3B,CAAC"}
@@ -0,0 +1,94 @@
1
+ import { encrypt, encryptWithDetail, encryptWithKey, decrypt, decryptWithDetail, decryptWithKey, isVaultUpdated, keyFromPassword, importKey, exportKey, generateSalt } from "@metamask/browser-passworder";
2
+ import { KeyringController } from "@metamask/keyring-controller";
3
+ import { Messenger } from "@metamask/messenger";
4
+ /**
5
+ * A factory function for the encrypt method of the browser-passworder library,
6
+ * that encrypts with a given number of iterations.
7
+ *
8
+ * @param iterations - The number of iterations to use for the PBKDF2 algorithm.
9
+ * @returns A function that encrypts with the given number of iterations.
10
+ */
11
+ const encryptFactory = (iterations) => async (password, data, key, salt) => encrypt(password, data, key, salt, {
12
+ algorithm: 'PBKDF2',
13
+ params: {
14
+ iterations,
15
+ },
16
+ });
17
+ /**
18
+ * A factory function for the encryptWithDetail method of the browser-passworder library,
19
+ * that encrypts with a given number of iterations.
20
+ *
21
+ * @param iterations - The number of iterations to use for the PBKDF2 algorithm.
22
+ * @returns A function that encrypts with the given number of iterations.
23
+ */
24
+ const encryptWithDetailFactory = (iterations) => async (password, object, salt) => encryptWithDetail(password, object, salt, {
25
+ algorithm: 'PBKDF2',
26
+ params: {
27
+ iterations,
28
+ },
29
+ });
30
+ /**
31
+ * A factory function for the keyFromPassword method of the browser-passworder library,
32
+ * that generates a key from a password and a salt.
33
+ *
34
+ * This factory function overrides the default key derivation options with the specified
35
+ * number of iterations, unless existing key derivation options are passed in.
36
+ *
37
+ * @param iterations - The number of iterations to use for the PBKDF2 algorithm.
38
+ * @returns A function that generates a key with a potentially overriden number of iterations.
39
+ */
40
+ const keyFromPasswordFactory = (iterations) => async (password, salt, exportable, opts) => keyFromPassword(password, salt, exportable, opts ?? {
41
+ algorithm: 'PBKDF2',
42
+ params: {
43
+ iterations,
44
+ },
45
+ });
46
+ /**
47
+ * A factory function for the isVaultUpdated method of the browser-passworder library,
48
+ * that checks if the given vault was encrypted with the given number of iterations.
49
+ *
50
+ * @param iterations - The number of iterations to use for the PBKDF2 algorithm.
51
+ * @returns A function that checks if the vault was encrypted with the given number of iterations.
52
+ */
53
+ const isVaultUpdatedFactory = (iterations) => (vault) => isVaultUpdated(vault, {
54
+ algorithm: 'PBKDF2',
55
+ params: {
56
+ iterations,
57
+ },
58
+ });
59
+ /**
60
+ * A factory function that returns an encryptor with the given number of iterations.
61
+ *
62
+ * The returned encryptor is a wrapper around the browser-passworder library, that
63
+ * calls the encrypt and encryptWithDetail methods with the given number of iterations.
64
+ *
65
+ * @param iterations - The number of iterations to use for the PBKDF2 algorithm.
66
+ * @returns An encryptor set with the given number of iterations.
67
+ */
68
+ const encryptorFactory = (iterations) => ({
69
+ encrypt: encryptFactory(iterations),
70
+ encryptWithKey,
71
+ encryptWithDetail: encryptWithDetailFactory(iterations),
72
+ decrypt,
73
+ decryptWithKey,
74
+ decryptWithDetail,
75
+ keyFromPassword: keyFromPasswordFactory(iterations),
76
+ isVaultUpdated: isVaultUpdatedFactory(iterations),
77
+ importKey,
78
+ exportKey,
79
+ generateSalt,
80
+ });
81
+ export const keyringController = {
82
+ name: 'KeyringController',
83
+ init: ({ state, messenger, options }) => new KeyringController({
84
+ state,
85
+ messenger,
86
+ keyringBuilders: options.keyringBuilders,
87
+ encryptor: options.encryptor ?? encryptorFactory(600000),
88
+ }),
89
+ messenger: (parent) => new Messenger({
90
+ namespace: 'KeyringController',
91
+ parent,
92
+ }),
93
+ };
94
+ //# sourceMappingURL=keyring-controller.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyring-controller.mjs","sourceRoot":"","sources":["../../../src/initialization/instances/keyring-controller.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,OAAO,EACP,iBAAiB,EACjB,cAAc,EACd,OAAO,EACP,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,eAAe,EACf,SAAS,EACT,SAAS,EACT,YAAY,EACb,qCAAqC;AAEtC,OAAO,EACL,iBAAiB,EAElB,qCAAqC;AACtC,OAAO,EAAE,SAAS,EAAE,4BAA4B;AAIhD;;;;;;GAMG;AACH,MAAM,cAAc,GAClB,CAAC,UAAkB,EAAE,EAAE,CACvB,KAAK,EACH,QAAgB,EAChB,IAAa,EACb,GAA+B,EAC/B,IAAa,EACI,EAAE,CACnB,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;IACjC,SAAS,EAAE,QAAQ;IACnB,MAAM,EAAE;QACN,UAAU;KACX;CACF,CAAC,CAAC;AAEP;;;;;;GAMG;AACH,MAAM,wBAAwB,GAC5B,CAAC,UAAkB,EAAE,EAAE,CACvB,KAAK,EACH,QAAgB,EAChB,MAAe,EACf,IAAa,EACsB,EAAE,CACrC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;IACxC,SAAS,EAAE,QAAQ;IACnB,MAAM,EAAE;QACN,UAAU;KACX;CACF,CAAC,CAAC;AAEP;;;;;;;;;GASG;AACH,MAAM,sBAAsB,GAC1B,CAAC,UAAkB,EAAE,EAAE,CACvB,KAAK,EACH,QAAgB,EAChB,IAAY,EACZ,UAAoB,EACpB,IAA2B,EACH,EAAE,CAC1B,eAAe,CACb,QAAQ,EACR,IAAI,EACJ,UAAU,EACV,IAAI,IAAI;IACN,SAAS,EAAE,QAAQ;IACnB,MAAM,EAAE;QACN,UAAU;KACX;CACF,CACF,CAAC;AAEN;;;;;;GAMG;AACH,MAAM,qBAAqB,GACzB,CAAC,UAAkB,EAAE,EAAE,CACvB,CAAC,KAAa,EAAW,EAAE,CACzB,cAAc,CAAC,KAAK,EAAE;IACpB,SAAS,EAAE,QAAQ;IACnB,MAAM,EAAE;QACN,UAAU;KACX;CACF,CAAC,CAAC;AAEP;;;;;;;;GAQG;AACH,MAAM,gBAAgB,GAAG,CAAC,UAAkB,EAAa,EAAE,CAAC,CAAC;IAC3D,OAAO,EAAE,cAAc,CAAC,UAAU,CAAC;IACnC,cAAc;IACd,iBAAiB,EAAE,wBAAwB,CAAC,UAAU,CAAC;IACvD,OAAO;IACP,cAAc;IACd,iBAAiB;IACjB,eAAe,EAAE,sBAAsB,CAAC,UAAU,CAAC;IACnD,cAAc,EAAE,qBAAqB,CAAC,UAAU,CAAC;IACjD,SAAS;IACT,SAAS;IACT,YAAY;CACb,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAG1B;IACF,IAAI,EAAE,mBAAmB;IACzB,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,CACtC,IAAI,iBAAiB,CAAC;QACpB,KAAK;QACL,SAAS;QACT,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,gBAAgB,CAAC,MAAO,CAAC;KAC1D,CAAC;IACJ,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CACpB,IAAI,SAAS,CAAmD;QAC9D,SAAS,EAAE,mBAAmB;QAC9B,MAAM;KACP,CAAC;CACL,CAAC","sourcesContent":["import type {\n DetailedEncryptionResult,\n EncryptionKey,\n KeyDerivationOptions,\n} from '@metamask/browser-passworder';\nimport {\n encrypt,\n encryptWithDetail,\n encryptWithKey,\n decrypt,\n decryptWithDetail,\n decryptWithKey,\n isVaultUpdated,\n keyFromPassword,\n importKey,\n exportKey,\n generateSalt,\n} from '@metamask/browser-passworder';\nimport type { Encryptor } from '@metamask/keyring-controller';\nimport {\n KeyringController,\n KeyringControllerMessenger,\n} from '@metamask/keyring-controller';\nimport { Messenger } from '@metamask/messenger';\n\nimport { InitializationConfiguration } from '../types';\n\n/**\n * A factory function for the encrypt method of the browser-passworder library,\n * that encrypts with a given number of iterations.\n *\n * @param iterations - The number of iterations to use for the PBKDF2 algorithm.\n * @returns A function that encrypts with the given number of iterations.\n */\nconst encryptFactory =\n (iterations: number) =>\n async (\n password: string,\n data: unknown,\n key?: EncryptionKey | CryptoKey,\n salt?: string,\n ): Promise<string> =>\n encrypt(password, data, key, salt, {\n algorithm: 'PBKDF2',\n params: {\n iterations,\n },\n });\n\n/**\n * A factory function for the encryptWithDetail method of the browser-passworder library,\n * that encrypts with a given number of iterations.\n *\n * @param iterations - The number of iterations to use for the PBKDF2 algorithm.\n * @returns A function that encrypts with the given number of iterations.\n */\nconst encryptWithDetailFactory =\n (iterations: number) =>\n async (\n password: string,\n object: unknown,\n salt?: string,\n ): Promise<DetailedEncryptionResult> =>\n encryptWithDetail(password, object, salt, {\n algorithm: 'PBKDF2',\n params: {\n iterations,\n },\n });\n\n/**\n * A factory function for the keyFromPassword method of the browser-passworder library,\n * that generates a key from a password and a salt.\n *\n * This factory function overrides the default key derivation options with the specified\n * number of iterations, unless existing key derivation options are passed in.\n *\n * @param iterations - The number of iterations to use for the PBKDF2 algorithm.\n * @returns A function that generates a key with a potentially overriden number of iterations.\n */\nconst keyFromPasswordFactory =\n (iterations: number) =>\n async (\n password: string,\n salt: string,\n exportable?: boolean,\n opts?: KeyDerivationOptions,\n ): Promise<EncryptionKey> =>\n keyFromPassword(\n password,\n salt,\n exportable,\n opts ?? {\n algorithm: 'PBKDF2',\n params: {\n iterations,\n },\n },\n );\n\n/**\n * A factory function for the isVaultUpdated method of the browser-passworder library,\n * that checks if the given vault was encrypted with the given number of iterations.\n *\n * @param iterations - The number of iterations to use for the PBKDF2 algorithm.\n * @returns A function that checks if the vault was encrypted with the given number of iterations.\n */\nconst isVaultUpdatedFactory =\n (iterations: number) =>\n (vault: string): boolean =>\n isVaultUpdated(vault, {\n algorithm: 'PBKDF2',\n params: {\n iterations,\n },\n });\n\n/**\n * A factory function that returns an encryptor with the given number of iterations.\n *\n * The returned encryptor is a wrapper around the browser-passworder library, that\n * calls the encrypt and encryptWithDetail methods with the given number of iterations.\n *\n * @param iterations - The number of iterations to use for the PBKDF2 algorithm.\n * @returns An encryptor set with the given number of iterations.\n */\nconst encryptorFactory = (iterations: number): Encryptor => ({\n encrypt: encryptFactory(iterations),\n encryptWithKey,\n encryptWithDetail: encryptWithDetailFactory(iterations),\n decrypt,\n decryptWithKey,\n decryptWithDetail,\n keyFromPassword: keyFromPasswordFactory(iterations),\n isVaultUpdated: isVaultUpdatedFactory(iterations),\n importKey,\n exportKey,\n generateSalt,\n});\n\nexport const keyringController: InitializationConfiguration<\n KeyringController,\n KeyringControllerMessenger\n> = {\n name: 'KeyringController',\n init: ({ state, messenger, options }) =>\n new KeyringController({\n state,\n messenger,\n keyringBuilders: options.keyringBuilders,\n encryptor: options.encryptor ?? encryptorFactory(600_000),\n }),\n messenger: (parent) =>\n new Messenger<'KeyringController', never, never, typeof parent>({\n namespace: 'KeyringController',\n parent,\n }),\n};\n"]}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../../src/initialization/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { InstanceSpecificOptions } from '../types';\nimport type { RootMessenger } from './defaults';\n\nexport type InstanceState<Instance> = Instance extends { state: unknown }\n ? Instance['state']\n : unknown;\n\ntype InstanceName<Instance> = Instance extends {\n name: infer Name extends string;\n}\n ? Name\n : string;\n\ntype InstanceOptions<Instance> =\n InstanceName<Instance> extends keyof InstanceSpecificOptions\n ? NonNullable<InstanceSpecificOptions[InstanceName<Instance>]>\n : unknown;\n\nexport type InitFunctionArguments<Instance, InstanceMessenger> = {\n state: InstanceState<Instance>;\n messenger: InstanceMessenger;\n options: InstanceOptions<Instance>;\n};\n\nexport type InitializationConfiguration<Instance, InstanceMessenger> = {\n name: InstanceName<Instance>;\n init(args: InitFunctionArguments<Instance, InstanceMessenger>): Instance;\n messenger(parent: RootMessenger): InstanceMessenger;\n};\n"]}
@@ -0,0 +1,21 @@
1
+ import type { InstanceSpecificOptions } from "../types.cjs";
2
+ import type { RootMessenger } from "./defaults.cjs";
3
+ export type InstanceState<Instance> = Instance extends {
4
+ state: unknown;
5
+ } ? Instance['state'] : unknown;
6
+ type InstanceName<Instance> = Instance extends {
7
+ name: infer Name extends string;
8
+ } ? Name : string;
9
+ type InstanceOptions<Instance> = InstanceName<Instance> extends keyof InstanceSpecificOptions ? NonNullable<InstanceSpecificOptions[InstanceName<Instance>]> : unknown;
10
+ export type InitFunctionArguments<Instance, InstanceMessenger> = {
11
+ state: InstanceState<Instance>;
12
+ messenger: InstanceMessenger;
13
+ options: InstanceOptions<Instance>;
14
+ };
15
+ export type InitializationConfiguration<Instance, InstanceMessenger> = {
16
+ name: InstanceName<Instance>;
17
+ init(args: InitFunctionArguments<Instance, InstanceMessenger>): Instance;
18
+ messenger(parent: RootMessenger): InstanceMessenger;
19
+ };
20
+ export {};
21
+ //# sourceMappingURL=types.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../../src/initialization/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,qBAAiB;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAmB;AAEhD,MAAM,MAAM,aAAa,CAAC,QAAQ,IAAI,QAAQ,SAAS;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,GACrE,QAAQ,CAAC,OAAO,CAAC,GACjB,OAAO,CAAC;AAEZ,KAAK,YAAY,CAAC,QAAQ,IAAI,QAAQ,SAAS;IAC7C,IAAI,EAAE,MAAM,IAAI,SAAS,MAAM,CAAC;CACjC,GACG,IAAI,GACJ,MAAM,CAAC;AAEX,KAAK,eAAe,CAAC,QAAQ,IAC3B,YAAY,CAAC,QAAQ,CAAC,SAAS,MAAM,uBAAuB,GACxD,WAAW,CAAC,uBAAuB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,GAC5D,OAAO,CAAC;AAEd,MAAM,MAAM,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,IAAI;IAC/D,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC/B,SAAS,EAAE,iBAAiB,CAAC;IAC7B,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,2BAA2B,CAAC,QAAQ,EAAE,iBAAiB,IAAI;IACrE,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI,EAAE,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC;IACzE,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,iBAAiB,CAAC;CACrD,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { InstanceSpecificOptions } from "../types.mjs";
2
+ import type { RootMessenger } from "./defaults.mjs";
3
+ export type InstanceState<Instance> = Instance extends {
4
+ state: unknown;
5
+ } ? Instance['state'] : unknown;
6
+ type InstanceName<Instance> = Instance extends {
7
+ name: infer Name extends string;
8
+ } ? Name : string;
9
+ type InstanceOptions<Instance> = InstanceName<Instance> extends keyof InstanceSpecificOptions ? NonNullable<InstanceSpecificOptions[InstanceName<Instance>]> : unknown;
10
+ export type InitFunctionArguments<Instance, InstanceMessenger> = {
11
+ state: InstanceState<Instance>;
12
+ messenger: InstanceMessenger;
13
+ options: InstanceOptions<Instance>;
14
+ };
15
+ export type InitializationConfiguration<Instance, InstanceMessenger> = {
16
+ name: InstanceName<Instance>;
17
+ init(args: InitFunctionArguments<Instance, InstanceMessenger>): Instance;
18
+ messenger(parent: RootMessenger): InstanceMessenger;
19
+ };
20
+ export {};
21
+ //# sourceMappingURL=types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../../src/initialization/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,qBAAiB;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAmB;AAEhD,MAAM,MAAM,aAAa,CAAC,QAAQ,IAAI,QAAQ,SAAS;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,GACrE,QAAQ,CAAC,OAAO,CAAC,GACjB,OAAO,CAAC;AAEZ,KAAK,YAAY,CAAC,QAAQ,IAAI,QAAQ,SAAS;IAC7C,IAAI,EAAE,MAAM,IAAI,SAAS,MAAM,CAAC;CACjC,GACG,IAAI,GACJ,MAAM,CAAC;AAEX,KAAK,eAAe,CAAC,QAAQ,IAC3B,YAAY,CAAC,QAAQ,CAAC,SAAS,MAAM,uBAAuB,GACxD,WAAW,CAAC,uBAAuB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,GAC5D,OAAO,CAAC;AAEd,MAAM,MAAM,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,IAAI;IAC/D,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC/B,SAAS,EAAE,iBAAiB,CAAC;IAC7B,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,2BAA2B,CAAC,QAAQ,EAAE,iBAAiB,IAAI;IACrE,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI,EAAE,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC;IACzE,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,iBAAiB,CAAC;CACrD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../../src/initialization/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { InstanceSpecificOptions } from '../types';\nimport type { RootMessenger } from './defaults';\n\nexport type InstanceState<Instance> = Instance extends { state: unknown }\n ? Instance['state']\n : unknown;\n\ntype InstanceName<Instance> = Instance extends {\n name: infer Name extends string;\n}\n ? Name\n : string;\n\ntype InstanceOptions<Instance> =\n InstanceName<Instance> extends keyof InstanceSpecificOptions\n ? NonNullable<InstanceSpecificOptions[InstanceName<Instance>]>\n : unknown;\n\nexport type InitFunctionArguments<Instance, InstanceMessenger> = {\n state: InstanceState<Instance>;\n messenger: InstanceMessenger;\n options: InstanceOptions<Instance>;\n};\n\nexport type InitializationConfiguration<Instance, InstanceMessenger> = {\n name: InstanceName<Instance>;\n init(args: InitFunctionArguments<Instance, InstanceMessenger>): Instance;\n messenger(parent: RootMessenger): InstanceMessenger;\n};\n"]}
package/dist/types.cjs ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import { KeyringControllerOptions } from '@metamask/keyring-controller';\nimport type { Json } from '@metamask/utils';\n\nimport type { InitializationConfiguration } from './initialization';\n\nexport type WalletOptions = {\n state?: Record<string, Record<string, Json>>;\n initializationConfigurations?: InitializationConfiguration<\n unknown,\n unknown\n >[];\n instanceOptions?: InstanceSpecificOptions;\n};\n\nexport type InstanceSpecificOptions = {\n KeyringController?: Partial<\n Pick<KeyringControllerOptions, 'encryptor' | 'keyringBuilders'>\n >;\n};\n"]}
@@ -0,0 +1,12 @@
1
+ import { KeyringControllerOptions } from "@metamask/keyring-controller";
2
+ import type { Json } from "@metamask/utils";
3
+ import type { InitializationConfiguration } from "./initialization/index.cjs";
4
+ export type WalletOptions = {
5
+ state?: Record<string, Record<string, Json>>;
6
+ initializationConfigurations?: InitializationConfiguration<unknown, unknown>[];
7
+ instanceOptions?: InstanceSpecificOptions;
8
+ };
9
+ export type InstanceSpecificOptions = {
10
+ KeyringController?: Partial<Pick<KeyringControllerOptions, 'encryptor' | 'keyringBuilders'>>;
11
+ };
12
+ //# sourceMappingURL=types.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,qCAAqC;AACxE,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAE5C,OAAO,KAAK,EAAE,2BAA2B,EAAE,mCAAyB;AAEpE,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7C,4BAA4B,CAAC,EAAE,2BAA2B,CACxD,OAAO,EACP,OAAO,CACR,EAAE,CAAC;IACJ,eAAe,CAAC,EAAE,uBAAuB,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,iBAAiB,CAAC,EAAE,OAAO,CACzB,IAAI,CAAC,wBAAwB,EAAE,WAAW,GAAG,iBAAiB,CAAC,CAChE,CAAC;CACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { KeyringControllerOptions } from "@metamask/keyring-controller";
2
+ import type { Json } from "@metamask/utils";
3
+ import type { InitializationConfiguration } from "./initialization/index.mjs";
4
+ export type WalletOptions = {
5
+ state?: Record<string, Record<string, Json>>;
6
+ initializationConfigurations?: InitializationConfiguration<unknown, unknown>[];
7
+ instanceOptions?: InstanceSpecificOptions;
8
+ };
9
+ export type InstanceSpecificOptions = {
10
+ KeyringController?: Partial<Pick<KeyringControllerOptions, 'encryptor' | 'keyringBuilders'>>;
11
+ };
12
+ //# sourceMappingURL=types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,qCAAqC;AACxE,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAE5C,OAAO,KAAK,EAAE,2BAA2B,EAAE,mCAAyB;AAEpE,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7C,4BAA4B,CAAC,EAAE,2BAA2B,CACxD,OAAO,EACP,OAAO,CACR,EAAE,CAAC;IACJ,eAAe,CAAC,EAAE,uBAAuB,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,iBAAiB,CAAC,EAAE,OAAO,CACzB,IAAI,CAAC,wBAAwB,EAAE,WAAW,GAAG,iBAAiB,CAAC,CAChE,CAAC;CACH,CAAC"}
package/dist/types.mjs ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import { KeyringControllerOptions } from '@metamask/keyring-controller';\nimport type { Json } from '@metamask/utils';\n\nimport type { InitializationConfiguration } from './initialization';\n\nexport type WalletOptions = {\n state?: Record<string, Record<string, Json>>;\n initializationConfigurations?: InitializationConfiguration<\n unknown,\n unknown\n >[];\n instanceOptions?: InstanceSpecificOptions;\n};\n\nexport type InstanceSpecificOptions = {\n KeyringController?: Partial<\n Pick<KeyringControllerOptions, 'encryptor' | 'keyringBuilders'>\n >;\n};\n"]}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.importSecretRecoveryPhrase = void 0;
4
+ const english_1 = require("@metamask/scure-bip39/dist/wordlists/english.js");
5
+ const Wallet_1 = require("./Wallet.cjs");
6
+ /**
7
+ * Import a secret recovery phrase using the wallet object.
8
+ *
9
+ * @param wallet - The wallet object.
10
+ * @param password - The password to the MetaMask wallet (not the SRP).
11
+ * @param phrase - The SRP as a string.
12
+ */
13
+ async function importSecretRecoveryPhrase(wallet, password, phrase) {
14
+ const indices = phrase.split(' ').map((word) => english_1.wordlist.indexOf(word));
15
+ const mnemonic = new Uint8Array(new Uint16Array(indices).buffer);
16
+ // TODO: This should use the new MultichainAccountService.
17
+ await wallet.messenger.call('KeyringController:createNewVaultAndRestore', password, mnemonic);
18
+ }
19
+ exports.importSecretRecoveryPhrase = importSecretRecoveryPhrase;
20
+ //# sourceMappingURL=utilities.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilities.cjs","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":";;;AAAA,6EAAwE;AAExE,yCAAkC;AAElC;;;;;;GAMG;AACI,KAAK,UAAU,0BAA0B,CAC9C,MAAc,EACd,QAAgB,EAChB,MAAc;IAEd,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;IAEjE,0DAA0D;IAC1D,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CACzB,4CAA4C,EAC5C,QAAQ,EACR,QAAQ,CACT,CAAC;AACJ,CAAC;AAdD,gEAcC","sourcesContent":["import { wordlist } from '@metamask/scure-bip39/dist/wordlists/english';\n\nimport { Wallet } from './Wallet';\n\n/**\n * Import a secret recovery phrase using the wallet object.\n *\n * @param wallet - The wallet object.\n * @param password - The password to the MetaMask wallet (not the SRP).\n * @param phrase - The SRP as a string.\n */\nexport async function importSecretRecoveryPhrase(\n wallet: Wallet,\n password: string,\n phrase: string,\n): Promise<void> {\n const indices = phrase.split(' ').map((word) => wordlist.indexOf(word));\n const mnemonic = new Uint8Array(new Uint16Array(indices).buffer);\n\n // TODO: This should use the new MultichainAccountService.\n await wallet.messenger.call(\n 'KeyringController:createNewVaultAndRestore',\n password,\n mnemonic,\n );\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import { Wallet } from "./Wallet.cjs";
2
+ /**
3
+ * Import a secret recovery phrase using the wallet object.
4
+ *
5
+ * @param wallet - The wallet object.
6
+ * @param password - The password to the MetaMask wallet (not the SRP).
7
+ * @param phrase - The SRP as a string.
8
+ */
9
+ export declare function importSecretRecoveryPhrase(wallet: Wallet, password: string, phrase: string): Promise<void>;
10
+ //# sourceMappingURL=utilities.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilities.d.cts","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,qBAAiB;AAElC;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAUf"}
@@ -0,0 +1,10 @@
1
+ import { Wallet } from "./Wallet.mjs";
2
+ /**
3
+ * Import a secret recovery phrase using the wallet object.
4
+ *
5
+ * @param wallet - The wallet object.
6
+ * @param password - The password to the MetaMask wallet (not the SRP).
7
+ * @param phrase - The SRP as a string.
8
+ */
9
+ export declare function importSecretRecoveryPhrase(wallet: Wallet, password: string, phrase: string): Promise<void>;
10
+ //# sourceMappingURL=utilities.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilities.d.mts","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,qBAAiB;AAElC;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAUf"}
@@ -0,0 +1,16 @@
1
+ import { wordlist } from "@metamask/scure-bip39/dist/wordlists/english.js";
2
+ import { Wallet } from "./Wallet.mjs";
3
+ /**
4
+ * Import a secret recovery phrase using the wallet object.
5
+ *
6
+ * @param wallet - The wallet object.
7
+ * @param password - The password to the MetaMask wallet (not the SRP).
8
+ * @param phrase - The SRP as a string.
9
+ */
10
+ export async function importSecretRecoveryPhrase(wallet, password, phrase) {
11
+ const indices = phrase.split(' ').map((word) => wordlist.indexOf(word));
12
+ const mnemonic = new Uint8Array(new Uint16Array(indices).buffer);
13
+ // TODO: This should use the new MultichainAccountService.
14
+ await wallet.messenger.call('KeyringController:createNewVaultAndRestore', password, mnemonic);
15
+ }
16
+ //# sourceMappingURL=utilities.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilities.mjs","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,wDAAqD;AAExE,OAAO,EAAE,MAAM,EAAE,qBAAiB;AAElC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,MAAc,EACd,QAAgB,EAChB,MAAc;IAEd,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;IAEjE,0DAA0D;IAC1D,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CACzB,4CAA4C,EAC5C,QAAQ,EACR,QAAQ,CACT,CAAC;AACJ,CAAC","sourcesContent":["import { wordlist } from '@metamask/scure-bip39/dist/wordlists/english';\n\nimport { Wallet } from './Wallet';\n\n/**\n * Import a secret recovery phrase using the wallet object.\n *\n * @param wallet - The wallet object.\n * @param password - The password to the MetaMask wallet (not the SRP).\n * @param phrase - The SRP as a string.\n */\nexport async function importSecretRecoveryPhrase(\n wallet: Wallet,\n password: string,\n phrase: string,\n): Promise<void> {\n const indices = phrase.split(' ').map((word) => wordlist.indexOf(word));\n const mnemonic = new Uint8Array(new Uint16Array(indices).buffer);\n\n // TODO: This should use the new MultichainAccountService.\n await wallet.messenger.call(\n 'KeyringController:createNewVaultAndRestore',\n password,\n mnemonic,\n );\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamask-previews/wallet",
3
- "version": "0.0.0-preview-73cf60340",
3
+ "version": "0.0.0-preview-ea54cecca",
4
4
  "description": "Provides a shared framework for building MetaMask wallets",
5
5
  "keywords": [
6
6
  "Ethereum",
@@ -52,6 +52,14 @@
52
52
  "test:verbose": "NODE_OPTIONS=--experimental-vm-modules jest --verbose",
53
53
  "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch"
54
54
  },
55
+ "dependencies": {
56
+ "@metamask/base-controller": "^9.1.0",
57
+ "@metamask/browser-passworder": "^6.0.0",
58
+ "@metamask/keyring-controller": "^25.5.0",
59
+ "@metamask/messenger": "^1.2.0",
60
+ "@metamask/scure-bip39": "^2.1.1",
61
+ "@metamask/utils": "^11.9.0"
62
+ },
55
63
  "devDependencies": {
56
64
  "@metamask/auto-changelog": "^6.1.0",
57
65
  "@ts-bridge/cli": "^0.6.4",