@prosopo/keyring 2.9.60 → 2.9.62

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +21 -19
  2. package/.turbo/turbo-build$colon$tsc.log +11 -11
  3. package/.turbo/turbo-build.log +23 -20
  4. package/CHANGELOG.md +18 -0
  5. package/dist/_virtual/_rolldown/runtime.js +3 -0
  6. package/dist/accounts/getPair.js +28 -38
  7. package/dist/accounts/getPair.test.d.ts +2 -0
  8. package/dist/accounts/getPair.test.d.ts.map +1 -0
  9. package/dist/accounts/getPair.test.js +86 -0
  10. package/dist/accounts/getPair.test.js.map +1 -0
  11. package/dist/accounts/index.js +1 -7
  12. package/dist/accounts/mnemonic.js +17 -13
  13. package/dist/accounts/mnemonic.test.d.ts +2 -0
  14. package/dist/accounts/mnemonic.test.d.ts.map +1 -0
  15. package/dist/accounts/mnemonic.test.js +64 -0
  16. package/dist/accounts/mnemonic.test.js.map +1 -0
  17. package/dist/accounts/testAccounts.js +36 -42
  18. package/dist/accounts/testAccounts.test.d.ts +2 -0
  19. package/dist/accounts/testAccounts.test.d.ts.map +1 -0
  20. package/dist/accounts/testAccounts.test.js +66 -0
  21. package/dist/accounts/testAccounts.test.js.map +1 -0
  22. package/dist/cjs/accounts/getPair.cjs +30 -40
  23. package/dist/cjs/accounts/index.cjs +8 -10
  24. package/dist/cjs/accounts/mnemonic.cjs +19 -14
  25. package/dist/cjs/accounts/testAccounts.cjs +36 -41
  26. package/dist/cjs/index.cjs +15 -18
  27. package/dist/cjs/keyring/index.cjs +5 -7
  28. package/dist/cjs/keyring/keyring.cjs +257 -266
  29. package/dist/cjs/keyring/pairs.cjs +23 -27
  30. package/dist/cjs/pair/decode.cjs +31 -29
  31. package/dist/cjs/pair/defaults.cjs +28 -28
  32. package/dist/cjs/pair/encode.cjs +14 -15
  33. package/dist/cjs/pair/index.cjs +191 -167
  34. package/dist/cjs/pair/toJson.cjs +8 -11
  35. package/dist/index.js +4 -15
  36. package/dist/keyring/index.js +2 -6
  37. package/dist/keyring/keyring.js +254 -265
  38. package/dist/keyring/keyring.test.d.ts +2 -0
  39. package/dist/keyring/keyring.test.d.ts.map +1 -0
  40. package/dist/keyring/keyring.test.js +239 -0
  41. package/dist/keyring/keyring.test.js.map +1 -0
  42. package/dist/keyring/pairs.js +22 -26
  43. package/dist/keyring/pairs.test.d.ts +2 -0
  44. package/dist/keyring/pairs.test.d.ts.map +1 -0
  45. package/dist/keyring/pairs.test.js +84 -0
  46. package/dist/keyring/pairs.test.js.map +1 -0
  47. package/dist/keyring/testing.test.d.ts +2 -0
  48. package/dist/keyring/testing.test.d.ts.map +1 -0
  49. package/dist/keyring/testing.test.js +97 -0
  50. package/dist/keyring/testing.test.js.map +1 -0
  51. package/dist/keyring.test-d.d.ts +2 -0
  52. package/dist/keyring.test-d.d.ts.map +1 -0
  53. package/dist/keyring.test-d.js +66 -0
  54. package/dist/keyring.test-d.js.map +1 -0
  55. package/dist/pair/decode.js +29 -29
  56. package/dist/pair/decode.spec.js +1 -1
  57. package/dist/pair/decode.spec.js.map +1 -1
  58. package/dist/pair/defaults.js +29 -30
  59. package/dist/pair/encode.js +14 -15
  60. package/dist/pair/encode.spec.js +1 -1
  61. package/dist/pair/encode.spec.js.map +1 -1
  62. package/dist/pair/index.js +188 -165
  63. package/dist/pair/nobody.test.d.ts +2 -0
  64. package/dist/pair/nobody.test.d.ts.map +1 -0
  65. package/dist/pair/nobody.test.js +77 -0
  66. package/dist/pair/nobody.test.js.map +1 -0
  67. package/dist/pair/toJson.js +8 -11
  68. package/dist/pair/toJson.spec.js +1 -1
  69. package/dist/pair/toJson.spec.js.map +1 -1
  70. package/package.json +8 -8
  71. package/src/accounts/getPair.test.ts +142 -0
  72. package/src/accounts/mnemonic.test.ts +103 -0
  73. package/src/accounts/testAccounts.test.ts +100 -0
  74. package/src/keyring/keyring.test.ts +373 -0
  75. package/src/keyring/pairs.test.ts +133 -0
  76. package/src/keyring/testing.test.ts +146 -0
  77. package/src/keyring.test-d.ts +134 -0
  78. package/src/pair/decode.spec.ts +3 -1
  79. package/src/pair/encode.spec.ts +9 -3
  80. package/src/pair/nobody.test.ts +127 -0
  81. package/src/pair/toJson.spec.ts +18 -12
  82. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,239 @@
