@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,99 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { KNOWN_SCOPES, validateScope } from "../auth/presentation.js";
|
|
3
|
+
import { getAccessToken } from "../auth/token.js";
|
|
4
|
+
import { setPersistedConfigValue } from "../config/config.js";
|
|
5
|
+
import { resolveWallet, WALLET_KEY_OPTIONS } from "./shared/wallet-opts.js";
|
|
6
|
+
export const authCommands = [
|
|
7
|
+
{
|
|
8
|
+
args: [],
|
|
9
|
+
group: "Auth",
|
|
10
|
+
async handler(_args, opts, config) {
|
|
11
|
+
const scope = opts["scope"];
|
|
12
|
+
if (!scope) {
|
|
13
|
+
throw new Error("Missing --scope. Provide one of: " + KNOWN_SCOPES.join(", "));
|
|
14
|
+
}
|
|
15
|
+
validateScope(scope);
|
|
16
|
+
const wallet = await resolveWallet(opts, config);
|
|
17
|
+
let vcJwt;
|
|
18
|
+
const vcFile = opts["vc"];
|
|
19
|
+
if (vcFile) {
|
|
20
|
+
try {
|
|
21
|
+
vcJwt = readFileSync(vcFile, "utf8").trim();
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
25
|
+
throw new Error(`Failed to read VC file "${vcFile}": ${message}`, {
|
|
26
|
+
cause: error,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const specOpt = opts["spec"];
|
|
31
|
+
if (specOpt !== undefined && specOpt !== "draft14" && specOpt !== "1.0") {
|
|
32
|
+
throw new Error('Invalid --spec value. Must be "draft14" or "1.0".');
|
|
33
|
+
}
|
|
34
|
+
const accessToken = await getAccessToken({
|
|
35
|
+
config,
|
|
36
|
+
scope,
|
|
37
|
+
wallet,
|
|
38
|
+
...(specOpt !== undefined && { spec: specOpt }),
|
|
39
|
+
...(vcJwt !== undefined && { vcJwt }),
|
|
40
|
+
});
|
|
41
|
+
const save = Boolean(opts["save"]);
|
|
42
|
+
if (save) {
|
|
43
|
+
setPersistedConfigValue("token", accessToken);
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
access_token: accessToken,
|
|
47
|
+
did: wallet.did,
|
|
48
|
+
saved: save,
|
|
49
|
+
scope,
|
|
50
|
+
signedWith: wallet.signingKey().alg,
|
|
51
|
+
};
|
|
52
|
+
},
|
|
53
|
+
id: "auth.token",
|
|
54
|
+
options: [
|
|
55
|
+
{
|
|
56
|
+
description: "EBSI authorisation scope. Required. Either a single scope " +
|
|
57
|
+
'(e.g. "did-registry:write", "did-registry:invite"), or a space-separated combination of ' +
|
|
58
|
+
'write scopes for a multi-scope token (e.g. "did-registry:write issuers-registry:write"). ' +
|
|
59
|
+
"Only did-registry:write, issuers-registry:write, timestamp:write, track-and-trace:create, track-and-trace:write, policies-registry:write, " +
|
|
60
|
+
"and schemas-registry:write can be combined — invite/invoke scopes must be requested alone. " +
|
|
61
|
+
"Scopes that need a VC (did-registry:invite, ledger:invoke, issuers-registry:invite, track-and-trace:authorise) " +
|
|
62
|
+
"also require --vc and cannot be combined. Any scope may be suffixed with " +
|
|
63
|
+
'":<0x-address>" (e.g. "track-and-trace:write:0x61c36a8d610163660E21a8b7359e1Cac0C9133e1") ' +
|
|
64
|
+
"to target a specific deployed contract instance instead of the environment default.",
|
|
65
|
+
flags: "--scope <scope>",
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
description: "Path to a VC JWT file. Required for invite/invoke scopes " +
|
|
69
|
+
"(did-registry:invite, ledger:invoke, issuers-registry:invite, track-and-trace:authorise).",
|
|
70
|
+
flags: "--vc <file>",
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
description: "Persist the obtained access token to config (equivalent to `ebsi config set token <jwt>`).",
|
|
74
|
+
flags: "--save",
|
|
75
|
+
},
|
|
76
|
+
...WALLET_KEY_OPTIONS,
|
|
77
|
+
{
|
|
78
|
+
description: "EBSI DID — overrides config/env.",
|
|
79
|
+
flags: "--did <did>",
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
description: 'Which OpenID4VP grant to speak: "draft14" (default, legacy Presentation ' +
|
|
83
|
+
'Exchange) or "1.0" (final, DCQL). Both are accepted by the Authorisation ' +
|
|
84
|
+
"service side by side.",
|
|
85
|
+
flags: "--spec <draft14|1.0>",
|
|
86
|
+
},
|
|
87
|
+
],
|
|
88
|
+
segments: ["auth", "token"],
|
|
89
|
+
summary: "Obtain an EBSI access token via the OIDC4VP `vp_token` grant flow. " +
|
|
90
|
+
"Requires a configured secp256k1 key (--es256k-key, EBSI_ES256K_PRIVATE_KEY, " +
|
|
91
|
+
"or `ebsi config set es256kPrivateKey`); when a P-256 key is also configured, " +
|
|
92
|
+
"--sign-alg picks which one signs the VP. " +
|
|
93
|
+
'Pass several space-separated write scopes (e.g. --scope "did-registry:write issuers-registry:write") ' +
|
|
94
|
+
"to mint a single multi-scope token. " +
|
|
95
|
+
"Use --vc <file> for scopes that require a Verifiable Credential. " +
|
|
96
|
+
"Use --save to persist the token for subsequent commands.",
|
|
97
|
+
},
|
|
98
|
+
];
|
|
99
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-cmd.d.ts","sourceRoot":"","sources":["../../src/commands/config-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAuBvD,eAAO,MAAM,cAAc,EAAE,iBAAiB,EAkG7C,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { EBSI_ENVS, getConfigFilePath, getPersistedConfigValue, OUTPUT_FORMATS, setPersistedConfigValue, SIGN_ALGS, } from "../config/config.js";
|
|
2
|
+
import { requiredArg } from "./shared/args.js";
|
|
3
|
+
const SETTABLE_KEYS = [
|
|
4
|
+
"did",
|
|
5
|
+
"env",
|
|
6
|
+
"es256PrivateKey",
|
|
7
|
+
"es256kPrivateKey",
|
|
8
|
+
"output",
|
|
9
|
+
"signAlg",
|
|
10
|
+
"token",
|
|
11
|
+
];
|
|
12
|
+
export const configCommands = [
|
|
13
|
+
{
|
|
14
|
+
args: [
|
|
15
|
+
{
|
|
16
|
+
description: `Config key to read (${SETTABLE_KEYS.join(", ")})`,
|
|
17
|
+
example: "env",
|
|
18
|
+
name: "key",
|
|
19
|
+
required: true,
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
group: "Config",
|
|
23
|
+
async handler(args) {
|
|
24
|
+
const key = args["key"];
|
|
25
|
+
if (!SETTABLE_KEYS.includes(key)) {
|
|
26
|
+
throw new Error(`Unknown config key "${key}". Valid keys: ${SETTABLE_KEYS.join(", ")}`);
|
|
27
|
+
}
|
|
28
|
+
const value = getPersistedConfigValue(key);
|
|
29
|
+
return {
|
|
30
|
+
configFile: getConfigFilePath(),
|
|
31
|
+
key,
|
|
32
|
+
value: value ?? undefined,
|
|
33
|
+
};
|
|
34
|
+
},
|
|
35
|
+
id: "config.get",
|
|
36
|
+
options: [],
|
|
37
|
+
segments: ["config", "get"],
|
|
38
|
+
summary: "Show the current persisted config value for a key " +
|
|
39
|
+
"(did, env, es256PrivateKey, es256kPrivateKey, output, signAlg, token)",
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
args: [
|
|
43
|
+
{
|
|
44
|
+
description: `Config key (${SETTABLE_KEYS.join(", ")})`,
|
|
45
|
+
example: "env",
|
|
46
|
+
name: "key",
|
|
47
|
+
required: true,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
description: "Value to set",
|
|
51
|
+
example: "test",
|
|
52
|
+
name: "value",
|
|
53
|
+
required: true,
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
group: "Config",
|
|
57
|
+
async handler(args) {
|
|
58
|
+
const key = args["key"];
|
|
59
|
+
if (!SETTABLE_KEYS.includes(key)) {
|
|
60
|
+
throw new Error(`Unknown config key "${key}". Valid keys: ${SETTABLE_KEYS.join(", ")}`);
|
|
61
|
+
}
|
|
62
|
+
const value = requiredArg(args, "value");
|
|
63
|
+
if (key === "env" &&
|
|
64
|
+
!EBSI_ENVS.includes(value)) {
|
|
65
|
+
throw new Error(`Invalid env "${value}". Valid values: ${EBSI_ENVS.join(", ")}`);
|
|
66
|
+
}
|
|
67
|
+
if (key === "output" &&
|
|
68
|
+
!OUTPUT_FORMATS.includes(value)) {
|
|
69
|
+
throw new Error(`Invalid output "${value}". Valid values: ${OUTPUT_FORMATS.join(", ")}`);
|
|
70
|
+
}
|
|
71
|
+
if (key === "signAlg" &&
|
|
72
|
+
!SIGN_ALGS.includes(value.toUpperCase())) {
|
|
73
|
+
throw new Error(`Invalid signAlg "${value}". Valid values: ${SIGN_ALGS.join(", ")}`);
|
|
74
|
+
}
|
|
75
|
+
setPersistedConfigValue(key, value);
|
|
76
|
+
return { configFile: getConfigFilePath(), key, value };
|
|
77
|
+
},
|
|
78
|
+
id: "config.set",
|
|
79
|
+
options: [],
|
|
80
|
+
segments: ["config", "set"],
|
|
81
|
+
summary: "Persist a config value (key=did|env|es256PrivateKey|es256kPrivateKey|output|signAlg|token, " +
|
|
82
|
+
"value=...). WARNING: storing es256PrivateKey/es256kPrivateKey persists the key(s) as " +
|
|
83
|
+
"plaintext in the config file.",
|
|
84
|
+
},
|
|
85
|
+
];
|
|
86
|
+
//# sourceMappingURL=config-cmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-cmd.js","sourceRoot":"","sources":["../../src/commands/config-cmd.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts-registry.d.ts","sourceRoot":"","sources":["../../src/commands/contracts-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAkCvD,eAAO,MAAM,yBAAyB,EAAE,iBAAiB,EAyHxD,CAAC"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { getClient, unwrap } from "../api/fetch.js";
|
|
2
|
+
import { q } from "../api/params.js";
|
|
3
|
+
import { contractAddressOption } from "../ledger/registries.js";
|
|
4
|
+
import { requiredArg } from "./shared/args.js";
|
|
5
|
+
const PAGINATION_OPTIONS = [
|
|
6
|
+
{
|
|
7
|
+
description: "Cursor for pagination (page[after])",
|
|
8
|
+
flags: "--page-after <cursor>",
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
description: "Maximum number of items per page (page[size])",
|
|
12
|
+
flags: "--page-size <n>",
|
|
13
|
+
},
|
|
14
|
+
];
|
|
15
|
+
const { option: CONTRACTS_ADDRESS_OPTION, resolve: contractsContractAddress } = contractAddressOption("PROXY_FACTORY_CONTRACT_ADDRESS", `Contract address to query. Defaults to $PROXY_FACTORY_CONTRACT_ADDRESS if set, otherwise the API's configured default.`);
|
|
16
|
+
const { option: TEMPLATES_ADDRESS_OPTION, resolve: templatesContractAddress } = contractAddressOption("PROXY_TEMPLATES_REGISTRY_CONTRACT_ADDRESS", `Contract address to query. Defaults to $PROXY_TEMPLATES_REGISTRY_CONTRACT_ADDRESS if set, otherwise the API's configured default.`);
|
|
17
|
+
export const contractsRegistryCommands = [
|
|
18
|
+
{
|
|
19
|
+
args: [],
|
|
20
|
+
group: "Contracts Registry",
|
|
21
|
+
async handler(_args, opts, config) {
|
|
22
|
+
const client = getClient(config);
|
|
23
|
+
const result = await client.GET("/contracts-registry/contracts", {
|
|
24
|
+
params: {
|
|
25
|
+
query: q({
|
|
26
|
+
contractAddress: contractsContractAddress(opts),
|
|
27
|
+
"page[after]": opts["pageAfter"]
|
|
28
|
+
? Number(opts["pageAfter"])
|
|
29
|
+
: undefined,
|
|
30
|
+
"page[size]": opts["pageSize"]
|
|
31
|
+
? Number(opts["pageSize"])
|
|
32
|
+
: undefined,
|
|
33
|
+
}),
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
return unwrap(result);
|
|
37
|
+
},
|
|
38
|
+
id: "contracts-registry.contracts.list",
|
|
39
|
+
options: [...PAGINATION_OPTIONS, CONTRACTS_ADDRESS_OPTION],
|
|
40
|
+
segments: ["contracts-registry", "contracts", "list"],
|
|
41
|
+
summary: "List smart contracts registered in the EBSI Contracts Registry",
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
args: [
|
|
45
|
+
{
|
|
46
|
+
description: "Contract address (hex)",
|
|
47
|
+
example: "0x1234abcd...",
|
|
48
|
+
name: "address",
|
|
49
|
+
required: true,
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
group: "Contracts Registry",
|
|
53
|
+
async handler(args, opts, config) {
|
|
54
|
+
const client = getClient(config);
|
|
55
|
+
const result = await client.GET("/contracts-registry/contracts/{address}", {
|
|
56
|
+
params: {
|
|
57
|
+
path: { address: requiredArg(args, "address") },
|
|
58
|
+
query: q({ contractAddress: contractsContractAddress(opts) }),
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
return unwrap(result);
|
|
62
|
+
},
|
|
63
|
+
id: "contracts-registry.contracts.get",
|
|
64
|
+
options: [CONTRACTS_ADDRESS_OPTION],
|
|
65
|
+
segments: ["contracts-registry", "contracts", "get"],
|
|
66
|
+
summary: "Get a smart contract by address",
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
args: [],
|
|
70
|
+
group: "Contracts Registry",
|
|
71
|
+
async handler(_args, opts, config) {
|
|
72
|
+
const client = getClient(config);
|
|
73
|
+
const result = await client.GET("/contracts-registry/templates", {
|
|
74
|
+
params: {
|
|
75
|
+
query: q({
|
|
76
|
+
contractAddress: templatesContractAddress(opts),
|
|
77
|
+
"page[after]": opts["pageAfter"]
|
|
78
|
+
? Number(opts["pageAfter"])
|
|
79
|
+
: undefined,
|
|
80
|
+
"page[size]": opts["pageSize"]
|
|
81
|
+
? Number(opts["pageSize"])
|
|
82
|
+
: undefined,
|
|
83
|
+
}),
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
return unwrap(result);
|
|
87
|
+
},
|
|
88
|
+
id: "contracts-registry.templates.list",
|
|
89
|
+
options: [...PAGINATION_OPTIONS, TEMPLATES_ADDRESS_OPTION],
|
|
90
|
+
segments: ["contracts-registry", "templates", "list"],
|
|
91
|
+
summary: "List contract templates",
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
args: [
|
|
95
|
+
{
|
|
96
|
+
description: "Template ID",
|
|
97
|
+
example: "0x1234...",
|
|
98
|
+
name: "id",
|
|
99
|
+
required: true,
|
|
100
|
+
},
|
|
101
|
+
],
|
|
102
|
+
group: "Contracts Registry",
|
|
103
|
+
async handler(args, opts, config) {
|
|
104
|
+
const client = getClient(config);
|
|
105
|
+
const result = await client.GET("/contracts-registry/templates/{id}", {
|
|
106
|
+
params: {
|
|
107
|
+
path: { id: requiredArg(args, "id") },
|
|
108
|
+
query: q({ contractAddress: templatesContractAddress(opts) }),
|
|
109
|
+
},
|
|
110
|
+
});
|
|
111
|
+
return unwrap(result);
|
|
112
|
+
},
|
|
113
|
+
id: "contracts-registry.templates.get",
|
|
114
|
+
options: [TEMPLATES_ADDRESS_OPTION],
|
|
115
|
+
segments: ["contracts-registry", "templates", "get"],
|
|
116
|
+
summary: "Get a contract template by ID",
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
args: [],
|
|
120
|
+
group: "Contracts Registry",
|
|
121
|
+
async handler(_args, _opts, config) {
|
|
122
|
+
const client = getClient(config);
|
|
123
|
+
const result = await client.GET("/contracts-registry/abi");
|
|
124
|
+
return unwrap(result);
|
|
125
|
+
},
|
|
126
|
+
id: "contracts-registry.abi",
|
|
127
|
+
options: [],
|
|
128
|
+
segments: ["contracts-registry", "abi"],
|
|
129
|
+
summary: "Get the ABI of the Contracts Registry smart contract",
|
|
130
|
+
},
|
|
131
|
+
];
|
|
132
|
+
//# sourceMappingURL=contracts-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts-registry.js","sourceRoot":"","sources":["../../src/commands/contracts-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"did-registry.d.ts","sourceRoot":"","sources":["../../src/commands/did-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAqBvD,eAAO,MAAM,mBAAmB,EAAE,iBAAiB,EAwGlD,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { getClient, unwrap } from "../api/fetch.js";
|
|
2
|
+
import { q } from "../api/params.js";
|
|
3
|
+
import { contractAddressOptionFor } from "../ledger/registries.js";
|
|
4
|
+
import { requiredArg } from "./shared/args.js";
|
|
5
|
+
const PAGINATION_OPTIONS = [
|
|
6
|
+
{
|
|
7
|
+
description: "Cursor for pagination (page[after])",
|
|
8
|
+
flags: "--page-after <cursor>",
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
description: "Maximum number of items per page (page[size])",
|
|
12
|
+
flags: "--page-size <n>",
|
|
13
|
+
},
|
|
14
|
+
];
|
|
15
|
+
const { option: CONTRACT_ADDRESS_OPTION, resolve: contractAddress } = contractAddressOptionFor("did-registry");
|
|
16
|
+
export const didRegistryCommands = [
|
|
17
|
+
{
|
|
18
|
+
args: [],
|
|
19
|
+
group: "DID Registry",
|
|
20
|
+
async handler(_args, opts, config) {
|
|
21
|
+
const client = getClient(config);
|
|
22
|
+
const result = await client.GET("/did-registry/identifiers", {
|
|
23
|
+
params: {
|
|
24
|
+
query: q({
|
|
25
|
+
contractAddress: contractAddress(opts),
|
|
26
|
+
controller: opts["controller"],
|
|
27
|
+
"page[after]": opts["pageAfter"]
|
|
28
|
+
? Number(opts["pageAfter"])
|
|
29
|
+
: undefined,
|
|
30
|
+
"page[size]": opts["pageSize"]
|
|
31
|
+
? Number(opts["pageSize"])
|
|
32
|
+
: undefined,
|
|
33
|
+
"verification-method-id": opts["verificationMethodId"],
|
|
34
|
+
"verification-relationship": opts["verificationRelationship"],
|
|
35
|
+
}),
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
return unwrap(result);
|
|
39
|
+
},
|
|
40
|
+
id: "did-registry.identifiers.list",
|
|
41
|
+
options: [
|
|
42
|
+
...PAGINATION_OPTIONS,
|
|
43
|
+
CONTRACT_ADDRESS_OPTION,
|
|
44
|
+
{
|
|
45
|
+
description: "Filter by controller DID",
|
|
46
|
+
flags: "--controller <did>",
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
description: "Filter by verification method id (e.g. did:ebsi:z...#key-1)",
|
|
50
|
+
flags: "--verification-method-id <id>",
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
description: "Filter by verification relationship " +
|
|
54
|
+
"(authentication, assertionMethod, keyAgreement, capabilityInvocation, capabilityDelegation)",
|
|
55
|
+
flags: "--verification-relationship <rel>",
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
segments: ["did-registry", "identifiers", "list"],
|
|
59
|
+
summary: "List all EBSI DIDs. Supports pagination and filtering by controller.",
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
args: [
|
|
63
|
+
{
|
|
64
|
+
description: "The DID to resolve (e.g. did:ebsi:ziDnioxYYLW1a3FDD...)",
|
|
65
|
+
example: "did:ebsi:ziDnioxYYLW1a3FDD",
|
|
66
|
+
name: "did",
|
|
67
|
+
required: true,
|
|
68
|
+
},
|
|
69
|
+
],
|
|
70
|
+
group: "DID Registry",
|
|
71
|
+
async handler(args, opts, config) {
|
|
72
|
+
const client = getClient(config);
|
|
73
|
+
const did = requiredArg(args, "did");
|
|
74
|
+
const result = await client.GET("/did-registry/identifiers/{did}", {
|
|
75
|
+
params: {
|
|
76
|
+
path: { did },
|
|
77
|
+
query: q({
|
|
78
|
+
contractAddress: contractAddress(opts),
|
|
79
|
+
"valid-at": opts["validAt"],
|
|
80
|
+
}),
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
return unwrap(result);
|
|
84
|
+
},
|
|
85
|
+
id: "did-registry.identifiers.get",
|
|
86
|
+
options: [
|
|
87
|
+
CONTRACT_ADDRESS_OPTION,
|
|
88
|
+
{
|
|
89
|
+
description: "Retrieve DID document as of this ISO-8601 date",
|
|
90
|
+
flags: "--valid-at <date>",
|
|
91
|
+
},
|
|
92
|
+
],
|
|
93
|
+
segments: ["did-registry", "identifiers", "get"],
|
|
94
|
+
summary: "Resolve a DID document by DID",
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
args: [],
|
|
98
|
+
group: "DID Registry",
|
|
99
|
+
async handler(_args, _opts, config) {
|
|
100
|
+
const client = getClient(config);
|
|
101
|
+
const result = await client.GET("/did-registry/abi");
|
|
102
|
+
return unwrap(result);
|
|
103
|
+
},
|
|
104
|
+
id: "did-registry.abi",
|
|
105
|
+
options: [],
|
|
106
|
+
segments: ["did-registry", "abi"],
|
|
107
|
+
summary: "Get the ABI of the DID Registry smart contract",
|
|
108
|
+
},
|
|
109
|
+
];
|
|
110
|
+
//# sourceMappingURL=did-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"did-registry.js","sourceRoot":"","sources":["../../src/commands/did-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faucet.d.ts","sourceRoot":"","sources":["../../src/commands/faucet.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAwBvD,eAAO,MAAM,cAAc,EAAE,iBAAiB,EAqF7C,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { ethers } from "ethers";
|
|
2
|
+
const HARDHAT_ACCOUNT_2_PRIVATE_KEY = "0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a";
|
|
3
|
+
const DEFAULT_RPC_URL = "http://127.0.0.1:8545";
|
|
4
|
+
const DEFAULT_AMOUNT_IN_ETH = "1";
|
|
5
|
+
export const faucetCommands = [
|
|
6
|
+
{
|
|
7
|
+
args: [
|
|
8
|
+
{
|
|
9
|
+
description: "Address to fund (0x-prefixed).",
|
|
10
|
+
example: "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC",
|
|
11
|
+
name: "to",
|
|
12
|
+
required: true,
|
|
13
|
+
},
|
|
14
|
+
],
|
|
15
|
+
group: "Faucet",
|
|
16
|
+
async handler(args, opts) {
|
|
17
|
+
const to = args["to"] ?? "";
|
|
18
|
+
if (!ethers.isAddress(to)) {
|
|
19
|
+
throw new Error(`Invalid "to" address: ${to === "" ? "(missing)" : to}. ` +
|
|
20
|
+
"Expected a 0x-prefixed 20-byte Ethereum address.");
|
|
21
|
+
}
|
|
22
|
+
const amountInEth = opts["amountInEth"] ?? DEFAULT_AMOUNT_IN_ETH;
|
|
23
|
+
let value;
|
|
24
|
+
try {
|
|
25
|
+
value = ethers.parseEther(amountInEth);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
throw new Error(`Invalid --amount-in-eth value: ${amountInEth}. Expected a decimal amount of ETH, e.g. "0.5".`);
|
|
29
|
+
}
|
|
30
|
+
if (value <= 0n) {
|
|
31
|
+
throw new Error(`Invalid --amount-in-eth value: ${amountInEth}. Expected a positive amount.`);
|
|
32
|
+
}
|
|
33
|
+
const rpcUrl = opts["rpcUrl"] ?? DEFAULT_RPC_URL;
|
|
34
|
+
const provider = new ethers.JsonRpcProvider(rpcUrl);
|
|
35
|
+
const privateKey = opts["privateKey"] ?? HARDHAT_ACCOUNT_2_PRIVATE_KEY;
|
|
36
|
+
let funder;
|
|
37
|
+
try {
|
|
38
|
+
funder = new ethers.Wallet(privateKey, provider);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
throw new Error("Invalid --private-key: expected a 0x-prefixed secp256k1 private key hex.");
|
|
42
|
+
}
|
|
43
|
+
const transaction = await funder.sendTransaction({ to, value });
|
|
44
|
+
const receipt = await transaction.wait();
|
|
45
|
+
return {
|
|
46
|
+
amountInEth: ethers.formatEther(value),
|
|
47
|
+
blockNumber: receipt?.blockNumber ?? undefined,
|
|
48
|
+
from: funder.address,
|
|
49
|
+
hash: transaction.hash,
|
|
50
|
+
newBalanceInEth: ethers.formatEther(await provider.getBalance(to)),
|
|
51
|
+
to,
|
|
52
|
+
};
|
|
53
|
+
},
|
|
54
|
+
id: "faucet",
|
|
55
|
+
options: [
|
|
56
|
+
{
|
|
57
|
+
description: "Private key funding the transfer (0x-prefixed hex). " +
|
|
58
|
+
"Defaults to Hardhat's pre-funded account #0.",
|
|
59
|
+
flags: "--private-key <hex>",
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
defaultValue: DEFAULT_AMOUNT_IN_ETH,
|
|
63
|
+
description: 'Amount of ETH to send, e.g. "0.5".',
|
|
64
|
+
flags: "--amount-in-eth <eth>",
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
defaultValue: DEFAULT_RPC_URL,
|
|
68
|
+
description: "JSON-RPC endpoint of the node to send the transfer to. " +
|
|
69
|
+
"The faucet bypasses the API's /ledger proxy, so this is a node URL, not an API base URL.",
|
|
70
|
+
flags: "--rpc-url <url>",
|
|
71
|
+
},
|
|
72
|
+
],
|
|
73
|
+
segments: ["faucet"],
|
|
74
|
+
summary: "Fund an address with ETH from a local development chain. " +
|
|
75
|
+
"Defaults to sending 1 ETH from Hardhat's account #0 via http://127.0.0.1:8545.",
|
|
76
|
+
},
|
|
77
|
+
];
|
|
78
|
+
//# sourceMappingURL=faucet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faucet.js","sourceRoot":"","sources":["../../src/commands/faucet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/commands/health.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,eAAO,MAAM,cAAc,EAAE,iBAAiB,EAkB7C,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export const healthCommands = [
|
|
2
|
+
{
|
|
3
|
+
args: [],
|
|
4
|
+
group: "Health",
|
|
5
|
+
async handler(_args, _opts, config) {
|
|
6
|
+
const response = await fetch(`${config.baseUrl}/health`, {
|
|
7
|
+
headers: { Accept: "application/json" },
|
|
8
|
+
});
|
|
9
|
+
if (!response.ok) {
|
|
10
|
+
throw new Error(`Health check failed: HTTP ${String(response.status)}`);
|
|
11
|
+
}
|
|
12
|
+
return response.json();
|
|
13
|
+
},
|
|
14
|
+
id: "health.check",
|
|
15
|
+
options: [],
|
|
16
|
+
segments: ["health"],
|
|
17
|
+
summary: "Check the health of the EBSI API and its blockchain node",
|
|
18
|
+
},
|
|
19
|
+
];
|
|
20
|
+
//# sourceMappingURL=health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/commands/health.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAwB;IACjD;QACE,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,QAAQ;QACf,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM;YAChC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,SAAS,EAAE;gBACvD,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;aACxC,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,6BAA6B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC1E,CAAC;YACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;QACD,EAAE,EAAE,cAAc;QAClB,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,CAAC,QAAQ,CAAC;QACpB,OAAO,EAAE,0DAA0D;KACpE;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issuers-registry.d.ts","sourceRoot":"","sources":["../../src/commands/issuers-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAqBvD,eAAO,MAAM,uBAAuB,EAAE,iBAAiB,EA2WtD,CAAC"}
|