@bcts/frost-hubert 1.0.0-alpha.22 → 1.0.0-beta.0

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 (174) hide show
  1. package/dist/bin/frost.cjs +347 -75
  2. package/dist/bin/frost.cjs.map +1 -1
  3. package/dist/bin/frost.mjs +347 -75
  4. package/dist/bin/frost.mjs.map +1 -1
  5. package/dist/busy-DkM2jAIZ.mjs +27 -0
  6. package/dist/busy-DkM2jAIZ.mjs.map +1 -0
  7. package/dist/busy-EZU7EKr6.cjs +38 -0
  8. package/dist/busy-EZU7EKr6.cjs.map +1 -0
  9. package/dist/{chunk-uaV2rQ02.cjs → chunk-CZWwpsFl.cjs} +22 -32
  10. package/dist/{chunk-ClPoSABd.mjs → chunk-CjcI7cDX.mjs} +6 -12
  11. package/dist/cmd/index.cjs +46 -43
  12. package/dist/cmd/index.d.cts +2 -4
  13. package/dist/cmd/index.d.mts +2 -4
  14. package/dist/cmd/index.mjs +7 -6
  15. package/dist/cmd-Bw9_i2_f.cjs +130 -0
  16. package/dist/cmd-Bw9_i2_f.cjs.map +1 -0
  17. package/dist/cmd-CS1uJtuD.mjs +113 -0
  18. package/dist/cmd-CS1uJtuD.mjs.map +1 -0
  19. package/dist/common-CvH6dFvQ.mjs +282 -0
  20. package/dist/common-CvH6dFvQ.mjs.map +1 -0
  21. package/dist/common-DUWvtc08.mjs +96 -0
  22. package/dist/common-DUWvtc08.mjs.map +1 -0
  23. package/dist/common-lKP5EzHy.cjs +372 -0
  24. package/dist/common-lKP5EzHy.cjs.map +1 -0
  25. package/dist/common-lThIvJmZ.cjs +114 -0
  26. package/dist/common-lThIvJmZ.cjs.map +1 -0
  27. package/dist/dkg/index.cjs +245 -7
  28. package/dist/dkg/index.cjs.map +1 -0
  29. package/dist/dkg/index.d.cts +2 -2
  30. package/dist/dkg/index.d.mts +2 -2
  31. package/dist/dkg/index.mjs +238 -2
  32. package/dist/dkg/index.mjs.map +1 -0
  33. package/dist/finalize-BRgJK-Xv.cjs +402 -0
  34. package/dist/finalize-BRgJK-Xv.cjs.map +1 -0
  35. package/dist/finalize-BfLgzn8f.cjs +303 -0
  36. package/dist/finalize-BfLgzn8f.cjs.map +1 -0
  37. package/dist/finalize-CNTDj6aS.mjs +389 -0
  38. package/dist/finalize-CNTDj6aS.mjs.map +1 -0
  39. package/dist/finalize-EC3ikHQq.mjs +252 -0
  40. package/dist/finalize-EC3ikHQq.mjs.map +1 -0
  41. package/dist/finalize-IA01t_Qq.mjs +290 -0
  42. package/dist/finalize-IA01t_Qq.mjs.map +1 -0
  43. package/dist/finalize-UPyI1yb1.cjs +265 -0
  44. package/dist/finalize-UPyI1yb1.cjs.map +1 -0
  45. package/dist/frost/index.cjs +8 -9
  46. package/dist/frost/index.cjs.map +1 -1
  47. package/dist/frost/index.mjs +2 -3
  48. package/dist/frost/index.mjs.map +1 -1
  49. package/dist/{group-invite-Dz1Jmiky.d.cts → index-B3c-80VS.d.cts} +25 -2
  50. package/dist/index-B3c-80VS.d.cts.map +1 -0
  51. package/dist/{index-CcvTi5EA.d.cts → index-BgbSGpxn.d.mts} +102 -80
  52. package/dist/index-BgbSGpxn.d.mts.map +1 -0
  53. package/dist/{registry-impl-CE76sTXQ.d.cts → index-C8QeHNwa.d.cts} +46 -2
  54. package/dist/index-C8QeHNwa.d.cts.map +1 -0
  55. package/dist/{group-invite-Wk9CIbHL.d.mts → index-D3QTWkEm.d.mts} +25 -2
  56. package/dist/index-D3QTWkEm.d.mts.map +1 -0
  57. package/dist/{registry-impl-BETn_lEO.d.mts → index-DVbWyOs7.d.mts} +46 -2
  58. package/dist/index-DVbWyOs7.d.mts.map +1 -0
  59. package/dist/{index-DNCPeLNM.d.mts → index-F1iNEAJR.d.cts} +102 -80
  60. package/dist/index-F1iNEAJR.d.cts.map +1 -0
  61. package/dist/index.cjs +72 -68
  62. package/dist/index.cjs.map +1 -1
  63. package/dist/index.d.cts +4 -7
  64. package/dist/index.d.cts.map +1 -1
  65. package/dist/index.d.mts +4 -7
  66. package/dist/index.d.mts.map +1 -1
  67. package/dist/index.mjs +11 -10
  68. package/dist/index.mjs.map +1 -1
  69. package/dist/invite-5277FQVT.cjs +274 -0
  70. package/dist/invite-5277FQVT.cjs.map +1 -0
  71. package/dist/invite-DUTcfTgX.cjs +109 -0
  72. package/dist/invite-DUTcfTgX.cjs.map +1 -0
  73. package/dist/invite-IU4n0dq2.mjs +96 -0
  74. package/dist/invite-IU4n0dq2.mjs.map +1 -0
  75. package/dist/invite-RU-OXTNS.mjs +219 -0
  76. package/dist/invite-RU-OXTNS.mjs.map +1 -0
  77. package/dist/parallel-D1R6ZGlY.cjs +318 -0
  78. package/dist/parallel-D1R6ZGlY.cjs.map +1 -0
  79. package/dist/parallel-D6zc6VW4.mjs +235 -0
  80. package/dist/parallel-D6zc6VW4.mjs.map +1 -0
  81. package/dist/proposed-participant-Dm1Eq6mX.cjs +141 -0
  82. package/dist/proposed-participant-Dm1Eq6mX.cjs.map +1 -0
  83. package/dist/proposed-participant-cWM7iUrO.mjs +129 -0
  84. package/dist/proposed-participant-cWM7iUrO.mjs.map +1 -0
  85. package/dist/receive-CAI-x4II.cjs +213 -0
  86. package/dist/receive-CAI-x4II.cjs.map +1 -0
  87. package/dist/receive-D2Nn68L7.mjs +188 -0
  88. package/dist/receive-D2Nn68L7.mjs.map +1 -0
  89. package/dist/receive-DA_KQEgk.mjs +177 -0
  90. package/dist/receive-DA_KQEgk.mjs.map +1 -0
  91. package/dist/receive-kZMsXhbK.cjs +190 -0
  92. package/dist/receive-kZMsXhbK.cjs.map +1 -0
  93. package/dist/registry/index.cjs +881 -13
  94. package/dist/registry/index.cjs.map +1 -0
  95. package/dist/registry/index.d.cts +1 -1
  96. package/dist/registry/index.d.mts +1 -1
  97. package/dist/registry/index.mjs +867 -2
  98. package/dist/registry/index.mjs.map +1 -0
  99. package/dist/{registry-FMU-ec5K.cjs → registry-9puTaRrD.cjs} +28 -31
  100. package/dist/registry-9puTaRrD.cjs.map +1 -0
  101. package/dist/{registry-BDnNV1Rk.mjs → registry-BpCwtrRt.mjs} +7 -10
  102. package/dist/{registry-BDnNV1Rk.mjs.map → registry-BpCwtrRt.mjs.map} +1 -1
  103. package/dist/round1-4Hyx8w0x.cjs +422 -0
  104. package/dist/round1-4Hyx8w0x.cjs.map +1 -0
  105. package/dist/round1-7v9LlE11.mjs +373 -0
  106. package/dist/round1-7v9LlE11.mjs.map +1 -0
  107. package/dist/round1-BHBjru1m.cjs +465 -0
  108. package/dist/round1-BHBjru1m.cjs.map +1 -0
  109. package/dist/round1-CMLKN2RR.mjs +195 -0
  110. package/dist/round1-CMLKN2RR.mjs.map +1 -0
  111. package/dist/round1-CWSXZx5R.cjs +208 -0
  112. package/dist/round1-CWSXZx5R.cjs.map +1 -0
  113. package/dist/round1-CcQCGlIT.mjs +208 -0
  114. package/dist/round1-CcQCGlIT.mjs.map +1 -0
  115. package/dist/round1-Cgm7j1kI.mjs +452 -0
  116. package/dist/round1-Cgm7j1kI.mjs.map +1 -0
  117. package/dist/round1-DQ0fnc1H.cjs +221 -0
  118. package/dist/round1-DQ0fnc1H.cjs.map +1 -0
  119. package/dist/round2-BWz9SQIi.cjs +305 -0
  120. package/dist/round2-BWz9SQIi.cjs.map +1 -0
  121. package/dist/round2-BkNRCXgS.mjs +292 -0
  122. package/dist/round2-BkNRCXgS.mjs.map +1 -0
  123. package/dist/round2-Bl2uK93U.mjs +450 -0
  124. package/dist/round2-Bl2uK93U.mjs.map +1 -0
  125. package/dist/round2-CdUT-AhH.cjs +499 -0
  126. package/dist/round2-CdUT-AhH.cjs.map +1 -0
  127. package/dist/round2-DOA3rnV-.mjs +280 -0
  128. package/dist/round2-DOA3rnV-.mjs.map +1 -0
  129. package/dist/round2-Dg24w-TU.mjs +397 -0
  130. package/dist/round2-Dg24w-TU.mjs.map +1 -0
  131. package/dist/round2-LylCa84n.cjs +293 -0
  132. package/dist/round2-LylCa84n.cjs.map +1 -0
  133. package/dist/round2-o2Q-GMbX.cjs +410 -0
  134. package/dist/round2-o2Q-GMbX.cjs.map +1 -0
  135. package/dist/storage-B-Gu68-O.cjs +79 -0
  136. package/dist/storage-B-Gu68-O.cjs.map +1 -0
  137. package/dist/storage-Bkkliz0K.mjs +74 -0
  138. package/dist/storage-Bkkliz0K.mjs.map +1 -0
  139. package/package.json +17 -17
  140. package/src/bin/frost.ts +849 -128
  141. package/src/cmd/common.ts +19 -1
  142. package/src/cmd/dkg/common.ts +97 -10
  143. package/src/cmd/dkg/coordinator/invite.ts +5 -2
  144. package/src/cmd/dkg/participant/finalize.ts +52 -18
  145. package/src/cmd/dkg/participant/round1.ts +39 -38
  146. package/src/cmd/dkg/participant/round2.ts +60 -26
  147. package/src/cmd/sign/coordinator/round2.ts +5 -1
  148. package/src/cmd/sign/participant/finalize.ts +6 -2
  149. package/src/cmd/sign/participant/receive.ts +5 -2
  150. package/src/dkg/group-invite.ts +12 -2
  151. package/src/dkg/proposed-participant.ts +33 -5
  152. package/src/frost/index.ts +1 -1
  153. package/src/registry/owner-record.ts +13 -2
  154. package/src/registry/participant-record.ts +36 -4
  155. package/src/registry/registry-impl.ts +74 -18
  156. package/dist/group-invite-CrbOabFL.cjs +0 -368
  157. package/dist/group-invite-CrbOabFL.cjs.map +0 -1
  158. package/dist/group-invite-Dz1Jmiky.d.cts.map +0 -1
  159. package/dist/group-invite-RPElq-fm.mjs +0 -338
  160. package/dist/group-invite-RPElq-fm.mjs.map +0 -1
  161. package/dist/group-invite-Wk9CIbHL.d.mts.map +0 -1
  162. package/dist/index-CcvTi5EA.d.cts.map +0 -1
  163. package/dist/index-DNCPeLNM.d.mts.map +0 -1
  164. package/dist/registry-FMU-ec5K.cjs.map +0 -1
  165. package/dist/registry-impl-BETn_lEO.d.mts.map +0 -1
  166. package/dist/registry-impl-C7w4awTv.cjs +0 -865
  167. package/dist/registry-impl-C7w4awTv.cjs.map +0 -1
  168. package/dist/registry-impl-CE76sTXQ.d.cts.map +0 -1
  169. package/dist/registry-impl-eYXVSPwM.mjs +0 -797
  170. package/dist/registry-impl-eYXVSPwM.mjs.map +0 -1
  171. package/dist/sign-2bOp18Fs.cjs +0 -4875
  172. package/dist/sign-2bOp18Fs.cjs.map +0 -1
  173. package/dist/sign-D8C3HJ4B.mjs +0 -4736
  174. package/dist/sign-D8C3HJ4B.mjs.map +0 -1
