@europeum-ebsi/cli 0.0.0 → 1.0.0-rc.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 (384) hide show
  1. package/LICENSE.txt +289 -289
  2. package/LICENSES.txt +538 -0
  3. package/README.md +1140 -98
  4. package/dist/api/client.d.ts +4 -0
  5. package/dist/api/client.d.ts.map +1 -0
  6. package/dist/api/client.js +14 -0
  7. package/dist/api/client.js.map +1 -0
  8. package/dist/api/fetch.d.ts +13 -0
  9. package/dist/api/fetch.d.ts.map +1 -0
  10. package/dist/api/fetch.js +30 -0
  11. package/dist/api/fetch.js.map +1 -0
  12. package/dist/api/params.d.ts +4 -0
  13. package/dist/api/params.d.ts.map +1 -0
  14. package/dist/api/params.js +9 -0
  15. package/dist/api/params.js.map +1 -0
  16. package/dist/auth/dcql.d.ts +5 -0
  17. package/dist/auth/dcql.d.ts.map +1 -0
  18. package/dist/auth/dcql.js +41 -0
  19. package/dist/auth/dcql.js.map +1 -0
  20. package/dist/auth/presentation.d.ts +30 -0
  21. package/dist/auth/presentation.d.ts.map +1 -0
  22. package/dist/auth/presentation.js +99 -0
  23. package/dist/auth/presentation.js.map +1 -0
  24. package/dist/auth/token.d.ts +11 -0
  25. package/dist/auth/token.d.ts.map +1 -0
  26. package/dist/auth/token.js +116 -0
  27. package/dist/auth/token.js.map +1 -0
  28. package/dist/cli.d.ts +3 -0
  29. package/dist/cli.d.ts.map +1 -0
  30. package/dist/cli.js +96 -10
  31. package/dist/cli.js.map +1 -1
  32. package/dist/commands/auth.d.ts +3 -0
  33. package/dist/commands/auth.d.ts.map +1 -0
  34. package/dist/commands/auth.js +99 -0
  35. package/dist/commands/auth.js.map +1 -0
  36. package/dist/commands/config-cmd.d.ts +3 -0
  37. package/dist/commands/config-cmd.d.ts.map +1 -0
  38. package/dist/commands/config-cmd.js +86 -0
  39. package/dist/commands/config-cmd.js.map +1 -0
  40. package/dist/commands/contracts-registry.d.ts +3 -0
  41. package/dist/commands/contracts-registry.d.ts.map +1 -0
  42. package/dist/commands/contracts-registry.js +132 -0
  43. package/dist/commands/contracts-registry.js.map +1 -0
  44. package/dist/commands/did-registry.d.ts +3 -0
  45. package/dist/commands/did-registry.d.ts.map +1 -0
  46. package/dist/commands/did-registry.js +110 -0
  47. package/dist/commands/did-registry.js.map +1 -0
  48. package/dist/commands/faucet.d.ts +3 -0
  49. package/dist/commands/faucet.d.ts.map +1 -0
  50. package/dist/commands/faucet.js +78 -0
  51. package/dist/commands/faucet.js.map +1 -0
  52. package/dist/commands/health.d.ts +3 -0
  53. package/dist/commands/health.d.ts.map +1 -0
  54. package/dist/commands/health.js +20 -0
  55. package/dist/commands/health.js.map +1 -0
  56. package/dist/commands/issuers-registry.d.ts +3 -0
  57. package/dist/commands/issuers-registry.d.ts.map +1 -0
  58. package/dist/commands/issuers-registry.js +340 -0
  59. package/dist/commands/issuers-registry.js.map +1 -0
  60. package/dist/commands/ledger.d.ts +3 -0
  61. package/dist/commands/ledger.d.ts.map +1 -0
  62. package/dist/commands/ledger.js +549 -372
  63. package/dist/commands/ledger.js.map +1 -1
  64. package/dist/commands/onboarding.d.ts +3 -0
  65. package/dist/commands/onboarding.d.ts.map +1 -0
  66. package/dist/commands/onboarding.js +301 -0
  67. package/dist/commands/onboarding.js.map +1 -0
  68. package/dist/commands/openapi.d.ts +3 -0
  69. package/dist/commands/openapi.d.ts.map +1 -0
  70. package/dist/commands/openapi.js +37 -0
  71. package/dist/commands/openapi.js.map +1 -0
  72. package/dist/commands/policies-registry.d.ts +3 -0
  73. package/dist/commands/policies-registry.d.ts.map +1 -0
  74. package/dist/commands/policies-registry.js +198 -0
  75. package/dist/commands/policies-registry.js.map +1 -0
  76. package/dist/commands/registry.d.ts +27 -0
  77. package/dist/commands/registry.d.ts.map +1 -0
  78. package/dist/commands/registry.js +62 -0
  79. package/dist/commands/registry.js.map +1 -0
  80. package/dist/commands/schemas-registry.d.ts +3 -0
  81. package/dist/commands/schemas-registry.d.ts.map +1 -0
  82. package/dist/commands/schemas-registry.js +231 -0
  83. package/dist/commands/schemas-registry.js.map +1 -0
  84. package/dist/commands/shared/args.d.ts +2 -0
  85. package/dist/commands/shared/args.d.ts.map +1 -0
  86. package/dist/commands/shared/args.js +4 -0
  87. package/dist/commands/shared/args.js.map +1 -0
  88. package/dist/commands/shared/wallet-opts.d.ts +9 -0
  89. package/dist/commands/shared/wallet-opts.d.ts.map +1 -0
  90. package/dist/commands/shared/wallet-opts.js +44 -0
  91. package/dist/commands/shared/wallet-opts.js.map +1 -0
  92. package/dist/commands/timestamp.d.ts +3 -0
  93. package/dist/commands/timestamp.d.ts.map +1 -0
  94. package/dist/commands/timestamp.js +250 -0
  95. package/dist/commands/timestamp.js.map +1 -0
  96. package/dist/commands/track-and-trace.d.ts +3 -0
  97. package/dist/commands/track-and-trace.d.ts.map +1 -0
  98. package/dist/commands/track-and-trace.js +235 -0
  99. package/dist/commands/track-and-trace.js.map +1 -0
  100. package/dist/commands/wallet.d.ts +3 -0
  101. package/dist/commands/wallet.d.ts.map +1 -0
  102. package/dist/commands/wallet.js +123 -0
  103. package/dist/commands/wallet.js.map +1 -0
  104. package/dist/config/config.d.ts +45 -0
  105. package/dist/config/config.d.ts.map +1 -0
  106. package/dist/config/config.js +111 -0
  107. package/dist/config/config.js.map +1 -0
  108. package/dist/config/ebsi-env.d.ts +4 -0
  109. package/dist/config/ebsi-env.d.ts.map +1 -0
  110. package/dist/config/ebsi-env.js +37 -0
  111. package/dist/config/ebsi-env.js.map +1 -0
  112. package/dist/crypto/wallet.d.ts +34 -0
  113. package/dist/crypto/wallet.d.ts.map +1 -0
  114. package/dist/crypto/wallet.js +100 -0
  115. package/dist/crypto/wallet.js.map +1 -0
  116. package/dist/index.d.ts +3 -0
  117. package/dist/index.d.ts.map +1 -0
  118. package/dist/index.js +15 -6
  119. package/dist/index.js.map +1 -1
  120. package/dist/ledger/read.d.ts +11 -0
  121. package/dist/ledger/read.d.ts.map +1 -0
  122. package/dist/ledger/read.js +24 -0
  123. package/dist/ledger/read.js.map +1 -0
  124. package/dist/ledger/registries.d.ts +25 -0
  125. package/dist/ledger/registries.d.ts.map +1 -0
  126. package/dist/ledger/registries.js +111 -0
  127. package/dist/ledger/registries.js.map +1 -0
  128. package/dist/ledger/write.d.ts +43 -0
  129. package/dist/ledger/write.d.ts.map +1 -0
  130. package/dist/ledger/write.js +119 -0
  131. package/dist/ledger/write.js.map +1 -0
  132. package/dist/onboarding/vc.d.ts +18 -0
  133. package/dist/onboarding/vc.d.ts.map +1 -0
  134. package/dist/onboarding/vc.js +72 -0
  135. package/dist/onboarding/vc.js.map +1 -0
  136. package/dist/output/format.d.ts +7 -0
  137. package/dist/output/format.d.ts.map +1 -0
  138. package/dist/output/format.js +94 -0
  139. package/dist/output/format.js.map +1 -0
  140. package/dist/tui/App.d.ts +3 -0
  141. package/dist/tui/App.d.ts.map +1 -0
  142. package/dist/tui/App.js +99 -0
  143. package/dist/tui/App.js.map +1 -0
  144. package/dist/tui/CommandPalette.d.ts +8 -0
  145. package/dist/tui/CommandPalette.d.ts.map +1 -0
  146. package/dist/tui/CommandPalette.js +105 -0
  147. package/dist/tui/CommandPalette.js.map +1 -0
  148. package/package.json +66 -108
  149. package/src/api/client.ts +26 -0
  150. package/src/api/fetch.ts +53 -0
  151. package/src/api/params.ts +17 -0
  152. package/src/auth/dcql.ts +84 -0
  153. package/src/auth/presentation.ts +255 -0
  154. package/src/auth/token.ts +244 -0
  155. package/src/cli.ts +164 -0
  156. package/src/commands/auth.ts +119 -0
  157. package/src/commands/config-cmd.ts +122 -0
  158. package/src/commands/contracts-registry.ts +156 -0
  159. package/src/commands/did-registry.ts +126 -0
  160. package/src/commands/faucet.ts +112 -0
  161. package/src/commands/health.ts +21 -0
  162. package/src/commands/issuers-registry.ts +385 -0
  163. package/src/commands/ledger.ts +777 -0
  164. package/src/commands/onboarding.ts +411 -0
  165. package/src/commands/openapi.ts +42 -0
  166. package/src/commands/policies-registry.ts +218 -0
  167. package/src/commands/registry.ts +152 -0
  168. package/src/commands/schemas-registry.ts +255 -0
  169. package/src/commands/shared/args.ts +14 -0
  170. package/src/commands/shared/wallet-opts.ts +85 -0
  171. package/src/commands/timestamp.ts +272 -0
  172. package/src/commands/track-and-trace.ts +263 -0
  173. package/src/commands/wallet.ts +175 -0
  174. package/src/config/config.ts +275 -0
  175. package/src/config/ebsi-env.ts +67 -0
  176. package/src/crypto/wallet.ts +291 -0
  177. package/src/index.ts +24 -0
  178. package/src/ledger/read.ts +70 -0
  179. package/src/ledger/registries.ts +285 -0
  180. package/src/ledger/write.ts +381 -0
  181. package/src/onboarding/vc.ts +205 -0
  182. package/src/output/format.ts +157 -0
  183. package/src/tui/App.tsx +282 -0
  184. package/src/tui/CommandPalette.tsx +223 -0
  185. package/bin/cli.js +0 -13
  186. package/dist/abi/pilot/DidRegistry.js +0 -568
  187. package/dist/abi/pilot/DidRegistry.js.map +0 -1
  188. package/dist/abi/pilot/Ptr.js +0 -666
  189. package/dist/abi/pilot/Ptr.js.map +0 -1
  190. package/dist/abi/pilot/SchemaSCRegistry.js +0 -264
  191. package/dist/abi/pilot/SchemaSCRegistry.js.map +0 -1
  192. package/dist/abi/pilot/Tcr.js +0 -715
  193. package/dist/abi/pilot/Tcr.js.map +0 -1
  194. package/dist/abi/pilot/Timestamp.js +0 -658
  195. package/dist/abi/pilot/Timestamp.js.map +0 -1
  196. package/dist/abi/pilot/Tir.js +0 -428
  197. package/dist/abi/pilot/Tir.js.map +0 -1
  198. package/dist/abi/pilot/TnT.js +0 -842
  199. package/dist/abi/pilot/TnT.js.map +0 -1
  200. package/dist/abi/pilot/Tpr.js +0 -492
  201. package/dist/abi/pilot/Tpr.js.map +0 -1
  202. package/dist/abi/test/DidRegistry.js +0 -568
  203. package/dist/abi/test/DidRegistry.js.map +0 -1
  204. package/dist/abi/test/Ptr.js +0 -666
  205. package/dist/abi/test/Ptr.js.map +0 -1
  206. package/dist/abi/test/SchemaSCRegistry.js +0 -300
  207. package/dist/abi/test/SchemaSCRegistry.js.map +0 -1
  208. package/dist/abi/test/Tcr.js +0 -715
  209. package/dist/abi/test/Tcr.js.map +0 -1
  210. package/dist/abi/test/Timestamp.js +0 -658
  211. package/dist/abi/test/Timestamp.js.map +0 -1
  212. package/dist/abi/test/Tir.js +0 -428
  213. package/dist/abi/test/Tir.js.map +0 -1
  214. package/dist/abi/test/TnT.js +0 -842
  215. package/dist/abi/test/TnT.js.map +0 -1
  216. package/dist/abi/test/Tpr.js +0 -492
  217. package/dist/abi/test/Tpr.js.map +0 -1
  218. package/dist/app.js +0 -659
  219. package/dist/app.js.map +0 -1
  220. package/dist/buildParam/didr.js +0 -374
  221. package/dist/buildParam/didr.js.map +0 -1
  222. package/dist/buildParam/index.js +0 -53
  223. package/dist/buildParam/index.js.map +0 -1
  224. package/dist/buildParam/ptr.js +0 -80
  225. package/dist/buildParam/ptr.js.map +0 -1
  226. package/dist/buildParam/tcr.js +0 -36
  227. package/dist/buildParam/tcr.js.map +0 -1
  228. package/dist/buildParam/timestamp.js +0 -350
  229. package/dist/buildParam/timestamp.js.map +0 -1
  230. package/dist/buildParam/tir.js +0 -110
  231. package/dist/buildParam/tir.js.map +0 -1
  232. package/dist/buildParam/tnt.js +0 -214
  233. package/dist/buildParam/tnt.js.map +0 -1
  234. package/dist/buildParam/tpr.js +0 -91
  235. package/dist/buildParam/tpr.js.map +0 -1
  236. package/dist/buildParam/tsr.js +0 -115
  237. package/dist/buildParam/tsr.js.map +0 -1
  238. package/dist/commands/authorisation.js +0 -144
  239. package/dist/commands/authorisation.js.map +0 -1
  240. package/dist/commands/compute.js +0 -680
  241. package/dist/commands/compute.js.map +0 -1
  242. package/dist/commands/conformance.js +0 -813
  243. package/dist/commands/conformance.js.map +0 -1
  244. package/dist/commands/hardwarewallet.js +0 -41
  245. package/dist/commands/hardwarewallet.js.map +0 -1
  246. package/dist/commands/index.js +0 -8
  247. package/dist/commands/index.js.map +0 -1
  248. package/dist/commands/ptr.js +0 -54
  249. package/dist/commands/ptr.js.map +0 -1
  250. package/dist/commands/tcr.js +0 -50
  251. package/dist/commands/tcr.js.map +0 -1
  252. package/dist/commands/tir.js +0 -64
  253. package/dist/commands/tir.js.map +0 -1
  254. package/dist/commands/tnl.js +0 -81
  255. package/dist/commands/tnl.js.map +0 -1
  256. package/dist/commands/tsr.js +0 -45
  257. package/dist/commands/tsr.js.map +0 -1
  258. package/dist/commands/view.js +0 -53
  259. package/dist/commands/view.js.map +0 -1
  260. package/dist/config.js +0 -497
  261. package/dist/config.js.map +0 -1
  262. package/dist/interfaces/context.js +0 -2
  263. package/dist/interfaces/context.js.map +0 -1
  264. package/dist/interfaces/contracts/ProxyFactory.js +0 -2
  265. package/dist/interfaces/contracts/ProxyFactory.js.map +0 -1
  266. package/dist/interfaces/contracts/ProxyTemplateRegistry.js +0 -2
  267. package/dist/interfaces/contracts/ProxyTemplateRegistry.js.map +0 -1
  268. package/dist/interfaces/contracts/SchemaSCRegistry.js +0 -2
  269. package/dist/interfaces/contracts/SchemaSCRegistry.js.map +0 -1
  270. package/dist/interfaces/contracts/common.js +0 -2
  271. package/dist/interfaces/contracts/common.js.map +0 -1
  272. package/dist/interfaces/index.js +0 -5
  273. package/dist/interfaces/index.js.map +0 -1
  274. package/dist/interfaces/jsonrpc.interface.js +0 -2
  275. package/dist/interfaces/jsonrpc.interface.js.map +0 -1
  276. package/dist/interfaces/paginated-list.interface.js +0 -2
  277. package/dist/interfaces/paginated-list.interface.js.map +0 -1
  278. package/dist/interfaces/unsigned-transaction.interface.js +0 -2
  279. package/dist/interfaces/unsigned-transaction.interface.js.map +0 -1
  280. package/dist/interfaces/utils.interface.js +0 -2
  281. package/dist/interfaces/utils.interface.js.map +0 -1
  282. package/dist/programs/migrateDid.js +0 -159
  283. package/dist/programs/migrateDid.js.map +0 -1
  284. package/dist/programs/migrateDids.js +0 -232
  285. package/dist/programs/migrateDids.js.map +0 -1
  286. package/dist/programs/migrateTsr.js +0 -201
  287. package/dist/programs/migrateTsr.js.map +0 -1
  288. package/dist/scripts/accreditAndAuthorize/conformance/step1 +0 -34
  289. package/dist/scripts/accreditAndAuthorize/conformance/step2 +0 -18
  290. package/dist/scripts/accreditAndAuthorize/conformance/step3 +0 -9
  291. package/dist/scripts/accreditAndAuthorize/conformance/step4 +0 -27
  292. package/dist/scripts/accreditAndAuthorize/conformance/step5 +0 -13
  293. package/dist/scripts/accreditAndAuthorize/conformance/step6 +0 -14
  294. package/dist/scripts/accreditAndAuthorize/conformance/step7 +0 -7
  295. package/dist/scripts/accreditAndAuthorize/test/step1 +0 -34
  296. package/dist/scripts/accreditAndAuthorize/test/step2 +0 -18
  297. package/dist/scripts/accreditAndAuthorize/test/step3 +0 -9
  298. package/dist/scripts/accreditAndAuthorize/test/step4 +0 -27
  299. package/dist/scripts/accreditAndAuthorize/test/step5 +0 -13
  300. package/dist/scripts/accreditAndAuthorize/test/step6 +0 -14
  301. package/dist/scripts/accreditAndAuthorize/test/step7 +0 -7
  302. package/dist/scripts/accreditTI +0 -21
  303. package/dist/scripts/assets/Nodes.json +0 -27
  304. package/dist/scripts/assets/vcdm1.1/CTRevocableCredential.json +0 -30
  305. package/dist/scripts/assets/vcdm1.1/CredentialToAttestVerifiableAuthorisationForTrustChain.json +0 -29
  306. package/dist/scripts/assets/vcdm1.1/Nodes.json +0 -27
  307. package/dist/scripts/assets/vcdm1.1/TrustedNodesList.json +0 -35
  308. package/dist/scripts/assets/vcdm1.1/VerifiableAccreditationToAccredit.json +0 -35
  309. package/dist/scripts/assets/vcdm1.1/VerifiableAccreditationToAttest.json +0 -33
  310. package/dist/scripts/assets/vcdm1.1/VerifiableAuthorisationForTrustChain.json +0 -22
  311. package/dist/scripts/assets/vcdm1.1/VerifiableAuthorisationToInvoke.json +0 -24
  312. package/dist/scripts/assets/vcdm1.1/VerifiableAuthorisationToOnboard.json +0 -24
  313. package/dist/scripts/assets/vcdm2.0/CredentialToAttestVerifiableAuthorisationForTrustChain.json +0 -29
  314. package/dist/scripts/assets/vcdm2.0/TrustedNodesList.json +0 -36
  315. package/dist/scripts/assets/vcdm2.0/VerifiableAccreditationToAccredit.json +0 -40
  316. package/dist/scripts/assets/vcdm2.0/VerifiableAccreditationToAttest.json +0 -38
  317. package/dist/scripts/assets/vcdm2.0/VerifiableAuthorisationForTrustChain.json +0 -30
  318. package/dist/scripts/assets/vcdm2.0/VerifiableAuthorisationToInvoke.json +0 -24
  319. package/dist/scripts/assets/vcdm2.0/VerifiableAuthorisationToOnboard.json +0 -23
  320. package/dist/scripts/bootstrap/0a-loadTPROperator +0 -5
  321. package/dist/scripts/bootstrap/0b-loadAdmin +0 -8
  322. package/dist/scripts/bootstrap/1-populateTPR +0 -92
  323. package/dist/scripts/bootstrap/2-populateDID +0 -6
  324. package/dist/scripts/bootstrap/3-populateTimestamp +0 -9
  325. package/dist/scripts/bootstrap/4-populateTIR +0 -8
  326. package/dist/scripts/bootstrap/5-populateTSR +0 -85
  327. package/dist/scripts/bootstrap/6-setupConformanceIssuer +0 -35
  328. package/dist/scripts/bootstrap/README.md +0 -218
  329. package/dist/scripts/issueVcInvoke +0 -10
  330. package/dist/scripts/issueVcOnboard +0 -9
  331. package/dist/scripts/issueVcRootTAO +0 -11
  332. package/dist/scripts/issueVcTAO +0 -12
  333. package/dist/scripts/issueVcTI +0 -12
  334. package/dist/scripts/issueVcTnl +0 -32
  335. package/dist/scripts/issue_CTRevocableCredential +0 -12
  336. package/dist/scripts/issue_SelfAttestationSupportOffice +0 -10
  337. package/dist/scripts/issue_VerifiableAccreditationToAccredit +0 -11
  338. package/dist/scripts/issue_VerifiableAccreditationToAttest +0 -11
  339. package/dist/scripts/issue_VerifiableAuthorisationForTrustChain +0 -10
  340. package/dist/scripts/issue_VerifiableAuthorisationToOnboard +0 -9
  341. package/dist/scripts/preregisterIssuer +0 -6
  342. package/dist/scripts/registerDidDocument +0 -15
  343. package/dist/scripts/registerIssuer +0 -6
  344. package/dist/scripts/updateVcRootTAO +0 -10
  345. package/dist/scripts/updateVcTAO +0 -11
  346. package/dist/scripts/updateVcTI +0 -11
  347. package/dist/scripts/vcdm2.0/issueSelfAttestationSupportOffice +0 -10
  348. package/dist/scripts/vcdm2.0/issueVcInvoke +0 -12
  349. package/dist/scripts/vcdm2.0/issueVcOnboard +0 -11
  350. package/dist/scripts/vcdm2.0/issueVcRootTAO +0 -14
  351. package/dist/scripts/vcdm2.0/issueVcTAO +0 -15
  352. package/dist/scripts/vcdm2.0/issueVcTI +0 -15
  353. package/dist/scripts/vcdm2.0/issueVcTnl +0 -34
  354. package/dist/scripts/vcdm2.0/registerDidDocument +0 -15
  355. package/dist/scripts/vcdm2.0/updateVcRootTAO +0 -13
  356. package/dist/scripts/vcdm2.0/updateVcTAO +0 -14
  357. package/dist/scripts/vcdm2.0/updateVcTI +0 -14
  358. package/dist/scripts/vcdm2.0/verifyVcTnl +0 -10
  359. package/dist/scripts/verifyVcTnl +0 -10
  360. package/dist/scripts/wct/accreditAndAuthorize +0 -133
  361. package/dist/scripts/wct/accreditAndAuthorize2 +0 -89
  362. package/dist/scripts/wct/holderWallet +0 -39
  363. package/dist/scripts/wct/holderWallet2 +0 -39
  364. package/dist/scripts/wct/issueToHolder +0 -38
  365. package/dist/scripts/wct/issueToHolder2 +0 -38
  366. package/dist/scripts/wct/pda1 +0 -3
  367. package/dist/scripts/wct/verifier +0 -8
  368. package/dist/scripts/wct/verifier2 +0 -7
  369. package/dist/utils/Client.js +0 -155
  370. package/dist/utils/Client.js.map +0 -1
  371. package/dist/utils/HardwareWallet.js +0 -326
  372. package/dist/utils/HardwareWallet.js.map +0 -1
  373. package/dist/utils/http.js +0 -132
  374. package/dist/utils/http.js.map +0 -1
  375. package/dist/utils/index.js +0 -8
  376. package/dist/utils/index.js.map +0 -1
  377. package/dist/utils/jsonrpc.js +0 -38
  378. package/dist/utils/jsonrpc.js.map +0 -1
  379. package/dist/utils/print.js +0 -56
  380. package/dist/utils/print.js.map +0 -1
  381. package/dist/utils/utils.js +0 -427
  382. package/dist/utils/utils.js.map +0 -1
  383. package/dist/utils/vcdm.js +0 -47
  384. package/dist/utils/vcdm.js.map +0 -1
