@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.
- package/LICENSE.txt +289 -289
- package/LICENSES.txt +538 -0
- package/README.md +1140 -98
- package/dist/api/client.d.ts +4 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +14 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/fetch.d.ts +13 -0
- package/dist/api/fetch.d.ts.map +1 -0
- package/dist/api/fetch.js +30 -0
- package/dist/api/fetch.js.map +1 -0
- package/dist/api/params.d.ts +4 -0
- package/dist/api/params.d.ts.map +1 -0
- package/dist/api/params.js +9 -0
- package/dist/api/params.js.map +1 -0
- package/dist/auth/dcql.d.ts +5 -0
- package/dist/auth/dcql.d.ts.map +1 -0
- package/dist/auth/dcql.js +41 -0
- package/dist/auth/dcql.js.map +1 -0
- package/dist/auth/presentation.d.ts +30 -0
- package/dist/auth/presentation.d.ts.map +1 -0
- package/dist/auth/presentation.js +99 -0
- package/dist/auth/presentation.js.map +1 -0
- package/dist/auth/token.d.ts +11 -0
- package/dist/auth/token.d.ts.map +1 -0
- package/dist/auth/token.js +116 -0
- package/dist/auth/token.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +96 -10
- package/dist/cli.js.map +1 -1
- package/dist/commands/auth.d.ts +3 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +99 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/config-cmd.d.ts +3 -0
- package/dist/commands/config-cmd.d.ts.map +1 -0
- package/dist/commands/config-cmd.js +86 -0
- package/dist/commands/config-cmd.js.map +1 -0
- package/dist/commands/contracts-registry.d.ts +3 -0
- package/dist/commands/contracts-registry.d.ts.map +1 -0
- package/dist/commands/contracts-registry.js +132 -0
- package/dist/commands/contracts-registry.js.map +1 -0
- package/dist/commands/did-registry.d.ts +3 -0
- package/dist/commands/did-registry.d.ts.map +1 -0
- package/dist/commands/did-registry.js +110 -0
- package/dist/commands/did-registry.js.map +1 -0
- package/dist/commands/faucet.d.ts +3 -0
- package/dist/commands/faucet.d.ts.map +1 -0
- package/dist/commands/faucet.js +78 -0
- package/dist/commands/faucet.js.map +1 -0
- package/dist/commands/health.d.ts +3 -0
- package/dist/commands/health.d.ts.map +1 -0
- package/dist/commands/health.js +20 -0
- package/dist/commands/health.js.map +1 -0
- package/dist/commands/issuers-registry.d.ts +3 -0
- package/dist/commands/issuers-registry.d.ts.map +1 -0
- package/dist/commands/issuers-registry.js +340 -0
- package/dist/commands/issuers-registry.js.map +1 -0
- package/dist/commands/ledger.d.ts +3 -0
- package/dist/commands/ledger.d.ts.map +1 -0
- package/dist/commands/ledger.js +549 -372
- package/dist/commands/ledger.js.map +1 -1
- package/dist/commands/onboarding.d.ts +3 -0
- package/dist/commands/onboarding.d.ts.map +1 -0
- package/dist/commands/onboarding.js +301 -0
- package/dist/commands/onboarding.js.map +1 -0
- package/dist/commands/openapi.d.ts +3 -0
- package/dist/commands/openapi.d.ts.map +1 -0
- package/dist/commands/openapi.js +37 -0
- package/dist/commands/openapi.js.map +1 -0
- package/dist/commands/policies-registry.d.ts +3 -0
- package/dist/commands/policies-registry.d.ts.map +1 -0
- package/dist/commands/policies-registry.js +198 -0
- package/dist/commands/policies-registry.js.map +1 -0
- package/dist/commands/registry.d.ts +27 -0
- package/dist/commands/registry.d.ts.map +1 -0
- package/dist/commands/registry.js +62 -0
- package/dist/commands/registry.js.map +1 -0
- package/dist/commands/schemas-registry.d.ts +3 -0
- package/dist/commands/schemas-registry.d.ts.map +1 -0
- package/dist/commands/schemas-registry.js +231 -0
- package/dist/commands/schemas-registry.js.map +1 -0
- package/dist/commands/shared/args.d.ts +2 -0
- package/dist/commands/shared/args.d.ts.map +1 -0
- package/dist/commands/shared/args.js +4 -0
- package/dist/commands/shared/args.js.map +1 -0
- package/dist/commands/shared/wallet-opts.d.ts +9 -0
- package/dist/commands/shared/wallet-opts.d.ts.map +1 -0
- package/dist/commands/shared/wallet-opts.js +44 -0
- package/dist/commands/shared/wallet-opts.js.map +1 -0
- package/dist/commands/timestamp.d.ts +3 -0
- package/dist/commands/timestamp.d.ts.map +1 -0
- package/dist/commands/timestamp.js +250 -0
- package/dist/commands/timestamp.js.map +1 -0
- package/dist/commands/track-and-trace.d.ts +3 -0
- package/dist/commands/track-and-trace.d.ts.map +1 -0
- package/dist/commands/track-and-trace.js +235 -0
- package/dist/commands/track-and-trace.js.map +1 -0
- package/dist/commands/wallet.d.ts +3 -0
- package/dist/commands/wallet.d.ts.map +1 -0
- package/dist/commands/wallet.js +123 -0
- package/dist/commands/wallet.js.map +1 -0
- package/dist/config/config.d.ts +45 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +111 -0
- package/dist/config/config.js.map +1 -0
- package/dist/config/ebsi-env.d.ts +4 -0
- package/dist/config/ebsi-env.d.ts.map +1 -0
- package/dist/config/ebsi-env.js +37 -0
- package/dist/config/ebsi-env.js.map +1 -0
- package/dist/crypto/wallet.d.ts +34 -0
- package/dist/crypto/wallet.d.ts.map +1 -0
- package/dist/crypto/wallet.js +100 -0
- package/dist/crypto/wallet.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -6
- package/dist/index.js.map +1 -1
- package/dist/ledger/read.d.ts +11 -0
- package/dist/ledger/read.d.ts.map +1 -0
- package/dist/ledger/read.js +24 -0
- package/dist/ledger/read.js.map +1 -0
- package/dist/ledger/registries.d.ts +25 -0
- package/dist/ledger/registries.d.ts.map +1 -0
- package/dist/ledger/registries.js +111 -0
- package/dist/ledger/registries.js.map +1 -0
- package/dist/ledger/write.d.ts +43 -0
- package/dist/ledger/write.d.ts.map +1 -0
- package/dist/ledger/write.js +119 -0
- package/dist/ledger/write.js.map +1 -0
- package/dist/onboarding/vc.d.ts +18 -0
- package/dist/onboarding/vc.d.ts.map +1 -0
- package/dist/onboarding/vc.js +72 -0
- package/dist/onboarding/vc.js.map +1 -0
- package/dist/output/format.d.ts +7 -0
- package/dist/output/format.d.ts.map +1 -0
- package/dist/output/format.js +94 -0
- package/dist/output/format.js.map +1 -0
- package/dist/tui/App.d.ts +3 -0
- package/dist/tui/App.d.ts.map +1 -0
- package/dist/tui/App.js +99 -0
- package/dist/tui/App.js.map +1 -0
- package/dist/tui/CommandPalette.d.ts +8 -0
- package/dist/tui/CommandPalette.d.ts.map +1 -0
- package/dist/tui/CommandPalette.js +105 -0
- package/dist/tui/CommandPalette.js.map +1 -0
- package/package.json +66 -108
- package/src/api/client.ts +26 -0
- package/src/api/fetch.ts +53 -0
- package/src/api/params.ts +17 -0
- package/src/auth/dcql.ts +84 -0
- package/src/auth/presentation.ts +255 -0
- package/src/auth/token.ts +244 -0
- package/src/cli.ts +164 -0
- package/src/commands/auth.ts +119 -0
- package/src/commands/config-cmd.ts +122 -0
- package/src/commands/contracts-registry.ts +156 -0
- package/src/commands/did-registry.ts +126 -0
- package/src/commands/faucet.ts +112 -0
- package/src/commands/health.ts +21 -0
- package/src/commands/issuers-registry.ts +385 -0
- package/src/commands/ledger.ts +777 -0
- package/src/commands/onboarding.ts +411 -0
- package/src/commands/openapi.ts +42 -0
- package/src/commands/policies-registry.ts +218 -0
- package/src/commands/registry.ts +152 -0
- package/src/commands/schemas-registry.ts +255 -0
- package/src/commands/shared/args.ts +14 -0
- package/src/commands/shared/wallet-opts.ts +85 -0
- package/src/commands/timestamp.ts +272 -0
- package/src/commands/track-and-trace.ts +263 -0
- package/src/commands/wallet.ts +175 -0
- package/src/config/config.ts +275 -0
- package/src/config/ebsi-env.ts +67 -0
- package/src/crypto/wallet.ts +291 -0
- package/src/index.ts +24 -0
- package/src/ledger/read.ts +70 -0
- package/src/ledger/registries.ts +285 -0
- package/src/ledger/write.ts +381 -0
- package/src/onboarding/vc.ts +205 -0
- package/src/output/format.ts +157 -0
- package/src/tui/App.tsx +282 -0
- package/src/tui/CommandPalette.tsx +223 -0
- package/bin/cli.js +0 -13
- package/dist/abi/pilot/DidRegistry.js +0 -568
- package/dist/abi/pilot/DidRegistry.js.map +0 -1
- package/dist/abi/pilot/Ptr.js +0 -666
- package/dist/abi/pilot/Ptr.js.map +0 -1
- package/dist/abi/pilot/SchemaSCRegistry.js +0 -264
- package/dist/abi/pilot/SchemaSCRegistry.js.map +0 -1
- package/dist/abi/pilot/Tcr.js +0 -715
- package/dist/abi/pilot/Tcr.js.map +0 -1
- package/dist/abi/pilot/Timestamp.js +0 -658
- package/dist/abi/pilot/Timestamp.js.map +0 -1
- package/dist/abi/pilot/Tir.js +0 -428
- package/dist/abi/pilot/Tir.js.map +0 -1
- package/dist/abi/pilot/TnT.js +0 -842
- package/dist/abi/pilot/TnT.js.map +0 -1
- package/dist/abi/pilot/Tpr.js +0 -492
- package/dist/abi/pilot/Tpr.js.map +0 -1
- package/dist/abi/test/DidRegistry.js +0 -568
- package/dist/abi/test/DidRegistry.js.map +0 -1
- package/dist/abi/test/Ptr.js +0 -666
- package/dist/abi/test/Ptr.js.map +0 -1
- package/dist/abi/test/SchemaSCRegistry.js +0 -300
- package/dist/abi/test/SchemaSCRegistry.js.map +0 -1
- package/dist/abi/test/Tcr.js +0 -715
- package/dist/abi/test/Tcr.js.map +0 -1
- package/dist/abi/test/Timestamp.js +0 -658
- package/dist/abi/test/Timestamp.js.map +0 -1
- package/dist/abi/test/Tir.js +0 -428
- package/dist/abi/test/Tir.js.map +0 -1
- package/dist/abi/test/TnT.js +0 -842
- package/dist/abi/test/TnT.js.map +0 -1
- package/dist/abi/test/Tpr.js +0 -492
- package/dist/abi/test/Tpr.js.map +0 -1
- package/dist/app.js +0 -659
- package/dist/app.js.map +0 -1
- package/dist/buildParam/didr.js +0 -374
- package/dist/buildParam/didr.js.map +0 -1
- package/dist/buildParam/index.js +0 -53
- package/dist/buildParam/index.js.map +0 -1
- package/dist/buildParam/ptr.js +0 -80
- package/dist/buildParam/ptr.js.map +0 -1
- package/dist/buildParam/tcr.js +0 -36
- package/dist/buildParam/tcr.js.map +0 -1
- package/dist/buildParam/timestamp.js +0 -350
- package/dist/buildParam/timestamp.js.map +0 -1
- package/dist/buildParam/tir.js +0 -110
- package/dist/buildParam/tir.js.map +0 -1
- package/dist/buildParam/tnt.js +0 -214
- package/dist/buildParam/tnt.js.map +0 -1
- package/dist/buildParam/tpr.js +0 -91
- package/dist/buildParam/tpr.js.map +0 -1
- package/dist/buildParam/tsr.js +0 -115
- package/dist/buildParam/tsr.js.map +0 -1
- package/dist/commands/authorisation.js +0 -144
- package/dist/commands/authorisation.js.map +0 -1
- package/dist/commands/compute.js +0 -680
- package/dist/commands/compute.js.map +0 -1
- package/dist/commands/conformance.js +0 -813
- package/dist/commands/conformance.js.map +0 -1
- package/dist/commands/hardwarewallet.js +0 -41
- package/dist/commands/hardwarewallet.js.map +0 -1
- package/dist/commands/index.js +0 -8
- package/dist/commands/index.js.map +0 -1
- package/dist/commands/ptr.js +0 -54
- package/dist/commands/ptr.js.map +0 -1
- package/dist/commands/tcr.js +0 -50
- package/dist/commands/tcr.js.map +0 -1
- package/dist/commands/tir.js +0 -64
- package/dist/commands/tir.js.map +0 -1
- package/dist/commands/tnl.js +0 -81
- package/dist/commands/tnl.js.map +0 -1
- package/dist/commands/tsr.js +0 -45
- package/dist/commands/tsr.js.map +0 -1
- package/dist/commands/view.js +0 -53
- package/dist/commands/view.js.map +0 -1
- package/dist/config.js +0 -497
- package/dist/config.js.map +0 -1
- package/dist/interfaces/context.js +0 -2
- package/dist/interfaces/context.js.map +0 -1
- package/dist/interfaces/contracts/ProxyFactory.js +0 -2
- package/dist/interfaces/contracts/ProxyFactory.js.map +0 -1
- package/dist/interfaces/contracts/ProxyTemplateRegistry.js +0 -2
- package/dist/interfaces/contracts/ProxyTemplateRegistry.js.map +0 -1
- package/dist/interfaces/contracts/SchemaSCRegistry.js +0 -2
- package/dist/interfaces/contracts/SchemaSCRegistry.js.map +0 -1
- package/dist/interfaces/contracts/common.js +0 -2
- package/dist/interfaces/contracts/common.js.map +0 -1
- package/dist/interfaces/index.js +0 -5
- package/dist/interfaces/index.js.map +0 -1
- package/dist/interfaces/jsonrpc.interface.js +0 -2
- package/dist/interfaces/jsonrpc.interface.js.map +0 -1
- package/dist/interfaces/paginated-list.interface.js +0 -2
- package/dist/interfaces/paginated-list.interface.js.map +0 -1
- package/dist/interfaces/unsigned-transaction.interface.js +0 -2
- package/dist/interfaces/unsigned-transaction.interface.js.map +0 -1
- package/dist/interfaces/utils.interface.js +0 -2
- package/dist/interfaces/utils.interface.js.map +0 -1
- package/dist/programs/migrateDid.js +0 -159
- package/dist/programs/migrateDid.js.map +0 -1
- package/dist/programs/migrateDids.js +0 -232
- package/dist/programs/migrateDids.js.map +0 -1
- package/dist/programs/migrateTsr.js +0 -201
- package/dist/programs/migrateTsr.js.map +0 -1
- package/dist/scripts/accreditAndAuthorize/conformance/step1 +0 -34
- package/dist/scripts/accreditAndAuthorize/conformance/step2 +0 -18
- package/dist/scripts/accreditAndAuthorize/conformance/step3 +0 -9
- package/dist/scripts/accreditAndAuthorize/conformance/step4 +0 -27
- package/dist/scripts/accreditAndAuthorize/conformance/step5 +0 -13
- package/dist/scripts/accreditAndAuthorize/conformance/step6 +0 -14
- package/dist/scripts/accreditAndAuthorize/conformance/step7 +0 -7
- package/dist/scripts/accreditAndAuthorize/test/step1 +0 -34
- package/dist/scripts/accreditAndAuthorize/test/step2 +0 -18
- package/dist/scripts/accreditAndAuthorize/test/step3 +0 -9
- package/dist/scripts/accreditAndAuthorize/test/step4 +0 -27
- package/dist/scripts/accreditAndAuthorize/test/step5 +0 -13
- package/dist/scripts/accreditAndAuthorize/test/step6 +0 -14
- package/dist/scripts/accreditAndAuthorize/test/step7 +0 -7
- package/dist/scripts/accreditTI +0 -21
- package/dist/scripts/assets/Nodes.json +0 -27
- package/dist/scripts/assets/vcdm1.1/CTRevocableCredential.json +0 -30
- package/dist/scripts/assets/vcdm1.1/CredentialToAttestVerifiableAuthorisationForTrustChain.json +0 -29
- package/dist/scripts/assets/vcdm1.1/Nodes.json +0 -27
- package/dist/scripts/assets/vcdm1.1/TrustedNodesList.json +0 -35
- package/dist/scripts/assets/vcdm1.1/VerifiableAccreditationToAccredit.json +0 -35
- package/dist/scripts/assets/vcdm1.1/VerifiableAccreditationToAttest.json +0 -33
- package/dist/scripts/assets/vcdm1.1/VerifiableAuthorisationForTrustChain.json +0 -22
- package/dist/scripts/assets/vcdm1.1/VerifiableAuthorisationToInvoke.json +0 -24
- package/dist/scripts/assets/vcdm1.1/VerifiableAuthorisationToOnboard.json +0 -24
- package/dist/scripts/assets/vcdm2.0/CredentialToAttestVerifiableAuthorisationForTrustChain.json +0 -29
- package/dist/scripts/assets/vcdm2.0/TrustedNodesList.json +0 -36
- package/dist/scripts/assets/vcdm2.0/VerifiableAccreditationToAccredit.json +0 -40
- package/dist/scripts/assets/vcdm2.0/VerifiableAccreditationToAttest.json +0 -38
- package/dist/scripts/assets/vcdm2.0/VerifiableAuthorisationForTrustChain.json +0 -30
- package/dist/scripts/assets/vcdm2.0/VerifiableAuthorisationToInvoke.json +0 -24
- package/dist/scripts/assets/vcdm2.0/VerifiableAuthorisationToOnboard.json +0 -23
- package/dist/scripts/bootstrap/0a-loadTPROperator +0 -5
- package/dist/scripts/bootstrap/0b-loadAdmin +0 -8
- package/dist/scripts/bootstrap/1-populateTPR +0 -92
- package/dist/scripts/bootstrap/2-populateDID +0 -6
- package/dist/scripts/bootstrap/3-populateTimestamp +0 -9
- package/dist/scripts/bootstrap/4-populateTIR +0 -8
- package/dist/scripts/bootstrap/5-populateTSR +0 -85
- package/dist/scripts/bootstrap/6-setupConformanceIssuer +0 -35
- package/dist/scripts/bootstrap/README.md +0 -218
- package/dist/scripts/issueVcInvoke +0 -10
- package/dist/scripts/issueVcOnboard +0 -9
- package/dist/scripts/issueVcRootTAO +0 -11
- package/dist/scripts/issueVcTAO +0 -12
- package/dist/scripts/issueVcTI +0 -12
- package/dist/scripts/issueVcTnl +0 -32
- package/dist/scripts/issue_CTRevocableCredential +0 -12
- package/dist/scripts/issue_SelfAttestationSupportOffice +0 -10
- package/dist/scripts/issue_VerifiableAccreditationToAccredit +0 -11
- package/dist/scripts/issue_VerifiableAccreditationToAttest +0 -11
- package/dist/scripts/issue_VerifiableAuthorisationForTrustChain +0 -10
- package/dist/scripts/issue_VerifiableAuthorisationToOnboard +0 -9
- package/dist/scripts/preregisterIssuer +0 -6
- package/dist/scripts/registerDidDocument +0 -15
- package/dist/scripts/registerIssuer +0 -6
- package/dist/scripts/updateVcRootTAO +0 -10
- package/dist/scripts/updateVcTAO +0 -11
- package/dist/scripts/updateVcTI +0 -11
- package/dist/scripts/vcdm2.0/issueSelfAttestationSupportOffice +0 -10
- package/dist/scripts/vcdm2.0/issueVcInvoke +0 -12
- package/dist/scripts/vcdm2.0/issueVcOnboard +0 -11
- package/dist/scripts/vcdm2.0/issueVcRootTAO +0 -14
- package/dist/scripts/vcdm2.0/issueVcTAO +0 -15
- package/dist/scripts/vcdm2.0/issueVcTI +0 -15
- package/dist/scripts/vcdm2.0/issueVcTnl +0 -34
- package/dist/scripts/vcdm2.0/registerDidDocument +0 -15
- package/dist/scripts/vcdm2.0/updateVcRootTAO +0 -13
- package/dist/scripts/vcdm2.0/updateVcTAO +0 -14
- package/dist/scripts/vcdm2.0/updateVcTI +0 -14
- package/dist/scripts/vcdm2.0/verifyVcTnl +0 -10
- package/dist/scripts/verifyVcTnl +0 -10
- package/dist/scripts/wct/accreditAndAuthorize +0 -133
- package/dist/scripts/wct/accreditAndAuthorize2 +0 -89
- package/dist/scripts/wct/holderWallet +0 -39
- package/dist/scripts/wct/holderWallet2 +0 -39
- package/dist/scripts/wct/issueToHolder +0 -38
- package/dist/scripts/wct/issueToHolder2 +0 -38
- package/dist/scripts/wct/pda1 +0 -3
- package/dist/scripts/wct/verifier +0 -8
- package/dist/scripts/wct/verifier2 +0 -7
- package/dist/utils/Client.js +0 -155
- package/dist/utils/Client.js.map +0 -1
- package/dist/utils/HardwareWallet.js +0 -326
- package/dist/utils/HardwareWallet.js.map +0 -1
- package/dist/utils/http.js +0 -132
- package/dist/utils/http.js.map +0 -1
- package/dist/utils/index.js +0 -8
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/jsonrpc.js +0 -38
- package/dist/utils/jsonrpc.js.map +0 -1
- package/dist/utils/print.js +0 -56
- package/dist/utils/print.js.map +0 -1
- package/dist/utils/utils.js +0 -427
- package/dist/utils/utils.js.map +0 -1
- package/dist/utils/vcdm.js +0 -47
- package/dist/utils/vcdm.js.map +0 -1
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import type { CliConfig } from "../config/config.ts";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A positional argument for a command
|
|
5
|
+
*/
|
|
6
|
+
export interface CommandArg {
|
|
7
|
+
description: string;
|
|
8
|
+
example?: string;
|
|
9
|
+
/**
|
|
10
|
+
* CLI name / placeholder, e.g. "did"
|
|
11
|
+
*/
|
|
12
|
+
name: string;
|
|
13
|
+
required: boolean;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* A single command entry in the registry
|
|
18
|
+
*/
|
|
19
|
+
export interface CommandDescriptor {
|
|
20
|
+
args: CommandArg[];
|
|
21
|
+
/**
|
|
22
|
+
* Group label for display (first segment, title-cased)
|
|
23
|
+
*/
|
|
24
|
+
group: string;
|
|
25
|
+
/**
|
|
26
|
+
* Executes the command.
|
|
27
|
+
* @param args Positional arg values keyed by CommandArg.name
|
|
28
|
+
* @param opts Option values keyed by long flag name (camelCase)
|
|
29
|
+
* @param config Resolved CLI configuration
|
|
30
|
+
* @returns The data to display (passed to formatOutput)
|
|
31
|
+
*/
|
|
32
|
+
handler: (
|
|
33
|
+
args: Record<string, string>,
|
|
34
|
+
opts: Record<string, string>,
|
|
35
|
+
config: CliConfig,
|
|
36
|
+
) => Promise<unknown>;
|
|
37
|
+
/**
|
|
38
|
+
* Unique dotted id, e.g. "did-registry.identifiers.list"
|
|
39
|
+
*/
|
|
40
|
+
id: string;
|
|
41
|
+
options: CommandOption[];
|
|
42
|
+
/**
|
|
43
|
+
* Space-separated command path, e.g. ["did-registry", "identifiers", "list"]
|
|
44
|
+
*/
|
|
45
|
+
segments: string[];
|
|
46
|
+
/**
|
|
47
|
+
* Short human-readable summary shown as a tip in help / palette
|
|
48
|
+
*/
|
|
49
|
+
summary: string;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* An optional flag / option for a command
|
|
54
|
+
*/
|
|
55
|
+
interface CommandOption {
|
|
56
|
+
defaultValue?: string;
|
|
57
|
+
description: string;
|
|
58
|
+
/**
|
|
59
|
+
* Commander flags string, e.g. "--page-after <cursor>"
|
|
60
|
+
*/
|
|
61
|
+
flags: string;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Full path string for a descriptor, e.g. "did-registry identifiers list"
|
|
66
|
+
*/
|
|
67
|
+
export function commandPath(cmd: CommandDescriptor): string {
|
|
68
|
+
return cmd.segments.join(" ");
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Fuzzy-match: returns true when all words in `query` appear (as
|
|
73
|
+
* substrings, case-insensitive) in the command's segment path or summary.
|
|
74
|
+
*/
|
|
75
|
+
export function matchesQuery(cmd: CommandDescriptor, query: string): boolean {
|
|
76
|
+
if (query.trim() === "") return true;
|
|
77
|
+
const haystack = `${commandPath(cmd)} ${cmd.summary}`.toLowerCase();
|
|
78
|
+
const words = query.trim().toLowerCase().split(/\s+/);
|
|
79
|
+
return words.every((word) => haystack.includes(word));
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Ranks a matching command by how many query words appear in the command
|
|
84
|
+
* path (title) vs only in the summary description.
|
|
85
|
+
*
|
|
86
|
+
* - 2: every word found in the command path → title match
|
|
87
|
+
* - 1: some words found in the command path → partial title match
|
|
88
|
+
* - 0: no words found in the path → summary-only match
|
|
89
|
+
*
|
|
90
|
+
* Use as a sort key (descending) after filtering with matchesQuery so that
|
|
91
|
+
* path matches always appear before description-only matches.
|
|
92
|
+
*/
|
|
93
|
+
export function queryScore(cmd: CommandDescriptor, query: string): number {
|
|
94
|
+
if (query.trim() === "") return 0;
|
|
95
|
+
const words = query.trim().toLowerCase().split(/\s+/);
|
|
96
|
+
const path = commandPath(cmd).toLowerCase();
|
|
97
|
+
const pathHits = words.filter((word) => path.includes(word)).length;
|
|
98
|
+
if (pathHits === words.length) return 2;
|
|
99
|
+
return pathHits > 0 ? 1 : 0;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// ---------------------------------------------------------------------------
|
|
103
|
+
// Command handlers are registered from individual command files.
|
|
104
|
+
// The registry is assembled at the bottom of this file.
|
|
105
|
+
// ---------------------------------------------------------------------------
|
|
106
|
+
|
|
107
|
+
import { authCommands } from "./auth.ts";
|
|
108
|
+
import { configCommands } from "./config-cmd.ts";
|
|
109
|
+
import { contractsRegistryCommands } from "./contracts-registry.ts";
|
|
110
|
+
import { didRegistryCommands } from "./did-registry.ts";
|
|
111
|
+
import { faucetCommands } from "./faucet.ts";
|
|
112
|
+
import { healthCommands } from "./health.ts";
|
|
113
|
+
import { issuersRegistryCommands } from "./issuers-registry.ts";
|
|
114
|
+
import { ledgerCommands } from "./ledger.ts";
|
|
115
|
+
import { onboardingCommands } from "./onboarding.ts";
|
|
116
|
+
import { openapiCommands } from "./openapi.ts";
|
|
117
|
+
import { policiesRegistryCommands } from "./policies-registry.ts";
|
|
118
|
+
import { schemasRegistryCommands } from "./schemas-registry.ts";
|
|
119
|
+
import { timestampCommands } from "./timestamp.ts";
|
|
120
|
+
import { trackAndTraceCommands } from "./track-and-trace.ts";
|
|
121
|
+
import { walletCommands } from "./wallet.ts";
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* The full ordered list of CLI commands
|
|
125
|
+
*/
|
|
126
|
+
export const COMMANDS: CommandDescriptor[] = [
|
|
127
|
+
...healthCommands,
|
|
128
|
+
...openapiCommands,
|
|
129
|
+
...configCommands,
|
|
130
|
+
...walletCommands,
|
|
131
|
+
...faucetCommands,
|
|
132
|
+
...onboardingCommands,
|
|
133
|
+
...authCommands,
|
|
134
|
+
...ledgerCommands,
|
|
135
|
+
...contractsRegistryCommands,
|
|
136
|
+
...didRegistryCommands,
|
|
137
|
+
...issuersRegistryCommands,
|
|
138
|
+
...policiesRegistryCommands,
|
|
139
|
+
...schemasRegistryCommands,
|
|
140
|
+
...timestampCommands,
|
|
141
|
+
...trackAndTraceCommands,
|
|
142
|
+
{
|
|
143
|
+
args: [],
|
|
144
|
+
group: "exit",
|
|
145
|
+
/* v8 ignore next */
|
|
146
|
+
handler: () => process.exit(0),
|
|
147
|
+
id: "exit",
|
|
148
|
+
options: [],
|
|
149
|
+
segments: ["exit"],
|
|
150
|
+
summary: "Quit the EBSI CLI",
|
|
151
|
+
},
|
|
152
|
+
];
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import type { CommandDescriptor } from "./registry.ts";
|
|
2
|
+
|
|
3
|
+
import { getClient, unwrap } from "../api/fetch.ts";
|
|
4
|
+
import { q } from "../api/params.ts";
|
|
5
|
+
import { contractAddressOptionFor } from "../ledger/registries.ts";
|
|
6
|
+
import { requiredArg } from "./shared/args.ts";
|
|
7
|
+
|
|
8
|
+
const PAGINATION_OPTIONS = [
|
|
9
|
+
{
|
|
10
|
+
description: "Cursor for pagination (page[after])",
|
|
11
|
+
flags: "--page-after <cursor>",
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
description: "Maximum number of items per page (page[size])",
|
|
15
|
+
flags: "--page-size <n>",
|
|
16
|
+
},
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
const { option: CONTRACT_ADDRESS_OPTION, resolve: contractAddress } =
|
|
20
|
+
contractAddressOptionFor("schemas-registry");
|
|
21
|
+
|
|
22
|
+
export const schemasRegistryCommands: CommandDescriptor[] = [
|
|
23
|
+
{
|
|
24
|
+
args: [],
|
|
25
|
+
group: "Schemas Registry",
|
|
26
|
+
async handler(_args, opts, config) {
|
|
27
|
+
const client = getClient(config);
|
|
28
|
+
const result = await client.GET("/schemas-registry/schemas", {
|
|
29
|
+
params: {
|
|
30
|
+
query: q({
|
|
31
|
+
contractAddress: contractAddress(opts),
|
|
32
|
+
"page[after]": opts["pageAfter"]
|
|
33
|
+
? Number(opts["pageAfter"])
|
|
34
|
+
: undefined,
|
|
35
|
+
"page[size]": opts["pageSize"]
|
|
36
|
+
? Number(opts["pageSize"])
|
|
37
|
+
: undefined,
|
|
38
|
+
}),
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
return unwrap(result);
|
|
42
|
+
},
|
|
43
|
+
id: "schemas-registry.schemas.list",
|
|
44
|
+
options: [...PAGINATION_OPTIONS, CONTRACT_ADDRESS_OPTION],
|
|
45
|
+
segments: ["schemas-registry", "schemas", "list"],
|
|
46
|
+
summary: "List all trusted schemas registered on the EBSI ledger",
|
|
47
|
+
},
|
|
48
|
+
|
|
49
|
+
{
|
|
50
|
+
args: [
|
|
51
|
+
{
|
|
52
|
+
description: "Schema ID",
|
|
53
|
+
example: "0x1234...",
|
|
54
|
+
name: "schemaId",
|
|
55
|
+
required: true,
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
group: "Schemas Registry",
|
|
59
|
+
async handler(args, opts, config) {
|
|
60
|
+
const client = getClient(config);
|
|
61
|
+
const result = await client.GET("/schemas-registry/schemas/{schemaId}", {
|
|
62
|
+
params: {
|
|
63
|
+
path: { schemaId: requiredArg(args, "schemaId") },
|
|
64
|
+
query: q({ contractAddress: contractAddress(opts) }),
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
return unwrap(result);
|
|
68
|
+
},
|
|
69
|
+
id: "schemas-registry.schemas.get",
|
|
70
|
+
options: [CONTRACT_ADDRESS_OPTION],
|
|
71
|
+
segments: ["schemas-registry", "schemas", "get"],
|
|
72
|
+
summary: "Get a schema by its ID",
|
|
73
|
+
},
|
|
74
|
+
|
|
75
|
+
{
|
|
76
|
+
args: [
|
|
77
|
+
{
|
|
78
|
+
description: "Schema ID",
|
|
79
|
+
example: "0x1234...",
|
|
80
|
+
name: "schemaId",
|
|
81
|
+
required: true,
|
|
82
|
+
},
|
|
83
|
+
],
|
|
84
|
+
group: "Schemas Registry",
|
|
85
|
+
async handler(args, opts, config) {
|
|
86
|
+
const client = getClient(config);
|
|
87
|
+
const result = await client.GET(
|
|
88
|
+
"/schemas-registry/schemas/{schemaId}/revisions",
|
|
89
|
+
{
|
|
90
|
+
params: {
|
|
91
|
+
path: { schemaId: requiredArg(args, "schemaId") },
|
|
92
|
+
query: q({
|
|
93
|
+
contractAddress: contractAddress(opts),
|
|
94
|
+
"page[after]": opts["pageAfter"]
|
|
95
|
+
? Number(opts["pageAfter"])
|
|
96
|
+
: undefined,
|
|
97
|
+
"page[size]": opts["pageSize"]
|
|
98
|
+
? Number(opts["pageSize"])
|
|
99
|
+
: undefined,
|
|
100
|
+
}),
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
);
|
|
104
|
+
return unwrap(result);
|
|
105
|
+
},
|
|
106
|
+
id: "schemas-registry.schemas.revisions",
|
|
107
|
+
options: [...PAGINATION_OPTIONS, CONTRACT_ADDRESS_OPTION],
|
|
108
|
+
segments: ["schemas-registry", "schemas", "revisions"],
|
|
109
|
+
summary: "List all revisions of a schema",
|
|
110
|
+
},
|
|
111
|
+
|
|
112
|
+
{
|
|
113
|
+
args: [
|
|
114
|
+
{
|
|
115
|
+
description: "Schema ID",
|
|
116
|
+
example: "0x1234...",
|
|
117
|
+
name: "schemaId",
|
|
118
|
+
required: true,
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
description: "Schema revision ID",
|
|
122
|
+
example: "0x5678...",
|
|
123
|
+
name: "schemaRevisionId",
|
|
124
|
+
required: true,
|
|
125
|
+
},
|
|
126
|
+
],
|
|
127
|
+
group: "Schemas Registry",
|
|
128
|
+
async handler(args, opts, config) {
|
|
129
|
+
const client = getClient(config);
|
|
130
|
+
const result = await client.GET(
|
|
131
|
+
"/schemas-registry/schemas/{schemaId}/revisions/{schemaRevisionId}",
|
|
132
|
+
{
|
|
133
|
+
params: {
|
|
134
|
+
path: {
|
|
135
|
+
schemaId: requiredArg(args, "schemaId"),
|
|
136
|
+
schemaRevisionId: requiredArg(args, "schemaRevisionId"),
|
|
137
|
+
},
|
|
138
|
+
query: q({ contractAddress: contractAddress(opts) }),
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
);
|
|
142
|
+
return unwrap(result);
|
|
143
|
+
},
|
|
144
|
+
id: "schemas-registry.schemas.revision",
|
|
145
|
+
options: [CONTRACT_ADDRESS_OPTION],
|
|
146
|
+
segments: ["schemas-registry", "schemas", "revision"],
|
|
147
|
+
summary: "Get a specific revision of a schema",
|
|
148
|
+
},
|
|
149
|
+
|
|
150
|
+
{
|
|
151
|
+
args: [
|
|
152
|
+
{
|
|
153
|
+
description: "Schema ID",
|
|
154
|
+
example: "0x1234...",
|
|
155
|
+
name: "schemaId",
|
|
156
|
+
required: true,
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
description: "Schema revision ID",
|
|
160
|
+
example: "0x5678...",
|
|
161
|
+
name: "schemaRevisionId",
|
|
162
|
+
required: true,
|
|
163
|
+
},
|
|
164
|
+
],
|
|
165
|
+
group: "Schemas Registry",
|
|
166
|
+
async handler(args, opts, config) {
|
|
167
|
+
const client = getClient(config);
|
|
168
|
+
const result = await client.GET(
|
|
169
|
+
"/schemas-registry/schemas/{schemaId}/revisions/{schemaRevisionId}/metadata",
|
|
170
|
+
{
|
|
171
|
+
params: {
|
|
172
|
+
path: {
|
|
173
|
+
schemaId: requiredArg(args, "schemaId"),
|
|
174
|
+
schemaRevisionId: requiredArg(args, "schemaRevisionId"),
|
|
175
|
+
},
|
|
176
|
+
query: q({
|
|
177
|
+
contractAddress: contractAddress(opts),
|
|
178
|
+
"page[after]": opts["pageAfter"]
|
|
179
|
+
? Number(opts["pageAfter"])
|
|
180
|
+
: undefined,
|
|
181
|
+
"page[size]": opts["pageSize"]
|
|
182
|
+
? Number(opts["pageSize"])
|
|
183
|
+
: undefined,
|
|
184
|
+
}),
|
|
185
|
+
},
|
|
186
|
+
},
|
|
187
|
+
);
|
|
188
|
+
return unwrap(result);
|
|
189
|
+
},
|
|
190
|
+
id: "schemas-registry.schemas.metadata.list",
|
|
191
|
+
options: [...PAGINATION_OPTIONS, CONTRACT_ADDRESS_OPTION],
|
|
192
|
+
segments: ["schemas-registry", "schemas", "metadata", "list"],
|
|
193
|
+
summary: "List metadata for a schema revision",
|
|
194
|
+
},
|
|
195
|
+
|
|
196
|
+
{
|
|
197
|
+
args: [
|
|
198
|
+
{
|
|
199
|
+
description: "Schema ID",
|
|
200
|
+
example: "0x1234...",
|
|
201
|
+
name: "schemaId",
|
|
202
|
+
required: true,
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
description: "Schema revision ID",
|
|
206
|
+
example: "0x5678...",
|
|
207
|
+
name: "schemaRevisionId",
|
|
208
|
+
required: true,
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
description: "Schema revision metadata ID",
|
|
212
|
+
example:
|
|
213
|
+
"0x44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a",
|
|
214
|
+
name: "metadataId",
|
|
215
|
+
required: true,
|
|
216
|
+
},
|
|
217
|
+
],
|
|
218
|
+
group: "Schemas Registry",
|
|
219
|
+
async handler(args, opts, config) {
|
|
220
|
+
const client = getClient(config);
|
|
221
|
+
const result = await client.GET(
|
|
222
|
+
"/schemas-registry/schemas/{schemaId}/revisions/{schemaRevisionId}/metadata/{metadataId}",
|
|
223
|
+
{
|
|
224
|
+
params: {
|
|
225
|
+
path: {
|
|
226
|
+
metadataId: requiredArg(args, "metadataId"),
|
|
227
|
+
schemaId: requiredArg(args, "schemaId"),
|
|
228
|
+
schemaRevisionId: requiredArg(args, "schemaRevisionId"),
|
|
229
|
+
},
|
|
230
|
+
query: q({ contractAddress: contractAddress(opts) }),
|
|
231
|
+
},
|
|
232
|
+
},
|
|
233
|
+
);
|
|
234
|
+
return unwrap(result);
|
|
235
|
+
},
|
|
236
|
+
id: "schemas-registry.schemas.metadata.get",
|
|
237
|
+
options: [CONTRACT_ADDRESS_OPTION],
|
|
238
|
+
segments: ["schemas-registry", "schemas", "metadata", "get"],
|
|
239
|
+
summary: "Get metadata for a schema revision",
|
|
240
|
+
},
|
|
241
|
+
|
|
242
|
+
{
|
|
243
|
+
args: [],
|
|
244
|
+
group: "Schemas Registry",
|
|
245
|
+
async handler(_args, _opts, config) {
|
|
246
|
+
const client = getClient(config);
|
|
247
|
+
const result = await client.GET("/schemas-registry/abi");
|
|
248
|
+
return unwrap(result);
|
|
249
|
+
},
|
|
250
|
+
id: "schemas-registry.abi",
|
|
251
|
+
options: [],
|
|
252
|
+
segments: ["schemas-registry", "abi"],
|
|
253
|
+
summary: "Get the ABI of the Schemas Registry smart contract",
|
|
254
|
+
},
|
|
255
|
+
];
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads a positional argument that Commander guarantees is present (required
|
|
3
|
+
* args are validated before the handler runs), without needing a per-call-site
|
|
4
|
+
* `v8 ignore` comment — `noUncheckedIndexedAccess` widens every indexed read
|
|
5
|
+
* to `string | undefined` regardless of that guarantee.
|
|
6
|
+
*/
|
|
7
|
+
export function requiredArg(
|
|
8
|
+
args: Record<string, string>,
|
|
9
|
+
name: string,
|
|
10
|
+
fallback = "",
|
|
11
|
+
): string {
|
|
12
|
+
/* v8 ignore next -- required positional guaranteed by commander */
|
|
13
|
+
return args[name] ?? fallback;
|
|
14
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type { CliConfig } from "../../config/config.ts";
|
|
2
|
+
import type { KeyAlgorithm, WalletDetails } from "../../crypto/wallet.ts";
|
|
3
|
+
|
|
4
|
+
import { SIGN_ALGS } from "../../config/config.ts";
|
|
5
|
+
import { deriveWallet } from "../../crypto/wallet.ts";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Resolves `--sign-alg` (flag → config, which is already flag/env/persisted
|
|
9
|
+
* resolved and validated by `resolveConfig`). Re-validates here too, since a
|
|
10
|
+
* command-local `--sign-alg` flag value hasn't gone through that validation.
|
|
11
|
+
*/
|
|
12
|
+
export function resolveSignAlg(
|
|
13
|
+
opts: Record<string, string>,
|
|
14
|
+
config: Pick<CliConfig, "signAlg">,
|
|
15
|
+
): KeyAlgorithm | undefined {
|
|
16
|
+
const raw = opts["signAlg"] ?? config.signAlg;
|
|
17
|
+
if (raw === undefined) return undefined;
|
|
18
|
+
const normalized = raw.toUpperCase();
|
|
19
|
+
if (!SIGN_ALGS.includes(normalized as KeyAlgorithm)) {
|
|
20
|
+
throw new Error(
|
|
21
|
+
`Invalid --sign-alg "${raw}". Valid values: ${SIGN_ALGS.join(", ")}`,
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
return normalized as KeyAlgorithm;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Resolves the currently-configured wallet from `--es256k-key`/`--es256-key`/
|
|
29
|
+
* `--sign-alg`/`--did` (or their env/persisted-config fallbacks, already
|
|
30
|
+
* folded into `config` by `resolveConfig`), throwing the same descriptive
|
|
31
|
+
* error every command that needs a wallet uses when the mandatory secp256k1
|
|
32
|
+
* key is missing.
|
|
33
|
+
*/
|
|
34
|
+
export async function resolveWallet(
|
|
35
|
+
opts: Record<string, string>,
|
|
36
|
+
config: Pick<
|
|
37
|
+
CliConfig,
|
|
38
|
+
"did" | "es256kPrivateKey" | "es256PrivateKey" | "signAlg"
|
|
39
|
+
>,
|
|
40
|
+
): Promise<WalletDetails> {
|
|
41
|
+
const es256kPrivateKey = opts["es256kKey"] ?? config.es256kPrivateKey;
|
|
42
|
+
if (!es256kPrivateKey) {
|
|
43
|
+
throw new Error(
|
|
44
|
+
"No secp256k1 private key found. Provide --es256k-key <hex>, set " +
|
|
45
|
+
"EBSI_ES256K_PRIVATE_KEY, or run `ebsi config set es256kPrivateKey <hex>`.",
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
const es256PrivateKey = opts["es256Key"] ?? config.es256PrivateKey;
|
|
49
|
+
const signAlg = resolveSignAlg(opts, config);
|
|
50
|
+
const overrideDid = opts["did"] ?? config.did;
|
|
51
|
+
|
|
52
|
+
return deriveWallet(
|
|
53
|
+
{
|
|
54
|
+
es256kPrivateKey,
|
|
55
|
+
...(es256PrivateKey !== undefined && { es256PrivateKey }),
|
|
56
|
+
...(signAlg !== undefined && { signAlg }),
|
|
57
|
+
},
|
|
58
|
+
overrideDid,
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* The `--es256k-key`/`--es256-key`/`--sign-alg` options shared by every
|
|
64
|
+
* command that resolves a wallet, for `--help` text on that command (mirrors
|
|
65
|
+
* the global flags of the same name).
|
|
66
|
+
*/
|
|
67
|
+
export const WALLET_KEY_OPTIONS = [
|
|
68
|
+
{
|
|
69
|
+
description:
|
|
70
|
+
"secp256k1 private key (0x-prefixed hex) — overrides config/env.",
|
|
71
|
+
flags: "--es256k-key <hex>",
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
description:
|
|
75
|
+
"P-256 private key (hex), optional — overrides config/env. " +
|
|
76
|
+
"Enables --sign-alg ES256.",
|
|
77
|
+
flags: "--es256-key <hex>",
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
description:
|
|
81
|
+
'Which key signs VCs/VPs when both are configured: "ES256" or "ES256K" ' +
|
|
82
|
+
"— overrides config/env. Required when both keys are configured.",
|
|
83
|
+
flags: "--sign-alg <alg>",
|
|
84
|
+
},
|
|
85
|
+
];
|