@@ -0,0 +1,74 @@
1
+ //#region src/cmd/storage.ts
2
+ /**
3
+ * Create a storage client based on the selection.
4
+ *
5
+ * Port of storage client creation from cmd/storage.rs.
6
+ */
7
+ async function createStorageClient(selection, serverUrl) {
8
+ switch (selection) {
9
+ case "server": {
10
+ const { ServerKvClient } = await import("@bcts/hubert/server");
11
+ const client = new ServerKvClient(serverUrl ?? "http://localhost:8080");
12
+ return {
13
+ async put(arid, envelope) {
14
+ await client.put(arid, envelope);
15
+ },
16
+ async get(arid, timeoutSeconds) {
17
+ return await client.get(arid, timeoutSeconds) ?? void 0;
18
+ },
19
+ exists(arid) {
20
+ return client.exists(arid);
21
+ }
22
+ };
23
+ }
24
+ case "mainline": {
25
+ const { MainlineDhtKv } = await import("@bcts/hubert/mainline");
26
+ const client = await MainlineDhtKv.create();
27
+ return {
28
+ async put(arid, envelope) {
29
+ await client.put(arid, envelope);
30
+ },
31
+ async get(arid, timeoutSeconds) {
32
+ return await client.get(arid, timeoutSeconds) ?? void 0;
33
+ },
34
+ exists(arid) {
35
+ return client.exists(arid);
36
+ }
37
+ };
38
+ }
39
+ case "ipfs": {
40
+ const { IpfsKv } = await import("@bcts/hubert/ipfs");
41
+ const client = new IpfsKv("http://127.0.0.1:5001");
42
+ return {
43
+ async put(arid, envelope) {
44
+ await client.put(arid, envelope);
45
+ },
46
+ async get(arid, timeoutSeconds) {
47
+ return await client.get(arid, timeoutSeconds) ?? void 0;
48
+ },
49
+ exists(arid) {
50
+ return client.exists(arid);
51
+ }
52
+ };
53
+ }
54
+ case "hybrid": {
55
+ const { HybridKv } = await import("@bcts/hubert/hybrid");
56
+ const client = await HybridKv.create("http://127.0.0.1:5001");
57
+ return {
58
+ async put(arid, envelope) {
59
+ await client.put(arid, envelope);
60
+ },
61
+ async get(arid, timeoutSeconds) {
62
+ return await client.get(arid, timeoutSeconds) ?? void 0;
63
+ },
64
+ exists(arid) {
65
+ return client.exists(arid);
66
+ }
67
+ };
68
+ }
69
+ }
70
+ }
71
+ //#endregion
72
+ export { createStorageClient as t };
73
+
74
+ //# sourceMappingURL=storage-Bkkliz0K.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-Bkkliz0K.mjs","names":[],"sources":["../src/cmd/storage.ts"],"sourcesContent":["/**\n * Copyright © 2023-2026 Blockchain Commons, LLC\n * Copyright © 2025-2026 Parity Technologies\n *\n *\n * Storage client abstraction for Hubert.\n *\n * Port of cmd/storage.rs from frost-hubert-rust.\n *\n * @module\n */\n\nimport { type ARID } from \"@bcts/components\";\nimport { type Envelope } from \"@bcts/envelope\";\n\n/**\n * Storage backend selection.\n *\n * Port of `enum StorageSelection` from cmd/storage.rs.\n */\nexport type StorageSelection = \"server\" | \"mainline\" | \"ipfs\" | \"hybrid\";\n\n/**\n * Storage client interface for Hubert operations.\n *\n * Port of `struct StorageClient` from cmd/storage.rs.\n */\nexport interface StorageClient {\n /**\n * Put an envelope at the given ARID.\n */\n put(arid: ARID, envelope: Envelope): Promise<void>;\n\n /**\n * Get an envelope from the given ARID.\n */\n get(arid: ARID, timeoutSeconds?: number): Promise<Envelope | undefined>;\n\n /**\n * Check if an envelope exists at the given ARID.\n */\n exists(arid: ARID): Promise<boolean>;\n}\n\n/**\n * Create a storage client based on the selection.\n *\n * Port of storage client creation from cmd/storage.rs.\n */\nexport async function createStorageClient(\n selection: StorageSelection,\n serverUrl?: string,\n): Promise<StorageClient> {\n switch (selection) {\n case \"server\": {\n const { ServerKvClient } = await import(\"@bcts/hubert/server\");\n const client = new ServerKvClient(serverUrl ?? \"http://localhost:8080\");\n return {\n async put(arid: ARID, envelope: Envelope): Promise<void> {\n await client.put(arid, envelope);\n },\n async get(arid: ARID, timeoutSeconds?: number): Promise<Envelope | undefined> {\n const result = await client.get(arid, timeoutSeconds);\n return result ?? undefined;\n },\n exists(arid: ARID): Promise<boolean> {\n return client.exists(arid);\n },\n };\n }\n case \"mainline\": {\n const { MainlineDhtKv } = await import(\"@bcts/hubert/mainline\");\n const client = await MainlineDhtKv.create();\n return {\n async put(arid: ARID, envelope: Envelope): Promise<void> {\n await client.put(arid, envelope);\n },\n async get(arid: ARID, timeoutSeconds?: number): Promise<Envelope | undefined> {\n const result = await client.get(arid, timeoutSeconds);\n return result ?? undefined;\n },\n exists(arid: ARID): Promise<boolean> {\n return client.exists(arid);\n },\n };\n }\n case \"ipfs\": {\n const { IpfsKv } = await import(\"@bcts/hubert/ipfs\");\n const client = new IpfsKv(\"http://127.0.0.1:5001\");\n return {\n async put(arid: ARID, envelope: Envelope): Promise<void> {\n await client.put(arid, envelope);\n },\n async get(arid: ARID, timeoutSeconds?: number): Promise<Envelope | undefined> {\n const result = await client.get(arid, timeoutSeconds);\n return result ?? undefined;\n },\n exists(arid: ARID): Promise<boolean> {\n return client.exists(arid);\n },\n };\n }\n case \"hybrid\": {\n const { HybridKv } = await import(\"@bcts/hubert/hybrid\");\n const client = await HybridKv.create(\"http://127.0.0.1:5001\");\n return {\n async put(arid: ARID, envelope: Envelope): Promise<void> {\n await client.put(arid, envelope);\n },\n async get(arid: ARID, timeoutSeconds?: number): Promise<Envelope | undefined> {\n const result = await client.get(arid, timeoutSeconds);\n return result ?? undefined;\n },\n exists(arid: ARID): Promise<boolean> {\n return client.exists(arid);\n },\n };\n }\n }\n}\n"],"mappings":";;;;;;AAiDA,eAAsB,oBACpB,WACA,WACwB;AACxB,SAAQ,WAAR;EACE,KAAK,UAAU;GACb,MAAM,EAAE,mBAAmB,MAAM,OAAO;GACxC,MAAM,SAAS,IAAI,eAAe,aAAa,wBAAwB;AACvE,UAAO;IACL,MAAM,IAAI,MAAY,UAAmC;AACvD,WAAM,OAAO,IAAI,MAAM,SAAS;;IAElC,MAAM,IAAI,MAAY,gBAAwD;AAE5E,YAAO,MADc,OAAO,IAAI,MAAM,eAAe,IACpC,KAAA;;IAEnB,OAAO,MAA8B;AACnC,YAAO,OAAO,OAAO,KAAK;;IAE7B;;EAEH,KAAK,YAAY;GACf,MAAM,EAAE,kBAAkB,MAAM,OAAO;GACvC,MAAM,SAAS,MAAM,cAAc,QAAQ;AAC3C,UAAO;IACL,MAAM,IAAI,MAAY,UAAmC;AACvD,WAAM,OAAO,IAAI,MAAM,SAAS;;IAElC,MAAM,IAAI,MAAY,gBAAwD;AAE5E,YAAO,MADc,OAAO,IAAI,MAAM,eAAe,IACpC,KAAA;;IAEnB,OAAO,MAA8B;AACnC,YAAO,OAAO,OAAO,KAAK;;IAE7B;;EAEH,KAAK,QAAQ;GACX,MAAM,EAAE,WAAW,MAAM,OAAO;GAChC,MAAM,SAAS,IAAI,OAAO,wBAAwB;AAClD,UAAO;IACL,MAAM,IAAI,MAAY,UAAmC;AACvD,WAAM,OAAO,IAAI,MAAM,SAAS;;IAElC,MAAM,IAAI,MAAY,gBAAwD;AAE5E,YAAO,MADc,OAAO,IAAI,MAAM,eAAe,IACpC,KAAA;;IAEnB,OAAO,MAA8B;AACnC,YAAO,OAAO,OAAO,KAAK;;IAE7B;;EAEH,KAAK,UAAU;GACb,MAAM,EAAE,aAAa,MAAM,OAAO;GAClC,MAAM,SAAS,MAAM,SAAS,OAAO,wBAAwB;AAC7D,UAAO;IACL,MAAM,IAAI,MAAY,UAAmC;AACvD,WAAM,OAAO,IAAI,MAAM,SAAS;;IAElC,MAAM,IAAI,MAAY,gBAAwD;AAE5E,YAAO,MADc,OAAO,IAAI,MAAM,eAAe,IACpC,KAAA;;IAEnB,OAAO,MAA8B;AACnC,YAAO,OAAO,OAAO,KAAK;;IAE7B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bcts/frost-hubert",
3
- "version": "1.0.0-alpha.22",
3
+ "version": "1.0.0-beta.0",
4
4
  "type": "module",