@@ -0,0 +1,45 @@
1
+ import type { KeyAlgorithm } from "../crypto/wallet.ts";
2
+ export type EbsiEnv = "local" | "pilot" | "preprod" | "prod" | "test";
3
+ export declare const EBSI_ENVS: EbsiEnv[];
4
+ export declare const ENV_BASE_URLS: Partial<Record<EbsiEnv, string>>;
5
+ export interface CliConfig {
6
+ baseUrl: string;
7
+ did?: string;
8
+ env: EbsiEnv;
9
+ es256kPrivateKey?: string;
10
+ es256PrivateKey?: string;
11
+ output: OutputFormat;
12
+ signAlg?: KeyAlgorithm;
13
+ token?: string;
14
+ }
15
+ export type OutputFormat = "json" | "pretty" | "table";
16
+ export declare const OUTPUT_FORMATS: OutputFormat[];
17
+ export declare const SIGN_ALGS: KeyAlgorithm[];
18
+ interface PersistedConfig {
19
+ baseUrl?: string;
20
+ did?: string;
21
+ env?: EbsiEnv;
22
+ es256kPrivateKey?: string;
23
+ es256PrivateKey?: string;
24
+ output?: OutputFormat;
25
+ signAlg?: KeyAlgorithm;
26
+ token?: string;
27
+ }
28
+ export declare function getConfigFilePath(): string;
29
+ export declare function getPersistedConfigValue(key: keyof PersistedConfig): string | undefined;
30
+ export declare function resolveConfig(overrides: {
31
+ baseUrl?: string;
32
+ did?: string;
33
+ env?: string;
34
+ es256Key?: string;
35
+ es256kKey?: string;
36
+ output?: string;
37
+ signAlg?: string;
38
+ token?: string;
39
+ }, opts?: {
40
+ allowLegacyPrivateKey?: boolean;
41
+ }): CliConfig;
42
+ export declare function setPersistedConfigValue(key: keyof PersistedConfig, value: string): void;
43
+ export declare function writePersistedConfig(config: PersistedConfig): void;
44
+ export {};
45
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKxD,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAKtE,eAAO,MAAM,SAAS,EAAE,OAAO,EAM9B,CAAC;AAWF,eAAO,MAAM,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAI1D,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAIhB,GAAG,CAAC,EAAE,MAAM,CAAC;IAMb,GAAG,EAAE,OAAO,CAAC;IAMb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAM1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,YAAY,CAAC;IAMrB,OAAO,CAAC,EAAE,YAAY,CAAC;IAIvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AACvD,eAAO,MAAM,cAAc,EAAE,YAAY,EAAgC,CAAC;AAE1E,eAAO,MAAM,SAAS,EAAE,YAAY,EAAwB,CAAC;AAK7D,UAAU,eAAe;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,eAAe,GACzB,MAAM,GAAG,SAAS,CAIpB;AAiBD,wBAAgB,aAAa,CAC3B,SAAS,EAAE;IACT,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EACD,IAAI,GAAE;IAAE,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC7C,SAAS,CA6DX;AAED,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,eAAe,EAC1B,KAAK,EAAE,MAAM,GACZ,IAAI,CAYN;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAOlE"}
@@ -0,0 +1,111 @@
1
+ import envPaths from "env-paths";
2
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
3
+ import path from "node:path";
4
+ export const EBSI_ENVS = [
5
+ "local",
6
+ "test",
7
+ "pilot",
8
+ "preprod",
9
+ "prod",
10
+ ];
11
+ export const ENV_BASE_URLS = {
12
+ local: "http://localhost:3000/v1",
13
+ pilot: "https://api-pilot.ebsi.eu/v1",
14
+ test: "https://api-test.testnode02.ebsi.eu/v1",
15
+ };
16
+ export const OUTPUT_FORMATS = ["pretty", "json", "table"];
17
+ export const SIGN_ALGS = ["ES256", "ES256K"];
18
+ const APP_NAME = "ebsi-cli";
19
+ const paths = envPaths(APP_NAME, { suffix: "" });
20
+ const CONFIG_FILE = path.join(paths.config, "config.json");
21
+ export function getConfigFilePath() {
22
+ return CONFIG_FILE;
23
+ }
24
+ export function getPersistedConfigValue(key) {
25
+ const persisted = readPersistedConfig();
26
+ const value = persisted[key];
27
+ return value ?? undefined;
28
+ }
29
+ export function resolveConfig(overrides, opts = {}) {
30
+ const persisted = readPersistedConfig();
31
+ if (!opts.allowLegacyPrivateKey) {
32
+ assertNotLegacyPrivateKey(persisted);
33
+ }
34
+ const output = (overrides.output ??
35
+ process.env["EBSI_OUTPUT"] ??
36
+ persisted.output ??
37
+ "pretty");
38
+ const token = overrides.token ?? process.env["EBSI_ACCESS_TOKEN"] ?? persisted.token;
39
+ const es256kPrivateKey = overrides.es256kKey ??
40
+ process.env["EBSI_ES256K_PRIVATE_KEY"] ??
41
+ persisted.es256kPrivateKey;
42
+ const es256PrivateKey = overrides.es256Key ??
43
+ process.env["EBSI_ES256_PRIVATE_KEY"] ??
44
+ persisted.es256PrivateKey;
45
+ const signAlg = validateSignAlg(overrides.signAlg ?? process.env["EBSI_SIGN_ALG"] ?? persisted.signAlg);
46
+ const did = overrides.did ?? process.env["EBSI_DID"] ?? persisted.did;
47
+ const envName = overrides.env ?? process.env["EBSI_ENV"] ?? persisted.env;
48
+ const env = isEbsiEnv(envName) ? envName : "test";
49
+ const baseUrl = overrides.baseUrl ?? process.env["EBSI_API_BASE_URL"] ?? ENV_BASE_URLS[env];
50
+ if (baseUrl === undefined) {
51
+ throw new Error(`The "${env}" environment has no default API base URL: ` +
52
+ "pass --base-url <url> or set EBSI_API_BASE_URL.");
53
+ }
54
+ return {
55
+ baseUrl,
56
+ env,
57
+ output,
58
+ ...(token !== undefined && { token }),
59
+ ...(es256kPrivateKey !== undefined && { es256kPrivateKey }),
60
+ ...(es256PrivateKey !== undefined && { es256PrivateKey }),
61
+ ...(signAlg !== undefined && { signAlg }),
62
+ ...(did !== undefined && { did }),
63
+ };
64
+ }
65
+ export function setPersistedConfigValue(key, value) {
66
+ const persisted = readPersistedConfig();
67
+ persisted[key] = value;
68
+ delete persisted.privateKey;
69
+ writePersistedConfig(persisted);
70
+ }
71
+ export function writePersistedConfig(config) {
72
+ mkdirSync(paths.config, { recursive: true });
73
+ writeFileSync(CONFIG_FILE, JSON.stringify(config, undefined, 2) + "\n", "utf8");
74
+ }
75
+ function assertNotLegacyPrivateKey(persisted) {
76
+ if (process.env["EBSI_PRIVATE_KEY"] === undefined &&
77
+ persisted.privateKey === undefined) {
78
+ return;
79
+ }
80
+ throw new Error("EBSI_PRIVATE_KEY has been renamed to EBSI_ES256K_PRIVATE_KEY. " +
81
+ "The CLI now takes a mandatory secp256k1 key (EBSI_ES256K_PRIVATE_KEY, " +
82
+ "signs Ethereum transactions) and an optional P-256 key " +
83
+ "(EBSI_ES256_PRIVATE_KEY, signs VCs/VPs). " +
84
+ "If a persisted config file still has a `privateKey` entry, run " +
85
+ "`ebsi config set es256kPrivateKey <hex>` to migrate it (allowed even " +
86
+ "while this error is otherwise showing) — it also clears the old entry. " +
87
+ "Otherwise, unset the EBSI_PRIVATE_KEY environment variable.");
88
+ }
89
+ function isEbsiEnv(value) {
90
+ return EBSI_ENVS.includes(value);
91
+ }
92
+ function readPersistedConfig() {
93
+ if (!existsSync(CONFIG_FILE))
94
+ return {};
95
+ try {
96
+ return JSON.parse(readFileSync(CONFIG_FILE, "utf8"));
97
+ }
98
+ catch {
99
+ return {};
100
+ }
101
+ }
102
+ function validateSignAlg(value) {
103
+ if (value === undefined)
104
+ return undefined;
105
+ const normalized = value.toUpperCase();
106
+ if (!SIGN_ALGS.includes(normalized)) {
107
+ throw new Error(`Invalid sign algorithm "${value}". Valid values: ${SIGN_ALGS.join(", ")}`);
108
+ }
109
+ return normalized;
110
+ }
111
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { EbsiEnvConfiguration } from "@europeum-ebsi/verifiable-credential";
2
+ import type { CliConfig } from "./config.ts";
3
+ export declare function buildEbsiEnvConfig(config: CliConfig): EbsiEnvConfiguration;
4
+ //# sourceMappingURL=ebsi-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ebsi-env.d.ts","sourceRoot":"","sources":["../../src/config/ebsi-env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAEjF,OAAO,KAAK,EAAE,SAAS,EAAW,MAAM,aAAa,CAAC;AAqBtD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,oBAAoB,CAkB1E"}
@@ -0,0 +1,37 @@
1
+ const EBSI_SERVICES = [
2
+ "did-registry",
3
+ "track-and-trace",
4
+ "contracts-registry",
5
+ "issuers-registry",
6
+ "policies-registry",
7
+ "schemas-registry",
8
+ ];
9
+ export function buildEbsiEnvConfig(config) {
10
+ const url = new URL(config.baseUrl);
11
+ const version = (url.pathname.split("/").find(Boolean) ??
12
+ "v1");
13
+ return {
14
+ hosts: [url.hostname],
15
+ network: {
16
+ isOptional: config.env === "prod",
17
+ name: resolveNetworkName(config.env),
18
+ },
19
+ scheme: "ebsi",
20
+ services: [...EBSI_SERVICES],
21
+ version,
22
+ };
23
+ }
24
+ function resolveNetworkName(env) {
25
+ switch (env) {
26
+ case "local": {
27
+ return "test";
28
+ }
29
+ case "prod": {
30
+ return "production";
31
+ }
32
+ default: {
33
+ return env;
34
+ }
35
+ }
36
+ }
37
+ //# sourceMappingURL=ebsi-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ebsi-env.js","sourceRoot":"","sources":["../../src/config/ebsi-env.ts"],"names":[],"mappings":"AAIA,MAAM,aAAa,GAAG;IACpB,cAAc;IACd,iBAAiB;IACjB,oBAAoB;IACpB,kBAAkB;IAClB,mBAAmB;IACnB,kBAAkB;CACV,CAAC;AAYX,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IAClD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEpC,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QACpD,IAAI,CAAiB,CAAC;IAExB,OAAO;QACL,KAAK,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;QAGrB,OAAO,EAAE;YACP,UAAU,EAAE,MAAM,CAAC,GAAG,KAAK,MAAM;YACjC,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC;SACrC;QACD,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,CAAC,GAAG,aAAa,CAAC;QAC5B,OAAO;KACR,CAAC;AACJ,CAAC;AAaD,SAAS,kBAAkB,CAAC,GAAY;IACtC,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { EbsiIssuer } from "@europeum-ebsi/verifiable-credential";
2
+ import { ethers } from "ethers";
3
+ export interface DeriveWalletKeys {
4
+ es256kPrivateKey: string;
5
+ es256PrivateKey?: string;
6
+ signAlg?: KeyAlgorithm;
7
+ }
8
+ export type KeyAlgorithm = "ES256" | "ES256K";
9
+ export interface KeyMaterial {
10
+ alg: KeyAlgorithm;
11
+ issuer: EbsiIssuer;
12
+ kid: string;
13
+ publicKeyJwk: JwkEcKey;
14
+ thumbprint: string;
15
+ }
16
+ export interface WalletDetails {
17
+ address: string;
18
+ did: string;
19
+ es256?: KeyMaterial;
20
+ es256k: KeyMaterial;
21
+ signingKey(): KeyMaterial;
22
+ wallet: ethers.Wallet;
23
+ }
24
+ interface JwkEcKey {
25
+ crv: "P-256" | "secp256k1";
26
+ kty: "EC";
27
+ x: string;
28
+ y: string;
29
+ }
30
+ export declare function deriveEs256Issuer(privateKeyHex: string, did: string): Promise<EbsiIssuer<"ES256">>;
31
+ export declare function deriveWallet(keys: DeriveWalletKeys, overrideDid?: string): Promise<WalletDetails>;
32
+ export declare function generatePrivateKey(algorithm?: KeyAlgorithm): string;
33
+ export {};
34
+ //# sourceMappingURL=wallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/crypto/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AASvE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,MAAM,WAAW,gBAAgB;IAI/B,gBAAgB,EAAE,MAAM,CAAC;IAIzB,eAAe,CAAC,EAAE,MAAM,CAAC;IAKzB,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAQD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC;AAO9C,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,YAAY,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;IAInB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,QAAQ,CAAC;IAMvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAK5B,OAAO,EAAE,MAAM,CAAC;IAIhB,GAAG,EAAE,MAAM,CAAC;IAMZ,KAAK,CAAC,EAAE,WAAW,CAAC;IAKpB,MAAM,EAAE,WAAW,CAAC;IAWpB,UAAU,IAAI,WAAW,CAAC;IAK1B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;CACvB;AAOD,UAAU,QAAQ;IAChB,GAAG,EAAE,OAAO,GAAG,WAAW,CAAC;IAC3B,GAAG,EAAE,IAAI,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAUD,wBAAsB,iBAAiB,CACrC,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAG9B;AAgBD,wBAAsB,YAAY,CAChC,IAAI,EAAE,gBAAgB,EACtB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,aAAa,CAAC,CAwCxB;AAOD,wBAAgB,kBAAkB,CAAC,SAAS,GAAE,YAAuB,GAAG,MAAM,CAM7E"}
@@ -0,0 +1,100 @@
1
+ import { bytesToBase64url, ES256KSigner, ES256Signer, hexToBytes, } from "@europeum-ebsi/did-jwt";
2
+ import { EbsiWallet } from "@europeum-ebsi/wallet";
3
+ import { ethers } from "ethers";
4
+ import { calculateJwkThumbprint } from "jose";
5
+ export async function deriveEs256Issuer(privateKeyHex, did) {
6
+ const { issuer } = await deriveEs256KeyMaterial(privateKeyHex, did);
7
+ return issuer;
8
+ }
9
+ export async function deriveWallet(keys, overrideDid) {
10
+ const { es256kPrivateKey, es256PrivateKey, signAlg } = keys;
11
+ new EbsiWallet({
12
+ ES256KPrivateKey: es256kPrivateKey,
13
+ ...(es256PrivateKey !== undefined && {
14
+ ES256PrivateKey: es256PrivateKey,
15
+ }),
16
+ });
17
+ const { publicKeyJwk, wallet } = deriveEs256kPublicMaterial(es256kPrivateKey);
18
+ const thumbprint = await calculateJwkThumbprint(publicKeyJwk);
19
+ const did = overrideDid ?? EbsiWallet.createDid();
20
+ const kid = `${did}#${thumbprint}`;
21
+ const pkBytes = hexToBytes(wallet.privateKey);
22
+ const es256k = {
23
+ alg: "ES256K",
24
+ issuer: { alg: "ES256K", did, kid, signer: ES256KSigner(pkBytes) },
25
+ kid,
26
+ publicKeyJwk,
27
+ thumbprint,
28
+ };
29
+ const es256 = es256PrivateKey === undefined
30
+ ? undefined
31
+ : await deriveEs256KeyMaterial(es256PrivateKey, did);
32
+ return {
33
+ address: wallet.address,
34
+ did,
35
+ ...(es256 !== undefined && { es256 }),
36
+ es256k,
37
+ signingKey: () => pickSigningKey(es256k, es256, signAlg),
38
+ wallet,
39
+ };
40
+ }
41
+ export function generatePrivateKey(algorithm = "ES256K") {
42
+ if (algorithm === "ES256") {
43
+ const { privateKey } = EbsiWallet.generateKeyPair({ algorithm: "ES256" });
44
+ return addPrefix(privateKey);
45
+ }
46
+ return ethers.Wallet.createRandom().privateKey;
47
+ }
48
+ function addPrefix(hex) {
49
+ return hex.startsWith("0x") ? hex : `0x${hex}`;
50
+ }
51
+ async function deriveEs256KeyMaterial(privateKeyHex, did) {
52
+ const publicKeyHex = EbsiWallet.getPublicKeyHex(privateKeyHex, "ES256");
53
+ const publicKeyJwk = EbsiWallet.formatPublicKey(publicKeyHex, "jwk", "ES256");
54
+ const thumbprint = await calculateJwkThumbprint(publicKeyJwk, "sha256");
55
+ const kid = `${did}#${thumbprint}`;
56
+ return {
57
+ alg: "ES256",
58
+ issuer: {
59
+ alg: "ES256",
60
+ did,
61
+ kid,
62
+ signer: ES256Signer(hexToBytes(privateKeyHex)),
63
+ },
64
+ kid,
65
+ publicKeyJwk,
66
+ thumbprint,
67
+ };
68
+ }
69
+ function deriveEs256kPublicMaterial(privateKeyHex) {
70
+ const wallet = new ethers.Wallet(privateKeyHex);
71
+ const uncompressed = ethers.SigningKey.computePublicKey(wallet.signingKey.publicKey, false);
72
+ const xHex = uncompressed.slice(4, 68);
73
+ const yHex = uncompressed.slice(68);
74
+ const publicKeyJwk = {
75
+ crv: "secp256k1",
76
+ kty: "EC",
77
+ x: bytesToBase64url(hexToBytes(xHex)),
78
+ y: bytesToBase64url(hexToBytes(yHex)),
79
+ };
80
+ return { publicKeyJwk, wallet };
81
+ }
82
+ function pickSigningKey(es256k, es256, signAlg) {
83
+ if (signAlg === "ES256") {
84
+ if (!es256) {
85
+ throw new Error("No P-256 key configured. Pass --es256-key <hex>, set " +
86
+ "EBSI_ES256_PRIVATE_KEY, or run `ebsi config set es256PrivateKey <hex>`.");
87
+ }
88
+ return es256;
89
+ }
90
+ if (signAlg === "ES256K") {
91
+ return es256k;
92
+ }
93
+ if (!es256) {
94
+ return es256k;
95
+ }
96
+ throw new Error("Two signing keys are configured (ES256K and ES256). Choose which one " +
97
+ "signs VCs/VPs with --sign-alg <ES256|ES256K>, EBSI_SIGN_ALG, or " +
98
+ "`ebsi config set signAlg <alg>`.");
99
+ }
100
+ //# sourceMappingURL=wallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/crypto/wallet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js CHANGED
@@ -1,7 +1,16 @@
1
- export * from "./app.js";
2
- export * from "./buildParam/index.js";
3
- export * from "./commands/index.js";
4
- export * from "./config.js";
5
- export * from "./interfaces/index.js";
6
- export * from "./utils/index.js";
1
+ #!/usr/bin/env node
2
+ const args = process.argv.slice(2);
3
+ const isInteractive = args.length === 0 || args[0] === "--interactive";
4
+ if (isInteractive) {
5
+ const { render } = await import("ink");
6
+ const React = (await import("react")).default;
7
+ const { App } = await import("./tui/App.js");
8
+ render(React.createElement(App, {}));
9
+ }
10
+ else {
11
+ const { buildProgram } = await import("./cli.js");
12
+ const program = buildProgram();
13
+ await program.parseAsync(process.argv);
14
+ }
15
+ export {};
7
16
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAQA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,eAAe,CAAC;AAEvE,IAAI,aAAa,EAAE,CAAC;IAElB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;IAEvC,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9C,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,cAAe,CAAC,CAAC;IAC9C,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AACvC,CAAC;KAAM,CAAC;IAEN,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;IAC/B,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { CliConfig } from "../config/config.ts";
2
+ import type { RegistryEntry } from "./registries.ts";
3
+ export interface ReadOptions {
4
+ config: CliConfig;
5
+ contractAddress: string;
6
+ functionArgs: unknown[];
7
+ functionName: string;
8
+ registry: RegistryEntry;
9
+ }
10
+ export declare function readFromRegistry(opts: ReadOptions): Promise<unknown>;
11
+ //# sourceMappingURL=read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/ledger/read.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,WAAW,WAAW;IAI1B,MAAM,EAAE,SAAS,CAAC;IAIlB,eAAe,EAAE,MAAM,CAAC;IAIxB,YAAY,EAAE,OAAO,EAAE,CAAC;IAIxB,YAAY,EAAE,MAAM,CAAC;IAIrB,QAAQ,EAAE,aAAa,CAAC;CACzB;AAYD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAsB1E"}
@@ -0,0 +1,24 @@
1
+ import { ethers } from "ethers";
2
+ export async function readFromRegistry(opts) {
3
+ const { config, contractAddress, functionArgs, functionName, registry } = opts;
4
+ const iface = registry.getInterface();
5
+ let data;
6
+ try {
7
+ data = iface.encodeFunctionData(functionName, functionArgs);
8
+ }
9
+ catch (error) {
10
+ const message = error instanceof Error ? error.message : String(error);
11
+ throw new Error(`Failed to encode function data for "${functionName}": ${message}. ` +
12
+ "Check the function name and argument types.", { cause: error });
13
+ }
14
+ const provider = new ethers.JsonRpcProvider(`${config.baseUrl}/ledger`);
15
+ const result = await provider.call({ data, to: contractAddress });
16
+ const decoded = iface.decodeFunctionResult(functionName, result);
17
+ return toJsonSafe(decoded);
18
+ }
19
+ function toJsonSafe(value) {
20
+ if (typeof value === "bigint")
21
+ return value.toString();
22
+ return Array.isArray(value) ? value.map((item) => toJsonSafe(item)) : value;
23
+ }
24
+ //# sourceMappingURL=read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/ledger/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAsChC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAiB;IACtD,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,GACrE,IAAI,CAAC;IAEP,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;IACtC,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,KAAK,CAAC,kBAAkB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,KAAK,CACb,uCAAuC,YAAY,MAAM,OAAO,IAAI;YAClE,6CAA6C,EAC/C,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,OAAO,SAAS,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAoB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAEjE,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAMD,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IACvD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9E,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { ethers } from "ethers";
2
+ export interface RegistryEntry {
3
+ addressEnvKey: string;
4
+ defaultScope: string;
5
+ getInterface(): ethers.Interface;
6
+ }
7
+ export declare const REGISTRIES: Record<string, RegistryEntry | undefined>;
8
+ export declare const REGISTRY_NAMES: string[];
9
+ export interface ContractAddressOption {
10
+ option: {
11
+ description: string;
12
+ flags: string;
13
+ };
14
+ resolve: (opts: Record<string, string>) => string | undefined;
15
+ }
16
+ export interface RegistryTarget {
17
+ functionName?: string;
18
+ registryName: string;
19
+ to: string;
20
+ }
21
+ export declare function contractAddressOption(envKey: string, description: string): ContractAddressOption;
22
+ export declare function contractAddressOptionFor(registryName: string): ContractAddressOption;
23
+ export declare function defaultScopeFor(registryName: string, functionName: string | undefined, registry: RegistryEntry): string;
24
+ export declare function deriveScopeForRegistries(targets: RegistryTarget[]): string;
25
+ //# sourceMappingURL=registries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registries.d.ts","sourceRoot":"","sources":["../../src/ledger/registries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKhC,MAAM,WAAW,aAAa;IAa5B,aAAa,EAAE,MAAM,CAAC;IAItB,YAAY,EAAE,MAAM,CAAC;IAIrB,YAAY,IAAI,MAAM,CAAC,SAAS,CAAC;CAClC;AA8BD,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,CA6DhE,CAAC;AAKF,eAAO,MAAM,cAAc,UAA0B,CAAC;AAKtD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC;CAC/D;AAQD,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;CACZ;AASD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,qBAAqB,CAKvB;AAOD,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,MAAM,GACnB,qBAAqB,CAWvB;AA+BD,wBAAgB,eAAe,CAC7B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,QAAQ,EAAE,aAAa,GACtB,MAAM,CAWR;AAiBD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,CA0B1E"}
@@ -0,0 +1,111 @@
1
+ import { ethers } from "ethers";
2
+ import { createRequire } from "node:module";
3
+ const req = createRequire(import.meta.url);
4
+ function loadInterface(pkg, factoryName) {
5
+ const mod = req(pkg);
6
+ const factory = mod[factoryName];
7
+ if (!factory) {
8
+ throw new Error(`Factory class "${factoryName}" not found in package "${pkg}"`);
9
+ }
10
+ return factory.createInterface();
11
+ }
12
+ export const REGISTRIES = {
13
+ "did-registry": {
14
+ addressEnvKey: "DID_REGISTRY_CONTRACT_ADDRESS",
15
+ defaultScope: "did-registry:write",
16
+ getInterface() {
17
+ return loadInterface("@europeum-ebsi/did-registry-contract", "DidRegistry__factory");
18
+ },
19
+ },
20
+ "issuers-registry": {
21
+ addressEnvKey: "ISSUERS_REGISTRY_CONTRACT_ADDRESS",
22
+ defaultScope: "issuers-registry:write",
23
+ getInterface() {
24
+ return loadInterface("@europeum-ebsi/issuers-registry-contract", "IssuersRegistry__factory");
25
+ },
26
+ },
27
+ "policies-registry": {
28
+ addressEnvKey: "POLICIES_REGISTRY_CONTRACT_ADDRESS",
29
+ defaultScope: "policies-registry:write",
30
+ getInterface() {
31
+ return loadInterface("@europeum-ebsi/policies-registry-contract", "PoliciesRegistry__factory");
32
+ },
33
+ },
34
+ "schemas-registry": {
35
+ addressEnvKey: "SCHEMAS_REGISTRY_CONTRACT_ADDRESS",
36
+ defaultScope: "schemas-registry:write",
37
+ getInterface() {
38
+ return loadInterface("@europeum-ebsi/schemas-registry-contract", "SchemasRegistry__factory");
39
+ },
40
+ },
41
+ timestamp: {
42
+ addressEnvKey: "TIMESTAMP_CONTRACT_ADDRESS",
43
+ defaultScope: "timestamp:write",
44
+ getInterface() {
45
+ return loadInterface("@europeum-ebsi/timestamp-contract", "Timestamp__factory");
46
+ },
47
+ },
48
+ "track-and-trace": {
49
+ addressEnvKey: "TRACK_AND_TRACE_CONTRACT_ADDRESS",
50
+ defaultScope: "track-and-trace:write",
51
+ getInterface() {
52
+ return loadInterface("@europeum-ebsi/track-and-trace-contract", "TrackAndTrace__factory");
53
+ },
54
+ },
55
+ };
56
+ export const REGISTRY_NAMES = Object.keys(REGISTRIES);
57
+ export function contractAddressOption(envKey, description) {
58
+ return {
59
+ option: { description, flags: "--contract-address <address>" },
60
+ resolve: (opts) => resolveContractAddress(opts, envKey),
61
+ };
62
+ }
63
+ export function contractAddressOptionFor(registryName) {
64
+ const registry = REGISTRIES[registryName];
65
+ if (!registry) {
66
+ throw new Error(`Unknown registry "${registryName}". Known registries: ${REGISTRY_NAMES.join(", ")}`);
67
+ }
68
+ return contractAddressOption(registry.addressEnvKey, `Contract address to query. Defaults to $${registry.addressEnvKey} if set (the same address "ledger write" signs against), otherwise the API's configured default.`);
69
+ }
70
+ const TRACK_AND_TRACE_FUNCTION_SCOPE = {
71
+ authoriseDid: "track-and-trace:authorise",
72
+ commitCreateDocument: "track-and-trace:create",
73
+ createDocument: "track-and-trace:create",
74
+ };
75
+ export function defaultScopeFor(registryName, functionName, registry) {
76
+ if (registryName === "did-registry" && functionName === "insertDidDocument") {
77
+ return "did-registry:invite";
78
+ }
79
+ if (registryName === "track-and-trace" && functionName !== undefined) {
80
+ const scope = TRACK_AND_TRACE_FUNCTION_SCOPE[functionName];
81
+ if (scope) {
82
+ return scope;
83
+ }
84
+ }
85
+ return registry.defaultScope;
86
+ }
87
+ export function deriveScopeForRegistries(targets) {
88
+ const addressByFamily = new Map();
89
+ for (const { functionName, registryName, to } of targets) {
90
+ const registry = REGISTRIES[registryName];
91
+ if (!registry) {
92
+ throw new Error(`Unknown registry "${registryName}". Known registries: ${REGISTRY_NAMES.join(", ")}`);
93
+ }
94
+ const family = defaultScopeFor(registryName, functionName, registry);
95
+ const existingAddress = addressByFamily.get(family);
96
+ if (existingAddress !== undefined && existingAddress !== to) {
97
+ throw new Error(`Batch targets two different "${family}" contract instances (${existingAddress} and ${to}) ` +
98
+ "in a single --auto-token request. A single access token can only target one instance " +
99
+ "per scope family — split the batch, or provide --token/--scope explicitly.");
100
+ }
101
+ addressByFamily.set(family, to);
102
+ }
103
+ return [...addressByFamily]
104
+ .map(([family, address]) => `${family}:${address}`)
105
+ .toSorted((a, b) => a.localeCompare(b))
106
+ .join(" ");
107
+ }
108
+ function resolveContractAddress(opts, envKey) {
109
+ return opts["contractAddress"] ?? process.env[envKey];
110
+ }
111
+ //# sourceMappingURL=registries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registries.js","sourceRoot":"","sources":["../../src/ledger/registries.ts"],"names":[],"mappings":"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"}