1
+ import { u8aToHex } from "@polkadot/util";
2
+ import { decodeAddress, encodeAddress, mnemonicToMiniSecret, sr25519FromSeed, } from "@prosopo/util-crypto";
3
+ import { describe, expect, it } from "vitest";
4
+ import { DEV_PHRASE, Keyring } from "./keyring.js";
5
+ const ALICE_SURI = `${DEV_PHRASE}//Alice`;
6
+ const ALICE_PUBLIC = "0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d";
7
+ const SEED_32 = new Uint8Array(32).fill(1);
8
+ const SLOW = { timeout: 60000 };
9
+ describe("Keyring construction", SLOW, () => {
10
+ it("defaults to sr25519", () => {
11
+ expect(new Keyring().type).toBe("sr25519");
12
+ expect(new Keyring({}).type).toBe("sr25519");
13
+ });
14
+ it("accepts an explicit sr25519 type", () => {
15
+ expect(new Keyring({ type: "sr25519" }).type).toBe("sr25519");
16
+ });
17
+ it("rejects every other curve, naming what it found", () => {
18
+ for (const type of ["ed25519", "ecdsa", "ethereum"]) {
19
+ expect(() => new Keyring({ type })).toThrow(`Expected a keyring type of either 'sr25519', found '${type}`);
20
+ }
21
+ });
22
+ it("starts with no pairs", () => {
23
+ const keyring = new Keyring();
24
+ expect(keyring.pairs).toEqual([]);
25
+ expect(keyring.getPairs()).toEqual([]);
26
+ expect(keyring.publicKeys).toEqual([]);
27
+ });
28
+ });
29
+ describe("Keyring address encoding", SLOW, () => {
30
+ it("uses the configured ss58 format", () => {
31
+ const publicKey = new Uint8Array(32).fill(2);
32
+ expect(new Keyring({ ss58Format: 42 }).encodeAddress(publicKey)).toBe(encodeAddress(publicKey, 42));
33
+ expect(new Keyring({ ss58Format: 2 }).encodeAddress(publicKey)).toBe(encodeAddress(publicKey, 2));
34
+ });
35
+ it("lets an explicit format override the configured one", () => {
36
+ const publicKey = new Uint8Array(32).fill(3);
37
+ expect(new Keyring({ ss58Format: 42 }).encodeAddress(publicKey, 2)).toBe(encodeAddress(publicKey, 2));
38
+ });
39
+ it("applies a format set after construction to new pairs", () => {
40
+ const keyring = new Keyring({ ss58Format: 42 });
41
+ const before = keyring.addFromUri(ALICE_SURI).address;
42
+ keyring.setSS58Format(2);
43
+ const after = keyring.addFromUri(ALICE_SURI).address;
44
+ expect(after).not.toBe(before);
45
+ expect(decodeAddress(after).toString()).toBe(decodeAddress(before).toString());
46
+ });
47
+ it("exposes decodeAddress as the inverse of its own encoding", () => {
48
+ const keyring = new Keyring({ ss58Format: 42 });
49
+ const publicKey = new Uint8Array(32).fill(4);
50
+ expect(keyring.decodeAddress(keyring.encodeAddress(publicKey))).toEqual(publicKey);
51
+ });
52
+ });
53
+ describe("Keyring.createFromUri", SLOW, () => {
54
+ it("derives the well-known Alice key from the dev phrase", () => {
55
+ const pair = new Keyring().createFromUri(ALICE_SURI);
56
+ expect(u8aToHex(pair.publicKey)).toBe(ALICE_PUBLIC);
57
+ });
58
+ it("expands a bare hard-derivation path against the dev phrase", () => {
59
+ expect(u8aToHex(new Keyring().createFromUri("//Alice").publicKey)).toBe(ALICE_PUBLIC);
60
+ });
61
+ it("does not create the pair in the keyring", () => {
62
+ const keyring = new Keyring();
63
+ keyring.createFromUri(ALICE_SURI);
64
+ expect(keyring.getPairs()).toEqual([]);
65
+ });
66
+ it("treats a 256-bit hex phrase as a raw seed", () => {
67
+ const seedHex = u8aToHex(SEED_32);
68
+ expect(u8aToHex(new Keyring().createFromUri(seedHex).publicKey)).toBe(u8aToHex(sr25519FromSeed(SEED_32).publicKey));
69
+ });
70
+ it("pads a short non-mnemonic phrase out to 32 bytes", () => {
71
+ const pair = new Keyring().createFromUri("hello");
72
+ const padded = new Uint8Array(32).fill(32);
73
+ padded.set(new TextEncoder().encode("hello"));
74
+ expect(u8aToHex(pair.publicKey)).toBe(u8aToHex(sr25519FromSeed(padded).publicKey));
75
+ });
76
+ it("rejects a phrase that is neither a mnemonic nor short enough to pad", () => {
77
+ expect(() => new Keyring().createFromUri("x".repeat(33))).toThrow("specified phrase is not a valid mnemonic and is invalid as a raw seed at > 32 bytes");
78
+ });
79
+ it("accepts a 32 character phrase at the padding boundary", () => {
80
+ expect(() => new Keyring().createFromUri("x".repeat(32))).not.toThrow();
81
+ });
82
+ it("derives a 12 word mnemonic through the mini secret rather than padding", () => {
83
+ expect(u8aToHex(new Keyring().createFromUri(DEV_PHRASE).publicKey)).toBe(u8aToHex(sr25519FromSeed(mnemonicToMiniSecret(DEV_PHRASE)).publicKey));
84
+ });
85
+ it("treats a word count outside the mnemonic set as a raw phrase", () => {
86
+ expect(() => new Keyring().createFromUri(`${DEV_PHRASE} extra`)).toThrow("is not a valid mnemonic");
87
+ });
88
+ it("gives a different key for a different password", () => {
89
+ const plain = new Keyring().createFromUri(DEV_PHRASE);
90
+ const withPassword = new Keyring().createFromUri(`${DEV_PHRASE}///pass`);
91
+ expect(u8aToHex(withPassword.publicKey)).not.toBe(u8aToHex(plain.publicKey));
92
+ });
93
+ it("distinguishes soft and hard derivation of the same name", () => {
94
+ const soft = new Keyring().createFromUri(`${DEV_PHRASE}/Alice`);
95
+ const hard = new Keyring().createFromUri(ALICE_SURI);
96
+ expect(u8aToHex(soft.publicKey)).not.toBe(u8aToHex(hard.publicKey));
97
+ });
98
+ it("carries meta through to the pair", () => {
99
+ const pair = new Keyring().createFromUri(ALICE_SURI, { name: "alice" });
100
+ expect(pair.meta.name).toBe("alice");
101
+ });
102
+ it("refuses ethereum derivation for a mnemonic", () => {
103
+ expect(() => new Keyring().createFromUri(DEV_PHRASE, {}, "ethereum")).toThrow("Not implemented - Prosopo Keyring supports sr25519 only");
104
+ });
105
+ });
106
+ describe("Keyring add* methods", SLOW, () => {
107
+ it("stores a pair created from a uri and returns it on lookup", () => {
108
+ const keyring = new Keyring();
109
+ const pair = keyring.addFromUri(ALICE_SURI);
110
+ expect(keyring.getPairs()).toEqual([pair]);
111
+ expect(keyring.getPair(pair.address)).toBe(pair);
112
+ expect(keyring.getPair(pair.publicKey)).toBe(pair);
113
+ });
114
+ it("treats addFromMnemonic as addFromUri", () => {
115
+ const fromMnemonic = new Keyring().addFromMnemonic(DEV_PHRASE);
116
+ const fromUri = new Keyring().addFromUri(DEV_PHRASE);
117
+ expect(fromMnemonic.address).toBe(fromUri.address);
118
+ });
119
+ it("derives a pair from a raw seed", () => {
120
+ const pair = new Keyring().addFromSeed(SEED_32);
121
+ expect(u8aToHex(pair.publicKey)).toBe(u8aToHex(sr25519FromSeed(SEED_32).publicKey));
122
+ });
123
+ it("refuses a seed for an unimplemented curve", () => {
124
+ expect(() => new Keyring().addFromSeed(SEED_32, {}, "ed25519")).toThrow("Not Implemented");
125
+ });
126
+ it("adds an address-only pair that has no secret and cannot sign", () => {
127
+ const keyring = new Keyring();
128
+ const address = keyring.addFromUri(ALICE_SURI).address;
129
+ const watchOnly = new Keyring().addFromAddress(address);
130
+ expect(watchOnly.address).toBe(address);
131
+ expect(watchOnly.isLocked).toBe(true);
132
+ expect(() => watchOnly.sign(new Uint8Array([1]))).toThrow();
133
+ });
134
+ it("adds a pair from an explicit keypair", () => {
135
+ const keypair = sr25519FromSeed(SEED_32);
136
+ const keyring = new Keyring();
137
+ const pair = keyring.addFromPair(keypair, { name: "explicit" });
138
+ expect(u8aToHex(pair.publicKey)).toBe(u8aToHex(keypair.publicKey));
139
+ expect(pair.meta.name).toBe("explicit");
140
+ expect(keyring.getPairs()).toEqual([pair]);
141
+ });
142
+ it("exposes public keys for every stored pair", () => {
143
+ const keyring = new Keyring();
144
+ const first = keyring.addFromUri(ALICE_SURI);
145
+ const second = keyring.addFromUri(`${DEV_PHRASE}//Bob`);
146
+ expect(keyring.publicKeys).toEqual([first.publicKey, second.publicKey]);
147
+ });
148
+ it("removes a pair", () => {
149
+ const keyring = new Keyring();
150
+ const pair = keyring.addFromUri(ALICE_SURI);
151
+ keyring.removePair(pair.address);
152
+ expect(keyring.pairs).toEqual([]);
153
+ expect(() => keyring.getPair(pair.address)).toThrow("Unable to retrieve keypair");
154
+ });
155
+ it("keeps addPair and the pairs getter in agreement", () => {
156
+ const keyring = new Keyring();
157
+ const pair = keyring.createFromUri(ALICE_SURI);
158
+ expect(keyring.addPair(pair)).toBe(pair);
159
+ expect(keyring.pairs).toEqual(keyring.getPairs());
160
+ });
161
+ });
162
+ describe("Keyring.createFromJson", SLOW, () => {
163
+ const json = (overrides = {}) => ({
164
+ address: encodeAddress(new Uint8Array(32).fill(5), 42),
165
+ encoded: "0x00",
166
+ encoding: {
167
+ content: ["pkcs8", "sr25519"],
168
+ type: ["none"],
169
+ version: "3",
170
+ },
171
+ meta: { name: "from-json" },
172
+ ...overrides,
173
+ });
174
+ it("round trips address, meta and type", () => {
175
+ const pair = new Keyring().createFromJson(json());
176
+ expect(pair.meta.name).toBe("from-json");
177
+ expect(pair.type).toBe("sr25519");
178
+ expect(u8aToHex(pair.publicKey)).toBe(u8aToHex(new Uint8Array(32).fill(5)));
179
+ });
180
+ it("accepts a hex address as the public key directly", () => {
181
+ const pair = new Keyring().createFromJson(json({ address: ALICE_PUBLIC }));
182
+ expect(u8aToHex(pair.publicKey)).toBe(ALICE_PUBLIC);
183
+ });
184
+ it("rejects a v3 file that is not pkcs8", () => {
185
+ expect(() => new Keyring().createFromJson(json({
186
+ encoding: {
187
+ content: ["none", "sr25519"],
188
+ type: ["none"],
189
+ version: "3",
190
+ },
191
+ }))).toThrow("Unable to decode non-pkcs8 type");
192
+ });
193
+ it("falls back to the keyring type for a v0 file", () => {
194
+ const pair = new Keyring().createFromJson(json({
195
+ encoding: {
196
+ content: ["pkcs8", "ed25519"],
197
+ type: ["none"],
198
+ version: "0",
199
+ },
200
+ }));
201
+ expect(pair.type).toBe("sr25519");
202
+ });
203
+ it("rejects a crypto type this keyring cannot handle", () => {
204
+ expect(() => new Keyring().createFromJson(json({
205
+ encoding: {
206
+ content: ["pkcs8", "ed25519"],
207
+ type: ["none"],
208
+ version: "3",
209
+ },
210
+ }))).toThrow("Unknown crypto type ed25519");
211
+ });
212
+ it("normalises a single encoding type into a list", () => {
213
+ expect(() => new Keyring().createFromJson(json({
214
+ encoding: {
215
+ content: ["pkcs8", "sr25519"],
216
+ type: "none",
217
+ version: "3",
218
+ },
219
+ }))).not.toThrow();
220
+ });
221
+ it("stores the pair when added rather than created", () => {
222
+ const keyring = new Keyring();
223
+ const pair = keyring.addFromJson(json());
224
+ expect(keyring.getPairs()).toEqual([pair]);
225
+ });
226
+ });
227
+ describe("Keyring.toJson", SLOW, () => {
228
+ it("delegates to the stored pair", () => {
229
+ const keyring = new Keyring();
230
+ const pair = keyring.addFromUri(ALICE_SURI);
231
+ const asJson = keyring.toJson(pair.address);
232
+ expect(asJson.address).toBe(pair.address);
233
+ expect(asJson.encoding.content).toContain("sr25519");
234
+ });
235
+ it("throws for an address it does not hold", () => {
236
+ expect(() => new Keyring().toJson(encodeAddress(new Uint8Array(32).fill(6), 42))).toThrow("Unable to retrieve keypair");
237
+ });
238
+ });
239
+ //# sourceMappingURL=keyring.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyring.test.js","sourceRoot":"","sources":["../../src/keyring/keyring.test.ts"],"names":[],"mappings":"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"}
@@ -1,28 +1,24 @@
1
- import { isU8a, isHex, u8aToU8a } from "@polkadot/util";
2
- import { u8aToHex } from "@prosopo/util";
3
1
  import { decodeAddress } from "@prosopo/util-crypto";
