@metamask-previews/wallet 0.0.0-preview-e7c25d6b8 → 0.0.0-preview-1d367b049
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/dist/Wallet.cjs +80 -0
- package/dist/Wallet.cjs.map +1 -0
- package/dist/Wallet.d.cts +14 -0
- package/dist/Wallet.d.cts.map +1 -0
- package/dist/Wallet.d.mts +14 -0
- package/dist/Wallet.d.mts.map +1 -0
- package/dist/Wallet.mjs +76 -0
- package/dist/Wallet.mjs.map +1 -0
- package/dist/index.cjs +3 -10
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -7
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +3 -7
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -9
- package/dist/index.mjs.map +1 -1
- package/dist/initialization/defaults.cjs +29 -0
- package/dist/initialization/defaults.cjs.map +1 -0
- package/dist/initialization/defaults.d.cts +25 -0
- package/dist/initialization/defaults.d.cts.map +1 -0
- package/dist/initialization/defaults.d.mts +25 -0
- package/dist/initialization/defaults.d.mts.map +1 -0
- package/dist/initialization/defaults.mjs +3 -0
- package/dist/initialization/defaults.mjs.map +1 -0
- package/dist/initialization/initialization.cjs +26 -0
- package/dist/initialization/initialization.cjs.map +1 -0
- package/dist/initialization/initialization.d.cts +9 -0
- package/dist/initialization/initialization.d.cts.map +1 -0
- package/dist/initialization/initialization.d.mts +9 -0
- package/dist/initialization/initialization.d.mts.map +1 -0
- package/dist/initialization/initialization.mjs +22 -0
- package/dist/initialization/initialization.mjs.map +1 -0
- package/dist/initialization/instances/index.cjs +6 -0
- package/dist/initialization/instances/index.cjs.map +1 -0
- package/dist/initialization/instances/index.d.cts +2 -0
- package/dist/initialization/instances/index.d.cts.map +1 -0
- package/dist/initialization/instances/index.d.mts +2 -0
- package/dist/initialization/instances/index.d.mts.map +1 -0
- package/dist/initialization/instances/index.mjs +2 -0
- package/dist/initialization/instances/index.mjs.map +1 -0
- package/dist/initialization/instances/keyring-controller.cjs +97 -0
- package/dist/initialization/instances/keyring-controller.cjs.map +1 -0
- package/dist/initialization/instances/keyring-controller.d.cts +14 -0
- package/dist/initialization/instances/keyring-controller.d.cts.map +1 -0
- package/dist/initialization/instances/keyring-controller.d.mts +14 -0
- package/dist/initialization/instances/keyring-controller.d.mts.map +1 -0
- package/dist/initialization/instances/keyring-controller.mjs +94 -0
- package/dist/initialization/instances/keyring-controller.mjs.map +1 -0
- package/dist/initialization/types.cjs +3 -0
- package/dist/initialization/types.cjs.map +1 -0
- package/dist/initialization/types.d.cts +23 -0
- package/dist/initialization/types.d.cts.map +1 -0
- package/dist/initialization/types.d.mts +23 -0
- package/dist/initialization/types.d.mts.map +1 -0
- package/dist/initialization/types.mjs +2 -0
- package/dist/initialization/types.mjs.map +1 -0
- package/dist/types.cjs +3 -0
- package/dist/types.cjs.map +1 -0
- package/dist/types.d.cts +18 -0
- package/dist/types.d.cts.map +1 -0
- package/dist/types.d.mts +18 -0
- package/dist/types.d.mts.map +1 -0
- package/dist/types.mjs +2 -0
- package/dist/types.mjs.map +1 -0
- package/dist/utilities.cjs +20 -0
- package/dist/utilities.cjs.map +1 -0
- package/dist/utilities.d.cts +10 -0
- package/dist/utilities.d.cts.map +1 -0
- package/dist/utilities.d.mts +10 -0
- package/dist/utilities.d.mts.map +1 -0
- package/dist/utilities.mjs +16 -0
- package/dist/utilities.mjs.map +1 -0
- package/package.json +9 -1
package/CHANGELOG.md
CHANGED
package/dist/Wallet.cjs
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
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_isDestroyed;
|
|
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/initialization.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_isDestroyed.set(this, false);
|
|
26
|
+
__classPrivateFieldSet(this, _Wallet_messenger, options.messenger ??
|
|
27
|
+
new messenger_1.Messenger({
|
|
28
|
+
namespace: 'Wallet',
|
|
29
|
+
}), "f");
|
|
30
|
+
__classPrivateFieldSet(this, _Wallet_instances, (0, initialization_1.initialize)({
|
|
31
|
+
options,
|
|
32
|
+
messenger: __classPrivateFieldGet(this, _Wallet_messenger, "f"),
|
|
33
|
+
}), "f");
|
|
34
|
+
__classPrivateFieldSet(this, _Wallet_controllerMetadata, Object.fromEntries(Object.entries(__classPrivateFieldGet(this, _Wallet_instances, "f"))
|
|
35
|
+
.filter(([_, instance]) => (0, utils_1.hasProperty)(instance, 'metadata'))
|
|
36
|
+
.map(([name, instance]) => [name, instance.metadata])), "f");
|
|
37
|
+
}
|
|
38
|
+
get messenger() {
|
|
39
|
+
return __classPrivateFieldGet(this, _Wallet_messenger, "f");
|
|
40
|
+
}
|
|
41
|
+
get state() {
|
|
42
|
+
return Object.entries(__classPrivateFieldGet(this, _Wallet_instances, "f")).reduce((totalState, [name, instance]) => {
|
|
43
|
+
totalState[name] = instance.state ?? null;
|
|
44
|
+
return totalState;
|
|
45
|
+
}, {});
|
|
46
|
+
}
|
|
47
|
+
get controllerMetadata() {
|
|
48
|
+
return __classPrivateFieldGet(this, _Wallet_controllerMetadata, "f");
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Get an instantiated controller or service.
|
|
52
|
+
*
|
|
53
|
+
* @param name - The name.
|
|
54
|
+
* @returns The instance, if it exists.
|
|
55
|
+
* @deprecated - Please use the messenger instead of direct access.
|
|
56
|
+
*/
|
|
57
|
+
getInstance(name) {
|
|
58
|
+
return __classPrivateFieldGet(this, _Wallet_instances, "f")[name];
|
|
59
|
+
}
|
|
60
|
+
async destroy() {
|
|
61
|
+
if (__classPrivateFieldGet(this, _Wallet_isDestroyed, "f")) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
__classPrivateFieldSet(this, _Wallet_isDestroyed, true, "f");
|
|
65
|
+
await Promise.allSettled(Object.values(__classPrivateFieldGet(this, _Wallet_instances, "f")).map(async (instance) => {
|
|
66
|
+
// @ts-expect-error Accessing protected property.
|
|
67
|
+
if (typeof instance.destroy === 'function') {
|
|
68
|
+
// @ts-expect-error Accessing protected property.
|
|
69
|
+
// eslint-disable-next-line @typescript-eslint/await-thenable
|
|
70
|
+
return await instance.destroy();
|
|
71
|
+
}
|
|
72
|
+
/* istanbul ignore next */
|
|
73
|
+
return undefined;
|
|
74
|
+
}));
|
|
75
|
+
this.messenger.publish('Wallet:destroyed');
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.Wallet = Wallet;
|
|
79
|
+
_Wallet_messenger = new WeakMap(), _Wallet_instances = new WeakMap(), _Wallet_controllerMetadata = new WeakMap(), _Wallet_isDestroyed = new WeakMap();
|
|
80
|
+
//# 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,wEAA6D;AAG7D,MAAa,MAAM;IAYjB,YAAY,OAAsB;QAXlC,oEAAoE;QAC3D,oCAAyD;QAEzD,oCAA6B;QAE7B,6CAEP;QAEF,8BAAe,KAAK,EAAC;QAGnB,uBAAA,IAAI,qBACF,OAAO,CAAC,SAAS;YACjB,IAAI,qBAAS,CAAC;gBACZ,SAAS,EAAE,QAAQ;aACpB,CAAC,MAAA,CAAC;QAEL,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;IAUD;;;;;;OAMG;IACH,WAAW,CACT,IAAY;QAEZ,OAAO,uBAAA,IAAI,yBAAW,CAAC,IAA8B,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,uBAAA,IAAI,2BAAa,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,uBAAA,IAAI,uBAAgB,IAAI,MAAA,CAAC;QAEzB,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;AA9FD,wBA8FC","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/defaults';\nimport { initialize } from './initialization/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 #isDestroyed = false;\n\n constructor(options: WalletOptions) {\n this.#messenger =\n options.messenger ??\n 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 getInstance<Name extends keyof DefaultInstances>(\n name: Name,\n ): DefaultInstances[Name];\n\n getInstance(\n name: string,\n ): DefaultInstances[keyof DefaultInstances] | undefined;\n\n /**\n * Get an instantiated controller or service.\n *\n * @param name - The name.\n * @returns The instance, if it exists.\n * @deprecated - Please use the messenger instead of direct access.\n */\n getInstance(\n name: string,\n ): DefaultInstances[keyof DefaultInstances] | undefined {\n return this.#instances[name as keyof DefaultInstances];\n }\n\n async destroy(): Promise<void> {\n if (this.#isDestroyed) {\n return;\n }\n\n this.#isDestroyed = 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,14 @@
|
|
|
1
|
+
import type { StateMetadataConstraint } from "@metamask/base-controller";
|
|
2
|
+
import type { DefaultActions, DefaultEvents, DefaultInstances, DefaultState, RootMessenger } from "./initialization/defaults.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
|
+
getInstance<Name extends keyof DefaultInstances>(name: Name): DefaultInstances[Name];
|
|
11
|
+
getInstance(name: string): DefaultInstances[keyof DefaultInstances] | undefined;
|
|
12
|
+
destroy(): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
//# 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,sCAAkC;AAEnC,OAAO,EAAE,aAAa,EAAE,oBAAgB;AAExC,qBAAa,MAAM;;gBAYL,OAAO,EAAE,aAAa;IAmBlC,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,WAAW,CAAC,IAAI,SAAS,MAAM,gBAAgB,EAC7C,IAAI,EAAE,IAAI,GACT,gBAAgB,CAAC,IAAI,CAAC;IAEzB,WAAW,CACT,IAAI,EAAE,MAAM,GACX,gBAAgB,CAAC,MAAM,gBAAgB,CAAC,GAAG,SAAS;IAejD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAsB/B"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { StateMetadataConstraint } from "@metamask/base-controller";
|
|
2
|
+
import type { DefaultActions, DefaultEvents, DefaultInstances, DefaultState, RootMessenger } from "./initialization/defaults.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
|
+
getInstance<Name extends keyof DefaultInstances>(name: Name): DefaultInstances[Name];
|
|
11
|
+
getInstance(name: string): DefaultInstances[keyof DefaultInstances] | undefined;
|
|
12
|
+
destroy(): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
//# 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,sCAAkC;AAEnC,OAAO,EAAE,aAAa,EAAE,oBAAgB;AAExC,qBAAa,MAAM;;gBAYL,OAAO,EAAE,aAAa;IAmBlC,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,WAAW,CAAC,IAAI,SAAS,MAAM,gBAAgB,EAC7C,IAAI,EAAE,IAAI,GACT,gBAAgB,CAAC,IAAI,CAAC;IAEzB,WAAW,CACT,IAAI,EAAE,MAAM,GACX,gBAAgB,CAAC,MAAM,gBAAgB,CAAC,GAAG,SAAS;IAejD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAsB/B"}
|
package/dist/Wallet.mjs
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
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_isDestroyed;
|
|
13
|
+
import { Messenger } from "@metamask/messenger";
|
|
14
|
+
import { hasProperty } from "@metamask/utils";
|
|
15
|
+
import { initialize } from "./initialization/initialization.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_isDestroyed.set(this, false);
|
|
23
|
+
__classPrivateFieldSet(this, _Wallet_messenger, options.messenger ??
|
|
24
|
+
new Messenger({
|
|
25
|
+
namespace: 'Wallet',
|
|
26
|
+
}), "f");
|
|
27
|
+
__classPrivateFieldSet(this, _Wallet_instances, initialize({
|
|
28
|
+
options,
|
|
29
|
+
messenger: __classPrivateFieldGet(this, _Wallet_messenger, "f"),
|
|
30
|
+
}), "f");
|
|
31
|
+
__classPrivateFieldSet(this, _Wallet_controllerMetadata, Object.fromEntries(Object.entries(__classPrivateFieldGet(this, _Wallet_instances, "f"))
|
|
32
|
+
.filter(([_, instance]) => hasProperty(instance, 'metadata'))
|
|
33
|
+
.map(([name, instance]) => [name, instance.metadata])), "f");
|
|
34
|
+
}
|
|
35
|
+
get messenger() {
|
|
36
|
+
return __classPrivateFieldGet(this, _Wallet_messenger, "f");
|
|
37
|
+
}
|
|
38
|
+
get state() {
|
|
39
|
+
return Object.entries(__classPrivateFieldGet(this, _Wallet_instances, "f")).reduce((totalState, [name, instance]) => {
|
|
40
|
+
totalState[name] = instance.state ?? null;
|
|
41
|
+
return totalState;
|
|
42
|
+
}, {});
|
|
43
|
+
}
|
|
44
|
+
get controllerMetadata() {
|
|
45
|
+
return __classPrivateFieldGet(this, _Wallet_controllerMetadata, "f");
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get an instantiated controller or service.
|
|
49
|
+
*
|
|
50
|
+
* @param name - The name.
|
|
51
|
+
* @returns The instance, if it exists.
|
|
52
|
+
* @deprecated - Please use the messenger instead of direct access.
|
|
53
|
+
*/
|
|
54
|
+
getInstance(name) {
|
|
55
|
+
return __classPrivateFieldGet(this, _Wallet_instances, "f")[name];
|
|
56
|
+
}
|
|
57
|
+
async destroy() {
|
|
58
|
+
if (__classPrivateFieldGet(this, _Wallet_isDestroyed, "f")) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
__classPrivateFieldSet(this, _Wallet_isDestroyed, true, "f");
|
|
62
|
+
await Promise.allSettled(Object.values(__classPrivateFieldGet(this, _Wallet_instances, "f")).map(async (instance) => {
|
|
63
|
+
// @ts-expect-error Accessing protected property.
|
|
64
|
+
if (typeof instance.destroy === 'function') {
|
|
65
|
+
// @ts-expect-error Accessing protected property.
|
|
66
|
+
// eslint-disable-next-line @typescript-eslint/await-thenable
|
|
67
|
+
return await instance.destroy();
|
|
68
|
+
}
|
|
69
|
+
/* istanbul ignore next */
|
|
70
|
+
return undefined;
|
|
71
|
+
}));
|
|
72
|
+
this.messenger.publish('Wallet:destroyed');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
_Wallet_messenger = new WeakMap(), _Wallet_instances = new WeakMap(), _Wallet_controllerMetadata = new WeakMap(), _Wallet_isDestroyed = new WeakMap();
|
|
76
|
+
//# 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,4CAAwC;AAG7D,MAAM,OAAO,MAAM;IAYjB,YAAY,OAAsB;QAXlC,oEAAoE;QAC3D,oCAAyD;QAEzD,oCAA6B;QAE7B,6CAEP;QAEF,8BAAe,KAAK,EAAC;QAGnB,uBAAA,IAAI,qBACF,OAAO,CAAC,SAAS;YACjB,IAAI,SAAS,CAAC;gBACZ,SAAS,EAAE,QAAQ;aACpB,CAAC,MAAA,CAAC;QAEL,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;IAUD;;;;;;OAMG;IACH,WAAW,CACT,IAAY;QAEZ,OAAO,uBAAA,IAAI,yBAAW,CAAC,IAA8B,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,uBAAA,IAAI,2BAAa,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,uBAAA,IAAI,uBAAgB,IAAI,MAAA,CAAC;QAEzB,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/defaults';\nimport { initialize } from './initialization/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 #isDestroyed = false;\n\n constructor(options: WalletOptions) {\n this.#messenger =\n options.messenger ??\n 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 getInstance<Name extends keyof DefaultInstances>(\n name: Name,\n ): DefaultInstances[Name];\n\n getInstance(\n name: string,\n ): DefaultInstances[keyof DefaultInstances] | undefined;\n\n /**\n * Get an instantiated controller or service.\n *\n * @param name - The name.\n * @returns The instance, if it exists.\n * @deprecated - Please use the messenger instead of direct access.\n */\n getInstance(\n name: string,\n ): DefaultInstances[keyof DefaultInstances] | undefined {\n return this.#instances[name as keyof DefaultInstances];\n }\n\n async destroy(): Promise<void> {\n if (this.#isDestroyed) {\n return;\n }\n\n this.#isDestroyed = 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
|
-
|
|
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
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
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 DefaultInstances,\n RootMessenger,\n WalletDestroyedEvent,\n} from './initialization/defaults';\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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, DefaultInstances, RootMessenger, WalletDestroyedEvent, } from "./initialization/defaults.cjs";
|
|
8
4
|
//# sourceMappingURL=index.d.cts.map
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
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,gBAAgB,EAChB,aAAa,EACb,oBAAoB,GACrB,sCAAkC"}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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, DefaultInstances, RootMessenger, WalletDestroyedEvent, } from "./initialization/defaults.mjs";
|
|
8
4
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
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,gBAAgB,EAChB,aAAa,EACb,oBAAoB,GACrB,sCAAkC"}
|
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
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
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 DefaultInstances,\n RootMessenger,\n WalletDestroyedEvent,\n} from './initialization/defaults';\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,\n AllowedEvents extends 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, AllowedEvents extends 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,EACvC,aAAa,SAAS,eAAe,IACnC,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, AllowedEvents extends 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,EACvC,aAAa,SAAS,eAAe,IACnC,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 @@
|
|
|
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,\n AllowedEvents extends EventConstraint,\n> = Messenger<'Wallet', AllowedActions, AllowedEvents>;\n\nexport type DefaultState = {\n [Key in keyof DefaultInstances]: InstanceState<DefaultInstances[Key]>;\n};\n"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
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.getMessenger(messenger);
|
|
14
|
+
const camelCaseName = `${name.charAt(0).toLowerCase()}${name.slice(1)}`;
|
|
15
|
+
const instance = config.init({
|
|
16
|
+
// TODO: Consider whether this can be improved
|
|
17
|
+
state: instanceState,
|
|
18
|
+
messenger: instanceMessenger,
|
|
19
|
+
options: options.instanceOptions?.[camelCaseName] ?? {},
|
|
20
|
+
});
|
|
21
|
+
instances[name] = instance;
|
|
22
|
+
}
|
|
23
|
+
return instances;
|
|
24
|
+
}
|
|
25
|
+
exports.initialize = initialize;
|
|
26
|
+
//# sourceMappingURL=initialization.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initialization.cjs","sourceRoot":"","sources":["../../src/initialization/initialization.ts"],"names":[],"mappings":";;;AAMA,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,YAAY,CAAC,SAAS,CAAC,CAAC;QAEzD,MAAM,aAAa,GACjB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAmC,CAAC;QAErF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;YAC3B,8CAA8C;YAC9C,KAAK,EAAE,aAAsB;YAC7B,SAAS,EAAE,iBAAiB;YAC5B,OAAO,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE;SACxD,CAAC,CAAC;QAEH,SAAS,CAAC,IAAI,CAAC,GAAG,QAAmC,CAAC;IACxD,CAAC;IAED,OAAO,SAA6B,CAAC;AACvC,CAAC;AAvCD,gCAuCC","sourcesContent":["import type { InstanceSpecificOptions, WalletOptions } from '../types';\nimport type {\n DefaultActions,\n DefaultEvents,\n DefaultInstances,\n} from './defaults';\nimport { defaultConfigurations, RootMessenger } from './defaults';\n\nexport type InitializeArgs = {\n options: WalletOptions;\n messenger: RootMessenger<DefaultActions, DefaultEvents>;\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.getMessenger(messenger);\n\n const camelCaseName =\n `${name.charAt(0).toLowerCase()}${name.slice(1)}` as keyof InstanceSpecificOptions;\n\n const instance = config.init({\n // TODO: Consider whether this can be improved\n state: instanceState as never,\n messenger: instanceMessenger,\n options: options.instanceOptions?.[camelCaseName] ?? {},\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 { DefaultActions, DefaultEvents, DefaultInstances } from "./defaults.cjs";
|
|
3
|
+
import { RootMessenger } from "./defaults.cjs";
|
|
4
|
+
export type InitializeArgs = {
|
|
5
|
+
options: WalletOptions;
|
|
6
|
+
messenger: RootMessenger<DefaultActions, DefaultEvents>;
|
|
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,EACV,cAAc,EACd,aAAa,EACb,gBAAgB,EACjB,uBAAmB;AACpB,OAAO,EAAyB,aAAa,EAAE,uBAAmB;AAElE,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE,aAAa,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;CACzD,CAAC;AAEF,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,SAAS,GACV,EAAE,cAAc,GAAG,gBAAgB,CAoCnC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { WalletOptions } from "../types.mjs";
|
|
2
|
+
import type { DefaultActions, DefaultEvents, DefaultInstances } from "./defaults.mjs";
|
|
3
|
+
import { RootMessenger } from "./defaults.mjs";
|
|
4
|
+
export type InitializeArgs = {
|
|
5
|
+
options: WalletOptions;
|
|
6
|
+
messenger: RootMessenger<DefaultActions, DefaultEvents>;
|
|
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,EACV,cAAc,EACd,aAAa,EACb,gBAAgB,EACjB,uBAAmB;AACpB,OAAO,EAAyB,aAAa,EAAE,uBAAmB;AAElE,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE,aAAa,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;CACzD,CAAC;AAEF,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,SAAS,GACV,EAAE,cAAc,GAAG,gBAAgB,CAoCnC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
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.getMessenger(messenger);
|
|
11
|
+
const camelCaseName = `${name.charAt(0).toLowerCase()}${name.slice(1)}`;
|
|
12
|
+
const instance = config.init({
|
|
13
|
+
// TODO: Consider whether this can be improved
|
|
14
|
+
state: instanceState,
|
|
15
|
+
messenger: instanceMessenger,
|
|
16
|
+
options: options.instanceOptions?.[camelCaseName] ?? {},
|
|
17
|
+
});
|
|
18
|
+
instances[name] = instance;
|
|
19
|
+
}
|
|
20
|
+
return instances;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=initialization.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initialization.mjs","sourceRoot":"","sources":["../../src/initialization/initialization.ts"],"names":[],"mappings":"AAMA,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,YAAY,CAAC,SAAS,CAAC,CAAC;QAEzD,MAAM,aAAa,GACjB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAmC,CAAC;QAErF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;YAC3B,8CAA8C;YAC9C,KAAK,EAAE,aAAsB;YAC7B,SAAS,EAAE,iBAAiB;YAC5B,OAAO,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE;SACxD,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 {\n DefaultActions,\n DefaultEvents,\n DefaultInstances,\n} from './defaults';\nimport { defaultConfigurations, RootMessenger } from './defaults';\n\nexport type InitializeArgs = {\n options: WalletOptions;\n messenger: RootMessenger<DefaultActions, DefaultEvents>;\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.getMessenger(messenger);\n\n const camelCaseName =\n `${name.charAt(0).toLowerCase()}${name.slice(1)}` as keyof InstanceSpecificOptions;\n\n const instance = config.init({\n // TODO: Consider whether this can be improved\n state: instanceState as never,\n messenger: instanceMessenger,\n options: options.instanceOptions?.[camelCaseName] ?? {},\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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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
|
+
getMessenger: (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;AAaU,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,CAAC,OAAO,CAAC,SAAS,IAAI,gBAAgB,CAAC,MAAO,CAAC,CAEzD;KACF,CAAC;IACJ,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CACvB,IAAI,qBAAS,CAAC;QACZ,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\ntype MobileEncryptionKey = {\n key: string;\n lib: string;\n exportable: boolean;\n keyMetadata: KeyDerivationOptions;\n};\n\nexport type GenericEncryptor =\n | Encryptor<EncryptionKey | CryptoKey>\n | Encryptor<MobileEncryptionKey>;\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)) as Encryptor<\n EncryptionKey | CryptoKey\n >,\n }),\n getMessenger: (parent) =>\n new Messenger({\n namespace: 'KeyringController',\n parent,\n }),\n};\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { EncryptionKey, KeyDerivationOptions } from "@metamask/browser-passworder";
|
|
2
|
+
import type { Encryptor } from "@metamask/keyring-controller";
|
|
3
|
+
import { KeyringController, KeyringControllerMessenger } from "@metamask/keyring-controller";
|
|
4
|
+
import { InitializationConfiguration } from "../types.cjs";
|
|
5
|
+
type MobileEncryptionKey = {
|
|
6
|
+
key: string;
|
|
7
|
+
lib: string;
|
|
8
|
+
exportable: boolean;
|
|
9
|
+
keyMetadata: KeyDerivationOptions;
|
|
10
|
+
};
|
|
11
|
+
export type GenericEncryptor = Encryptor<EncryptionKey | CryptoKey> | Encryptor<MobileEncryptionKey>;
|
|
12
|
+
export declare const keyringController: InitializationConfiguration<KeyringController, KeyringControllerMessenger>;
|
|
13
|
+
export {};
|
|
14
|
+
//# 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":"AAAA,OAAO,KAAK,EAEV,aAAa,EACb,oBAAoB,EACrB,qCAAqC;AActC,OAAO,KAAK,EAAE,SAAS,EAAE,qCAAqC;AAC9D,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC3B,qCAAqC;AAGtC,OAAO,EAAE,2BAA2B,EAAE,qBAAiB;AAmHvD,KAAK,mBAAmB,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,oBAAoB,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GACxB,SAAS,CAAC,aAAa,GAAG,SAAS,CAAC,GACpC,SAAS,CAAC,mBAAmB,CAAC,CAAC;AAEnC,eAAO,MAAM,iBAAiB,EAAE,2BAA2B,CACzD,iBAAiB,EACjB,0BAA0B,CAiB3B,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { EncryptionKey, KeyDerivationOptions } from "@metamask/browser-passworder";
|
|
2
|
+
import type { Encryptor } from "@metamask/keyring-controller";
|
|
3
|
+
import { KeyringController, KeyringControllerMessenger } from "@metamask/keyring-controller";
|
|
4
|
+
import { InitializationConfiguration } from "../types.mjs";
|
|
5
|
+
type MobileEncryptionKey = {
|
|
6
|
+
key: string;
|
|
7
|
+
lib: string;
|
|
8
|
+
exportable: boolean;
|
|
9
|
+
keyMetadata: KeyDerivationOptions;
|
|
10
|
+
};
|
|
11
|
+
export type GenericEncryptor = Encryptor<EncryptionKey | CryptoKey> | Encryptor<MobileEncryptionKey>;
|
|
12
|
+
export declare const keyringController: InitializationConfiguration<KeyringController, KeyringControllerMessenger>;
|
|
13
|
+
export {};
|
|
14
|
+
//# 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":"AAAA,OAAO,KAAK,EAEV,aAAa,EACb,oBAAoB,EACrB,qCAAqC;AActC,OAAO,KAAK,EAAE,SAAS,EAAE,qCAAqC;AAC9D,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC3B,qCAAqC;AAGtC,OAAO,EAAE,2BAA2B,EAAE,qBAAiB;AAmHvD,KAAK,mBAAmB,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,oBAAoB,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GACxB,SAAS,CAAC,aAAa,GAAG,SAAS,CAAC,GACpC,SAAS,CAAC,mBAAmB,CAAC,CAAC;AAEnC,eAAO,MAAM,iBAAiB,EAAE,2BAA2B,CACzD,iBAAiB,EACjB,0BAA0B,CAiB3B,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
|
+
getMessenger: (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;AAaH,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,CAAC,OAAO,CAAC,SAAS,IAAI,gBAAgB,CAAC,MAAO,CAAC,CAEzD;KACF,CAAC;IACJ,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CACvB,IAAI,SAAS,CAAC;QACZ,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\ntype MobileEncryptionKey = {\n key: string;\n lib: string;\n exportable: boolean;\n keyMetadata: KeyDerivationOptions;\n};\n\nexport type GenericEncryptor =\n | Encryptor<EncryptionKey | CryptoKey>\n | Encryptor<MobileEncryptionKey>;\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)) as Encryptor<\n EncryptionKey | CryptoKey\n >,\n }),\n getMessenger: (parent) =>\n new Messenger({\n namespace: 'KeyringController',\n parent,\n }),\n};\n"]}
|
|
@@ -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 { DefaultActions, DefaultEvents, RootMessenger } from './defaults';\n\nexport type InstanceState<Instance> = Instance extends { state: unknown }\n ? Instance['state']\n : undefined;\n\ntype InstanceName<Instance> = Instance extends {\n name: infer Name extends string;\n}\n ? Name\n : string;\n\ntype LowerCaseFirstLetter<Name extends string> =\n Name extends `${infer Character1}${infer Rest}`\n ? `${Lowercase<Character1>}${Rest}`\n : Lowercase<Name>;\n\ntype CamelCaseInstanceName<Instance> = LowerCaseFirstLetter<\n InstanceName<Instance>\n>;\n\ntype InstanceOptions<Instance> =\n CamelCaseInstanceName<Instance> extends keyof InstanceSpecificOptions\n ? NonNullable<InstanceSpecificOptions[CamelCaseInstanceName<Instance>]>\n : unknown;\n\nexport type InitFunctionArguments<Instance, InstanceMessenger> = {\n state: InstanceState<Instance> | undefined;\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 getMessenger(\n parent: RootMessenger<DefaultActions, DefaultEvents>,\n ): InstanceMessenger;\n};\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { InstanceSpecificOptions } from "../types.cjs";
|
|
2
|
+
import type { DefaultActions, DefaultEvents, RootMessenger } from "./defaults.cjs";
|
|
3
|
+
export type InstanceState<Instance> = Instance extends {
|
|
4
|
+
state: unknown;
|
|
5
|
+
} ? Instance['state'] : undefined;
|
|
6
|
+
type InstanceName<Instance> = Instance extends {
|
|
7
|
+
name: infer Name extends string;
|
|
8
|
+
} ? Name : string;
|
|
9
|
+
type LowerCaseFirstLetter<Name extends string> = Name extends `${infer Character1}${infer Rest}` ? `${Lowercase<Character1>}${Rest}` : Lowercase<Name>;
|
|
10
|
+
type CamelCaseInstanceName<Instance> = LowerCaseFirstLetter<InstanceName<Instance>>;
|
|
11
|
+
type InstanceOptions<Instance> = CamelCaseInstanceName<Instance> extends keyof InstanceSpecificOptions ? NonNullable<InstanceSpecificOptions[CamelCaseInstanceName<Instance>]> : unknown;
|
|
12
|
+
export type InitFunctionArguments<Instance, InstanceMessenger> = {
|
|
13
|
+
state: InstanceState<Instance> | undefined;
|
|
14
|
+
messenger: InstanceMessenger;
|
|
15
|
+
options: InstanceOptions<Instance>;
|
|
16
|
+
};
|
|
17
|
+
export type InitializationConfiguration<Instance, InstanceMessenger> = {
|
|
18
|
+
name: InstanceName<Instance>;
|
|
19
|
+
init(args: InitFunctionArguments<Instance, InstanceMessenger>): Instance;
|
|
20
|
+
getMessenger(parent: RootMessenger<DefaultActions, DefaultEvents>): InstanceMessenger;
|
|
21
|
+
};
|
|
22
|
+
export {};
|
|
23
|
+
//# 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,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,uBAAmB;AAE/E,MAAM,MAAM,aAAa,CAAC,QAAQ,IAAI,QAAQ,SAAS;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,GACrE,QAAQ,CAAC,OAAO,CAAC,GACjB,SAAS,CAAC;AAEd,KAAK,YAAY,CAAC,QAAQ,IAAI,QAAQ,SAAS;IAC7C,IAAI,EAAE,MAAM,IAAI,SAAS,MAAM,CAAC;CACjC,GACG,IAAI,GACJ,MAAM,CAAC;AAEX,KAAK,oBAAoB,CAAC,IAAI,SAAS,MAAM,IAC3C,IAAI,SAAS,GAAG,MAAM,UAAU,GAAG,MAAM,IAAI,EAAE,GAC3C,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,IAAI,EAAE,GACjC,SAAS,CAAC,IAAI,CAAC,CAAC;AAEtB,KAAK,qBAAqB,CAAC,QAAQ,IAAI,oBAAoB,CACzD,YAAY,CAAC,QAAQ,CAAC,CACvB,CAAC;AAEF,KAAK,eAAe,CAAC,QAAQ,IAC3B,qBAAqB,CAAC,QAAQ,CAAC,SAAS,MAAM,uBAAuB,GACjE,WAAW,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,GACrE,OAAO,CAAC;AAEd,MAAM,MAAM,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,IAAI;IAC/D,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IAC3C,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,YAAY,CACV,MAAM,EAAE,aAAa,CAAC,cAAc,EAAE,aAAa,CAAC,GACnD,iBAAiB,CAAC;CACtB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { InstanceSpecificOptions } from "../types.mjs";
|
|
2
|
+
import type { DefaultActions, DefaultEvents, RootMessenger } from "./defaults.mjs";
|
|
3
|
+
export type InstanceState<Instance> = Instance extends {
|
|
4
|
+
state: unknown;
|
|
5
|
+
} ? Instance['state'] : undefined;
|
|
6
|
+
type InstanceName<Instance> = Instance extends {
|
|
7
|
+
name: infer Name extends string;
|
|
8
|
+
} ? Name : string;
|
|
9
|
+
type LowerCaseFirstLetter<Name extends string> = Name extends `${infer Character1}${infer Rest}` ? `${Lowercase<Character1>}${Rest}` : Lowercase<Name>;
|
|
10
|
+
type CamelCaseInstanceName<Instance> = LowerCaseFirstLetter<InstanceName<Instance>>;
|
|
11
|
+
type InstanceOptions<Instance> = CamelCaseInstanceName<Instance> extends keyof InstanceSpecificOptions ? NonNullable<InstanceSpecificOptions[CamelCaseInstanceName<Instance>]> : unknown;
|
|
12
|
+
export type InitFunctionArguments<Instance, InstanceMessenger> = {
|
|
13
|
+
state: InstanceState<Instance> | undefined;
|
|
14
|
+
messenger: InstanceMessenger;
|
|
15
|
+
options: InstanceOptions<Instance>;
|
|
16
|
+
};
|
|
17
|
+
export type InitializationConfiguration<Instance, InstanceMessenger> = {
|
|
18
|
+
name: InstanceName<Instance>;
|
|
19
|
+
init(args: InitFunctionArguments<Instance, InstanceMessenger>): Instance;
|
|
20
|
+
getMessenger(parent: RootMessenger<DefaultActions, DefaultEvents>): InstanceMessenger;
|
|
21
|
+
};
|
|
22
|
+
export {};
|
|
23
|
+
//# 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,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,uBAAmB;AAE/E,MAAM,MAAM,aAAa,CAAC,QAAQ,IAAI,QAAQ,SAAS;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,GACrE,QAAQ,CAAC,OAAO,CAAC,GACjB,SAAS,CAAC;AAEd,KAAK,YAAY,CAAC,QAAQ,IAAI,QAAQ,SAAS;IAC7C,IAAI,EAAE,MAAM,IAAI,SAAS,MAAM,CAAC;CACjC,GACG,IAAI,GACJ,MAAM,CAAC;AAEX,KAAK,oBAAoB,CAAC,IAAI,SAAS,MAAM,IAC3C,IAAI,SAAS,GAAG,MAAM,UAAU,GAAG,MAAM,IAAI,EAAE,GAC3C,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,IAAI,EAAE,GACjC,SAAS,CAAC,IAAI,CAAC,CAAC;AAEtB,KAAK,qBAAqB,CAAC,QAAQ,IAAI,oBAAoB,CACzD,YAAY,CAAC,QAAQ,CAAC,CACvB,CAAC;AAEF,KAAK,eAAe,CAAC,QAAQ,IAC3B,qBAAqB,CAAC,QAAQ,CAAC,SAAS,MAAM,uBAAuB,GACjE,WAAW,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,GACrE,OAAO,CAAC;AAEd,MAAM,MAAM,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,IAAI;IAC/D,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IAC3C,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,YAAY,CACV,MAAM,EAAE,aAAa,CAAC,cAAc,EAAE,aAAa,CAAC,GACnD,iBAAiB,CAAC;CACtB,CAAC"}
|
|
@@ -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 { DefaultActions, DefaultEvents, RootMessenger } from './defaults';\n\nexport type InstanceState<Instance> = Instance extends { state: unknown }\n ? Instance['state']\n : undefined;\n\ntype InstanceName<Instance> = Instance extends {\n name: infer Name extends string;\n}\n ? Name\n : string;\n\ntype LowerCaseFirstLetter<Name extends string> =\n Name extends `${infer Character1}${infer Rest}`\n ? `${Lowercase<Character1>}${Rest}`\n : Lowercase<Name>;\n\ntype CamelCaseInstanceName<Instance> = LowerCaseFirstLetter<\n InstanceName<Instance>\n>;\n\ntype InstanceOptions<Instance> =\n CamelCaseInstanceName<Instance> extends keyof InstanceSpecificOptions\n ? NonNullable<InstanceSpecificOptions[CamelCaseInstanceName<Instance>]>\n : unknown;\n\nexport type InitFunctionArguments<Instance, InstanceMessenger> = {\n state: InstanceState<Instance> | undefined;\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 getMessenger(\n parent: RootMessenger<DefaultActions, DefaultEvents>,\n ): InstanceMessenger;\n};\n"]}
|
package/dist/types.cjs
ADDED
|
@@ -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 {\n DefaultActions,\n DefaultEvents,\n RootMessenger,\n} from './initialization/defaults';\nimport { GenericEncryptor } from './initialization/instances/keyring-controller';\nimport { InitializationConfiguration } from './initialization/types';\n\nexport type WalletOptions = {\n messenger?: RootMessenger<DefaultActions, DefaultEvents>;\n state?: Record<string, Record<string, Json> | undefined>;\n initializationConfigurations?: InitializationConfiguration<\n unknown,\n unknown\n >[];\n instanceOptions?: InstanceSpecificOptions;\n};\n\nexport type InstanceSpecificOptions = {\n keyringController?: {\n encryptor?: GenericEncryptor;\n keyringBuilders?: KeyringControllerOptions['keyringBuilders'];\n };\n};\n"]}
|
package/dist/types.d.cts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { KeyringControllerOptions } from "@metamask/keyring-controller";
|
|
2
|
+
import type { Json } from "@metamask/utils";
|
|
3
|
+
import type { DefaultActions, DefaultEvents, RootMessenger } from "./initialization/defaults.cjs";
|
|
4
|
+
import { GenericEncryptor } from "./initialization/instances/keyring-controller.cjs";
|
|
5
|
+
import { InitializationConfiguration } from "./initialization/types.cjs";
|
|
6
|
+
export type WalletOptions = {
|
|
7
|
+
messenger?: RootMessenger<DefaultActions, DefaultEvents>;
|
|
8
|
+
state?: Record<string, Record<string, Json> | undefined>;
|
|
9
|
+
initializationConfigurations?: InitializationConfiguration<unknown, unknown>[];
|
|
10
|
+
instanceOptions?: InstanceSpecificOptions;
|
|
11
|
+
};
|
|
12
|
+
export type InstanceSpecificOptions = {
|
|
13
|
+
keyringController?: {
|
|
14
|
+
encryptor?: GenericEncryptor;
|
|
15
|
+
keyringBuilders?: KeyringControllerOptions['keyringBuilders'];
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
//# 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,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACd,sCAAkC;AACnC,OAAO,EAAE,gBAAgB,EAAE,0DAAsD;AACjF,OAAO,EAAE,2BAA2B,EAAE,mCAA+B;AAErE,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,CAAC,EAAE,aAAa,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;IACzD,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;QAClB,SAAS,CAAC,EAAE,gBAAgB,CAAC;QAC7B,eAAe,CAAC,EAAE,wBAAwB,CAAC,iBAAiB,CAAC,CAAC;KAC/D,CAAC;CACH,CAAC"}
|
package/dist/types.d.mts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { KeyringControllerOptions } from "@metamask/keyring-controller";
|
|
2
|
+
import type { Json } from "@metamask/utils";
|
|
3
|
+
import type { DefaultActions, DefaultEvents, RootMessenger } from "./initialization/defaults.mjs";
|
|
4
|
+
import { GenericEncryptor } from "./initialization/instances/keyring-controller.mjs";
|
|
5
|
+
import { InitializationConfiguration } from "./initialization/types.mjs";
|
|
6
|
+
export type WalletOptions = {
|
|
7
|
+
messenger?: RootMessenger<DefaultActions, DefaultEvents>;
|
|
8
|
+
state?: Record<string, Record<string, Json> | undefined>;
|
|
9
|
+
initializationConfigurations?: InitializationConfiguration<unknown, unknown>[];
|
|
10
|
+
instanceOptions?: InstanceSpecificOptions;
|
|
11
|
+
};
|
|
12
|
+
export type InstanceSpecificOptions = {
|
|
13
|
+
keyringController?: {
|
|
14
|
+
encryptor?: GenericEncryptor;
|
|
15
|
+
keyringBuilders?: KeyringControllerOptions['keyringBuilders'];
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
//# 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,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACd,sCAAkC;AACnC,OAAO,EAAE,gBAAgB,EAAE,0DAAsD;AACjF,OAAO,EAAE,2BAA2B,EAAE,mCAA+B;AAErE,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,CAAC,EAAE,aAAa,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;IACzD,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;QAClB,SAAS,CAAC,EAAE,gBAAgB,CAAC;QAC7B,eAAe,CAAC,EAAE,wBAAwB,CAAC,iBAAiB,CAAC,CAAC;KAC/D,CAAC;CACH,CAAC"}
|
package/dist/types.mjs
ADDED
|
@@ -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 {\n DefaultActions,\n DefaultEvents,\n RootMessenger,\n} from './initialization/defaults';\nimport { GenericEncryptor } from './initialization/instances/keyring-controller';\nimport { InitializationConfiguration } from './initialization/types';\n\nexport type WalletOptions = {\n messenger?: RootMessenger<DefaultActions, DefaultEvents>;\n state?: Record<string, Record<string, Json> | undefined>;\n initializationConfigurations?: InitializationConfiguration<\n unknown,\n unknown\n >[];\n instanceOptions?: InstanceSpecificOptions;\n};\n\nexport type InstanceSpecificOptions = {\n keyringController?: {\n encryptor?: GenericEncryptor;\n keyringBuilders?: KeyringControllerOptions['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-
|
|
3
|
+
"version": "0.0.0-preview-1d367b049",
|
|
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",
|