UNPKG

@veramo/cli

Version:
304 lines 9.03 kB
import { getAgent } from './setup.js'; import inquirer from 'inquirer'; import { Command } from 'commander'; import { printTable } from 'console-table-printer'; const did = new Command('did').description('Decentralized identifiers'); did .command('providers') .description('list available identifier providers') .action(async (opts, cmd) => { const agent = await getAgent(cmd.optsWithGlobals().config); const providers = await agent.didManagerGetProviders(); const list = providers.map((provider) => ({ provider })); if (list.length > 0) { printTable(list); } else { console.log('No identifier providers'); } }); did .command('list', { isDefault: true }) .description('list managed identifiers') .action(async (opts, cmd) => { const agent = await getAgent(cmd.optsWithGlobals().config); const list = await agent.didManagerFind(); if (list.length > 0) { const dids = list.map((item) => ({ provider: item.provider, alias: item.alias, did: item.did, })); printTable(dids); } else { console.log('No dids'); } }); did .command('create') .description('create an identifier') .action(async (opts, cmd) => { // FIXME: CLI add arguments for provider, kms, alias const agent = await getAgent(cmd.optsWithGlobals().config); try { const providers = await agent.didManagerGetProviders(); const kms = await agent.keyManagerGetKeyManagementSystems(); const args = {}; const answers = await inquirer.prompt([ { type: 'list', name: 'provider', choices: providers, message: 'Select identifier provider', }, { type: 'list', name: 'kms', choices: kms, message: 'Select key management system', }, { type: 'input', name: 'alias', message: 'Enter alias', }, ]); const identifier = await agent.didManagerCreate(answers); printTable([{ provider: identifier.provider, alias: identifier.alias, did: identifier.did }]); } catch (e) { console.error(e.message); } }); did .command('delete') .description('delete an identifier') .action(async (opts, cmd) => { const agent = await getAgent(cmd.optsWithGlobals().config); try { const identifiers = await agent.didManagerFind(); const answers = await inquirer.prompt([ { type: 'list', name: 'did', choices: identifiers.map((item) => item.did), message: 'Delete DID', }, ]); const result = await agent.didManagerDelete({ did: answers.did, }); console.log('Success:', result); } catch (e) { console.error(e); } }); did .command('add-service') .description('add a service endpoint to did document') .action(async (opts, cmd) => { const agent = await getAgent(cmd.optsWithGlobals().config); try { const identifiers = await agent.didManagerFind(); const answers = await inquirer.prompt([ { type: 'list', name: 'did', choices: identifiers.map((item) => item.did), message: 'Select DID', }, { type: 'text', name: 'type', message: 'Service type', default: 'DIDCommMessaging', }, { type: 'text', name: 'endpoint', message: 'Endpoint', }, { type: 'text', name: 'id', message: 'ID', }, ]); const result = await agent.didManagerAddService({ did: answers.did, service: { type: answers.type, serviceEndpoint: answers.endpoint, id: answers.id, }, }); console.log('Success:', result); } catch (e) { console.error(e); } }); did .command('remove-service') .description('remove a service endpoint from did document') .action(async (opts, cmd) => { const agent = await getAgent(cmd.optsWithGlobals().config); try { const identifiers = await agent.didManagerFind(); const answers = await inquirer.prompt([ { type: 'list', name: 'did', choices: identifiers.map((item) => item.did), message: 'Select DID', }, { type: 'text', name: 'id', message: 'ID', }, ]); const result = await agent.didManagerRemoveService({ did: answers.did, id: answers.id, }); console.log('Success:', result); } catch (e) { console.error(e); } }); did .command('add-key') .description('create and add a public key to did document') .action(async (opts, cmd) => { const agent = await getAgent(cmd.optsWithGlobals().config); try { const identifiers = await agent.didManagerFind(); const kms = await agent.keyManagerGetKeyManagementSystems(); const answers = await inquirer.prompt([ { type: 'list', name: 'did', choices: identifiers.map((item) => item.did), message: 'Select DID', }, { type: 'list', name: 'kms', choices: kms, message: 'Select key management system', }, { type: 'list', name: 'type', choices: ['Ed25519', 'Secp256k1'], message: 'Type', }, ]); const key = await agent.keyManagerCreate({ kms: answers.kms, type: answers.type, }); const result = await agent.didManagerAddKey({ did: answers.did, key, }); console.log('Success:', result); } catch (e) { console.error(e); } }); did .command('remove-key') .description('remove a key from did document') .action(async (opts, cmd) => { const agent = await getAgent(cmd.optsWithGlobals().config); try { const identifiers = await agent.didManagerFind(); const answers = await inquirer.prompt([ { type: 'list', name: 'did', choices: identifiers.map((item) => item.did), message: 'Select DID', }, { type: 'text', name: 'id', message: 'ID', }, ]); const result = await agent.didManagerRemoveKey({ did: answers.did, kid: answers.id, }); console.log('Success:', result); } catch (e) { console.error(e); } }); did .command('export') .description('export an identifier') .action(async (opts, cmd) => { const agent = await getAgent(cmd.optsWithGlobals().config); try { const identifiers = await agent.didManagerFind(); const answers = await inquirer.prompt([ { type: 'list', name: 'did', choices: identifiers.map((item) => ({ name: item.did + ' ' + item.alias, value: item.did, })), message: 'Select DID', }, ]); const identifier = await agent.didManagerGet({ did: answers.did }); console.log(JSON.stringify(identifier)); } catch (e) { console.error(e); } }); did .command('import') .description('import an identifier') .action(async (opts, cmd) => { const agent = await getAgent(cmd.optsWithGlobals().config); try { const answers = await inquirer.prompt([ { type: 'text', name: 'identifier', message: 'Identifier (JSON object)', }, ]); const identifier = await agent.didManagerImport(JSON.parse(answers.identifier)); console.log(identifier); } catch (e) { console.error(e); } }); did .command('resolve <didUrl>') .description('Resolve DID Document') .action(async (didUrl, opts, cmd) => { const agent = await getAgent(cmd.optsWithGlobals().config); try { const ddo = await agent.resolveDid({ didUrl }); console.log(JSON.stringify(ddo, null, 2)); } catch (e) { console.error(e.message); } }); export { did }; //# sourceMappingURL=did.js.map