@renown/sdk 6.0.0-dev.7 → 6.0.0-dev.77

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 (220) hide show
  1. package/dist/src/common.d.ts +16 -8
  2. package/dist/src/common.d.ts.map +1 -1
  3. package/dist/src/common.js +78 -38
  4. package/dist/src/common.js.map +1 -1
  5. package/dist/src/crypto/browser-key-storage.d.ts +4 -2
  6. package/dist/src/crypto/browser-key-storage.d.ts.map +1 -1
  7. package/dist/src/crypto/browser-key-storage.js +54 -51
  8. package/dist/src/crypto/browser-key-storage.js.map +1 -1
  9. package/dist/src/crypto/common.d.ts +6 -0
  10. package/dist/src/crypto/common.d.ts.map +1 -0
  11. package/dist/src/crypto/common.js +8 -0
  12. package/dist/src/crypto/common.js.map +1 -0
  13. package/dist/src/crypto/index.d.ts +1 -34
  14. package/dist/src/crypto/index.d.ts.map +1 -1
  15. package/dist/src/crypto/index.js +1 -128
  16. package/dist/src/crypto/index.js.map +1 -1
  17. package/dist/src/crypto/memory-key-storage.d.ts +9 -0
  18. package/dist/src/crypto/memory-key-storage.d.ts.map +1 -0
  19. package/dist/src/crypto/memory-key-storage.js +18 -0
  20. package/dist/src/crypto/memory-key-storage.js.map +1 -0
  21. package/dist/src/crypto/node-key-storage.d.ts +16 -3
  22. package/dist/src/crypto/node-key-storage.d.ts.map +1 -1
  23. package/dist/src/crypto/node-key-storage.js +82 -42
  24. package/dist/src/crypto/node-key-storage.js.map +1 -1
  25. package/dist/src/crypto/node.d.ts +1 -0
  26. package/dist/src/crypto/node.d.ts.map +1 -1
  27. package/dist/src/crypto/node.js +1 -1
  28. package/dist/src/crypto/node.js.map +1 -1
  29. package/dist/src/crypto/renown-crypto-builder.d.ts +11 -0
  30. package/dist/src/crypto/renown-crypto-builder.d.ts.map +1 -0
  31. package/dist/src/crypto/renown-crypto-builder.js +34 -0
  32. package/dist/src/crypto/renown-crypto-builder.js.map +1 -0
  33. package/dist/src/crypto/renown-crypto.d.ts +26 -0
  34. package/dist/src/crypto/renown-crypto.d.ts.map +1 -0
  35. package/dist/src/crypto/renown-crypto.js +56 -0
  36. package/dist/src/crypto/renown-crypto.js.map +1 -0
  37. package/dist/src/crypto/signer.d.ts +61 -8
  38. package/dist/src/crypto/signer.d.ts.map +1 -1
  39. package/dist/src/crypto/signer.js +98 -28
  40. package/dist/src/crypto/signer.js.map +1 -1
  41. package/dist/src/crypto/types.d.ts +27 -0
  42. package/dist/src/crypto/types.d.ts.map +1 -0
  43. package/dist/src/crypto/types.js +2 -0
  44. package/dist/src/crypto/types.js.map +1 -0
  45. package/dist/src/crypto/utils.d.ts +13 -0
  46. package/dist/src/crypto/utils.d.ts.map +1 -0
  47. package/dist/src/crypto/utils.js +39 -0
  48. package/dist/src/crypto/utils.js.map +1 -0
  49. package/dist/src/event/event.browser.d.ts.map +1 -1
  50. package/dist/src/event/event.node.d.ts.map +1 -1
  51. package/dist/src/event/memory.d.ts +8 -0
  52. package/dist/src/event/memory.d.ts.map +1 -0
  53. package/dist/src/event/memory.js +16 -0
  54. package/dist/src/event/memory.js.map +1 -0
  55. package/dist/src/index.d.ts +4 -9
  56. package/dist/src/index.d.ts.map +1 -1
  57. package/dist/src/index.js +4 -9
  58. package/dist/src/index.js.map +1 -1
  59. package/dist/src/init.browser.d.ts +51 -2
  60. package/dist/src/init.browser.d.ts.map +1 -1
  61. package/dist/src/init.browser.js +62 -3
  62. package/dist/src/init.browser.js.map +1 -1
  63. package/dist/src/init.node.d.ts +28 -2
  64. package/dist/src/init.node.d.ts.map +1 -1
  65. package/dist/src/init.node.js +26 -4
  66. package/dist/src/init.node.js.map +1 -1
  67. package/dist/src/node.d.ts +7 -3
  68. package/dist/src/node.d.ts.map +1 -1
  69. package/dist/src/node.js +7 -3
  70. package/dist/src/node.js.map +1 -1
  71. package/dist/src/profile.d.ts +3 -0
  72. package/dist/src/profile.d.ts.map +1 -0
  73. package/dist/src/profile.js +22 -0
  74. package/dist/src/profile.js.map +1 -0
  75. package/dist/src/renown-builder.d.ts +68 -0
  76. package/dist/src/renown-builder.d.ts.map +1 -0
  77. package/dist/src/renown-builder.js +130 -0
  78. package/dist/src/renown-builder.js.map +1 -0
  79. package/dist/src/storage/common.d.ts +14 -10
  80. package/dist/src/storage/common.d.ts.map +1 -1
  81. package/dist/src/storage/common.js +16 -3
  82. package/dist/src/storage/common.js.map +1 -1
  83. package/dist/src/storage/storage.browser.d.ts +1 -0
  84. package/dist/src/storage/storage.browser.d.ts.map +1 -1
  85. package/dist/src/storage/storage.browser.js +3 -1
  86. package/dist/src/storage/storage.browser.js.map +1 -1
  87. package/dist/src/storage/storage.node.d.ts +1 -1
  88. package/dist/src/storage/storage.node.d.ts.map +1 -1
  89. package/dist/src/storage/storage.node.js +7 -5
  90. package/dist/src/storage/storage.node.js.map +1 -1
  91. package/dist/src/types.d.ts +51 -5
  92. package/dist/src/types.d.ts.map +1 -1
  93. package/dist/src/utils.d.ts +17 -10
  94. package/dist/src/utils.d.ts.map +1 -1
  95. package/dist/src/utils.js +14 -0
  96. package/dist/src/utils.js.map +1 -1
  97. package/dist/{tests → test}/auth.test.d.ts.map +1 -1
  98. package/dist/test/auth.test.js.map +1 -0
  99. package/dist/test/crypto/signer.test.d.ts +2 -0
  100. package/dist/test/crypto/signer.test.d.ts.map +1 -0
  101. package/dist/test/crypto/signer.test.js +184 -0
  102. package/dist/test/crypto/signer.test.js.map +1 -0
  103. package/dist/test/renown.test.d.ts +2 -0
  104. package/dist/test/renown.test.d.ts.map +1 -0
  105. package/dist/test/renown.test.js +287 -0
  106. package/dist/test/renown.test.js.map +1 -0
  107. package/dist/test/storage.node.test.d.ts +2 -0
  108. package/dist/test/storage.node.test.d.ts.map +1 -0
  109. package/dist/test/storage.node.test.js +66 -0
  110. package/dist/test/storage.node.test.js.map +1 -0
  111. package/dist/tsconfig.tsbuildinfo +1 -1
  112. package/dist/{e2e/fixtures/vite.config.d.ts → vitest.config.d.ts} +1 -1
  113. package/dist/vitest.config.d.ts.map +1 -0
  114. package/dist/vitest.config.js +7 -0
  115. package/dist/vitest.config.js.map +1 -0
  116. package/package.json +4 -28
  117. package/dist/e2e/fixtures/main.d.ts +0 -2
  118. package/dist/e2e/fixtures/main.d.ts.map +0 -1
  119. package/dist/e2e/fixtures/main.js +0 -97
  120. package/dist/e2e/fixtures/main.js.map +0 -1
  121. package/dist/e2e/fixtures/vite.config.d.ts.map +0 -1
  122. package/dist/e2e/fixtures/vite.config.js +0 -10
  123. package/dist/e2e/fixtures/vite.config.js.map +0 -1
  124. package/dist/e2e/renown-components.spec.d.ts +0 -2
  125. package/dist/e2e/renown-components.spec.d.ts.map +0 -1
  126. package/dist/e2e/renown-components.spec.js +0 -155
  127. package/dist/e2e/renown-components.spec.js.map +0 -1
  128. package/dist/playwright.config.d.ts +0 -3
  129. package/dist/playwright.config.d.ts.map +0 -1
  130. package/dist/playwright.config.js +0 -25
  131. package/dist/playwright.config.js.map +0 -1
  132. package/dist/src/assets/assets.d.ts +0 -19
  133. package/dist/src/assets/renown-hover.svg +0 -17
  134. package/dist/src/assets/renown-light.svg +0 -15
  135. package/dist/src/assets/renown-short-hover.png +0 -0
  136. package/dist/src/assets/renown-short.png +0 -0
  137. package/dist/src/assets/renown.svg +0 -16
  138. package/dist/src/components/RenownAuthButton.d.ts +0 -62
  139. package/dist/src/components/RenownAuthButton.d.ts.map +0 -1
  140. package/dist/src/components/RenownAuthButton.js +0 -82
  141. package/dist/src/components/RenownAuthButton.js.map +0 -1
  142. package/dist/src/components/RenownLoginButton.d.ts +0 -48
  143. package/dist/src/components/RenownLoginButton.d.ts.map +0 -1
  144. package/dist/src/components/RenownLoginButton.js +0 -175
  145. package/dist/src/components/RenownLoginButton.js.map +0 -1
  146. package/dist/src/components/RenownUserButton.d.ts +0 -66
  147. package/dist/src/components/RenownUserButton.d.ts.map +0 -1
  148. package/dist/src/components/RenownUserButton.js +0 -216
  149. package/dist/src/components/RenownUserButton.js.map +0 -1
  150. package/dist/src/components/icons.d.ts +0 -25
  151. package/dist/src/components/icons.d.ts.map +0 -1
  152. package/dist/src/components/icons.js +0 -24
  153. package/dist/src/components/icons.js.map +0 -1
  154. package/dist/src/components/image-data.d.ts +0 -3
  155. package/dist/src/components/image-data.d.ts.map +0 -1
  156. package/dist/src/components/image-data.js +0 -4
  157. package/dist/src/components/image-data.js.map +0 -1
  158. package/dist/src/components/index.d.ts +0 -8
  159. package/dist/src/components/index.d.ts.map +0 -1
  160. package/dist/src/components/index.js +0 -5
  161. package/dist/src/components/index.js.map +0 -1
  162. package/dist/src/hooks/index.d.ts +0 -2
  163. package/dist/src/hooks/index.d.ts.map +0 -1
  164. package/dist/src/hooks/index.js +0 -2
  165. package/dist/src/hooks/index.js.map +0 -1
  166. package/dist/src/hooks/use-user.d.ts +0 -21
  167. package/dist/src/hooks/use-user.d.ts.map +0 -1
  168. package/dist/src/hooks/use-user.js +0 -30
  169. package/dist/src/hooks/use-user.js.map +0 -1
  170. package/dist/src/index.browser.d.ts +0 -4
  171. package/dist/src/index.browser.d.ts.map +0 -1
  172. package/dist/src/index.browser.js +0 -4
  173. package/dist/src/index.browser.js.map +0 -1
  174. package/dist/src/index.node.d.ts +0 -4
  175. package/dist/src/index.node.d.ts.map +0 -1
  176. package/dist/src/index.node.js +0 -4
  177. package/dist/src/index.node.js.map +0 -1
  178. package/dist/src/lib/crypto/browser.d.ts +0 -8
  179. package/dist/src/lib/crypto/browser.d.ts.map +0 -1
  180. package/dist/src/lib/crypto/browser.js +0 -73
  181. package/dist/src/lib/crypto/browser.js.map +0 -1
  182. package/dist/src/lib/crypto/index.d.ts +0 -36
  183. package/dist/src/lib/crypto/index.d.ts.map +0 -1
  184. package/dist/src/lib/crypto/index.js +0 -150
  185. package/dist/src/lib/crypto/index.js.map +0 -1
  186. package/dist/src/lib/crypto/node.d.ts +0 -8
  187. package/dist/src/lib/crypto/node.d.ts.map +0 -1
  188. package/dist/src/lib/crypto/node.js +0 -67
  189. package/dist/src/lib/crypto/node.js.map +0 -1
  190. package/dist/src/lib/renown/constants.d.ts +0 -130
  191. package/dist/src/lib/renown/constants.d.ts.map +0 -1
  192. package/dist/src/lib/renown/constants.js +0 -40
  193. package/dist/src/lib/renown/constants.js.map +0 -1
  194. package/dist/src/lib/renown/did-parser.d.ts +0 -28
  195. package/dist/src/lib/renown/did-parser.d.ts.map +0 -1
  196. package/dist/src/lib/renown/did-parser.js +0 -57
  197. package/dist/src/lib/renown/did-parser.js.map +0 -1
  198. package/dist/src/lib/renown/index.d.ts +0 -4
  199. package/dist/src/lib/renown/index.d.ts.map +0 -1
  200. package/dist/src/lib/renown/index.js +0 -4
  201. package/dist/src/lib/renown/index.js.map +0 -1
  202. package/dist/src/lib/renown/utils.d.ts +0 -33
  203. package/dist/src/lib/renown/utils.d.ts.map +0 -1
  204. package/dist/src/lib/renown/utils.js +0 -207
  205. package/dist/src/lib/renown/utils.js.map +0 -1
  206. package/dist/src/lib/session-storage.d.ts +0 -40
  207. package/dist/src/lib/session-storage.d.ts.map +0 -1
  208. package/dist/src/lib/session-storage.js +0 -107
  209. package/dist/src/lib/session-storage.js.map +0 -1
  210. package/dist/src/providers/index.d.ts +0 -3
  211. package/dist/src/providers/index.d.ts.map +0 -1
  212. package/dist/src/providers/index.js +0 -2
  213. package/dist/src/providers/index.js.map +0 -1
  214. package/dist/src/providers/renown-user-provider.d.ts +0 -72
  215. package/dist/src/providers/renown-user-provider.d.ts.map +0 -1
  216. package/dist/src/providers/renown-user-provider.js +0 -171
  217. package/dist/src/providers/renown-user-provider.js.map +0 -1
  218. package/dist/tests/auth.test.js.map +0 -1
  219. /package/dist/{tests → test}/auth.test.d.ts +0 -0
  220. /package/dist/{tests → test}/auth.test.js +0 -0
