From 05ab10653aac4cb37b00a9be6cc0c7be910f1827 Mon Sep 17 00:00:00 2001 From: Simonas Karuzas Date: Fri, 17 Feb 2023 19:45:47 +0200 Subject: [PATCH] fix(cli): create veramo instance async in CLI (#1126) fixes #1125 --- packages/cli/src/config.ts | 2 +- packages/cli/src/credential.ts | 6 +++--- packages/cli/src/did.ts | 22 +++++++++++----------- packages/cli/src/discover.ts | 2 +- packages/cli/src/execute.ts | 2 +- packages/cli/src/explore/index.ts | 2 +- packages/cli/src/lib/agentCreator.ts | 4 ++-- packages/cli/src/message.ts | 2 +- packages/cli/src/presentation.ts | 6 +++--- packages/cli/src/sdr.ts | 4 ++-- packages/cli/src/setup.ts | 4 ++-- packages/core/package.json | 1 + pnpm-lock.yaml | 4 +++- 13 files changed, 32 insertions(+), 29 deletions(-) diff --git a/packages/cli/src/config.ts b/packages/cli/src/config.ts index 1b7cd262e..f06ce2b1b 100644 --- a/packages/cli/src/config.ts +++ b/packages/cli/src/config.ts @@ -72,7 +72,7 @@ config .option('-f, --filename ', 'Config file name', './agent.yml') .option('-m, --method ', 'Check that a specific method is exposed by the agent.', 'execute') .action(async (options) => { - const agent = getAgent(options.filename) + const agent = await getAgent(options.filename) if (!agent) { console.error( 'unknown error while creating the agent from your config. Consider running `veramo config create` to generate a new configuration file, or to manually compare differences.', diff --git a/packages/cli/src/credential.ts b/packages/cli/src/credential.ts index 60dd15062..c5d72ecf6 100644 --- a/packages/cli/src/credential.ts +++ b/packages/cli/src/credential.ts @@ -18,7 +18,7 @@ credential .option('-j, --json', 'Output in JSON') .option('-q, --qrcode', 'Show qrcode') .action(async (cmd) => { - const agent = getAgent(program.opts().config) + const agent = await getAgent(program.opts().config) const identifiers = await agent.didManagerFind() const knownDids = await agent.dataStoreORMGetIdentifiers() @@ -170,7 +170,7 @@ credential .option('-f, --filename ', 'Optional. Read the credential from a file instead of stdin') .option('-r, --raw ', 'Optional. Specify the credential as a parameter instead of file or stdin') .action(async (options) => { - const agent = getAgent(program.opts().config) + const agent = await getAgent(program.opts().config) let raw: string = '' if (options.raw) { raw = options.raw @@ -206,7 +206,7 @@ credential .command('output') .description('Print W3C Verifiable Credential to stdout') .action(async (cmd) => { - const agent = getAgent(program.opts().config) + const agent = await getAgent(program.opts().config) const credentials = await agent.dataStoreORMGetVerifiableCredentials() diff --git a/packages/cli/src/did.ts b/packages/cli/src/did.ts index 1cbad8e0d..7477d8f1a 100644 --- a/packages/cli/src/did.ts +++ b/packages/cli/src/did.ts @@ -10,7 +10,7 @@ did .command('providers') .description('list available identifier providers') .action(async (cmd) => { - const agent = getAgent(program.opts().config) + const agent = await getAgent(program.opts().config) const providers = await agent.didManagerGetProviders() const list = providers.map((provider) => ({ provider })) @@ -26,7 +26,7 @@ did .command('list', { isDefault: true }) .description('list managed identifiers') .action(async (cmd) => { - const agent = getAgent(program.opts().config) + const agent = await getAgent(program.opts().config) const list = await agent.didManagerFind() @@ -42,7 +42,7 @@ did .command('create') .description('create an identifier') .action(async (cmd) => { - const agent = getAgent(program.opts().config) + const agent = await getAgent(program.opts().config) try { const providers = await agent.didManagerGetProviders() @@ -80,7 +80,7 @@ did .command('delete') .description('delete an identifier') .action(async (cmd) => { - const agent = getAgent(program.opts().config) + const agent = await getAgent(program.opts().config) try { const identifiers = await agent.didManagerFind() @@ -107,7 +107,7 @@ did .command('add-service') .description('add a service endpoint to did document') .action(async (cmd) => { - const agent = getAgent(program.opts().config) + const agent = await getAgent(program.opts().config) try { const identifiers = await agent.didManagerFind() @@ -155,7 +155,7 @@ did .command('remove-service') .description('remove a service endpoint from did document') .action(async (cmd) => { - const agent = getAgent(program.opts().config) + const agent = await getAgent(program.opts().config) try { const identifiers = await agent.didManagerFind() @@ -188,7 +188,7 @@ did .command('add-key') .description('create and add a public key to did document') .action(async (cmd) => { - const agent = getAgent(program.opts().config) + const agent = await getAgent(program.opts().config) try { const identifiers = await agent.didManagerFind() @@ -234,7 +234,7 @@ did .command('remove-key') .description('remove a key from did document') .action(async (cmd) => { - const agent = getAgent(program.opts().config) + const agent = await getAgent(program.opts().config) try { const identifiers = await agent.didManagerFind() @@ -267,7 +267,7 @@ did .command('export') .description('export an identifier') .action(async (cmd) => { - const agent = getAgent(program.opts().config) + const agent = await getAgent(program.opts().config) try { const identifiers = await agent.didManagerFind() @@ -295,7 +295,7 @@ did .command('import') .description('import an identifier') .action(async (cmd) => { - const agent = getAgent(program.opts().config) + const agent = await getAgent(program.opts().config) try { const answers = await inquirer.prompt([ @@ -317,7 +317,7 @@ did .command('resolve ') .description('Resolve DID Document') .action(async (didUrl) => { - const agent = getAgent(program.opts().config) + const agent = await getAgent(program.opts().config) try { const ddo = await agent.resolveDid({ didUrl }) console.log(JSON.stringify(ddo, null, 2)) diff --git a/packages/cli/src/discover.ts b/packages/cli/src/discover.ts index 0c52d938d..509350525 100644 --- a/packages/cli/src/discover.ts +++ b/packages/cli/src/discover.ts @@ -10,7 +10,7 @@ discover .option('-q, --query ', 'Query string') .action(async (cmd) => { - const agent = getAgent(program.opts().config) + const agent = await getAgent(program.opts().config) const response = await agent.discoverDid({ query: cmd.query }) const list: any = [] diff --git a/packages/cli/src/execute.ts b/packages/cli/src/execute.ts index 8a3bdd9ac..bbb4f0e7a 100644 --- a/packages/cli/src/execute.ts +++ b/packages/cli/src/execute.ts @@ -12,7 +12,7 @@ program .option('-a, --argsJSON ', 'Method arguments') .option('-f, --argsFile ', 'Path to a file containing method arguments in a JSON string') .action(async (options) => { - const agent = getAgent(program.opts().config) + const agent = await getAgent(program.opts().config) try { let method = options.method diff --git a/packages/cli/src/explore/index.ts b/packages/cli/src/explore/index.ts index 2db788a6c..ee6519a6c 100644 --- a/packages/cli/src/explore/index.ts +++ b/packages/cli/src/explore/index.ts @@ -7,6 +7,6 @@ program .command('explore') .description('launch Verifiable Data explorer') .action(async (cmd) => { - const agent = getAgent(program.opts().config) + const agent = await (program.opts().config) await renderMainScreen(agent) }) diff --git a/packages/cli/src/lib/agentCreator.ts b/packages/cli/src/lib/agentCreator.ts index 48acbac5d..f50643009 100644 --- a/packages/cli/src/lib/agentCreator.ts +++ b/packages/cli/src/lib/agentCreator.ts @@ -1,8 +1,8 @@ import { TAgent, IPluginMethodMap } from '@veramo/core-types' import { createObjects } from './objectCreator.js' -export function createAgentFromConfig(config: object): TAgent { +export async function createAgentFromConfig(config: object): Promise> { //@ts-ignore - const { agent } = createObjects(config, { agent: '/agent' }) + const { agent } = await createObjects(config, { agent: '/agent' }) return agent } diff --git a/packages/cli/src/message.ts b/packages/cli/src/message.ts index 5eb66a69d..63390ada0 100644 --- a/packages/cli/src/message.ts +++ b/packages/cli/src/message.ts @@ -12,7 +12,7 @@ message .option('--save ', 'Save message', true) .action(async (options) => { - const agent = getAgent(program.opts().config) + const agent = await getAgent(program.opts().config) try { let raw diff --git a/packages/cli/src/presentation.ts b/packages/cli/src/presentation.ts index 116fe7ead..ecfd3fab8 100644 --- a/packages/cli/src/presentation.ts +++ b/packages/cli/src/presentation.ts @@ -16,7 +16,7 @@ presentation .option('-s, --send', 'Send') .option('-q, --qrcode', 'Show qrcode') .action(async (cmd) => { - const agent = getAgent(program.opts().config) + const agent = await getAgent(program.opts().config) const myIdentifiers = await agent.didManagerFind() if (myIdentifiers.length === 0) { console.error('No dids') @@ -179,7 +179,7 @@ presentation .option('-f, --filename ', 'Optional. Read the presentation from a file instead of stdin') .option('-r, --raw ', 'Optional. Presentation as a parameter string instead of a file or stdin.') .action(async (options) => { - const agent = getAgent(program.opts().config) + const agent = await getAgent(program.opts().config) let raw: string = '' if (options.raw) { raw = options.raw @@ -216,7 +216,7 @@ presentation .description('Print W3C Verifiable Presentation to stdout') .option('-t, --tag ', 'Optional. Specify the tag for the presentation.') .action(async (options) => { - const agent = getAgent(program.opts().config) + const agent = await getAgent(program.opts().config) const presentations: UniqueVerifiablePresentation[] = await agent.dataStoreORMGetVerifiablePresentations({}) diff --git a/packages/cli/src/sdr.ts b/packages/cli/src/sdr.ts index 7cefc937a..35adb433e 100644 --- a/packages/cli/src/sdr.ts +++ b/packages/cli/src/sdr.ts @@ -15,7 +15,7 @@ sdr .command('create', { isDefault: true }) .description('create Selective Disclosure Request') .action(async (cmd) => { - const agent = getAgent(program.opts().config) + const agent = await getAgent(program.opts().config) const identifiers = await agent.didManagerFind() const knownDids = await agent.dataStoreORMGetIdentifiers() @@ -265,7 +265,7 @@ sdr .command('respond') .description('respond to Selective Disclosure Request') .action(async (cmd) => { - const agent = getAgent(program.opts().config) + const agent = await getAgent(program.opts().config) const sdrMessages = await agent.dataStoreORMGetMessages({ where: [{ column: 'type', value: ['sdr'] }], order: [{ column: 'createdAt', direction: 'DESC' }], diff --git a/packages/cli/src/setup.ts b/packages/cli/src/setup.ts index 3024ec975..ec5f153dd 100644 --- a/packages/cli/src/setup.ts +++ b/packages/cli/src/setup.ts @@ -45,9 +45,9 @@ export type EnabledInterfaces = IDIDManager & export type ConfiguredAgent = TAgent -export function getAgent(fileName: string): ConfiguredAgent { +export async function getAgent(fileName: string): Promise { try { - return createAgentFromConfig(getConfig(fileName)) + return await createAgentFromConfig(getConfig(fileName)) } catch (e: any) { console.log('Unable to create agent from ' + fileName + '.', e.message) process.exit(1) diff --git a/packages/core/package.json b/packages/core/package.json index 4db47412d..9fa9d6bc3 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -14,6 +14,7 @@ }, "dependencies": { "@veramo/core-types": "^5.0.0", + "debug": "^4.3.4", "events": "^3.2.0", "z-schema": "^5.0.5" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 36bd7c983..506966bae 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -247,11 +247,13 @@ importers: specifiers: '@types/debug': 4.1.7 '@veramo/core-types': ^5.0.0 + debug: ^4.3.4 events: ^3.2.0 typescript: 4.9.4 z-schema: ^5.0.5 dependencies: '@veramo/core-types': link:../core-types + debug: 4.3.4 events: 3.3.0 z-schema: 5.0.5 devDependencies: @@ -18202,7 +18204,7 @@ packages: dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.3.1_@types+node@18.11.18 + jest: 29.3.1_zfha7dvnw4nti6zkbsmhmn6xo4 jest-util: 29.3.1 json5: 2.2.3 lodash.memoize: 4.1.2