4
- class Pairs {
5
- #map = {};
6
- add(pair) {
7
- this.#map[decodeAddress(pair.address).toString()] = pair;
8
- return pair;
9
- }
10
- all() {
11
- return Object.values(this.#map);
12
- }
13
- get(address) {
14
- const pair = this.#map[decodeAddress(address).toString()];
15
- if (!pair) {
16
- throw new Error(
17
- `Unable to retrieve keypair '${isU8a(address) || isHex(address) ? u8aToHex(u8aToU8a(address)) : address}'`
18
- );
19
- }
20
- return pair;
21
- }
22
- remove(address) {
23
- delete this.#map[decodeAddress(address).toString()];
24
- }
25
- }
26
- export {
27
- Pairs
2
+ import { isHex, isU8a, u8aToU8a } from "@polkadot/util";
3
+ import { u8aToHex as u8aToHex$1 } from "@prosopo/util";
4
+ //#region src/keyring/pairs.ts
5
+ var Pairs = class {
6
+ #map = {};
7
+ add(pair) {
8
+ this.#map[decodeAddress(pair.address).toString()] = pair;
9
+ return pair;
10
+ }
11
+ all() {
12
+ return Object.values(this.#map);
13
+ }
14
+ get(address) {
15
+ const pair = this.#map[decodeAddress(address).toString()];
16
+ if (!pair) throw new Error(`Unable to retrieve keypair '${isU8a(address) || isHex(address) ? u8aToHex$1(u8aToU8a(address)) : address}'`);
17
+ return pair;
18
+ }
19
+ remove(address) {
20
+ delete this.#map[decodeAddress(address).toString()];
21
+ }
28
22
  };
23
+ //#endregion
24
+ export { Pairs };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pairs.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pairs.test.d.ts","sourceRoot":"","sources":["../../src/keyring/pairs.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,84 @@
1
+ import { decodeAddress, encodeAddress } from "@prosopo/util-crypto";
2
+ import { describe, expect, it } from "vitest";
3
+ import { nobody } from "../pair/nobody.js";
4
+ import { Pairs } from "./pairs.js";
5
+ const stubPair = (publicKey) => ({
6
+ ...nobody(),
7
+ address: encodeAddress(publicKey, 42),
8
+ addressRaw: publicKey,
9
+ publicKey,
10
+ });
11
+ const keyOf = (byte) => new Uint8Array(32).fill(byte);
12
+ describe("Pairs", () => {
13
+ it("returns the pair it was given, so callers can chain off add", () => {
14
+ const pairs = new Pairs();
15
+ const pair = stubPair(keyOf(1));
16
+ expect(pairs.add(pair)).toBe(pair);
17
+ });
18
+ it("starts empty", () => {
19
+ expect(new Pairs().all()).toEqual([]);
20
+ });
21
+ it("retrieves a pair by SS58 address, public key or raw bytes", () => {
22
+ const pairs = new Pairs();
23
+ const publicKey = keyOf(2);
24
+ const pair = pairs.add(stubPair(publicKey));
25
+ expect(pairs.get(pair.address)).toBe(pair);
26
+ expect(pairs.get(publicKey)).toBe(pair);
27
+ expect(pairs.get(encodeAddress(publicKey, 2))).toBe(pair);
28
+ });
29
+ it("keeps only the latest pair for a public key", () => {
30
+ const pairs = new Pairs();
31
+ const publicKey = keyOf(3);
32
+ pairs.add(stubPair(publicKey));
33
+ const second = stubPair(publicKey);
34
+ pairs.add(second);
35
+ expect(pairs.all()).toHaveLength(1);
36
+ expect(pairs.get(publicKey)).toBe(second);
37
+ });
38
+ it("keeps distinct public keys apart", () => {
39
+ const pairs = new Pairs();
40
+ const first = pairs.add(stubPair(keyOf(4)));
41
+ const second = pairs.add(stubPair(keyOf(5)));
42
+ expect(pairs.all()).toEqual([first, second]);
43
+ expect(pairs.get(first.address)).toBe(first);
44
+ expect(pairs.get(second.address)).toBe(second);
45
+ });
46
+ it("names the address it could not find, formatting bytes as hex", () => {
47
+ const pairs = new Pairs();
48
+ expect(() => pairs.get(keyOf(6))).toThrow(`Unable to retrieve keypair '0x${"06".repeat(32)}'`);
49
+ });
50
+ it("names the address verbatim when it was given as SS58", () => {
51
+ const address = encodeAddress(keyOf(7), 42);
52
+ expect(() => new Pairs().get(address)).toThrow(`Unable to retrieve keypair '${address}'`);
53
+ });
54
+ it("rejects an address that is not decodable at all", () => {
55
+ expect(() => new Pairs().get("not-an-address")).toThrow();
56
+ });
57
+ it("removes a pair, after which lookup throws again", () => {
58
+ const pairs = new Pairs();
59
+ const publicKey = keyOf(8);
60
+ pairs.add(stubPair(publicKey));
61
+ pairs.remove(publicKey);
62
+ expect(pairs.all()).toEqual([]);
63
+ expect(() => pairs.get(publicKey)).toThrow("Unable to retrieve keypair");
64
+ });
65
+ it("removes by any encoding of the same key", () => {
66
+ const pairs = new Pairs();
67
+ const publicKey = keyOf(9);
68
+ const pair = pairs.add(stubPair(publicKey));
69
+ pairs.remove(encodeAddress(publicKey, 2));
70
+ expect(pairs.all()).toEqual([]);
71
+ expect(pair.address).toBe(encodeAddress(publicKey, 42));
72
+ });
73
+ it("ignores removal of a key that was never added", () => {
74
+ const pairs = new Pairs();
75
+ const kept = pairs.add(stubPair(keyOf(10)));
76
+ expect(() => pairs.remove(keyOf(11))).not.toThrow();
77
+ expect(pairs.all()).toEqual([kept]);
78
+ });
79
+ it("decodes the address for the map key rather than trusting the string", () => {
80
+ const publicKey = keyOf(12);
81
+ expect(decodeAddress(encodeAddress(publicKey, 42)).toString()).toBe(decodeAddress(encodeAddress(publicKey, 2)).toString());
82
+ });
83
+ });
84
+ //# sourceMappingURL=pairs.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pairs.test.js","sourceRoot":"","sources":["../../src/keyring/pairs.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=testing.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.test.d.ts","sourceRoot":"","sources":["../../src/keyring/testing.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,97 @@
1
+ import { u8aToHex } from "@polkadot/util";
2
+ import { describe, expect, it } from "vitest";
3
+ import { PAIRSSR25519, createTestKeyring } from "./testing.js";
4
+ import { createTestPairs } from "./testingPairs.js";
5
+ const SLOW = { timeout: 60000 };
6
+ describe("createTestKeyring", SLOW, () => {
7
+ it("adds a pair for every well-known dev account", () => {
8
+ expect(createTestKeyring().getPairs()).toHaveLength(PAIRSSR25519.length);
9
+ });
10
+ it("names each pair after its seed, lowercased with the path flattened", () => {
11
+ const names = createTestKeyring()
12
+ .getPairs()
13
+ .map((pair) => pair.meta.name);
14
+ expect(names).toEqual([
15
+ "alice",
16
+ "alice_stash",
17
+ "bob",
18
+ "bob_stash",
19
+ "charlie",
20
+ "dave",
21
+ "eve",
22
+ "ferdie",
23
+ ]);
24
+ });
25
+ it("marks every pair as a testing pair", () => {
26
+ for (const pair of createTestKeyring().getPairs()) {
27
+ expect(pair.meta.isTesting).toBe(true);
28
+ }
29
+ });
30
+ it("uses the hard-coded public keys, not derivation, by default", () => {
31
+ const keyring = createTestKeyring();
32
+ for (const { p } of PAIRSSR25519) {
33
+ expect(u8aToHex(keyring.getPair(p).publicKey)).toBe(p);
34
+ }
35
+ });
36
+ it("replaces lock with a no-op so the fixtures stay usable", () => {
37
+ const pair = createTestKeyring().getPairs()[0];
38
+ expect(pair).toBeDefined();
39
+ if (!pair)
40
+ return;
41
+ expect(() => pair.lock()).not.toThrow();
42
+ expect(pair.isLocked).toBe(false);
43
+ });
44
+ it("produces signable pairs", () => {
45
+ const pair = createTestKeyring().getPair(PAIRSSR25519[0]?.p ?? "0x");
46
+ const message = new TextEncoder().encode("hello");
47
+ expect(pair.verify(message, pair.sign(message), pair.publicKey)).toBe(true);
48
+ });
49
+ it("honours a requested ss58 format", () => {
50
+ const alice = PAIRSSR25519[0]?.p ?? "0x";
51
+ expect(createTestKeyring({ ss58Format: 42 }).getPair(alice).address).not.toBe(createTestKeyring({ ss58Format: 2 }).getPair(alice).address);
52
+ });
53
+ it("derives different keys when asked to, because the seeds are bare names", () => {
54
+ const derived = createTestKeyring({}, false);
55
+ expect(derived.getPairs()).toHaveLength(PAIRSSR25519.length);
56
+ for (const { p } of PAIRSSR25519) {
57
+ expect(() => derived.getPair(p)).toThrow("Unable to retrieve keypair");
58
+ }
59
+ });
60
+ it("rejects a keyring type it cannot support", () => {
61
+ expect(() => createTestKeyring({ type: "ed25519" })).toThrow("Expected a keyring type of either 'sr25519'");
62
+ });
63
+ });
64
+ describe("createTestPairs", SLOW, () => {
65
+ it("exposes every named pair plus nobody", () => {
66
+ const pairs = createTestPairs();
67
+ for (const name of [
68
+ "nobody",
69
+ "alice",
70
+ "alice_stash",
71
+ "bob",
72
+ "bob_stash",
73
+ "charlie",
74
+ "dave",
75
+ "eve",
76
+ "ferdie",
77
+ ]) {
78
+ expect(pairs[name], name).toBeDefined();
79
+ }
80
+ });
81
+ it("maps alice to the well-known Alice public key", () => {
82
+ expect(u8aToHex(createTestPairs().alice?.publicKey ?? new Uint8Array())).toBe(PAIRSSR25519[0]?.p);
83
+ });
84
+ it("includes nobody, which cannot verify anything", () => {
85
+ const nobodyPair = createTestPairs().nobody;
86
+ expect(nobodyPair).toBeDefined();
87
+ expect(nobodyPair?.isLocked).toBe(true);
88
+ expect(nobodyPair?.verify(new Uint8Array(1), new Uint8Array(64), nobodyPair.publicKey)).toBe(false);
89
+ });
90
+ it("returns independent maps so one test cannot poison another", () => {
91
+ const first = createTestPairs();
92
+ const second = createTestPairs();
93
+ expect(first).not.toBe(second);
94
+ expect(first.alice).not.toBe(second.alice);
95
+ });
96
+ });
97
+ //# sourceMappingURL=testing.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.test.js","sourceRoot":"","sources":["../../src/keyring/testing.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=keyring.test-d.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyring.test-d.d.ts","sourceRoot":"","sources":["../src/keyring.test-d.ts"],"names":[],"mappings":""}
@@ -0,0 +1,66 @@
1
+ import { assertType, describe, expectTypeOf, it } from "vitest";
2
+ import { Keyring, generateMiniSecret, generateMnemonic, getDefaultProviders, getDefaultSiteKeys, getPair, } from "./index.js";
3
+ import { nobody } from "./pair/nobody.js";
4
+ describe("Keyring types", () => {
5
+ it("implements the shared KeyringInstance contract", () => {
6
+ expectTypeOf().toExtend();
7
+ });
8
+ it("returns KeyringPair from every add and create method", () => {
9
+ const keyring = new Keyring();
10
+ expectTypeOf(keyring.addFromUri("//Alice")).toEqualTypeOf();
11
+ expectTypeOf(keyring.addFromMnemonic("x")).toEqualTypeOf();
12
+ expectTypeOf(keyring.addFromSeed(new Uint8Array())).toEqualTypeOf();
13
+ expectTypeOf(keyring.addFromAddress("x")).toEqualTypeOf();
14
+ expectTypeOf(keyring.getPair("x")).toEqualTypeOf();
15
+ expectTypeOf(keyring.getPairs()).toEqualTypeOf();
16
+ expectTypeOf(keyring.publicKeys).toEqualTypeOf();
17
+ expectTypeOf(keyring.toJson("x")).toEqualTypeOf();
18
+ });
19
+ it("accepts an address as either a string or raw bytes", () => {
20
+ const keyring = new Keyring();
21
+ assertType(keyring.getPair("5abc"));
22
+ assertType(keyring.getPair(new Uint8Array(32)));
23
+ assertType(keyring.getPair(1));
24
+ });
25
+ it("rejects a keyring option object with an unknown key", () => {
26
+ new Keyring({ curve: "sr25519" });
27
+ });
28
+ it("has a readonly type", () => {
29
+ expectTypeOf().toEqualTypeOf();
30
+ });
31
+ });
32
+ describe("account helper types", () => {
33
+ it("returns a pair from getPair with every argument optional", () => {
34
+ expectTypeOf(getPair).returns.toEqualTypeOf();
35
+ assertType(getPair());
36
+ assertType(getPair("secret", "account", "sr25519", 42));
37
+ });
38
+ it("returns the mnemonic and address as a tuple", () => {
39
+ expectTypeOf(generateMnemonic).returns.resolves.toEqualTypeOf();
40
+ });
41
+ it("returns the mini secret as bytes paired with an address", () => {
42
+ expectTypeOf(generateMiniSecret).returns.resolves.toEqualTypeOf();
43
+ });
44
+ it("describes the dev fixtures with the shared account types", () => {
45
+ expectTypeOf(getDefaultSiteKeys()).toEqualTypeOf();
46
+ expectTypeOf(getDefaultProviders()).toEqualTypeOf();
47
+ });
48
+ it("returns a real KeyringPair for nobody", () => {
49
+ expectTypeOf(nobody()).toEqualTypeOf();
50
+ });
51
+ });
52
+ describe("test keyring map inference", () => {
53
+ it("defaults to the substrate map when no options are given", () => {
54
+ expectTypeOf().toEqualTypeOf();
55
+ expectTypeOf().toEqualTypeOf();
56
+ });
57
+ it("selects the ethereum map only for an ethereum keyring", () => {
58
+ expectTypeOf().toEqualTypeOf();
59
+ expectTypeOf().toEqualTypeOf();
60
+ });
61
+ it("indexes the map by arbitrary names, always yielding a pair", () => {
62
+ expectTypeOf().toEqualTypeOf();
63
+ expectTypeOf().toEqualTypeOf();
64
+ });
65
+ });
66
+ //# sourceMappingURL=keyring.test-d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyring.test-d.js","sourceRoot":"","sources":["../src/keyring.test-d.ts"],"names":[],"mappings":"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"}