5
5
  "description": "FROST DKG and signing using Hubert as the distributed substrate",
6
6
  "license": "BSD-2-Clause-Patent",
@@ -79,30 +79,30 @@
79
79
  "node": ">=18.0.0"
80
80
  },
81
81
  "dependencies": {
82
- "@bcts/components": "^1.0.0-alpha.22",
83
- "@bcts/dcbor": "^1.0.0-alpha.22",
84
- "@bcts/envelope": "^1.0.0-alpha.22",
85
- "@bcts/gstp": "^1.0.0-alpha.22",
86
- "@bcts/hubert": "^1.0.0-alpha.22",
87
- "@bcts/provenance-mark": "^1.0.0-alpha.22",
88
- "@bcts/uniform-resources": "^1.0.0-alpha.22",
89
- "@bcts/xid": "^1.0.0-alpha.22",
82
+ "@bcts/components": "^1.0.0-beta.0",
83
+ "@bcts/dcbor": "^1.0.0-beta.0",
84
+ "@bcts/envelope": "^1.0.0-beta.0",
85
+ "@bcts/gstp": "^1.0.0-beta.0",
86
+ "@bcts/hubert": "^1.0.0-beta.0",
87
+ "@bcts/provenance-mark": "^1.0.0-beta.0",
88
+ "@bcts/uniform-resources": "^1.0.0-beta.0",
89
+ "@bcts/xid": "^1.0.0-beta.0",
90
90
  "@frosts/core": "0.2.2-alpha.3",
91
91
  "@frosts/ed25519": "0.2.2-alpha.3",
92
92
  "commander": "^14.0.3"
93
93
  },
94
94
  "devDependencies": {
95
95
  "@bcts/eslint": "^0.1.0",
96
- "@bcts/rand": "^1.0.0-alpha.22",
96
+ "@bcts/rand": "^1.0.0-beta.0",
97
97
  "@bcts/tsconfig": "^0.1.0",
98
98
  "@eslint/js": "^10.0.1",
99
- "@types/node": "^25.3.2",
100
- "eslint": "^10.0.2",
101
- "prettier": "^3.8.1",
99
+ "@types/node": "^25.6.0",
100
+ "eslint": "^10.2.1",
101
+ "prettier": "^3.8.3",
102
102
  "ts-node": "^10.9.2",
103
- "tsdown": "^0.20.3",
104
- "typedoc": "^0.28.17",
105
- "typescript": "^5.9.3",
106
- "vitest": "^4.0.18"
103
+ "tsdown": "^0.21.0",
104
+ "typedoc": "^0.28.19",
105
+ "typescript": "^6.0.3",
106
+ "vitest": "^4.1.5"
107
107
  }
108
108
  }