@prosopo/keyring 2.6.3 → 2.8.6

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 (105) hide show
  1. package/CHANGELOG.md +73 -0
  2. package/README.md +8 -0
  3. package/dist/accounts/getPair.d.ts +2 -3
  4. package/dist/accounts/getPair.d.ts.map +1 -1
  5. package/dist/accounts/getPair.js +3 -8
  6. package/dist/accounts/getPair.js.map +1 -1
  7. package/dist/accounts/index.d.ts +1 -0
  8. package/dist/accounts/index.d.ts.map +1 -1
  9. package/dist/accounts/index.js +1 -0
  10. package/dist/accounts/index.js.map +1 -1
  11. package/dist/accounts/mnemonic.d.ts +2 -2
  12. package/dist/accounts/mnemonic.d.ts.map +1 -1
  13. package/dist/accounts/mnemonic.js +2 -4
  14. package/dist/accounts/mnemonic.js.map +1 -1
  15. package/dist/accounts/testAccounts.d.ts +4 -0
  16. package/dist/accounts/testAccounts.d.ts.map +1 -0
  17. package/dist/accounts/testAccounts.js +38 -0
  18. package/dist/accounts/testAccounts.js.map +1 -0
  19. package/dist/cjs/accounts/getPair.cjs +4 -10
  20. package/dist/cjs/accounts/index.cjs +3 -1
  21. package/dist/cjs/accounts/mnemonic.cjs +8 -9
  22. package/dist/cjs/accounts/testAccounts.cjs +44 -0
  23. package/dist/cjs/dist/accounts/getPair.cjs +41 -0
  24. package/dist/cjs/dist/accounts/index.cjs +10 -0
  25. package/dist/cjs/dist/accounts/mnemonic.cjs +19 -0
  26. package/dist/cjs/dist/accounts/testAccounts.cjs +42 -0
  27. package/dist/cjs/dist/index.cjs +6 -0
  28. package/dist/cjs/dist/keyring/index.cjs +7 -0
  29. package/dist/cjs/dist/keyring/keyring.cjs +138 -0
  30. package/dist/cjs/dist/keyring/pairs.cjs +31 -0
  31. package/dist/cjs/dist/pair/decode.cjs +32 -0
  32. package/dist/cjs/dist/pair/defaults.cjs +31 -0
  33. package/dist/cjs/dist/pair/encode.cjs +18 -0
  34. package/dist/cjs/dist/pair/index.cjs +143 -0
  35. package/dist/cjs/dist/pair/toJson.cjs +11 -0
  36. package/dist/cjs/index.cjs +11 -1
  37. package/dist/cjs/keyring/index.cjs +7 -0
  38. package/dist/cjs/keyring/keyring.cjs +271 -0
  39. package/dist/cjs/keyring/pairs.cjs +28 -0
  40. package/dist/cjs/pair/decode.cjs +32 -0
  41. package/dist/cjs/pair/defaults.cjs +31 -0
  42. package/dist/cjs/pair/encode.cjs +18 -0
  43. package/dist/cjs/pair/index.cjs +156 -0
  44. package/dist/cjs/pair/toJson.cjs +14 -0
  45. package/dist/index.d.ts +2 -0
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +2 -0
  48. package/dist/index.js.map +1 -1
  49. package/dist/keyring/index.d.ts +3 -0
  50. package/dist/keyring/index.d.ts.map +1 -0
  51. package/dist/keyring/index.js +3 -0
  52. package/dist/keyring/index.js.map +1 -0
  53. package/dist/keyring/keyring.d.ts +36 -0
  54. package/dist/keyring/keyring.d.ts.map +1 -0
  55. package/dist/keyring/keyring.js +146 -0
  56. package/dist/keyring/keyring.js.map +1 -0
  57. package/dist/keyring/pairs.d.ts +9 -0
  58. package/dist/keyring/pairs.d.ts.map +1 -0
  59. package/dist/keyring/pairs.js +31 -0
  60. package/dist/keyring/pairs.js.map +1 -0
  61. package/dist/keyring/testing.d.ts +14 -0
  62. package/dist/keyring/testing.d.ts.map +1 -0
  63. package/dist/keyring/testing.js +76 -0
  64. package/dist/keyring/testing.js.map +1 -0
  65. package/dist/keyring/testingPairs.d.ts +26 -0
  66. package/dist/keyring/testingPairs.d.ts.map +1 -0
  67. package/dist/keyring/testingPairs.js +14 -0
  68. package/dist/keyring/testingPairs.js.map +1 -0
  69. package/dist/pair/decode.d.ts +6 -0
  70. package/dist/pair/decode.d.ts.map +1 -0
  71. package/dist/pair/decode.js +30 -0
  72. package/dist/pair/decode.js.map +1 -0
  73. package/dist/pair/decode.spec.d.ts +2 -0
  74. package/dist/pair/decode.spec.d.ts.map +1 -0
  75. package/dist/pair/decode.spec.js +13 -0
  76. package/dist/pair/decode.spec.js.map +1 -0
  77. package/dist/pair/defaults.d.ts +7 -0
  78. package/dist/pair/defaults.d.ts.map +1 -0
  79. package/dist/pair/defaults.js +9 -0
  80. package/dist/pair/defaults.js.map +1 -0
  81. package/dist/pair/encode.d.ts +3 -0
  82. package/dist/pair/encode.d.ts.map +1 -0
  83. package/dist/pair/encode.js +16 -0
  84. package/dist/pair/encode.js.map +1 -0
  85. package/dist/pair/encode.spec.d.ts +2 -0
  86. package/dist/pair/encode.spec.d.ts.map +1 -0
  87. package/dist/pair/encode.spec.js +16 -0
  88. package/dist/pair/encode.spec.js.map +1 -0
  89. package/dist/pair/index.d.ts +11 -0
  90. package/dist/pair/index.d.ts.map +1 -0
  91. package/dist/pair/index.js +151 -0
  92. package/dist/pair/index.js.map +1 -0
  93. package/dist/pair/nobody.d.ts +3 -0
  94. package/dist/pair/nobody.d.ts.map +1 -0
  95. package/dist/pair/nobody.js +40 -0
  96. package/dist/pair/nobody.js.map +1 -0
  97. package/dist/pair/toJson.d.ts +9 -0
  98. package/dist/pair/toJson.d.ts.map +1 -0
  99. package/dist/pair/toJson.js +9 -0
  100. package/dist/pair/toJson.js.map +1 -0
  101. package/dist/pair/toJson.spec.d.ts +2 -0
  102. package/dist/pair/toJson.spec.d.ts.map +1 -0
  103. package/dist/pair/toJson.spec.js +33 -0
  104. package/dist/pair/toJson.spec.js.map +1 -0
  105. package/package.json +16 -11
