@metamask-previews/multichain-account-controller 0.0.0-preview-a3f523c0 → 0.0.0-preview-0e455278
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/dist/providers/EvmAccountProvider.cjs +13 -5
- package/dist/providers/EvmAccountProvider.cjs.map +1 -1
- package/dist/providers/EvmAccountProvider.d.cts.map +1 -1
- package/dist/providers/EvmAccountProvider.d.mts.map +1 -1
- package/dist/providers/EvmAccountProvider.mjs +13 -5
- package/dist/providers/EvmAccountProvider.mjs.map +1 -1
- package/dist/providers/SolAccountProvider.cjs +40 -6
- package/dist/providers/SolAccountProvider.cjs.map +1 -1
- package/dist/providers/SolAccountProvider.d.cts.map +1 -1
- package/dist/providers/SolAccountProvider.d.mts.map +1 -1
- package/dist/providers/SolAccountProvider.mjs +40 -6
- package/dist/providers/SolAccountProvider.mjs.map +1 -1
- package/dist/tests/accounts.cjs +170 -0
- package/dist/tests/accounts.cjs.map +1 -0
- package/dist/tests/accounts.d.cts +74 -0
- package/dist/tests/accounts.d.cts.map +1 -0
- package/dist/tests/accounts.d.mts +74 -0
- package/dist/tests/accounts.d.mts.map +1 -0
- package/dist/tests/accounts.mjs +166 -0
- package/dist/tests/accounts.mjs.map +1 -0
- package/dist/tests/index.cjs +19 -0
- package/dist/tests/index.cjs.map +1 -0
- package/dist/tests/index.d.cts +3 -0
- package/dist/tests/index.d.cts.map +1 -0
- package/dist/tests/index.d.mts +3 -0
- package/dist/tests/index.d.mts.map +1 -0
- package/dist/tests/index.mjs +3 -0
- package/dist/tests/index.mjs.map +1 -0
- package/dist/tests/messenger.cjs +34 -0
- package/dist/tests/messenger.cjs.map +1 -0
- package/dist/tests/messenger.d.cts +16 -0
- package/dist/tests/messenger.d.cts.map +1 -0
- package/dist/tests/messenger.d.mts +16 -0
- package/dist/tests/messenger.d.mts.map +1 -0
- package/dist/tests/messenger.mjs +29 -0
- package/dist/tests/messenger.mjs.map +1 -0
- package/package.json +17 -10
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"accounts.cjs","sourceRoot":"","sources":["../../src/tests/accounts.ts"],"names":[],"mappings":"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","sourcesContent":["import type { EntropySourceId, KeyringAccount } from '@metamask/keyring-api';\nimport {\n EthAccountType,\n EthMethod,\n EthScope,\n SolAccountType,\n SolMethod,\n SolScope,\n} from '@metamask/keyring-api';\nimport { KeyringTypes } from '@metamask/keyring-controller';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\nimport { v4 as uuid } from 'uuid';\n\nconst ETH_EOA_METHODS = [\n EthMethod.PersonalSign,\n EthMethod.Sign,\n EthMethod.SignTransaction,\n EthMethod.SignTypedDataV1,\n EthMethod.SignTypedDataV3,\n EthMethod.SignTypedDataV4,\n] as const;\n\nconst SOL_METHODS = Object.values(SolMethod);\n\nexport const MOCK_SNAP_1 = {\n id: 'local:mock-snap-id-1',\n name: 'Mock Snap 1',\n enabled: true,\n manifest: {\n proposedName: 'Mock Snap 1',\n },\n};\n\nexport const MOCK_SNAP_2 = {\n id: 'local:mock-snap-id-2',\n name: 'Mock Snap 2',\n enabled: true,\n manifest: {\n proposedName: 'Mock Snap 2',\n },\n};\n\nexport const MOCK_ENTROPY_SOURCE_1 = 'mock-keyring-id-1';\nexport const MOCK_ENTROPY_SOURCE_2 = 'mock-keyring-id-2';\n\nexport const MOCK_HD_KEYRING_1 = {\n type: KeyringTypes.hd,\n metadata: { id: MOCK_ENTROPY_SOURCE_1, name: 'HD Keyring 1' },\n accounts: ['0x123'],\n};\n\nexport const MOCK_HD_KEYRING_2 = {\n type: KeyringTypes.hd,\n metadata: { id: MOCK_ENTROPY_SOURCE_2, name: 'HD Keyring 2' },\n accounts: ['0x456'],\n};\n\nexport const MOCK_HD_ACCOUNT_1: InternalAccount = {\n id: 'mock-id-1',\n address: '0x123',\n options: {\n entropySource: MOCK_HD_KEYRING_1.metadata.id,\n index: 0,\n },\n methods: [...ETH_EOA_METHODS],\n type: EthAccountType.Eoa,\n scopes: [EthScope.Eoa],\n metadata: {\n name: 'Account 1',\n keyring: { type: KeyringTypes.hd },\n importTime: 0,\n lastSelected: 0,\n nameLastUpdatedAt: 0,\n },\n};\n\nexport const MOCK_HD_ACCOUNT_2: InternalAccount = {\n id: 'mock-id-2',\n address: '0x456',\n options: {\n entropySource: MOCK_HD_KEYRING_2.metadata.id,\n index: 0,\n },\n methods: [...ETH_EOA_METHODS],\n type: EthAccountType.Eoa,\n scopes: [EthScope.Eoa],\n metadata: {\n name: 'Account 2',\n keyring: { type: KeyringTypes.hd },\n importTime: 0,\n lastSelected: 0,\n nameLastUpdatedAt: 0,\n },\n};\n\nexport const MOCK_SNAP_ACCOUNT_1: InternalAccount = {\n id: 'mock-snap-id-1',\n address: 'aabbccdd',\n options: {\n entropySource: MOCK_HD_KEYRING_2.metadata.id,\n index: 0,\n }, // Note: shares entropy with MOCK_HD_ACCOUNT_2\n methods: SOL_METHODS,\n type: SolAccountType.DataAccount,\n scopes: [SolScope.Mainnet],\n metadata: {\n name: 'Snap Account 1',\n keyring: { type: KeyringTypes.snap },\n snap: MOCK_SNAP_1,\n importTime: 0,\n lastSelected: 0,\n },\n};\n\nexport const MOCK_SNAP_ACCOUNT_2: InternalAccount = {\n id: 'mock-snap-id-2',\n address: '0x789',\n options: {},\n methods: [...ETH_EOA_METHODS],\n type: EthAccountType.Eoa,\n scopes: [EthScope.Eoa],\n metadata: {\n name: 'Snap Acc 2',\n keyring: { type: KeyringTypes.snap },\n snap: MOCK_SNAP_2,\n importTime: 0,\n lastSelected: 0,\n },\n};\n\nexport const MOCK_HARDWARE_ACCOUNT_1: InternalAccount = {\n id: 'mock-hardware-id-1',\n address: '0xABC',\n options: {},\n methods: [...ETH_EOA_METHODS],\n type: EthAccountType.Eoa,\n scopes: [EthScope.Eoa],\n metadata: {\n name: 'Hardware Acc 1',\n keyring: { type: KeyringTypes.ledger },\n importTime: 0,\n lastSelected: 0,\n },\n};\n\nexport class MockAccountBuilder {\n readonly #account: InternalAccount;\n\n constructor(account: InternalAccount) {\n // Make a deep-copy to avoid mutating the same ref.\n this.#account = JSON.parse(JSON.stringify(account));\n }\n\n static from(account: InternalAccount): MockAccountBuilder {\n return new MockAccountBuilder(account);\n }\n\n static toKeyringAccount(account: InternalAccount): KeyringAccount {\n const { metadata, ...keyringAccount } = account;\n\n return keyringAccount;\n }\n\n withUuuid() {\n this.#account.id = uuid();\n return this;\n }\n\n withEntropySource(entropySource: EntropySourceId) {\n this.#account.options.entropySource = entropySource;\n return this;\n }\n\n withGroupIndex(groupIndex: number) {\n this.#account.options.index = groupIndex;\n return this;\n }\n\n get() {\n return this.#account;\n }\n}\n"]}
|
@@ -0,0 +1,74 @@
|
|
1
|
+
import type { EntropySourceId, KeyringAccount } from "@metamask/keyring-api";
|
2
|
+
import { KeyringTypes } from "@metamask/keyring-controller";
|
3
|
+
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
4
|
+
export declare const MOCK_SNAP_1: {
|
5
|
+
id: string;
|
6
|
+
name: string;
|
7
|
+
enabled: boolean;
|
8
|
+
manifest: {
|
9
|
+
proposedName: string;
|
10
|
+
};
|
11
|
+
};
|
12
|
+
export declare const MOCK_SNAP_2: {
|
13
|
+
id: string;
|
14
|
+
name: string;
|
15
|
+
enabled: boolean;
|
16
|
+
manifest: {
|
17
|
+
proposedName: string;
|
18
|
+
};
|
19
|
+
};
|
20
|
+
export declare const MOCK_ENTROPY_SOURCE_1 = "mock-keyring-id-1";
|
21
|
+
export declare const MOCK_ENTROPY_SOURCE_2 = "mock-keyring-id-2";
|
22
|
+
export declare const MOCK_HD_KEYRING_1: {
|
23
|
+
type: KeyringTypes;
|
24
|
+
metadata: {
|
25
|
+
id: string;
|
26
|
+
name: string;
|
27
|
+
};
|
28
|
+
accounts: string[];
|
29
|
+
};
|
30
|
+
export declare const MOCK_HD_KEYRING_2: {
|
31
|
+
type: KeyringTypes;
|
32
|
+
metadata: {
|
33
|
+
id: string;
|
34
|
+
name: string;
|
35
|
+
};
|
36
|
+
accounts: string[];
|
37
|
+
};
|
38
|
+
export declare const MOCK_HD_ACCOUNT_1: InternalAccount;
|
39
|
+
export declare const MOCK_HD_ACCOUNT_2: InternalAccount;
|
40
|
+
export declare const MOCK_SNAP_ACCOUNT_1: InternalAccount;
|
41
|
+
export declare const MOCK_SNAP_ACCOUNT_2: InternalAccount;
|
42
|
+
export declare const MOCK_HARDWARE_ACCOUNT_1: InternalAccount;
|
43
|
+
export declare class MockAccountBuilder {
|
44
|
+
#private;
|
45
|
+
constructor(account: InternalAccount);
|
46
|
+
static from(account: InternalAccount): MockAccountBuilder;
|
47
|
+
static toKeyringAccount(account: InternalAccount): KeyringAccount;
|
48
|
+
withUuuid(): this;
|
49
|
+
withEntropySource(entropySource: EntropySourceId): this;
|
50
|
+
withGroupIndex(groupIndex: number): this;
|
51
|
+
get(): {
|
52
|
+
type: "eip155:eoa" | "eip155:erc4337" | "bip122:p2pkh" | "bip122:p2sh" | "bip122:p2wpkh" | "bip122:p2tr" | "solana:data-account";
|
53
|
+
id: string;
|
54
|
+
options: Record<string, import("@metamask/utils").Json>;
|
55
|
+
metadata: {
|
56
|
+
name: string;
|
57
|
+
importTime: number;
|
58
|
+
keyring: {
|
59
|
+
type: string;
|
60
|
+
};
|
61
|
+
nameLastUpdatedAt?: number | undefined;
|
62
|
+
snap?: {
|
63
|
+
name: string;
|
64
|
+
id: string;
|
65
|
+
enabled: boolean;
|
66
|
+
} | undefined;
|
67
|
+
lastSelected?: number | undefined;
|
68
|
+
};
|
69
|
+
address: string;
|
70
|
+
scopes: `${string}:${string}`[];
|
71
|
+
methods: string[];
|
72
|
+
};
|
73
|
+
}
|
74
|
+
//# sourceMappingURL=accounts.d.cts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"accounts.d.cts","sourceRoot":"","sources":["../../src/tests/accounts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,8BAA8B;AAS7E,OAAO,EAAE,YAAY,EAAE,qCAAqC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AActE,eAAO,MAAM,WAAW;;;;;;;CAOvB,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;CAOvB,CAAC;AAEF,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AACzD,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AAEzD,eAAO,MAAM,iBAAiB;;;;;;;CAI7B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;CAI7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,eAiB/B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,eAiB/B,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,eAiBjC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,eAcjC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,eAarC,CAAC;AAEF,qBAAa,kBAAkB;;gBAGjB,OAAO,EAAE,eAAe;IAKpC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,GAAG,kBAAkB;IAIzD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc;IAMjE,SAAS;IAKT,iBAAiB,CAAC,aAAa,EAAE,eAAe;IAKhD,cAAc,CAAC,UAAU,EAAE,MAAM;IAKjC,GAAG;;;;;;;;;;;;;;;;;;;;;;CAGJ"}
|
@@ -0,0 +1,74 @@
|
|
1
|
+
import type { EntropySourceId, KeyringAccount } from "@metamask/keyring-api";
|
2
|
+
import { KeyringTypes } from "@metamask/keyring-controller";
|
3
|
+
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
4
|
+
export declare const MOCK_SNAP_1: {
|
5
|
+
id: string;
|
6
|
+
name: string;
|
7
|
+
enabled: boolean;
|
8
|
+
manifest: {
|
9
|
+
proposedName: string;
|
10
|
+
};
|
11
|
+
};
|
12
|
+
export declare const MOCK_SNAP_2: {
|
13
|
+
id: string;
|
14
|
+
name: string;
|
15
|
+
enabled: boolean;
|
16
|
+
manifest: {
|
17
|
+
proposedName: string;
|
18
|
+
};
|
19
|
+
};
|
20
|
+
export declare const MOCK_ENTROPY_SOURCE_1 = "mock-keyring-id-1";
|
21
|
+
export declare const MOCK_ENTROPY_SOURCE_2 = "mock-keyring-id-2";
|
22
|
+
export declare const MOCK_HD_KEYRING_1: {
|
23
|
+
type: KeyringTypes;
|
24
|
+
metadata: {
|
25
|
+
id: string;
|
26
|
+
name: string;
|
27
|
+
};
|
28
|
+
accounts: string[];
|
29
|
+
};
|
30
|
+
export declare const MOCK_HD_KEYRING_2: {
|
31
|
+
type: KeyringTypes;
|
32
|
+
metadata: {
|
33
|
+
id: string;
|
34
|
+
name: string;
|
35
|
+
};
|
36
|
+
accounts: string[];
|
37
|
+
};
|
38
|
+
export declare const MOCK_HD_ACCOUNT_1: InternalAccount;
|
39
|
+
export declare const MOCK_HD_ACCOUNT_2: InternalAccount;
|
40
|
+
export declare const MOCK_SNAP_ACCOUNT_1: InternalAccount;
|
41
|
+
export declare const MOCK_SNAP_ACCOUNT_2: InternalAccount;
|
42
|
+
export declare const MOCK_HARDWARE_ACCOUNT_1: InternalAccount;
|
43
|
+
export declare class MockAccountBuilder {
|
44
|
+
#private;
|
45
|
+
constructor(account: InternalAccount);
|
46
|
+
static from(account: InternalAccount): MockAccountBuilder;
|
47
|
+
static toKeyringAccount(account: InternalAccount): KeyringAccount;
|
48
|
+
withUuuid(): this;
|
49
|
+
withEntropySource(entropySource: EntropySourceId): this;
|
50
|
+
withGroupIndex(groupIndex: number): this;
|
51
|
+
get(): {
|
52
|
+
type: "eip155:eoa" | "eip155:erc4337" | "bip122:p2pkh" | "bip122:p2sh" | "bip122:p2wpkh" | "bip122:p2tr" | "solana:data-account";
|
53
|
+
id: string;
|
54
|
+
options: Record<string, import("@metamask/utils").Json>;
|
55
|
+
metadata: {
|
56
|
+
name: string;
|
57
|
+
importTime: number;
|
58
|
+
keyring: {
|
59
|
+
type: string;
|
60
|
+
};
|
61
|
+
nameLastUpdatedAt?: number | undefined;
|
62
|
+
snap?: {
|
63
|
+
name: string;
|
64
|
+
id: string;
|
65
|
+
enabled: boolean;
|
66
|
+
} | undefined;
|
67
|
+
lastSelected?: number | undefined;
|
68
|
+
};
|
69
|
+
address: string;
|
70
|
+
scopes: `${string}:${string}`[];
|
71
|
+
methods: string[];
|
72
|
+
};
|
73
|
+
}
|
74
|
+
//# sourceMappingURL=accounts.d.mts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"accounts.d.mts","sourceRoot":"","sources":["../../src/tests/accounts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,8BAA8B;AAS7E,OAAO,EAAE,YAAY,EAAE,qCAAqC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AActE,eAAO,MAAM,WAAW;;;;;;;CAOvB,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;CAOvB,CAAC;AAEF,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AACzD,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AAEzD,eAAO,MAAM,iBAAiB;;;;;;;CAI7B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;CAI7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,eAiB/B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,eAiB/B,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,eAiBjC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,eAcjC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,eAarC,CAAC;AAEF,qBAAa,kBAAkB;;gBAGjB,OAAO,EAAE,eAAe;IAKpC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,GAAG,kBAAkB;IAIzD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc;IAMjE,SAAS;IAKT,iBAAiB,CAAC,aAAa,EAAE,eAAe;IAKhD,cAAc,CAAC,UAAU,EAAE,MAAM;IAKjC,GAAG;;;;;;;;;;;;;;;;;;;;;;CAGJ"}
|
@@ -0,0 +1,166 @@
|
|
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 _MockAccountBuilder_account;
|
13
|
+
import { EthAccountType, EthMethod, EthScope, SolAccountType, SolMethod, SolScope } from "@metamask/keyring-api";
|
14
|
+
import { KeyringTypes } from "@metamask/keyring-controller";
|
15
|
+
import { v4 as uuid } from "uuid";
|
16
|
+
const ETH_EOA_METHODS = [
|
17
|
+
EthMethod.PersonalSign,
|
18
|
+
EthMethod.Sign,
|
19
|
+
EthMethod.SignTransaction,
|
20
|
+
EthMethod.SignTypedDataV1,
|
21
|
+
EthMethod.SignTypedDataV3,
|
22
|
+
EthMethod.SignTypedDataV4,
|
23
|
+
];
|
24
|
+
const SOL_METHODS = Object.values(SolMethod);
|
25
|
+
export const MOCK_SNAP_1 = {
|
26
|
+
id: 'local:mock-snap-id-1',
|
27
|
+
name: 'Mock Snap 1',
|
28
|
+
enabled: true,
|
29
|
+
manifest: {
|
30
|
+
proposedName: 'Mock Snap 1',
|
31
|
+
},
|
32
|
+
};
|
33
|
+
export const MOCK_SNAP_2 = {
|
34
|
+
id: 'local:mock-snap-id-2',
|
35
|
+
name: 'Mock Snap 2',
|
36
|
+
enabled: true,
|
37
|
+
manifest: {
|
38
|
+
proposedName: 'Mock Snap 2',
|
39
|
+
},
|
40
|
+
};
|
41
|
+
export const MOCK_ENTROPY_SOURCE_1 = 'mock-keyring-id-1';
|
42
|
+
export const MOCK_ENTROPY_SOURCE_2 = 'mock-keyring-id-2';
|
43
|
+
export const MOCK_HD_KEYRING_1 = {
|
44
|
+
type: KeyringTypes.hd,
|
45
|
+
metadata: { id: MOCK_ENTROPY_SOURCE_1, name: 'HD Keyring 1' },
|
46
|
+
accounts: ['0x123'],
|
47
|
+
};
|
48
|
+
export const MOCK_HD_KEYRING_2 = {
|
49
|
+
type: KeyringTypes.hd,
|
50
|
+
metadata: { id: MOCK_ENTROPY_SOURCE_2, name: 'HD Keyring 2' },
|
51
|
+
accounts: ['0x456'],
|
52
|
+
};
|
53
|
+
export const MOCK_HD_ACCOUNT_1 = {
|
54
|
+
id: 'mock-id-1',
|
55
|
+
address: '0x123',
|
56
|
+
options: {
|
57
|
+
entropySource: MOCK_HD_KEYRING_1.metadata.id,
|
58
|
+
index: 0,
|
59
|
+
},
|
60
|
+
methods: [...ETH_EOA_METHODS],
|
61
|
+
type: EthAccountType.Eoa,
|
62
|
+
scopes: [EthScope.Eoa],
|
63
|
+
metadata: {
|
64
|
+
name: 'Account 1',
|
65
|
+
keyring: { type: KeyringTypes.hd },
|
66
|
+
importTime: 0,
|
67
|
+
lastSelected: 0,
|
68
|
+
nameLastUpdatedAt: 0,
|
69
|
+
},
|
70
|
+
};
|
71
|
+
export const MOCK_HD_ACCOUNT_2 = {
|
72
|
+
id: 'mock-id-2',
|
73
|
+
address: '0x456',
|
74
|
+
options: {
|
75
|
+
entropySource: MOCK_HD_KEYRING_2.metadata.id,
|
76
|
+
index: 0,
|
77
|
+
},
|
78
|
+
methods: [...ETH_EOA_METHODS],
|
79
|
+
type: EthAccountType.Eoa,
|
80
|
+
scopes: [EthScope.Eoa],
|
81
|
+
metadata: {
|
82
|
+
name: 'Account 2',
|
83
|
+
keyring: { type: KeyringTypes.hd },
|
84
|
+
importTime: 0,
|
85
|
+
lastSelected: 0,
|
86
|
+
nameLastUpdatedAt: 0,
|
87
|
+
},
|
88
|
+
};
|
89
|
+
export const MOCK_SNAP_ACCOUNT_1 = {
|
90
|
+
id: 'mock-snap-id-1',
|
91
|
+
address: 'aabbccdd',
|
92
|
+
options: {
|
93
|
+
entropySource: MOCK_HD_KEYRING_2.metadata.id,
|
94
|
+
index: 0,
|
95
|
+
},
|
96
|
+
methods: SOL_METHODS,
|
97
|
+
type: SolAccountType.DataAccount,
|
98
|
+
scopes: [SolScope.Mainnet],
|
99
|
+
metadata: {
|
100
|
+
name: 'Snap Account 1',
|
101
|
+
keyring: { type: KeyringTypes.snap },
|
102
|
+
snap: MOCK_SNAP_1,
|
103
|
+
importTime: 0,
|
104
|
+
lastSelected: 0,
|
105
|
+
},
|
106
|
+
};
|
107
|
+
export const MOCK_SNAP_ACCOUNT_2 = {
|
108
|
+
id: 'mock-snap-id-2',
|
109
|
+
address: '0x789',
|
110
|
+
options: {},
|
111
|
+
methods: [...ETH_EOA_METHODS],
|
112
|
+
type: EthAccountType.Eoa,
|
113
|
+
scopes: [EthScope.Eoa],
|
114
|
+
metadata: {
|
115
|
+
name: 'Snap Acc 2',
|
116
|
+
keyring: { type: KeyringTypes.snap },
|
117
|
+
snap: MOCK_SNAP_2,
|
118
|
+
importTime: 0,
|
119
|
+
lastSelected: 0,
|
120
|
+
},
|
121
|
+
};
|
122
|
+
export const MOCK_HARDWARE_ACCOUNT_1 = {
|
123
|
+
id: 'mock-hardware-id-1',
|
124
|
+
address: '0xABC',
|
125
|
+
options: {},
|
126
|
+
methods: [...ETH_EOA_METHODS],
|
127
|
+
type: EthAccountType.Eoa,
|
128
|
+
scopes: [EthScope.Eoa],
|
129
|
+
metadata: {
|
130
|
+
name: 'Hardware Acc 1',
|
131
|
+
keyring: { type: KeyringTypes.ledger },
|
132
|
+
importTime: 0,
|
133
|
+
lastSelected: 0,
|
134
|
+
},
|
135
|
+
};
|
136
|
+
export class MockAccountBuilder {
|
137
|
+
constructor(account) {
|
138
|
+
_MockAccountBuilder_account.set(this, void 0);
|
139
|
+
// Make a deep-copy to avoid mutating the same ref.
|
140
|
+
__classPrivateFieldSet(this, _MockAccountBuilder_account, JSON.parse(JSON.stringify(account)), "f");
|
141
|
+
}
|
142
|
+
static from(account) {
|
143
|
+
return new MockAccountBuilder(account);
|
144
|
+
}
|
145
|
+
static toKeyringAccount(account) {
|
146
|
+
const { metadata, ...keyringAccount } = account;
|
147
|
+
return keyringAccount;
|
148
|
+
}
|
149
|
+
withUuuid() {
|
150
|
+
__classPrivateFieldGet(this, _MockAccountBuilder_account, "f").id = uuid();
|
151
|
+
return this;
|
152
|
+
}
|
153
|
+
withEntropySource(entropySource) {
|
154
|
+
__classPrivateFieldGet(this, _MockAccountBuilder_account, "f").options.entropySource = entropySource;
|
155
|
+
return this;
|
156
|
+
}
|
157
|
+
withGroupIndex(groupIndex) {
|
158
|
+
__classPrivateFieldGet(this, _MockAccountBuilder_account, "f").options.index = groupIndex;
|
159
|
+
return this;
|
160
|
+
}
|
161
|
+
get() {
|
162
|
+
return __classPrivateFieldGet(this, _MockAccountBuilder_account, "f");
|
163
|
+
}
|
164
|
+
}
|
165
|
+
_MockAccountBuilder_account = new WeakMap();
|
166
|
+
//# sourceMappingURL=accounts.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"accounts.mjs","sourceRoot":"","sources":["../../src/tests/accounts.ts"],"names":[],"mappings":"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","sourcesContent":["import type { EntropySourceId, KeyringAccount } from '@metamask/keyring-api';\nimport {\n EthAccountType,\n EthMethod,\n EthScope,\n SolAccountType,\n SolMethod,\n SolScope,\n} from '@metamask/keyring-api';\nimport { KeyringTypes } from '@metamask/keyring-controller';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\nimport { v4 as uuid } from 'uuid';\n\nconst ETH_EOA_METHODS = [\n EthMethod.PersonalSign,\n EthMethod.Sign,\n EthMethod.SignTransaction,\n EthMethod.SignTypedDataV1,\n EthMethod.SignTypedDataV3,\n EthMethod.SignTypedDataV4,\n] as const;\n\nconst SOL_METHODS = Object.values(SolMethod);\n\nexport const MOCK_SNAP_1 = {\n id: 'local:mock-snap-id-1',\n name: 'Mock Snap 1',\n enabled: true,\n manifest: {\n proposedName: 'Mock Snap 1',\n },\n};\n\nexport const MOCK_SNAP_2 = {\n id: 'local:mock-snap-id-2',\n name: 'Mock Snap 2',\n enabled: true,\n manifest: {\n proposedName: 'Mock Snap 2',\n },\n};\n\nexport const MOCK_ENTROPY_SOURCE_1 = 'mock-keyring-id-1';\nexport const MOCK_ENTROPY_SOURCE_2 = 'mock-keyring-id-2';\n\nexport const MOCK_HD_KEYRING_1 = {\n type: KeyringTypes.hd,\n metadata: { id: MOCK_ENTROPY_SOURCE_1, name: 'HD Keyring 1' },\n accounts: ['0x123'],\n};\n\nexport const MOCK_HD_KEYRING_2 = {\n type: KeyringTypes.hd,\n metadata: { id: MOCK_ENTROPY_SOURCE_2, name: 'HD Keyring 2' },\n accounts: ['0x456'],\n};\n\nexport const MOCK_HD_ACCOUNT_1: InternalAccount = {\n id: 'mock-id-1',\n address: '0x123',\n options: {\n entropySource: MOCK_HD_KEYRING_1.metadata.id,\n index: 0,\n },\n methods: [...ETH_EOA_METHODS],\n type: EthAccountType.Eoa,\n scopes: [EthScope.Eoa],\n metadata: {\n name: 'Account 1',\n keyring: { type: KeyringTypes.hd },\n importTime: 0,\n lastSelected: 0,\n nameLastUpdatedAt: 0,\n },\n};\n\nexport const MOCK_HD_ACCOUNT_2: InternalAccount = {\n id: 'mock-id-2',\n address: '0x456',\n options: {\n entropySource: MOCK_HD_KEYRING_2.metadata.id,\n index: 0,\n },\n methods: [...ETH_EOA_METHODS],\n type: EthAccountType.Eoa,\n scopes: [EthScope.Eoa],\n metadata: {\n name: 'Account 2',\n keyring: { type: KeyringTypes.hd },\n importTime: 0,\n lastSelected: 0,\n nameLastUpdatedAt: 0,\n },\n};\n\nexport const MOCK_SNAP_ACCOUNT_1: InternalAccount = {\n id: 'mock-snap-id-1',\n address: 'aabbccdd',\n options: {\n entropySource: MOCK_HD_KEYRING_2.metadata.id,\n index: 0,\n }, // Note: shares entropy with MOCK_HD_ACCOUNT_2\n methods: SOL_METHODS,\n type: SolAccountType.DataAccount,\n scopes: [SolScope.Mainnet],\n metadata: {\n name: 'Snap Account 1',\n keyring: { type: KeyringTypes.snap },\n snap: MOCK_SNAP_1,\n importTime: 0,\n lastSelected: 0,\n },\n};\n\nexport const MOCK_SNAP_ACCOUNT_2: InternalAccount = {\n id: 'mock-snap-id-2',\n address: '0x789',\n options: {},\n methods: [...ETH_EOA_METHODS],\n type: EthAccountType.Eoa,\n scopes: [EthScope.Eoa],\n metadata: {\n name: 'Snap Acc 2',\n keyring: { type: KeyringTypes.snap },\n snap: MOCK_SNAP_2,\n importTime: 0,\n lastSelected: 0,\n },\n};\n\nexport const MOCK_HARDWARE_ACCOUNT_1: InternalAccount = {\n id: 'mock-hardware-id-1',\n address: '0xABC',\n options: {},\n methods: [...ETH_EOA_METHODS],\n type: EthAccountType.Eoa,\n scopes: [EthScope.Eoa],\n metadata: {\n name: 'Hardware Acc 1',\n keyring: { type: KeyringTypes.ledger },\n importTime: 0,\n lastSelected: 0,\n },\n};\n\nexport class MockAccountBuilder {\n readonly #account: InternalAccount;\n\n constructor(account: InternalAccount) {\n // Make a deep-copy to avoid mutating the same ref.\n this.#account = JSON.parse(JSON.stringify(account));\n }\n\n static from(account: InternalAccount): MockAccountBuilder {\n return new MockAccountBuilder(account);\n }\n\n static toKeyringAccount(account: InternalAccount): KeyringAccount {\n const { metadata, ...keyringAccount } = account;\n\n return keyringAccount;\n }\n\n withUuuid() {\n this.#account.id = uuid();\n return this;\n }\n\n withEntropySource(entropySource: EntropySourceId) {\n this.#account.options.entropySource = entropySource;\n return this;\n }\n\n withGroupIndex(groupIndex: number) {\n this.#account.options.index = groupIndex;\n return this;\n }\n\n get() {\n return this.#account;\n }\n}\n"]}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
|
+
};
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
+
__exportStar(require("./accounts.cjs"), exports);
|
18
|
+
__exportStar(require("./messenger.cjs"), exports);
|
19
|
+
//# sourceMappingURL=index.cjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../src/tests/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA2B;AAC3B,kDAA4B","sourcesContent":["export * from './accounts';\nexport * from './messenger';\n"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../src/tests/index.ts"],"names":[],"mappings":"AAAA,+BAA2B;AAC3B,gCAA4B"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/tests/index.ts"],"names":[],"mappings":"AAAA,+BAA2B;AAC3B,gCAA4B"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/tests/index.ts"],"names":[],"mappings":"AAAA,+BAA2B;AAC3B,gCAA4B","sourcesContent":["export * from './accounts';\nexport * from './messenger';\n"]}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getMultichainAccountControllerMessenger = exports.getRootMessenger = void 0;
|
4
|
+
const base_controller_1 = require("@metamask/base-controller");
|
5
|
+
/**
|
6
|
+
* Creates a new root messenger instance for testing.
|
7
|
+
*
|
8
|
+
* @returns A new Messenger instance.
|
9
|
+
*/
|
10
|
+
function getRootMessenger() {
|
11
|
+
return new base_controller_1.Messenger();
|
12
|
+
}
|
13
|
+
exports.getRootMessenger = getRootMessenger;
|
14
|
+
/**
|
15
|
+
* Retrieves a restricted messenger for the MultichainAccountController.
|
16
|
+
*
|
17
|
+
* @param messenger - The root messenger instance. Defaults to a new Messenger created by getRootMessenger().
|
18
|
+
* @returns The restricted messenger for the MultichainAccountController.
|
19
|
+
*/
|
20
|
+
function getMultichainAccountControllerMessenger(messenger = getRootMessenger()) {
|
21
|
+
return messenger.getRestricted({
|
22
|
+
name: 'MultichainAccountController',
|
23
|
+
allowedEvents: [],
|
24
|
+
allowedActions: [
|
25
|
+
'AccountsController:getAccount',
|
26
|
+
'AccountsController:getAccountByAddress',
|
27
|
+
'AccountsController:listMultichainAccounts',
|
28
|
+
'SnapController:handleRequest',
|
29
|
+
'KeyringController:withKeyring',
|
30
|
+
],
|
31
|
+
});
|
32
|
+
}
|
33
|
+
exports.getMultichainAccountControllerMessenger = getMultichainAccountControllerMessenger;
|
34
|
+
//# sourceMappingURL=messenger.cjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"messenger.cjs","sourceRoot":"","sources":["../../src/tests/messenger.ts"],"names":[],"mappings":";;;AAAA,+DAAsD;AAUtD;;;;GAIG;AACH,SAAgB,gBAAgB;IAC9B,OAAO,IAAI,2BAAS,EAGjB,CAAC;AACN,CAAC;AALD,4CAKC;AAED;;;;;GAKG;AACH,SAAgB,uCAAuC,CACrD,SAAS,GAAG,gBAAgB,EAAE;IAE9B,OAAO,SAAS,CAAC,aAAa,CAAC;QAC7B,IAAI,EAAE,6BAA6B;QACnC,aAAa,EAAE,EAAE;QACjB,cAAc,EAAE;YACd,+BAA+B;YAC/B,wCAAwC;YACxC,2CAA2C;YAC3C,8BAA8B;YAC9B,+BAA+B;SAChC;KACF,CAAC,CAAC;AACL,CAAC;AAdD,0FAcC","sourcesContent":["import { Messenger } from '@metamask/base-controller';\n\nimport type {\n AllowedActions,\n AllowedEvents,\n MultichainAccountControllerActions,\n MultichainAccountControllerEvents,\n MultichainAccountControllerMessenger,\n} from '../types';\n\n/**\n * Creates a new root messenger instance for testing.\n *\n * @returns A new Messenger instance.\n */\nexport function getRootMessenger() {\n return new Messenger<\n MultichainAccountControllerActions | AllowedActions,\n MultichainAccountControllerEvents | AllowedEvents\n >();\n}\n\n/**\n * Retrieves a restricted messenger for the MultichainAccountController.\n *\n * @param messenger - The root messenger instance. Defaults to a new Messenger created by getRootMessenger().\n * @returns The restricted messenger for the MultichainAccountController.\n */\nexport function getMultichainAccountControllerMessenger(\n messenger = getRootMessenger(),\n): MultichainAccountControllerMessenger {\n return messenger.getRestricted({\n name: 'MultichainAccountController',\n allowedEvents: [],\n allowedActions: [\n 'AccountsController:getAccount',\n 'AccountsController:getAccountByAddress',\n 'AccountsController:listMultichainAccounts',\n 'SnapController:handleRequest',\n 'KeyringController:withKeyring',\n ],\n });\n}\n"]}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import { Messenger } from "@metamask/base-controller";
|
2
|
+
import type { AllowedActions, MultichainAccountControllerMessenger } from "../types.cjs";
|
3
|
+
/**
|
4
|
+
* Creates a new root messenger instance for testing.
|
5
|
+
*
|
6
|
+
* @returns A new Messenger instance.
|
7
|
+
*/
|
8
|
+
export declare function getRootMessenger(): Messenger<AllowedActions, never>;
|
9
|
+
/**
|
10
|
+
* Retrieves a restricted messenger for the MultichainAccountController.
|
11
|
+
*
|
12
|
+
* @param messenger - The root messenger instance. Defaults to a new Messenger created by getRootMessenger().
|
13
|
+
* @returns The restricted messenger for the MultichainAccountController.
|
14
|
+
*/
|
15
|
+
export declare function getMultichainAccountControllerMessenger(messenger?: Messenger<AllowedActions, never>): MultichainAccountControllerMessenger;
|
16
|
+
//# sourceMappingURL=messenger.d.cts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"messenger.d.cts","sourceRoot":"","sources":["../../src/tests/messenger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,kCAAkC;AAEtD,OAAO,KAAK,EACV,cAAc,EAId,oCAAoC,EACrC,qBAAiB;AAElB;;;;GAIG;AACH,wBAAgB,gBAAgB,qCAK/B;AAED;;;;;GAKG;AACH,wBAAgB,uCAAuC,CACrD,SAAS,mCAAqB,GAC7B,oCAAoC,CAYtC"}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import { Messenger } from "@metamask/base-controller";
|
2
|
+
import type { AllowedActions, MultichainAccountControllerMessenger } from "../types.mjs";
|
3
|
+
/**
|
4
|
+
* Creates a new root messenger instance for testing.
|
5
|
+
*
|
6
|
+
* @returns A new Messenger instance.
|
7
|
+
*/
|
8
|
+
export declare function getRootMessenger(): Messenger<AllowedActions, never>;
|
9
|
+
/**
|
10
|
+
* Retrieves a restricted messenger for the MultichainAccountController.
|
11
|
+
*
|
12
|
+
* @param messenger - The root messenger instance. Defaults to a new Messenger created by getRootMessenger().
|
13
|
+
* @returns The restricted messenger for the MultichainAccountController.
|
14
|
+
*/
|
15
|
+
export declare function getMultichainAccountControllerMessenger(messenger?: Messenger<AllowedActions, never>): MultichainAccountControllerMessenger;
|
16
|
+
//# sourceMappingURL=messenger.d.mts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"messenger.d.mts","sourceRoot":"","sources":["../../src/tests/messenger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,kCAAkC;AAEtD,OAAO,KAAK,EACV,cAAc,EAId,oCAAoC,EACrC,qBAAiB;AAElB;;;;GAIG;AACH,wBAAgB,gBAAgB,qCAK/B;AAED;;;;;GAKG;AACH,wBAAgB,uCAAuC,CACrD,SAAS,mCAAqB,GAC7B,oCAAoC,CAYtC"}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
import { Messenger } from "@metamask/base-controller";
|
2
|
+
/**
|
3
|
+
* Creates a new root messenger instance for testing.
|
4
|
+
*
|
5
|
+
* @returns A new Messenger instance.
|
6
|
+
*/
|
7
|
+
export function getRootMessenger() {
|
8
|
+
return new Messenger();
|
9
|
+
}
|
10
|
+
/**
|
11
|
+
* Retrieves a restricted messenger for the MultichainAccountController.
|
12
|
+
*
|
13
|
+
* @param messenger - The root messenger instance. Defaults to a new Messenger created by getRootMessenger().
|
14
|
+
* @returns The restricted messenger for the MultichainAccountController.
|
15
|
+
*/
|
16
|
+
export function getMultichainAccountControllerMessenger(messenger = getRootMessenger()) {
|
17
|
+
return messenger.getRestricted({
|
18
|
+
name: 'MultichainAccountController',
|
19
|
+
allowedEvents: [],
|
20
|
+
allowedActions: [
|
21
|
+
'AccountsController:getAccount',
|
22
|
+
'AccountsController:getAccountByAddress',
|
23
|
+
'AccountsController:listMultichainAccounts',
|
24
|
+
'SnapController:handleRequest',
|
25
|
+
'KeyringController:withKeyring',
|
26
|
+
],
|
27
|
+
});
|
28
|
+
}
|
29
|
+
//# sourceMappingURL=messenger.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"messenger.mjs","sourceRoot":"","sources":["../../src/tests/messenger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,kCAAkC;AAUtD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,IAAI,SAAS,EAGjB,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uCAAuC,CACrD,SAAS,GAAG,gBAAgB,EAAE;IAE9B,OAAO,SAAS,CAAC,aAAa,CAAC;QAC7B,IAAI,EAAE,6BAA6B;QACnC,aAAa,EAAE,EAAE;QACjB,cAAc,EAAE;YACd,+BAA+B;YAC/B,wCAAwC;YACxC,2CAA2C;YAC3C,8BAA8B;YAC9B,+BAA+B;SAChC;KACF,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { Messenger } from '@metamask/base-controller';\n\nimport type {\n AllowedActions,\n AllowedEvents,\n MultichainAccountControllerActions,\n MultichainAccountControllerEvents,\n MultichainAccountControllerMessenger,\n} from '../types';\n\n/**\n * Creates a new root messenger instance for testing.\n *\n * @returns A new Messenger instance.\n */\nexport function getRootMessenger() {\n return new Messenger<\n MultichainAccountControllerActions | AllowedActions,\n MultichainAccountControllerEvents | AllowedEvents\n >();\n}\n\n/**\n * Retrieves a restricted messenger for the MultichainAccountController.\n *\n * @param messenger - The root messenger instance. Defaults to a new Messenger created by getRootMessenger().\n * @returns The restricted messenger for the MultichainAccountController.\n */\nexport function getMultichainAccountControllerMessenger(\n messenger = getRootMessenger(),\n): MultichainAccountControllerMessenger {\n return messenger.getRestricted({\n name: 'MultichainAccountController',\n allowedEvents: [],\n allowedActions: [\n 'AccountsController:getAccount',\n 'AccountsController:getAccountByAddress',\n 'AccountsController:listMultichainAccounts',\n 'SnapController:handleRequest',\n 'KeyringController:withKeyring',\n ],\n });\n}\n"]}
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@metamask-previews/multichain-account-controller",
|
3
|
-
"version": "0.0.0-preview-
|
4
|
-
"description": "
|
3
|
+
"version": "0.0.0-preview-0e455278",
|
4
|
+
"description": "Controller to manage multichain accounts",
|
5
5
|
"keywords": [
|
6
6
|
"MetaMask",
|
7
7
|
"Ethereum"
|
@@ -29,20 +29,22 @@
|
|
29
29
|
},
|
30
30
|
"./package.json": "./package.json"
|
31
31
|
},
|
32
|
-
"main": "./dist/index.
|
33
|
-
"types": "./dist/
|
32
|
+
"main": "./dist/index.cjs",
|
33
|
+
"types": "./dist/index.d.cts",
|
34
34
|
"files": [
|
35
35
|
"dist/"
|
36
36
|
],
|
37
37
|
"scripts": {
|
38
38
|
"build": "ts-bridge --project tsconfig.build.json --verbose --clean --no-references",
|
39
39
|
"build:docs": "typedoc",
|
40
|
+
"changelog:update": "../../scripts/update-changelog.sh @metamask/multichain-account-controller",
|
40
41
|
"changelog:validate": "../../scripts/validate-changelog.sh @metamask/multichain-account-controller",
|
41
42
|
"publish:preview": "yarn npm publish --tag preview",
|
42
|
-
"
|
43
|
-
"test
|
44
|
-
"test:
|
45
|
-
"test:
|
43
|
+
"since-latest-release": "../../scripts/since-latest-release.sh",
|
44
|
+
"test": "NODE_OPTIONS=--experimental-vm-modules jest --reporters=jest-silent-reporter",
|
45
|
+
"test:clean": "NODE_OPTIONS=--experimental-vm-modules jest --clearCache",
|
46
|
+
"test:verbose": "NODE_OPTIONS=--experimental-vm-modules jest --verbose",
|
47
|
+
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch"
|
46
48
|
},
|
47
49
|
"dependencies": {
|
48
50
|
"@metamask/base-controller": "^8.0.1",
|
@@ -57,7 +59,9 @@
|
|
57
59
|
"devDependencies": {
|
58
60
|
"@metamask/accounts-controller": "^31.0.0",
|
59
61
|
"@metamask/auto-changelog": "^3.4.4",
|
62
|
+
"@metamask/eth-snap-keyring": "^13.0.0",
|
60
63
|
"@metamask/keyring-controller": "^22.0.2",
|
64
|
+
"@metamask/providers": "^22.1.0",
|
61
65
|
"@metamask/snaps-controllers": "^12.3.1",
|
62
66
|
"@types/jest": "^27.4.1",
|
63
67
|
"@types/uuid": "^8.3.0",
|
@@ -67,13 +71,16 @@
|
|
67
71
|
"typedoc": "^0.24.8",
|
68
72
|
"typedoc-plugin-missing-exports": "^2.0.0",
|
69
73
|
"typescript": "~5.2.2",
|
70
|
-
"uuid": "^8.3.2"
|
74
|
+
"uuid": "^8.3.2",
|
75
|
+
"webextension-polyfill": "^0.12.0"
|
71
76
|
},
|
72
77
|
"peerDependencies": {
|
73
78
|
"@metamask/accounts-controller": "^31.0.0",
|
74
79
|
"@metamask/keyring-controller": "^22.0.0",
|
75
80
|
"@metamask/multichain-account-api": "^0.0.0",
|
76
|
-
"@metamask/
|
81
|
+
"@metamask/providers": "^22.0.0",
|
82
|
+
"@metamask/snaps-controllers": "^12.0.0",
|
83
|
+
"webextension-polyfill": "^0.10.0 || ^0.11.0 || ^0.12.0"
|
77
84
|
},
|
78
85
|
"engines": {
|
79
86
|
"node": "^18.18 || >=20"
|