@did-btcr2/cli 0.3.1 → 0.4.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 +373 -1
- package/dist/cjs/cli.js +56 -264
- package/dist/cjs/cli.js.map +1 -1
- package/dist/cjs/commands/create.js +49 -0
- package/dist/cjs/commands/create.js.map +1 -0
- package/dist/cjs/commands/deactivate.js +41 -0
- package/dist/cjs/commands/deactivate.js.map +1 -0
- package/dist/cjs/commands/index.js +5 -0
- package/dist/cjs/commands/index.js.map +1 -0
- package/dist/cjs/commands/resolve.js +59 -0
- package/dist/cjs/commands/resolve.js.map +1 -0
- package/dist/cjs/commands/update.js +39 -0
- package/dist/cjs/commands/update.js.map +1 -0
- package/dist/cjs/error.js +1 -1
- package/dist/cjs/error.js.map +1 -1
- package/dist/cjs/index.js +4 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/output.js +16 -0
- package/dist/cjs/output.js.map +1 -0
- package/dist/cjs/types.js +4 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/version.js +22 -0
- package/dist/cjs/version.js.map +1 -0
- package/dist/esm/src/cli.js +56 -264
- package/dist/esm/src/cli.js.map +1 -1
- package/dist/esm/src/commands/create.js +49 -0
- package/dist/esm/src/commands/create.js.map +1 -0
- package/dist/esm/src/commands/deactivate.js +41 -0
- package/dist/esm/src/commands/deactivate.js.map +1 -0
- package/dist/esm/src/commands/index.js +5 -0
- package/dist/esm/src/commands/index.js.map +1 -0
- package/dist/esm/src/commands/resolve.js +59 -0
- package/dist/esm/src/commands/resolve.js.map +1 -0
- package/dist/esm/src/commands/update.js +39 -0
- package/dist/esm/src/commands/update.js.map +1 -0
- package/dist/esm/src/error.js +1 -1
- package/dist/esm/src/error.js.map +1 -1
- package/dist/esm/src/index.js +4 -1
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/output.js +16 -0
- package/dist/esm/src/output.js.map +1 -0
- package/dist/esm/src/types.js +4 -0
- package/dist/esm/src/types.js.map +1 -0
- package/dist/esm/src/version.js +22 -0
- package/dist/esm/src/version.js.map +1 -0
- package/dist/types/cli.d.ts +7 -98
- package/dist/types/commands/create.d.ts +3 -0
- package/dist/types/commands/deactivate.d.ts +3 -0
- package/dist/types/commands/index.d.ts +4 -0
- package/dist/types/commands/resolve.d.ts +3 -0
- package/dist/types/commands/update.d.ts +3 -0
- package/dist/types/index.d.ts +4 -1
- package/dist/types/output.d.ts +10 -0
- package/dist/types/src/cli.d.ts +7 -98
- package/dist/types/src/cli.d.ts.map +1 -1
- package/dist/types/src/commands/create.d.ts +4 -0
- package/dist/types/src/commands/create.d.ts.map +1 -0
- package/dist/types/src/commands/deactivate.d.ts +4 -0
- package/dist/types/src/commands/deactivate.d.ts.map +1 -0
- package/dist/types/src/commands/index.d.ts +5 -0
- package/dist/types/src/commands/index.d.ts.map +1 -0
- package/dist/types/src/commands/resolve.d.ts +4 -0
- package/dist/types/src/commands/resolve.d.ts.map +1 -0
- package/dist/types/src/commands/update.d.ts +4 -0
- package/dist/types/src/commands/update.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +4 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/output.d.ts +11 -0
- package/dist/types/src/output.d.ts.map +1 -0
- package/dist/types/src/types.d.ts +54 -0
- package/dist/types/src/types.d.ts.map +1 -0
- package/dist/types/src/version.d.ts +2 -0
- package/dist/types/src/version.d.ts.map +1 -0
- package/dist/types/types.d.ts +53 -0
- package/dist/types/version.d.ts +1 -0
- package/package.json +6 -7
- package/src/cli.ts +67 -347
- package/src/commands/create.ts +88 -0
- package/src/commands/deactivate.ts +71 -0
- package/src/commands/index.ts +4 -0
- package/src/commands/resolve.ts +89 -0
- package/src/commands/update.ts +73 -0
- package/src/error.ts +2 -2
- package/src/index.ts +4 -1
- package/src/output.ts +17 -0
- package/src/types.ts +61 -0
- package/src/version.ts +21 -0
- package/dist/cjs/command.js +0 -35
- package/dist/cjs/command.js.map +0 -1
- package/dist/esm/src/command.js +0 -35
- package/dist/esm/src/command.js.map +0 -1
- package/dist/types/command.d.ts +0 -55
- package/dist/types/src/command.d.ts +0 -56
- package/dist/types/src/command.d.ts.map +0 -1
- package/src/command.ts +0 -77
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { Identifier } from '@did-btcr2/method';
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { readFile } from 'node:fs/promises';
|
|
4
|
+
import { CLIError } from '../error.js';
|
|
5
|
+
import { formatResult } from '../output.js';
|
|
6
|
+
import { GlobalOptions, MethodOperations, ResolveCommandOptions } from '../types.js';
|
|
7
|
+
|
|
8
|
+
export function registerResolveCommand(
|
|
9
|
+
program : Command,
|
|
10
|
+
ops : MethodOperations,
|
|
11
|
+
globals : () => GlobalOptions,
|
|
12
|
+
): void {
|
|
13
|
+
program
|
|
14
|
+
.command('resolve')
|
|
15
|
+
.alias('read')
|
|
16
|
+
.description('Resolve the DID document of the identifier.')
|
|
17
|
+
.requiredOption('-i, --identifier <identifier>', 'did:btcr2 identifier')
|
|
18
|
+
.option('-r, --resolution-options <json>', 'JSON string containing resolution options')
|
|
19
|
+
.option('-p, --resolution-options-path <path>', 'Path to a JSON file containing resolution options')
|
|
20
|
+
.action(async (options: {
|
|
21
|
+
identifier: string;
|
|
22
|
+
resolutionOptions?: string;
|
|
23
|
+
resolutionOptionsPath?: string;
|
|
24
|
+
}) => {
|
|
25
|
+
const parsed = await validateResolveOptions(options);
|
|
26
|
+
const data = await ops.resolve(parsed.identifier, parsed.options);
|
|
27
|
+
const result = { action: 'resolve' as const, data };
|
|
28
|
+
console.log(formatResult(result, globals()));
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
async function validateResolveOptions(options: {
|
|
33
|
+
identifier: string;
|
|
34
|
+
resolutionOptions?: string;
|
|
35
|
+
resolutionOptionsPath?: string;
|
|
36
|
+
}): Promise<ResolveCommandOptions> {
|
|
37
|
+
validateIdentifier(options.identifier, options);
|
|
38
|
+
const resolutionOptions = await parseResolutionOptions(options);
|
|
39
|
+
return {
|
|
40
|
+
identifier : options.identifier,
|
|
41
|
+
...(resolutionOptions && { options: resolutionOptions }),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function validateIdentifier(identifier: string, data: Record<string, any>): void {
|
|
46
|
+
try {
|
|
47
|
+
Identifier.decode(identifier);
|
|
48
|
+
} catch {
|
|
49
|
+
throw new CLIError(
|
|
50
|
+
'Invalid identifier. Must be a valid did:btcr2 identifier.',
|
|
51
|
+
'INVALID_ARGUMENT_ERROR',
|
|
52
|
+
data
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function parseJson<T>(value: string, errorMessage: string, data: Record<string, any>): T {
|
|
58
|
+
try {
|
|
59
|
+
return JSON.parse(value) as T;
|
|
60
|
+
} catch {
|
|
61
|
+
throw new CLIError(errorMessage, 'INVALID_ARGUMENT_ERROR', data);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
async function parseResolutionOptions(options: {
|
|
66
|
+
resolutionOptions?: string;
|
|
67
|
+
resolutionOptionsPath?: string;
|
|
68
|
+
}): Promise<any> {
|
|
69
|
+
if (options.resolutionOptions) {
|
|
70
|
+
return parseJson(
|
|
71
|
+
options.resolutionOptions,
|
|
72
|
+
'Invalid resolution options. Must be a valid JSON string.',
|
|
73
|
+
options
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
if (options.resolutionOptionsPath) {
|
|
77
|
+
try {
|
|
78
|
+
const data = await readFile(options.resolutionOptionsPath, 'utf-8');
|
|
79
|
+
return JSON.parse(data);
|
|
80
|
+
} catch {
|
|
81
|
+
throw new CLIError(
|
|
82
|
+
'Invalid resolution options path. Must be a valid path to a JSON file.',
|
|
83
|
+
'INVALID_ARGUMENT_ERROR',
|
|
84
|
+
options
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { CLIError } from '../error.js';
|
|
3
|
+
import { formatResult } from '../output.js';
|
|
4
|
+
import { GlobalOptions, MethodOperations, UpdateCommandOptions } from '../types.js';
|
|
5
|
+
|
|
6
|
+
export function registerUpdateCommand(
|
|
7
|
+
program : Command,
|
|
8
|
+
ops : MethodOperations,
|
|
9
|
+
globals : () => GlobalOptions,
|
|
10
|
+
): void {
|
|
11
|
+
program
|
|
12
|
+
.command('update')
|
|
13
|
+
.description('Update a did:btcr2 document.')
|
|
14
|
+
.requiredOption(
|
|
15
|
+
'-s, --source-document <json>',
|
|
16
|
+
'Source DID document as JSON string',
|
|
17
|
+
parseJsonArg('--source-document'),
|
|
18
|
+
)
|
|
19
|
+
.requiredOption(
|
|
20
|
+
'--source-version-id <number>',
|
|
21
|
+
'Source version ID as a number'
|
|
22
|
+
)
|
|
23
|
+
.requiredOption(
|
|
24
|
+
'-p, --patches <json>',
|
|
25
|
+
'JSON Patch operations as a JSON string array',
|
|
26
|
+
parseJsonArg('--patches'),
|
|
27
|
+
)
|
|
28
|
+
.requiredOption(
|
|
29
|
+
'-m, --verification-method-id <id>',
|
|
30
|
+
'DID document verification method ID'
|
|
31
|
+
)
|
|
32
|
+
.requiredOption(
|
|
33
|
+
'-b, --beacon-id <json>',
|
|
34
|
+
'Beacon ID as a JSON string',
|
|
35
|
+
parseJsonArg('--beacon-id'),
|
|
36
|
+
)
|
|
37
|
+
.action(async (options: {
|
|
38
|
+
sourceDocument : unknown;
|
|
39
|
+
sourceVersionId : string;
|
|
40
|
+
patches : unknown;
|
|
41
|
+
verificationMethodId : string;
|
|
42
|
+
beaconId : unknown;
|
|
43
|
+
}) => {
|
|
44
|
+
const parsed: UpdateCommandOptions = {
|
|
45
|
+
sourceDocument : options.sourceDocument as UpdateCommandOptions['sourceDocument'],
|
|
46
|
+
patches : options.patches as UpdateCommandOptions['patches'],
|
|
47
|
+
sourceVersionId : Number(options.sourceVersionId),
|
|
48
|
+
verificationMethodId : options.verificationMethodId,
|
|
49
|
+
beaconId : options.beaconId as UpdateCommandOptions['beaconId'],
|
|
50
|
+
};
|
|
51
|
+
const data = await ops.update(parsed);
|
|
52
|
+
const result = { action: 'update' as const, data };
|
|
53
|
+
console.log(formatResult(result, globals()));
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Returns a commander argParser that validates JSON.
|
|
59
|
+
* Errors at parse time with a clear flag reference.
|
|
60
|
+
*/
|
|
61
|
+
function parseJsonArg(flagName: string): (value: string) => unknown {
|
|
62
|
+
return (value: string): unknown => {
|
|
63
|
+
try {
|
|
64
|
+
return JSON.parse(value);
|
|
65
|
+
} catch {
|
|
66
|
+
throw new CLIError(
|
|
67
|
+
`Invalid JSON for ${flagName}. Must be a valid JSON string.`,
|
|
68
|
+
'INVALID_ARGUMENT_ERROR',
|
|
69
|
+
{ flagName, value }
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
}
|
package/src/error.ts
CHANGED
|
@@ -5,6 +5,6 @@ import { DidMethodError } from '@did-btcr2/common';
|
|
|
5
5
|
*/
|
|
6
6
|
export class CLIError extends DidMethodError {
|
|
7
7
|
constructor(message: string, type: string = 'CLIError', data?: Record<string, any>) {
|
|
8
|
-
super(message, { type, name:
|
|
8
|
+
super(message, { type, name: 'CLIError', data });
|
|
9
9
|
}
|
|
10
|
-
}
|
|
10
|
+
}
|
package/src/index.ts
CHANGED
package/src/output.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { CommandResult, GlobalOptions } from './types.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Formats a CommandResult for console output.
|
|
5
|
+
* In 'json' mode, the full result is serialized.
|
|
6
|
+
* In 'text' mode, only the relevant payload is printed.
|
|
7
|
+
* @param {CommandResult} result - The result to format.
|
|
8
|
+
* @param {GlobalOptions} options - The global options to determine output format.
|
|
9
|
+
* @returns {string} - The formatted output string.
|
|
10
|
+
*/
|
|
11
|
+
export function formatResult(result: CommandResult, options: GlobalOptions): string {
|
|
12
|
+
if (options.output === 'json') {
|
|
13
|
+
return JSON.stringify(result, null, 2);
|
|
14
|
+
}
|
|
15
|
+
const { data } = result;
|
|
16
|
+
return typeof data === 'string' ? data : JSON.stringify(data, null, 2);
|
|
17
|
+
}
|
package/src/types.ts
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { PatchOperation } from '@did-btcr2/common';
|
|
2
|
+
import { SignedBTCR2Update } from '@did-btcr2/cryptosuite';
|
|
3
|
+
import { Btcr2DidDocument, DidCreateOptions, ResolutionOptions } from '@did-btcr2/method';
|
|
4
|
+
import { DidResolutionResult } from '@web5/dids';
|
|
5
|
+
|
|
6
|
+
export type NetworkOption = 'bitcoin' | 'testnet3' | 'testnet4' | 'signet' | 'mutinynet' | 'regtest';
|
|
7
|
+
export type OutputFormat = 'json' | 'text';
|
|
8
|
+
|
|
9
|
+
export const SUPPORTED_NETWORKS: NetworkOption[] = [
|
|
10
|
+
'bitcoin', 'testnet3', 'testnet4', 'signet', 'mutinynet', 'regtest'
|
|
11
|
+
];
|
|
12
|
+
|
|
13
|
+
/** Dependency-injection interface for the DID method operations the CLI calls. */
|
|
14
|
+
export interface MethodOperations {
|
|
15
|
+
create(
|
|
16
|
+
genesisBytes: Uint8Array,
|
|
17
|
+
options: DidCreateOptions
|
|
18
|
+
): string;
|
|
19
|
+
resolve(
|
|
20
|
+
identifier: string,
|
|
21
|
+
options?: ResolutionOptions
|
|
22
|
+
): Promise<DidResolutionResult>;
|
|
23
|
+
update(params: {
|
|
24
|
+
sourceDocument : Btcr2DidDocument;
|
|
25
|
+
patches : PatchOperation[];
|
|
26
|
+
sourceVersionId : number;
|
|
27
|
+
verificationMethodId : string;
|
|
28
|
+
beaconId : string;
|
|
29
|
+
}): Promise<SignedBTCR2Update>;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface CreateCommandOptions {
|
|
33
|
+
type : 'k' | 'x';
|
|
34
|
+
bytes : string;
|
|
35
|
+
network : NetworkOption;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export interface ResolveCommandOptions {
|
|
39
|
+
identifier : string;
|
|
40
|
+
options? : ResolutionOptions;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export interface UpdateCommandOptions {
|
|
44
|
+
sourceDocument : Btcr2DidDocument;
|
|
45
|
+
patches : PatchOperation[];
|
|
46
|
+
sourceVersionId : number;
|
|
47
|
+
verificationMethodId : string;
|
|
48
|
+
beaconId : string;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export type CommandResult =
|
|
52
|
+
| { action: 'create'; data: string }
|
|
53
|
+
| { action: 'resolve'; data: DidResolutionResult }
|
|
54
|
+
| { action: 'update'; data: SignedBTCR2Update }
|
|
55
|
+
| { action: 'deactivate'; data: SignedBTCR2Update };
|
|
56
|
+
|
|
57
|
+
export interface GlobalOptions {
|
|
58
|
+
output : OutputFormat;
|
|
59
|
+
verbose : boolean;
|
|
60
|
+
quiet : boolean;
|
|
61
|
+
}
|
package/src/version.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { dirname, join } from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Walks up from the compiled file location to find the CLI package.json.
|
|
7
|
+
* Works from both dist/esm/ and tests/compiled/src/.
|
|
8
|
+
*/
|
|
9
|
+
function readVersion(): string {
|
|
10
|
+
let dir = dirname(fileURLToPath(import.meta.url));
|
|
11
|
+
for (let i = 0; i < 5; i++) {
|
|
12
|
+
try {
|
|
13
|
+
const pkg = JSON.parse(readFileSync(join(dir, 'package.json'), 'utf-8'));
|
|
14
|
+
if (pkg.name === '@did-btcr2/cli') return pkg.version;
|
|
15
|
+
} catch { /* not found, go up */ }
|
|
16
|
+
dir = dirname(dir);
|
|
17
|
+
}
|
|
18
|
+
return '0.0.0';
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export const VERSION: string = readVersion();
|
package/dist/cjs/command.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { IdentifierTypes, Logger, MethodError } from '@did-btcr2/common';
|
|
2
|
-
import { DidBtcr2 } from '@did-btcr2/method';
|
|
3
|
-
export default class Btcr2Command {
|
|
4
|
-
async execute(request) {
|
|
5
|
-
const action = request.action;
|
|
6
|
-
switch (action) {
|
|
7
|
-
case 'create': {
|
|
8
|
-
const { type, bytes, network } = request.options;
|
|
9
|
-
const idType = type === 'k' ? IdentifierTypes.KEY : IdentifierTypes.EXTERNAL;
|
|
10
|
-
const genesisBytes = Buffer.from(bytes, 'hex');
|
|
11
|
-
const did = DidBtcr2.create(genesisBytes, { idType, network });
|
|
12
|
-
return { action: 'create', did };
|
|
13
|
-
}
|
|
14
|
-
case 'read':
|
|
15
|
-
case 'resolve': {
|
|
16
|
-
const { identifier, options } = request.options;
|
|
17
|
-
const resolution = await DidBtcr2.resolve(identifier, options);
|
|
18
|
-
return { action: request.action, resolution };
|
|
19
|
-
}
|
|
20
|
-
case 'update': {
|
|
21
|
-
const signed = await DidBtcr2.update(request.options);
|
|
22
|
-
return { action: 'update', signed };
|
|
23
|
-
}
|
|
24
|
-
case 'delete':
|
|
25
|
-
case 'deactivate': {
|
|
26
|
-
Logger.warn('// TODO: Update once DidBtcr2.deactivate implemented');
|
|
27
|
-
return { action: 'deactivate', message: 'Deactivate not yet implemented' };
|
|
28
|
-
}
|
|
29
|
-
default: {
|
|
30
|
-
throw new MethodError(`Invalid command: ${action}`, 'INVALID_COMMAND');
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=command.js.map
|
package/dist/cjs/command.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAkB,MAAM,mBAAmB,CAAC;AAEzF,OAAO,EAAoB,QAAQ,EAAqB,MAAM,mBAAmB,CAAC;AA2ClF,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B,KAAK,CAAC,OAAO,CAAC,OAAuB;QACnC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;gBACjD,MAAM,MAAM,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC;gBAC7E,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC/C,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC/D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;YACnC,CAAC;YACD,KAAK,MAAM,CAAC;YACZ,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;gBAChD,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBAC/D,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC;YAChD,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACtD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;YACtC,CAAC;YACD,KAAK,QAAQ,CAAC;YACd,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;gBACpE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC;YAC7E,CAAC;YACD,OAAO,CAAC,CAAA,CAAC;gBACP,MAAM,IAAI,WAAW,CAAC,oBAAoB,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
package/dist/esm/src/command.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { IdentifierTypes, Logger, MethodError } from '@did-btcr2/common';
|
|
2
|
-
import { DidBtcr2 } from '@did-btcr2/method';
|
|
3
|
-
export default class Btcr2Command {
|
|
4
|
-
async execute(request) {
|
|
5
|
-
const action = request.action;
|
|
6
|
-
switch (action) {
|
|
7
|
-
case 'create': {
|
|
8
|
-
const { type, bytes, network } = request.options;
|
|
9
|
-
const idType = type === 'k' ? IdentifierTypes.KEY : IdentifierTypes.EXTERNAL;
|
|
10
|
-
const genesisBytes = Buffer.from(bytes, 'hex');
|
|
11
|
-
const did = DidBtcr2.create(genesisBytes, { idType, network });
|
|
12
|
-
return { action: 'create', did };
|
|
13
|
-
}
|
|
14
|
-
case 'read':
|
|
15
|
-
case 'resolve': {
|
|
16
|
-
const { identifier, options } = request.options;
|
|
17
|
-
const resolution = await DidBtcr2.resolve(identifier, options);
|
|
18
|
-
return { action: request.action, resolution };
|
|
19
|
-
}
|
|
20
|
-
case 'update': {
|
|
21
|
-
const signed = await DidBtcr2.update(request.options);
|
|
22
|
-
return { action: 'update', signed };
|
|
23
|
-
}
|
|
24
|
-
case 'delete':
|
|
25
|
-
case 'deactivate': {
|
|
26
|
-
Logger.warn('// TODO: Update once DidBtcr2.deactivate implemented');
|
|
27
|
-
return { action: 'deactivate', message: 'Deactivate not yet implemented' };
|
|
28
|
-
}
|
|
29
|
-
default: {
|
|
30
|
-
throw new MethodError(`Invalid command: ${action}`, 'INVALID_COMMAND');
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=command.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAkB,MAAM,mBAAmB,CAAC;AAEzF,OAAO,EAAoB,QAAQ,EAAqB,MAAM,mBAAmB,CAAC;AA2ClF,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B,KAAK,CAAC,OAAO,CAAC,OAAuB;QACnC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;gBACjD,MAAM,MAAM,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC;gBAC7E,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC/C,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC/D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;YACnC,CAAC;YACD,KAAK,MAAM,CAAC;YACZ,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;gBAChD,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBAC/D,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC;YAChD,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACtD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;YACtC,CAAC;YACD,KAAK,QAAQ,CAAC;YACd,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;gBACpE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC;YAC7E,CAAC;YACD,OAAO,CAAC,CAAA,CAAC;gBACP,MAAM,IAAI,WAAW,CAAC,oBAAoB,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
package/dist/types/command.d.ts
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { PatchOperation } from '@did-btcr2/common';
|
|
2
|
-
import { SignedBTCR2Update } from '@did-btcr2/cryptosuite';
|
|
3
|
-
import { Btcr2DidDocument, ResolutionOptions } from '@did-btcr2/method';
|
|
4
|
-
import { DidResolutionResult } from '@web5/dids';
|
|
5
|
-
export type NetworkOption = 'bitcoin' | 'testnet3' | 'testnet4' | 'signet' | 'mutinynet' | 'regtest';
|
|
6
|
-
export interface CommandInterface {
|
|
7
|
-
execute(request: CommandRequest): Promise<CommandResult>;
|
|
8
|
-
}
|
|
9
|
-
export interface CreateCommandOptions {
|
|
10
|
-
type: 'k' | 'x';
|
|
11
|
-
bytes: string;
|
|
12
|
-
network: NetworkOption;
|
|
13
|
-
}
|
|
14
|
-
export interface ResolveCommandOptions {
|
|
15
|
-
identifier: string;
|
|
16
|
-
options?: ResolutionOptions;
|
|
17
|
-
}
|
|
18
|
-
export interface UpdateCommandOptions {
|
|
19
|
-
sourceDocument: Btcr2DidDocument;
|
|
20
|
-
sourceVersionId: number;
|
|
21
|
-
patches: PatchOperation[];
|
|
22
|
-
verificationMethodId: string;
|
|
23
|
-
beaconId: string;
|
|
24
|
-
}
|
|
25
|
-
export interface DeactivateCommandOptions {
|
|
26
|
-
}
|
|
27
|
-
export type CommandRequest = {
|
|
28
|
-
action: 'create';
|
|
29
|
-
options: CreateCommandOptions;
|
|
30
|
-
} | {
|
|
31
|
-
action: 'resolve' | 'read';
|
|
32
|
-
options: ResolveCommandOptions;
|
|
33
|
-
} | {
|
|
34
|
-
action: 'update';
|
|
35
|
-
options: UpdateCommandOptions;
|
|
36
|
-
} | {
|
|
37
|
-
action: 'deactivate' | 'delete';
|
|
38
|
-
options: DeactivateCommandOptions;
|
|
39
|
-
};
|
|
40
|
-
export type CommandResult = {
|
|
41
|
-
action: 'create';
|
|
42
|
-
did: string;
|
|
43
|
-
} | {
|
|
44
|
-
action: 'resolve' | 'read';
|
|
45
|
-
resolution: DidResolutionResult;
|
|
46
|
-
} | {
|
|
47
|
-
action: 'update';
|
|
48
|
-
signed: SignedBTCR2Update;
|
|
49
|
-
} | {
|
|
50
|
-
action: 'deactivate' | 'delete';
|
|
51
|
-
message: string;
|
|
52
|
-
};
|
|
53
|
-
export default class Btcr2Command implements CommandInterface {
|
|
54
|
-
execute(request: CommandRequest): Promise<CommandResult>;
|
|
55
|
-
}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { PatchOperation } from '@did-btcr2/common';
|
|
2
|
-
import { SignedBTCR2Update } from '@did-btcr2/cryptosuite';
|
|
3
|
-
import { Btcr2DidDocument, ResolutionOptions } from '@did-btcr2/method';
|
|
4
|
-
import { DidResolutionResult } from '@web5/dids';
|
|
5
|
-
export type NetworkOption = 'bitcoin' | 'testnet3' | 'testnet4' | 'signet' | 'mutinynet' | 'regtest';
|
|
6
|
-
export interface CommandInterface {
|
|
7
|
-
execute(request: CommandRequest): Promise<CommandResult>;
|
|
8
|
-
}
|
|
9
|
-
export interface CreateCommandOptions {
|
|
10
|
-
type: 'k' | 'x';
|
|
11
|
-
bytes: string;
|
|
12
|
-
network: NetworkOption;
|
|
13
|
-
}
|
|
14
|
-
export interface ResolveCommandOptions {
|
|
15
|
-
identifier: string;
|
|
16
|
-
options?: ResolutionOptions;
|
|
17
|
-
}
|
|
18
|
-
export interface UpdateCommandOptions {
|
|
19
|
-
sourceDocument: Btcr2DidDocument;
|
|
20
|
-
sourceVersionId: number;
|
|
21
|
-
patches: PatchOperation[];
|
|
22
|
-
verificationMethodId: string;
|
|
23
|
-
beaconId: string;
|
|
24
|
-
}
|
|
25
|
-
export interface DeactivateCommandOptions {
|
|
26
|
-
}
|
|
27
|
-
export type CommandRequest = {
|
|
28
|
-
action: 'create';
|
|
29
|
-
options: CreateCommandOptions;
|
|
30
|
-
} | {
|
|
31
|
-
action: 'resolve' | 'read';
|
|
32
|
-
options: ResolveCommandOptions;
|
|
33
|
-
} | {
|
|
34
|
-
action: 'update';
|
|
35
|
-
options: UpdateCommandOptions;
|
|
36
|
-
} | {
|
|
37
|
-
action: 'deactivate' | 'delete';
|
|
38
|
-
options: DeactivateCommandOptions;
|
|
39
|
-
};
|
|
40
|
-
export type CommandResult = {
|
|
41
|
-
action: 'create';
|
|
42
|
-
did: string;
|
|
43
|
-
} | {
|
|
44
|
-
action: 'resolve' | 'read';
|
|
45
|
-
resolution: DidResolutionResult;
|
|
46
|
-
} | {
|
|
47
|
-
action: 'update';
|
|
48
|
-
signed: SignedBTCR2Update;
|
|
49
|
-
} | {
|
|
50
|
-
action: 'deactivate' | 'delete';
|
|
51
|
-
message: string;
|
|
52
|
-
};
|
|
53
|
-
export default class Btcr2Command implements CommandInterface {
|
|
54
|
-
execute(request: CommandRequest): Promise<CommandResult>;
|
|
55
|
-
}
|
|
56
|
-
//# sourceMappingURL=command.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../src/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAY,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;AAErG,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,aAAa,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,gBAAgB,CAAC;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,WAAW,wBAAwB;CAExC;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,oBAAoB,CAAC;CAAE,GACpD;IAAE,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC;IAAC,OAAO,EAAE,qBAAqB,CAAC;CAAE,GAC/D;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,oBAAoB,CAAC;CAAE,GACpD;IAAE,MAAM,EAAE,YAAY,GAAG,QAAQ,CAAC;IAAC,OAAO,EAAE,wBAAwB,CAAC;CAAE,CAAC;AAE5E,MAAM,MAAM,aAAa,GACrB;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;CAAE,GAClC;IAAE,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC;IAAC,UAAU,EAAE,mBAAmB,CAAC;CAAE,GAChE;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAC;CAAE,GAChD;IAAE,MAAM,EAAE,YAAY,GAAG,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;CAAE,CAAC;AAE1D,MAAM,CAAC,OAAO,OAAO,YAAa,YAAW,gBAAgB;IACrD,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CA8B/D"}
|
package/src/command.ts
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { IdentifierTypes, Logger, MethodError, PatchOperation } from '@did-btcr2/common';
|
|
2
|
-
import { SignedBTCR2Update } from '@did-btcr2/cryptosuite';
|
|
3
|
-
import { Btcr2DidDocument, DidBtcr2, ResolutionOptions } from '@did-btcr2/method';
|
|
4
|
-
import { DidResolutionResult } from '@web5/dids';
|
|
5
|
-
|
|
6
|
-
export type NetworkOption = 'bitcoin' | 'testnet3' | 'testnet4' | 'signet' | 'mutinynet' | 'regtest';
|
|
7
|
-
|
|
8
|
-
export interface CommandInterface {
|
|
9
|
-
execute(request: CommandRequest): Promise<CommandResult>;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export interface CreateCommandOptions {
|
|
13
|
-
type: 'k' | 'x';
|
|
14
|
-
bytes: string;
|
|
15
|
-
network: NetworkOption;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export interface ResolveCommandOptions {
|
|
19
|
-
identifier: string;
|
|
20
|
-
options?: ResolutionOptions;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export interface UpdateCommandOptions {
|
|
24
|
-
sourceDocument: Btcr2DidDocument;
|
|
25
|
-
sourceVersionId: number;
|
|
26
|
-
patches: PatchOperation[];
|
|
27
|
-
verificationMethodId: string;
|
|
28
|
-
beaconId: string;
|
|
29
|
-
}
|
|
30
|
-
export interface DeactivateCommandOptions {
|
|
31
|
-
// Placeholder for future deactivate payload once implemented.
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export type CommandRequest =
|
|
35
|
-
| { action: 'create'; options: CreateCommandOptions; }
|
|
36
|
-
| { action: 'resolve' | 'read'; options: ResolveCommandOptions; }
|
|
37
|
-
| { action: 'update'; options: UpdateCommandOptions; }
|
|
38
|
-
| { action: 'deactivate' | 'delete'; options: DeactivateCommandOptions; };
|
|
39
|
-
|
|
40
|
-
export type CommandResult =
|
|
41
|
-
| { action: 'create'; did: string; }
|
|
42
|
-
| { action: 'resolve' | 'read'; resolution: DidResolutionResult; }
|
|
43
|
-
| { action: 'update'; signed: SignedBTCR2Update; }
|
|
44
|
-
| { action: 'deactivate' | 'delete'; message: string; };
|
|
45
|
-
|
|
46
|
-
export default class Btcr2Command implements CommandInterface {
|
|
47
|
-
async execute(request: CommandRequest): Promise<CommandResult> {
|
|
48
|
-
const action = request.action;
|
|
49
|
-
switch (action) {
|
|
50
|
-
case 'create': {
|
|
51
|
-
const { type, bytes, network } = request.options;
|
|
52
|
-
const idType = type === 'k' ? IdentifierTypes.KEY : IdentifierTypes.EXTERNAL;
|
|
53
|
-
const genesisBytes = Buffer.from(bytes, 'hex');
|
|
54
|
-
const did = DidBtcr2.create(genesisBytes, { idType, network });
|
|
55
|
-
return { action: 'create', did };
|
|
56
|
-
}
|
|
57
|
-
case 'read':
|
|
58
|
-
case 'resolve': {
|
|
59
|
-
const { identifier, options } = request.options;
|
|
60
|
-
const resolution = await DidBtcr2.resolve(identifier, options);
|
|
61
|
-
return { action: request.action, resolution };
|
|
62
|
-
}
|
|
63
|
-
case 'update': {
|
|
64
|
-
const signed = await DidBtcr2.update(request.options);
|
|
65
|
-
return { action: 'update', signed };
|
|
66
|
-
}
|
|
67
|
-
case 'delete':
|
|
68
|
-
case 'deactivate': {
|
|
69
|
-
Logger.warn('// TODO: Update once DidBtcr2.deactivate implemented');
|
|
70
|
-
return { action: 'deactivate', message: 'Deactivate not yet implemented' };
|
|
71
|
-
}
|
|
72
|
-
default:{
|
|
73
|
-
throw new MethodError(`Invalid command: ${action}`, 'INVALID_COMMAND');
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|