@@ -0,0 +1,151 @@
1
+ import { objectSpread, u8aConcat, u8aEmpty, u8aToHex, u8aToU8a, } from "@polkadot/util";
2
+ import { blake2AsU8a } from "@prosopo/util-crypto";
3
+ import { keyExtractPath, keyFromPath } from "@prosopo/util-crypto";
4
+ import { secp256k1Compress } from "@prosopo/util-crypto";
5
+ import { signatureVerify } from "@prosopo/util-crypto";
6
+ import { sr25519FromSeed, sr25519Sign } from "@prosopo/util-crypto";
7
+ import { sr25519VrfSign, sr25519VrfVerify } from "@prosopo/util-crypto";
8
+ import { decodePair } from "./decode.js";
9
+ import { encodePair } from "./encode.js";
10
+ import { pairToJson } from "./toJson.js";
11
+ const SIG_TYPE_NONE = new Uint8Array([]);
12
+ const TYPE_FROM_SEED = {
13
+ sr25519: sr25519FromSeed,
14
+ ed25519: () => {
15
+ throw new Error("Not Implemented");
16
+ },
17
+ ecdsa: () => {
18
+ throw new Error("Not Implemented");
19
+ },
20
+ ethereum: () => {
21
+ throw new Error("Not Implemented");
22
+ },
23
+ };
24
+ const TYPE_PREFIX = {
25
+ ecdsa: new Uint8Array([2]),
26
+ ed25519: new Uint8Array([0]),
27
+ ethereum: new Uint8Array([2]),
28
+ sr25519: new Uint8Array([1]),
29
+ };
30
+ const TYPE_SIGNATURE = {
31
+ sr25519: sr25519Sign,
32
+ ed25519: () => {
33
+ throw new Error("Not Implemented");
34
+ },
35
+ ecdsa: () => {
36
+ throw new Error("Not Implemented");
37
+ },
38
+ ethereum: () => {
39
+ throw new Error("Not Implemented");
40
+ },
41
+ };
42
+ const TYPE_ADDRESS = {
43
+ sr25519: (p) => p,
44
+ ed25519: () => {
45
+ throw new Error("Not Implemented");
46
+ },
47
+ ecdsa: () => {
48
+ throw new Error("Not Implemented");
49
+ },
50
+ ethereum: () => {
51
+ throw new Error("Not Implemented");
52
+ },
53
+ };
54
+ function isLocked(secretKey) {
55
+ return !secretKey || u8aEmpty(secretKey);
56
+ }
57
+ function vrfHash(proof, context, extra) {
58
+ return blake2AsU8a(u8aConcat(context || "", extra || "", proof));
59
+ }
60
+ export function createPair({ toSS58, type }, { publicKey, secretKey }, meta = {}, encoded = null, encTypes) {
61
+ const decodePkcs8 = (passphrase, userEncoded) => {
62
+ const decoded = decodePair(passphrase, userEncoded || encoded, encTypes);
63
+ if (decoded.secretKey.length === 64) {
64
+ publicKey = decoded.publicKey;
65
+ secretKey = decoded.secretKey;
66
+ }
67
+ else {
68
+ const pair = TYPE_FROM_SEED[type](decoded.secretKey);
69
+ publicKey = pair.publicKey;
70
+ secretKey = pair.secretKey;
71
+ }
72
+ };
73
+ const recode = (passphrase) => {
74
+ isLocked(secretKey) && encoded && decodePkcs8(passphrase, encoded);
75
+ encoded = encodePair({ publicKey, secretKey }, passphrase);
76
+ encTypes = undefined;
77
+ return encoded;
78
+ };
79
+ const encodeAddress = () => {
80
+ const raw = TYPE_ADDRESS[type](publicKey);
81
+ return toSS58(raw);
82
+ };
83
+ return {
84
+ get address() {
85
+ return encodeAddress();
86
+ },
87
+ get addressRaw() {
88
+ return TYPE_ADDRESS[type](publicKey);
89
+ },
90
+ get isLocked() {
91
+ return isLocked(secretKey);
92
+ },
93
+ get meta() {
94
+ return meta;
95
+ },
96
+ get publicKey() {
97
+ return publicKey;
98
+ },
99
+ get type() {
100
+ return type;
101
+ },
102
+ decodePkcs8,
103
+ derive: (suri, meta) => {
104
+ if (isLocked(secretKey)) {
105
+ throw new Error("Cannot derive on a locked keypair");
106
+ }
107
+ const { path } = keyExtractPath(suri);
108
+ const derived = keyFromPath({ publicKey, secretKey }, path, type);
109
+ return createPair({ toSS58, type }, derived, meta, null);
110
+ },
111
+ encodePkcs8: (passphrase) => {
112
+ return recode(passphrase);
113
+ },
114
+ lock: () => {
115
+ secretKey = new Uint8Array([]);
116
+ },
117
+ setMeta: (additional) => {
118
+ meta = objectSpread({}, meta, additional);
119
+ },
120
+ sign: (message, options = {}) => {
121
+ if (isLocked(secretKey)) {
122
+ throw new Error("Cannot sign with a locked key pair");
123
+ }
124
+ return u8aConcat(options.withType ? TYPE_PREFIX[type] : SIG_TYPE_NONE, TYPE_SIGNATURE[type](u8aToU8a(message), { publicKey, secretKey }));
125
+ },
126
+ toJson: (passphrase) => {
127
+ const address = ["ecdsa", "ethereum"].includes(type)
128
+ ? publicKey.length === 20
129
+ ? u8aToHex(publicKey)
130
+ : u8aToHex(secp256k1Compress(publicKey))
131
+ : encodeAddress();
132
+ return pairToJson(type, { address, meta }, recode(passphrase), !!passphrase);
133
+ },
134
+ unlock: (passphrase) => {
135
+ decodePkcs8(passphrase);
136
+ },
137
+ verify: (message, signature, signerPublic) => {
138
+ return signatureVerify(message, signature, TYPE_ADDRESS[type](u8aToU8a(signerPublic))).isValid;
139
+ },
140
+ vrfSign: (message, context, extra) => {
141
+ if (isLocked(secretKey)) {
142
+ throw new Error("Cannot sign with a locked key pair");
143
+ }
144
+ return sr25519VrfSign(message, { secretKey }, context, extra);
145
+ },
146
+ vrfVerify: (message, vrfResult, signerPublic, context, extra) => {
147
+ return sr25519VrfVerify(message, vrfResult, publicKey, context, extra);
148
+ },
149
+ };
150
+ }
151
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pair/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { KeyringPair } from "@prosopo/types";
2
+ export declare function nobody(): KeyringPair;
3
+ //# sourceMappingURL=nobody.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nobody.d.ts","sourceRoot":"","sources":["../../src/pair/nobody.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACX,WAAW,EAGX,MAAM,gBAAgB,CAAC;AAuDxB,wBAAgB,MAAM,IAAI,WAAW,CAEpC"}
@@ -0,0 +1,40 @@
1
+ const publicKey = new Uint8Array(32);
2
+ const address = "5C4hrfjw9DjXZTzV3MwzrrAr9P1MJhSrvWGWqi1eSuyUpnhM";
3
+ const meta = {
4
+ isTesting: true,
5
+ name: "nobody",
6
+ };
7
+ const json = {
8
+ address,
9
+ encoded: "",
10
+ encoding: {
11
+ content: ["pkcs8", "ed25519"],
12
+ type: "none",
13
+ version: "0",
14
+ },
15
+ meta,
16
+ };
17
+ const pair = {
18
+ address,
19
+ addressRaw: publicKey,
20
+ decodePkcs8: (_passphrase, _encoded) => undefined,
21
+ derive: (_suri, _meta) => pair,
22
+ encodePkcs8: (_passphrase) => new Uint8Array(0),
23
+ isLocked: true,
24
+ lock: () => {
25
+ },
26
+ meta,
27
+ publicKey,
28
+ setMeta: (_meta) => undefined,
29
+ sign: (_message) => new Uint8Array(64),
30
+ toJson: (_passphrase) => json,
31
+ type: "sr25519",
32
+ unlock: (_passphrase) => undefined,
33
+ verify: (_message, _signature) => false,
34
+ vrfSign: (_message, _context, _extra) => new Uint8Array(96),
35
+ vrfVerify: (_message, _vrfResult, _context, _extra) => false,
36
+ };
37
+ export function nobody() {
38
+ return pair;
39
+ }
40
+ //# sourceMappingURL=nobody.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nobody.js","sourceRoot":"","sources":["../../src/pair/nobody.ts"],"names":[],"mappings":"AAUA,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AAGrC,MAAM,OAAO,GAAG,kDAAkD,CAAC;AAEnE,MAAM,IAAI,GAAG;IACZ,SAAS,EAAE,IAAI;IACf,IAAI,EAAE,QAAQ;CACd,CAAC;AAEF,MAAM,IAAI,GAAqB;IAC9B,OAAO;IACP,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE;QACT,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;QAC7B,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,GAAG;KACZ;IACD,IAAI;CACJ,CAAC;AAEF,MAAM,IAAI,GAAgB;IACzB,OAAO;IACP,UAAU,EAAE,SAAS;IACrB,WAAW,EAAE,CAAC,WAAoB,EAAE,QAAqB,EAAQ,EAAE,CAAC,SAAS;IAC7E,MAAM,EAAE,CAAC,KAAa,EAAE,KAAwB,EAAe,EAAE,CAAC,IAAI;IACtE,WAAW,EAAE,CAAC,WAAoB,EAAc,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;IACpE,QAAQ,EAAE,IAAI;IACd,IAAI,EAAE,GAAS,EAAE;IAEjB,CAAC;IACD,IAAI;IACJ,SAAS;IACT,OAAO,EAAE,CAAC,KAAuB,EAAQ,EAAE,CAAC,SAAS;IACrD,IAAI,EAAE,CAAC,QAAoB,EAAc,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC;IAC9D,MAAM,EAAE,CAAC,WAAoB,EAAoB,EAAE,CAAC,IAAI;IACxD,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,CAAC,WAAoB,EAAQ,EAAE,CAAC,SAAS;IACjD,MAAM,EAAE,CAAC,QAAoB,EAAE,UAAsB,EAAW,EAAE,CAAC,KAAK;IACxE,OAAO,EAAE,CACR,QAAoB,EACpB,QAA8B,EAC9B,MAA4B,EACf,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC;IACnC,SAAS,EAAE,CACV,QAAoB,EACpB,UAAsB,EACtB,QAA8B,EAC9B,MAA4B,EAClB,EAAE,CAAC,KAAK;CACnB,CAAC;AAEF,MAAM,UAAU,MAAM;IACrB,OAAO,IAAI,CAAC;AACb,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { KeyringPair$Json, KeyringPair$Meta } from "@prosopo/types";
2
+ import type { KeypairType } from "@prosopo/util-crypto";
3
+ interface PairStateJson {
4
+ address: string;
5
+ meta: KeyringPair$Meta;
6
+ }
7
+ export declare function pairToJson(type: KeypairType, { address, meta }: PairStateJson, encoded: Uint8Array, isEncrypted: boolean): KeyringPair$Json;
8
+ export {};
9
+ //# sourceMappingURL=toJson.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toJson.d.ts","sourceRoot":"","sources":["../../src/pair/toJson.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAKxD,UAAU,aAAa;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,gBAAgB,CAAC;CACvB;AAED,wBAAgB,UAAU,CACzB,IAAI,EAAE,WAAW,EACjB,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,aAAa,EAChC,OAAO,EAAE,UAAU,EACnB,WAAW,EAAE,OAAO,GAClB,gBAAgB,CAQlB"}
@@ -0,0 +1,9 @@
1
+ import { objectSpread } from "@polkadot/util";
2
+ import { jsonEncryptFormat } from "@prosopo/util-crypto";
3
+ export function pairToJson(type, { address, meta }, encoded, isEncrypted) {
4
+ return objectSpread(jsonEncryptFormat(encoded, ["pkcs8", type], isEncrypted), {
5
+ address,
6
+ meta,
7
+ });
8
+ }
9
+ //# sourceMappingURL=toJson.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toJson.js","sourceRoot":"","sources":["../../src/pair/toJson.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAOzD,MAAM,UAAU,UAAU,CACzB,IAAiB,EACjB,EAAE,OAAO,EAAE,IAAI,EAAiB,EAChC,OAAmB,EACnB,WAAoB;IAEpB,OAAO,YAAY,CAClB,iBAAiB,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,WAAW,CAAC,EACxD;QACC,OAAO;QACP,IAAI;KACJ,CACD,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=toJson.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toJson.spec.d.ts","sourceRoot":"","sources":["../../src/pair/toJson.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,33 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { createTestPairs } from "../keyring/testingPairs.js";
3
+ const keyring = createTestPairs({ type: "sr25519" }, false);
4
+ describe("toJson", () => {
5
+ it("creates an unencoded output with no passphrase", () => {
6
+ expect(keyring.alice.toJson()).toMatchObject({
7
+ address: "5Engs9f8Gk6JqvVWz3kFyJ8Kqkgx7pLi8C1UTcr7EZ855qBQ",
8
+ encoded: "MFMCAQEwBQYDK2VwBCIEIHipoQ68w1cHP0Tju+ym3lzqc2fma5FCMXgDqwBDqTtU2pOQGFg2vA+4oVIIZMphcnOugCZhNuyAfxQ4r1OyWsahIwMhAHh9b36VcuIWVvYdPYl8NDyAyBt3Sx125cjHJVK3zLwl",
9
+ encoding: {
10
+ content: ["pkcs8", "sr25519"],
11
+ type: ["none"],
12
+ version: "3",
13
+ },
14
+ meta: {
15
+ isTesting: true,
16
+ name: "alice",
17
+ },
18
+ });
19
+ });
20
+ it("creates an encoded output with passphrase", () => {
21
+ const json = keyring.alice.toJson("testing");
22
+ expect(json.encoded).toHaveLength(268);
23
+ expect(json).toMatchObject({
24
+ address: "5Engs9f8Gk6JqvVWz3kFyJ8Kqkgx7pLi8C1UTcr7EZ855qBQ",
25
+ encoding: {
26
+ content: ["pkcs8", "sr25519"],
27
+ type: ["scrypt", "xsalsa20-poly1305"],
28
+ version: "3",
29
+ },
30
+ });
31
+ });
32
+ });
33
+ //# sourceMappingURL=toJson.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toJson.spec.js","sourceRoot":"","sources":["../../src/pair/toJson.spec.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,MAAM,OAAO,GAAG,eAAe,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;AAE5D,QAAQ,CAAC,QAAQ,EAAE,GAAS,EAAE;IAC7B,EAAE,CAAC,gDAAgD,EAAE,GAAS,EAAE;QAC/D,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,aAAa,CAAC;YAC5C,OAAO,EAAE,kDAAkD;YAC3D,OAAO,EACN,8JAA8J;YAC/J,QAAQ,EAAE;gBACT,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;gBAC7B,IAAI,EAAE,CAAC,MAAM,CAAC;gBACd,OAAO,EAAE,GAAG;aACZ;YACD,IAAI,EAAE;gBACL,SAAS,EAAE,IAAI;gBACf,IAAI,EAAE,OAAO;aACb;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAS,EAAE;QAC1D,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE7C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC;YAC1B,OAAO,EAAE,kDAAkD;YAC3D,QAAQ,EAAE;gBACT,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;gBAC7B,IAAI,EAAE,CAAC,QAAQ,EAAE,mBAAmB,CAAC;gBACrC,OAAO,EAAE,GAAG;aACZ;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prosopo/keyring",
3
- "version": "2.6.3",
3
+ "version": "2.8.6",
4
4
  "description": "Keypair generator for Prosopo",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -22,8 +22,7 @@