@@ -0,0 +1,66 @@
1
+ import { NodeKeyStorage, RenownCrypto, } from "@renown/sdk/node";
2
+ import { subtle } from "node:crypto";
3
+ import { rmSync, writeFileSync } from "node:fs";
4
+ import { afterEach } from "node:test";
5
+ import { beforeEach, describe, expect, it } from "vitest";
6
+ async function generateKeyPair() {
7
+ const keyPair = await subtle.generateKey(RenownCrypto.algorithm, true, [
8
+ "sign",
9
+ "verify",
10
+ ]);
11
+ return {
12
+ publicKey: await subtle.exportKey("jwk", keyPair.publicKey),
13
+ privateKey: await subtle.exportKey("jwk", keyPair.privateKey),
14
+ };
15
+ }
16
+ describe("Node key storage", () => {
17
+ const keyPairPath = "./test/tmp/keypair.json";
18
+ beforeEach(() => {
19
+ rmSync(keyPairPath, { recursive: true, force: true });
20
+ });
21
+ afterEach(() => {
22
+ rmSync(keyPairPath, { recursive: true, force: true });
23
+ });
24
+ it("should load key pair from the provided filepath", async () => {
25
+ const keyPair = await generateKeyPair();
26
+ const keyStorage = new NodeKeyStorage(keyPairPath);
27
+ writeFileSync(keyPairPath, JSON.stringify({ keyPair })); // Save key pair
28
+ const loadedKeyPair = await keyStorage.loadKeyPair();
29
+ expect(loadedKeyPair).toStrictEqual(keyPair);
30
+ });
31
+ it("should save key pair to the provided filepath", async () => {
32
+ const keyStorage = new NodeKeyStorage(keyPairPath);
33
+ const existingKeyPair = await keyStorage.loadKeyPair();
34
+ expect(existingKeyPair).toBeUndefined();
35
+ const keyPair = await generateKeyPair();
36
+ await keyStorage.saveKeyPair(keyPair);
37
+ const loadedKeyPair = await keyStorage.loadKeyPair();
38
+ expect(loadedKeyPair).toStrictEqual(keyPair);
39
+ });
40
+ it("should load key pair from provided environment variable", async () => {
41
+ const keyPair = await generateKeyPair();
42
+ const ENV_KEY_NAME = "PH_RENOWN_PRIVATE_KEY_TEST";
43
+ process.env[ENV_KEY_NAME] = JSON.stringify({ keyPair });
44
+ const keyStorage = new NodeKeyStorage(keyPairPath, {
45
+ envKeyName: ENV_KEY_NAME,
46
+ });
47
+ process.env[ENV_KEY_NAME] = JSON.stringify(keyPair);
48
+ const loadedKeyPair = await keyStorage.loadKeyPair();
49
+ expect(loadedKeyPair).toStrictEqual(keyPair);
50
+ });
51
+ it("should load key pair from the default filepath", async () => {
52
+ const keyPair = await generateKeyPair();
53
+ const keyStorage = new NodeKeyStorage();
54
+ writeFileSync(NodeKeyStorage.DEFAULT_KEYPAIR_PATH, JSON.stringify({ keyPair }));
55
+ const loadedKeyPair = await keyStorage.loadKeyPair();
56
+ expect(loadedKeyPair).toStrictEqual(keyPair);
57
+ });
58
+ it("should load key pair from default env var if no file path is provided", async () => {
59
+ const keyPair = await generateKeyPair();
60
+ process.env[NodeKeyStorage.ENV_KEY_NAME] = JSON.stringify({ keyPair });
61
+ const keyStorage = new NodeKeyStorage();
62
+ const loadedKeyPair = await keyStorage.loadKeyPair();
63
+ expect(loadedKeyPair).toStrictEqual(keyPair);
64
+ });
65
+ });
66
+ //# sourceMappingURL=storage.node.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.node.test.js","sourceRoot":"","sources":["../../test/storage.node.test.ts"],"names":[],"mappings":"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"}