22
22
  },
23
23
  "repository": {
24
24
  "type": "git",
25
- "url": "git+https://github.com/prosopo/captcha.git",
26
- "directory": "packages/keyring"
25
+ "url": "git+ssh://git@github.com/prosopo/types.git"
27
26
  },
28
27
  "author": "Prosopo Limited",
29
28
  "license": "Apache-2.0",
@@ -32,22 +31,28 @@
32
31
  },
33
32
  "homepage": "https://github.com/prosopo/captcha#readme",
34
33
  "dependencies": {
35
- "@polkadot/keyring": "12.6.2",
34
+ "@noble/curves": "1.9.2",
35
+ "@noble/hashes": "^1.5.0",
36
36
  "@polkadot/util": "12.6.2",
37
- "@polkadot/util-crypto": "12.6.2",
38
- "@prosopo/common": "2.6.0",
39
- "@prosopo/types": "2.7.0"
37
+ "@prosopo/common": "3.0.2",
38
+ "@prosopo/types": "3.0.3",
39
+ "@prosopo/util-crypto": "13.5.1",
40
+ "@typegoose/auto-increment": "4.13.0",
41
+ "axios": "1.10.0",
42
+ "esbuild": "0.25.6",
43
+ "openpgp": "5.11.3",
44
+ "webpack-dev-server": "5.2.2"
40
45
  },
41
46
  "devDependencies": {
42
- "@prosopo/config": "2.6.0",
47
+ "@prosopo/config": "3.1.0",
43
48
  "@vitest/coverage-v8": "3.0.9",
44
49
  "concurrently": "9.0.1",
45
50
  "del-cli": "6.0.0",
46
- "npm-run-all": "2.1.0",
51
+ "npm-run-all": "4.1.5",
47
52
  "tslib": "2.7.0",
48
- "tsx": "4.19.1",
53
+ "tsx": "4.20.3",
49
54
  "typescript": "5.6.2",
50
- "vite": "6.2.3",
55
+ "vite": "6.3.5",
51
56
  "vitest": "3.0.9"
52
57
  },
53
58
  "sideEffects": false