@thirtified/eudi-dev 0.0.0-stage → 0.1.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 +202 -0
- package/README.md +223 -2
- package/dist/binary.d.ts +42 -0
- package/dist/binary.js +76 -0
- package/dist/binary.js.map +1 -0
- package/dist/commands/credentials.d.ts +151 -0
- package/dist/commands/credentials.js +234 -0
- package/dist/commands/credentials.js.map +1 -0
- package/dist/commands/registrar.d.ts +116 -0
- package/dist/commands/registrar.js +150 -0
- package/dist/commands/registrar.js.map +1 -0
- package/dist/commands/trust.d.ts +58 -0
- package/dist/commands/trust.js +90 -0
- package/dist/commands/trust.js.map +1 -0
- package/dist/errors.d.ts +47 -0
- package/dist/errors.js +41 -0
- package/dist/errors.js.map +1 -0
- package/dist/eudi.d.ts +66 -0
- package/dist/eudi.js +113 -0
- package/dist/eudi.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/input.d.ts +32 -0
- package/dist/input.js +7 -0
- package/dist/input.js.map +1 -0
- package/dist/runner.d.ts +86 -0
- package/dist/runner.js +246 -0
- package/dist/runner.js.map +1 -0
- package/dist/types.d.ts +338 -0
- package/dist/types.js +11 -0
- package/dist/types.js.map +1 -0
- package/dist/version.d.ts +24 -0
- package/dist/version.js +35 -0
- package/dist/version.js.map +1 -0
- package/package.json +75 -4
- package/src/binary.ts +114 -0
- package/src/commands/credentials.ts +384 -0
- package/src/commands/registrar.ts +243 -0
- package/src/commands/trust.ts +123 -0
- package/src/errors.ts +66 -0
- package/src/eudi.ts +159 -0
- package/src/index.ts +44 -0
- package/src/input.ts +27 -0
- package/src/runner.ts +310 -0
- package/src/types.ts +389 -0
- package/src/version.ts +36 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registrar.js","sourceRoot":"","sources":["../../src/commands/registrar.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { FileInput } from '../input.js';
|
|
2
|
+
import { type Runner } from '../runner.js';
|
|
3
|
+
import type { Jwks, TrustEntity, TrustListLink, TrustOverview } from '../types.js';
|
|
4
|
+
import type { CallOptions } from './credentials.js';
|
|
5
|
+
/** The wallet's own lists, or the `tl-` id of a custom list. */
|
|
6
|
+
export type TrustListId = 'pid' | 'qeaa' | 'pub-eaa' | 'eaa' | 'wallet-provider' | 'access-ca' | 'registrar' | 'lists' | (string & {});
|
|
7
|
+
export interface TrustShowOptions extends CallOptions {
|
|
8
|
+
/** List id. Default: the PID provider list. */
|
|
9
|
+
list?: TrustListId;
|
|
10
|
+
/** Select the list covering this SD-JWT VCT. */
|
|
11
|
+
vct?: string;
|
|
12
|
+
/** Select the list covering this mdoc docType. */
|
|
13
|
+
doctype?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface TrustUrlOptions extends TrustShowOptions {
|
|
16
|
+
/** Wallet server port the URL is built for. Default 8085 upstream. */
|
|
17
|
+
port?: number;
|
|
18
|
+
/** Use host.docker.internal instead of localhost. */
|
|
19
|
+
docker?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface TrustAddCaOptions extends CallOptions {
|
|
22
|
+
/** One of `TrustOverview.entity_lists`, e.g. `pid`, `eaa`, `trusted-list-ca`. */
|
|
23
|
+
list: string;
|
|
24
|
+
/** PEM with the CA certificates. */
|
|
25
|
+
ca: FileInput;
|
|
26
|
+
/** Provider name on the list. Default the CA's common name. */
|
|
27
|
+
name?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* `eudi trust ...` against the wallet in this instance's EUDI_DEV_HOME. The
|
|
31
|
+
* wallet (with its CA) is created on first use.
|
|
32
|
+
*/
|
|
33
|
+
export declare class TrustCommands {
|
|
34
|
+
private readonly runner;
|
|
35
|
+
constructor(runner: Runner);
|
|
36
|
+
/** `trust list`: the wallet's trusted lists and the CAs and lists you added. */
|
|
37
|
+
list(opts?: CallOptions): Promise<TrustOverview>;
|
|
38
|
+
/** `trust show`: one of the wallet's trusted lists as a signed JWT. */
|
|
39
|
+
show(opts?: TrustShowOptions): Promise<string>;
|
|
40
|
+
/** `trust show --url`: where a wallet server on `port` would serve the list. */
|
|
41
|
+
url(opts?: TrustUrlOptions): Promise<string>;
|
|
42
|
+
/** `trust ca-cert`: the shared wallet CA as PEM. */
|
|
43
|
+
caCert(opts?: CallOptions): Promise<string>;
|
|
44
|
+
/** `trust ca-cert --jwks`: the shared wallet CA as a JWKS with x5c. */
|
|
45
|
+
caJwks(opts?: CallOptions): Promise<Jwks>;
|
|
46
|
+
/** `trust add-ca`: put a CA on one of the wallet's lists. */
|
|
47
|
+
addCa(opts: TrustAddCaOptions): Promise<TrustEntity>;
|
|
48
|
+
/** `trust rm-ca <id>`. */
|
|
49
|
+
removeCa(id: string, opts?: CallOptions): Promise<{
|
|
50
|
+
removed: string;
|
|
51
|
+
}>;
|
|
52
|
+
/** `trust add-list <url>`: add an external list to the list of trusted lists. */
|
|
53
|
+
addList(url: string, opts?: CallOptions): Promise<TrustListLink>;
|
|
54
|
+
/** `trust rm-list <url>`. */
|
|
55
|
+
removeList(url: string, opts?: CallOptions): Promise<{
|
|
56
|
+
removed: string;
|
|
57
|
+
}>;
|
|
58
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { ArgList, Scratch } from '../runner.js';
|
|
2
|
+
function runOpts(opts) {
|
|
3
|
+
const r = {};
|
|
4
|
+
if (opts.timeoutMs !== undefined)
|
|
5
|
+
r.timeoutMs = opts.timeoutMs;
|
|
6
|
+
if (opts.signal !== undefined)
|
|
7
|
+
r.signal = opts.signal;
|
|
8
|
+
return r;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* `eudi trust ...` against the wallet in this instance's EUDI_DEV_HOME. The
|
|
12
|
+
* wallet (with its CA) is created on first use.
|
|
13
|
+
*/
|
|
14
|
+
export class TrustCommands {
|
|
15
|
+
runner;
|
|
16
|
+
constructor(runner) {
|
|
17
|
+
this.runner = runner;
|
|
18
|
+
}
|
|
19
|
+
/** `trust list`: the wallet's trusted lists and the CAs and lists you added. */
|
|
20
|
+
async list(opts = {}) {
|
|
21
|
+
const { document } = await this.runner.run(['trust', 'list', ...(opts.extraArgs ?? [])], runOpts(opts));
|
|
22
|
+
return document;
|
|
23
|
+
}
|
|
24
|
+
/** `trust show`: one of the wallet's trusted lists as a signed JWT. */
|
|
25
|
+
async show(opts = {}) {
|
|
26
|
+
const args = new ArgList('trust', 'show')
|
|
27
|
+
.value('vct', opts.vct)
|
|
28
|
+
.value('doctype', opts.doctype)
|
|
29
|
+
.push(...(opts.extraArgs ?? []));
|
|
30
|
+
if (opts.list)
|
|
31
|
+
args.push(opts.list);
|
|
32
|
+
const { document } = await this.runner.run(args.args, runOpts(opts));
|
|
33
|
+
return document.trust_list;
|
|
34
|
+
}
|
|
35
|
+
/** `trust show --url`: where a wallet server on `port` would serve the list. */
|
|
36
|
+
async url(opts = {}) {
|
|
37
|
+
const args = new ArgList('trust', 'show', '--url')
|
|
38
|
+
.value('port', opts.port)
|
|
39
|
+
.on('docker', opts.docker)
|
|
40
|
+
.value('vct', opts.vct)
|
|
41
|
+
.value('doctype', opts.doctype)
|
|
42
|
+
.push(...(opts.extraArgs ?? []));
|
|
43
|
+
if (opts.list)
|
|
44
|
+
args.push(opts.list);
|
|
45
|
+
const { document } = await this.runner.run(args.args, runOpts(opts));
|
|
46
|
+
return document.url;
|
|
47
|
+
}
|
|
48
|
+
/** `trust ca-cert`: the shared wallet CA as PEM. */
|
|
49
|
+
async caCert(opts = {}) {
|
|
50
|
+
const { document } = await this.runner.run(['trust', 'ca-cert', ...(opts.extraArgs ?? [])], runOpts(opts));
|
|
51
|
+
return document.pem;
|
|
52
|
+
}
|
|
53
|
+
/** `trust ca-cert --jwks`: the shared wallet CA as a JWKS with x5c. */
|
|
54
|
+
async caJwks(opts = {}) {
|
|
55
|
+
const { document } = await this.runner.run(['trust', 'ca-cert', '--jwks', ...(opts.extraArgs ?? [])], runOpts(opts));
|
|
56
|
+
return document;
|
|
57
|
+
}
|
|
58
|
+
/** `trust add-ca`: put a CA on one of the wallet's lists. */
|
|
59
|
+
async addCa(opts) {
|
|
60
|
+
const scratch = new Scratch();
|
|
61
|
+
try {
|
|
62
|
+
const args = new ArgList('trust', 'add-ca')
|
|
63
|
+
.value('list', opts.list)
|
|
64
|
+
.value('ca', await scratch.file(opts.ca, 'ca.pem'))
|
|
65
|
+
.value('name', opts.name)
|
|
66
|
+
.push(...(opts.extraArgs ?? []));
|
|
67
|
+
const { document } = await this.runner.run(args.args, runOpts(opts));
|
|
68
|
+
return document;
|
|
69
|
+
}
|
|
70
|
+
finally {
|
|
71
|
+
await scratch.cleanup();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/** `trust rm-ca <id>`. */
|
|
75
|
+
async removeCa(id, opts = {}) {
|
|
76
|
+
const { document } = await this.runner.run(['trust', 'rm-ca', ...(opts.extraArgs ?? []), id], runOpts(opts));
|
|
77
|
+
return document;
|
|
78
|
+
}
|
|
79
|
+
/** `trust add-list <url>`: add an external list to the list of trusted lists. */
|
|
80
|
+
async addList(url, opts = {}) {
|
|
81
|
+
const { document } = await this.runner.run(['trust', 'add-list', ...(opts.extraArgs ?? []), url], runOpts(opts));
|
|
82
|
+
return document;
|
|
83
|
+
}
|
|
84
|
+
/** `trust rm-list <url>`. */
|
|
85
|
+
async removeList(url, opts = {}) {
|
|
86
|
+
const { document } = await this.runner.run(['trust', 'rm-list', ...(opts.extraArgs ?? []), url], runOpts(opts));
|
|
87
|
+
return document;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=trust.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trust.js","sourceRoot":"","sources":["../../src/commands/trust.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/** Details of a failed eudi-dev invocation. */
|
|
2
|
+
export interface EudiDevErrorDetails {
|
|
3
|
+
/** Arguments passed to the binary (without the binary path). */
|
|
4
|
+
args: readonly string[];
|
|
5
|
+
/** Exit code, or `null` when the process was killed by a signal. */
|
|
6
|
+
exitCode: number | null;
|
|
7
|
+
/** Signal that killed the process, if any. */
|
|
8
|
+
signal: NodeJS.Signals | null;
|
|
9
|
+
/** Everything the process wrote to stderr. */
|
|
10
|
+
stderr: string;
|
|
11
|
+
/** Everything the process wrote to stdout. */
|
|
12
|
+
stdout: string;
|
|
13
|
+
/**
|
|
14
|
+
* The JSON document from stdout, if one was printed. `validate` prints its
|
|
15
|
+
* report even when a check fails (upstream ADR 0020).
|
|
16
|
+
*/
|
|
17
|
+
document?: unknown;
|
|
18
|
+
/** Set when the process did not finish in time. */
|
|
19
|
+
timedOut?: boolean;
|
|
20
|
+
/** Underlying error (spawn failure, invalid JSON, ...). */
|
|
21
|
+
cause?: unknown;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Thrown when eudi-dev exits non-zero, cannot be started, times out, or
|
|
25
|
+
* breaks the one-JSON-document contract.
|
|
26
|
+
*
|
|
27
|
+
* eudi-dev only uses exit codes 0 and 1, so the reason is in {@link stderr}.
|
|
28
|
+
* {@link message} holds its last non-empty line, which is the error cobra
|
|
29
|
+
* printed.
|
|
30
|
+
*/
|
|
31
|
+
export declare class EudiDevError extends Error {
|
|
32
|
+
readonly name = "EudiDevError";
|
|
33
|
+
readonly args: readonly string[];
|
|
34
|
+
readonly exitCode: number | null;
|
|
35
|
+
readonly signal: NodeJS.Signals | null;
|
|
36
|
+
readonly stderr: string;
|
|
37
|
+
readonly stdout: string;
|
|
38
|
+
readonly document: unknown;
|
|
39
|
+
readonly timedOut: boolean;
|
|
40
|
+
constructor(message: string, details: EudiDevErrorDetails);
|
|
41
|
+
}
|
|
42
|
+
/** Thrown when the eudi-dev binary cannot be located, is not executable, or has an unsupported version. */
|
|
43
|
+
export declare class EudiDevBinaryError extends Error {
|
|
44
|
+
readonly name = "EudiDevBinaryError";
|
|
45
|
+
}
|
|
46
|
+
/** Returns the last non-empty line of a stderr dump. */
|
|
47
|
+
export declare function lastLine(text: string): string;
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thrown when eudi-dev exits non-zero, cannot be started, times out, or
|
|
3
|
+
* breaks the one-JSON-document contract.
|
|
4
|
+
*
|
|
5
|
+
* eudi-dev only uses exit codes 0 and 1, so the reason is in {@link stderr}.
|
|
6
|
+
* {@link message} holds its last non-empty line, which is the error cobra
|
|
7
|
+
* printed.
|
|
8
|
+
*/
|
|
9
|
+
export class EudiDevError extends Error {
|
|
10
|
+
name = 'EudiDevError';
|
|
11
|
+
args;
|
|
12
|
+
exitCode;
|
|
13
|
+
signal;
|
|
14
|
+
stderr;
|
|
15
|
+
stdout;
|
|
16
|
+
document;
|
|
17
|
+
timedOut;
|
|
18
|
+
constructor(message, details) {
|
|
19
|
+
super(message, details.cause !== undefined ? { cause: details.cause } : undefined);
|
|
20
|
+
this.args = details.args;
|
|
21
|
+
this.exitCode = details.exitCode;
|
|
22
|
+
this.signal = details.signal;
|
|
23
|
+
this.stderr = details.stderr;
|
|
24
|
+
this.stdout = details.stdout;
|
|
25
|
+
this.document = details.document;
|
|
26
|
+
this.timedOut = details.timedOut ?? false;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/** Thrown when the eudi-dev binary cannot be located, is not executable, or has an unsupported version. */
|
|
30
|
+
export class EudiDevBinaryError extends Error {
|
|
31
|
+
name = 'EudiDevBinaryError';
|
|
32
|
+
}
|
|
33
|
+
/** Returns the last non-empty line of a stderr dump. */
|
|
34
|
+
export function lastLine(text) {
|
|
35
|
+
const lines = text
|
|
36
|
+
.split(/\r?\n/)
|
|
37
|
+
.map((l) => l.trim())
|
|
38
|
+
.filter(Boolean);
|
|
39
|
+
return lines.at(-1) ?? '';
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAuBA;;;;;;;GAOG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IACnB,IAAI,GAAG,cAAc,CAAC;IAC/B,IAAI,CAAoB;IACxB,QAAQ,CAAgB;IACxB,MAAM,CAAwB;IAC9B,MAAM,CAAS;IACf,MAAM,CAAS;IACf,QAAQ,CAAU;IAClB,QAAQ,CAAU;IAE3B,YAAY,OAAe,EAAE,OAA4B;QACvD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACnF,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC;IAC5C,CAAC;CACF;AAED,2GAA2G;AAC3G,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IACzB,IAAI,GAAG,oBAAoB,CAAC;CAC/C;AAED,wDAAwD;AACxD,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,MAAM,KAAK,GAAG,IAAI;SACf,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5B,CAAC"}
|
package/dist/eudi.d.ts
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { type ResolveBinaryOptions } from './binary.js';
|
|
2
|
+
import { type CallOptions, type DecodeOptions, type IssueJwtOptions, type IssueMdocOptions, type IssueResult, type IssueSdJwtOptions, type ValidateOptions, type ValidateResult } from './commands/credentials.js';
|
|
3
|
+
import { RegistrarCommands } from './commands/registrar.js';
|
|
4
|
+
import { TrustCommands } from './commands/trust.js';
|
|
5
|
+
import type { Input } from './input.js';
|
|
6
|
+
import { type RunOptions, type RunResult } from './runner.js';
|
|
7
|
+
import type { DcqlQuery, DecodeResult, VersionInfo } from './types.js';
|
|
8
|
+
export interface EudiDevOptions extends ResolveBinaryOptions {
|
|
9
|
+
/**
|
|
10
|
+
* EUDI_DEV_HOME for every call: wallet, CA, templates, registrar state.
|
|
11
|
+
* Default: a new temp directory per instance, removed by {@link EudiDev.dispose}.
|
|
12
|
+
*/
|
|
13
|
+
home?: string;
|
|
14
|
+
/** Extra environment variables for every call. `undefined` removes one. */
|
|
15
|
+
env?: Record<string, string | undefined>;
|
|
16
|
+
/** Pass the caller's EUDI_DEV_* variables through. Default `false`. */
|
|
17
|
+
inheritEudiEnv?: boolean;
|
|
18
|
+
/** Default timeout per call in ms. Default 60 000. 0 turns it off. */
|
|
19
|
+
timeoutMs?: number;
|
|
20
|
+
/** Working directory of the child process. */
|
|
21
|
+
cwd?: string;
|
|
22
|
+
/** Accept a binary whose major version isn't {@link SUPPORTED_MAJOR}. Default `false`. */
|
|
23
|
+
allowAnyVersion?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* A handle on the eudi-dev CLI with its own state directory.
|
|
27
|
+
*
|
|
28
|
+
* ```ts
|
|
29
|
+
* await using eudi = await EudiDev.create();
|
|
30
|
+
* const { credential } = await eudi.issue.sdjwt({ pid: true });
|
|
31
|
+
* const { valid } = await eudi.validate(credential);
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare class EudiDev implements AsyncDisposable {
|
|
35
|
+
/** Path of the binary in use. */
|
|
36
|
+
readonly bin: string;
|
|
37
|
+
/** EUDI_DEV_HOME of this instance. */
|
|
38
|
+
readonly home: string;
|
|
39
|
+
/** Version reported by the binary. */
|
|
40
|
+
readonly version: VersionInfo;
|
|
41
|
+
readonly issue: {
|
|
42
|
+
sdjwt(opts?: IssueSdJwtOptions): Promise<IssueResult>;
|
|
43
|
+
jwt(opts?: IssueJwtOptions): Promise<IssueResult>;
|
|
44
|
+
mdoc(opts?: IssueMdocOptions): Promise<IssueResult>;
|
|
45
|
+
};
|
|
46
|
+
readonly trust: TrustCommands;
|
|
47
|
+
readonly registrar: RegistrarCommands;
|
|
48
|
+
private readonly runner;
|
|
49
|
+
private readonly ownsHome;
|
|
50
|
+
private disposed;
|
|
51
|
+
private constructor();
|
|
52
|
+
/** Resolves the binary, checks its version and sets up the home directory. */
|
|
53
|
+
static create(options?: EudiDevOptions): Promise<EudiDev>;
|
|
54
|
+
/** Runs any eudi-dev command with `--json` and returns its parsed document. */
|
|
55
|
+
run<T = unknown>(args: readonly string[], opts?: RunOptions): Promise<RunResult<T>>;
|
|
56
|
+
/** `eudi decode`. */
|
|
57
|
+
decode(input: Input, opts?: DecodeOptions): Promise<DecodeResult>;
|
|
58
|
+
/** `eudi validate`. A failing check gives `valid: false` instead of throwing. */
|
|
59
|
+
validate(input: Input, opts?: ValidateOptions): Promise<ValidateResult>;
|
|
60
|
+
/** `eudi dcql`. */
|
|
61
|
+
dcql(input: Input, opts?: CallOptions): Promise<DcqlQuery>;
|
|
62
|
+
/** Removes the home directory if this instance created it. */
|
|
63
|
+
dispose(): Promise<void>;
|
|
64
|
+
[Symbol.asyncDispose](): Promise<void>;
|
|
65
|
+
private assertOpen;
|
|
66
|
+
}
|
package/dist/eudi.js
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { mkdtemp, rm } from 'node:fs/promises';
|
|
2
|
+
import { tmpdir } from 'node:os';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { resolveBinary } from './binary.js';
|
|
5
|
+
import { dcql, decode, issueJwt, issueMdoc, issueSdJwt, validate, version, } from './commands/credentials.js';
|
|
6
|
+
import { RegistrarCommands } from './commands/registrar.js';
|
|
7
|
+
import { TrustCommands } from './commands/trust.js';
|
|
8
|
+
import { EudiDevBinaryError } from './errors.js';
|
|
9
|
+
import { Runner } from './runner.js';
|
|
10
|
+
import { parseVersion, SUPPORTED_MAJOR } from './version.js';
|
|
11
|
+
/**
|
|
12
|
+
* A handle on the eudi-dev CLI with its own state directory.
|
|
13
|
+
*
|
|
14
|
+
* ```ts
|
|
15
|
+
* await using eudi = await EudiDev.create();
|
|
16
|
+
* const { credential } = await eudi.issue.sdjwt({ pid: true });
|
|
17
|
+
* const { valid } = await eudi.validate(credential);
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export class EudiDev {
|
|
21
|
+
/** Path of the binary in use. */
|
|
22
|
+
bin;
|
|
23
|
+
/** EUDI_DEV_HOME of this instance. */
|
|
24
|
+
home;
|
|
25
|
+
/** Version reported by the binary. */
|
|
26
|
+
version;
|
|
27
|
+
issue;
|
|
28
|
+
trust;
|
|
29
|
+
registrar;
|
|
30
|
+
runner;
|
|
31
|
+
ownsHome;
|
|
32
|
+
disposed = false;
|
|
33
|
+
constructor(runner, versionInfo, ownsHome) {
|
|
34
|
+
this.runner = runner;
|
|
35
|
+
this.bin = runner.bin;
|
|
36
|
+
this.home = runner.home;
|
|
37
|
+
this.version = versionInfo;
|
|
38
|
+
this.ownsHome = ownsHome;
|
|
39
|
+
this.issue = {
|
|
40
|
+
sdjwt: (opts) => issueSdJwt(this.runner, opts),
|
|
41
|
+
jwt: (opts) => issueJwt(this.runner, opts),
|
|
42
|
+
mdoc: (opts) => issueMdoc(this.runner, opts),
|
|
43
|
+
};
|
|
44
|
+
this.trust = new TrustCommands(runner);
|
|
45
|
+
this.registrar = new RegistrarCommands(runner);
|
|
46
|
+
}
|
|
47
|
+
/** Resolves the binary, checks its version and sets up the home directory. */
|
|
48
|
+
static async create(options = {}) {
|
|
49
|
+
const bin = await resolveBinary(options);
|
|
50
|
+
const ownsHome = options.home === undefined;
|
|
51
|
+
const home = options.home ?? (await mkdtemp(join(tmpdir(), 'eudi-dev-home-')));
|
|
52
|
+
const config = { bin, home };
|
|
53
|
+
if (options.env)
|
|
54
|
+
config.env = options.env;
|
|
55
|
+
if (options.inheritEudiEnv !== undefined)
|
|
56
|
+
config.inheritEudiEnv = options.inheritEudiEnv;
|
|
57
|
+
if (options.timeoutMs !== undefined)
|
|
58
|
+
config.timeoutMs = options.timeoutMs;
|
|
59
|
+
if (options.cwd !== undefined)
|
|
60
|
+
config.cwd = options.cwd;
|
|
61
|
+
const runner = new Runner(config);
|
|
62
|
+
try {
|
|
63
|
+
const info = await version(runner);
|
|
64
|
+
const parsed = parseVersion(info.version);
|
|
65
|
+
// A "dev" build has no version to check.
|
|
66
|
+
if (parsed && parsed.major !== SUPPORTED_MAJOR && !options.allowAnyVersion) {
|
|
67
|
+
throw new EudiDevBinaryError(`${bin} is eudi-dev ${info.version}, but this package supports v${SUPPORTED_MAJOR}.x. Pass allowAnyVersion to use it anyway.`);
|
|
68
|
+
}
|
|
69
|
+
return new EudiDev(runner, info, ownsHome);
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
if (ownsHome)
|
|
73
|
+
await rm(home, { recursive: true, force: true });
|
|
74
|
+
throw err;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/** Runs any eudi-dev command with `--json` and returns its parsed document. */
|
|
78
|
+
run(args, opts) {
|
|
79
|
+
this.assertOpen();
|
|
80
|
+
return this.runner.run(args, opts);
|
|
81
|
+
}
|
|
82
|
+
/** `eudi decode`. */
|
|
83
|
+
decode(input, opts) {
|
|
84
|
+
this.assertOpen();
|
|
85
|
+
return decode(this.runner, input, opts);
|
|
86
|
+
}
|
|
87
|
+
/** `eudi validate`. A failing check gives `valid: false` instead of throwing. */
|
|
88
|
+
validate(input, opts) {
|
|
89
|
+
this.assertOpen();
|
|
90
|
+
return validate(this.runner, input, opts);
|
|
91
|
+
}
|
|
92
|
+
/** `eudi dcql`. */
|
|
93
|
+
dcql(input, opts) {
|
|
94
|
+
this.assertOpen();
|
|
95
|
+
return dcql(this.runner, input, opts);
|
|
96
|
+
}
|
|
97
|
+
/** Removes the home directory if this instance created it. */
|
|
98
|
+
async dispose() {
|
|
99
|
+
if (this.disposed)
|
|
100
|
+
return;
|
|
101
|
+
this.disposed = true;
|
|
102
|
+
if (this.ownsHome)
|
|
103
|
+
await rm(this.home, { recursive: true, force: true });
|
|
104
|
+
}
|
|
105
|
+
async [Symbol.asyncDispose]() {
|
|
106
|
+
await this.dispose();
|
|
107
|
+
}
|
|
108
|
+
assertOpen() {
|
|
109
|
+
if (this.disposed)
|
|
110
|
+
throw new Error('EudiDev instance is disposed');
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=eudi.js.map
|
package/dist/eudi.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eudi.js","sourceRoot":"","sources":["../src/eudi.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { PLATFORM_PACKAGES, type PlatformPackage, platformPackage, type ResolveBinaryOptions, resolveBinary, } from './binary.js';
|
|
2
|
+
export { type CallOptions, type CredentialCategory, type DecodeFormat, type DecodeOptions, type IssueCommonOptions, type IssueDisplayOptions, type IssueJwtOptions, type IssueMdocOptions, type IssueRegistrationOptions, type IssueResult, type IssueSdJwtOptions, isDecodedCredential, type ValidateOptions, type ValidateResult, } from './commands/credentials.js';
|
|
3
|
+
export type { AccessCertOptions, AddIssuerOptions, AddVerifierOptions, AttestationOptions, ExtendIssuerOptions, ExtendVerifierOptions, IntendedUseOptions, PartyCommands, PartyOptions, RegistrarCommands, RegistrationCertOptions, RegistrationScopeOptions, } from './commands/registrar.js';
|
|
4
|
+
export type { TrustAddCaOptions, TrustCommands, TrustListId, TrustShowOptions, TrustUrlOptions } from './commands/trust.js';
|
|
5
|
+
export { EudiDevBinaryError, EudiDevError, type EudiDevErrorDetails } from './errors.js';
|
|
6
|
+
export { EudiDev, type EudiDevOptions } from './eudi.js';
|
|
7
|
+
export type { FileInput, Input } from './input.js';
|
|
8
|
+
export { Runner, type RunnerConfig, type RunOptions, type RunResult } from './runner.js';
|
|
9
|
+
export * from './types.js';
|
|
10
|
+
export { EUDI_DEV_VERSION, SUPPORTED_MAJOR, UPSTREAM_REPO } from './version.js';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { PLATFORM_PACKAGES, platformPackage, resolveBinary, } from './binary.js';
|
|
2
|
+
export { isDecodedCredential, } from './commands/credentials.js';
|
|
3
|
+
export { EudiDevBinaryError, EudiDevError } from './errors.js';
|
|
4
|
+
export { EudiDev } from './eudi.js';
|
|
5
|
+
export { Runner } from './runner.js';
|
|
6
|
+
export * from './types.js';
|
|
7
|
+
export { EUDI_DEV_VERSION, SUPPORTED_MAJOR, UPSTREAM_REPO } from './version.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EAEjB,eAAe,EAEf,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAYL,mBAAmB,GAGpB,MAAM,2BAA2B,CAAC;AAgBnC,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAA4B,MAAM,aAAa,CAAC;AACzF,OAAO,EAAE,OAAO,EAAuB,MAAM,WAAW,CAAC;AAEzD,OAAO,EAAE,MAAM,EAAsD,MAAM,aAAa,CAAC;AACzF,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/input.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input to a command that reads a credential, request or certificate.
|
|
3
|
+
*
|
|
4
|
+
* - A string or bytes is the content itself. It goes to the binary on stdin
|
|
5
|
+
* (as the `-` argument), so there is no argv length limit.
|
|
6
|
+
* - `{ path }` is a file the binary reads. It must exist: upstream treats a
|
|
7
|
+
* path that doesn't exist as raw input.
|
|
8
|
+
* - `{ url }` is an http(s) URL the binary fetches.
|
|
9
|
+
*/
|
|
10
|
+
export type Input = string | Uint8Array | {
|
|
11
|
+
path: string;
|
|
12
|
+
} | {
|
|
13
|
+
url: string;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* A file-valued flag (`--key`, `--trusted-list`, `--csr`, `--dcql`, ...).
|
|
17
|
+
*
|
|
18
|
+
* A string or bytes is the content. The runner writes it to a private temp
|
|
19
|
+
* file and passes that path. `{ path }` passes an existing file and `{ url }`
|
|
20
|
+
* a URL for flags that accept one.
|
|
21
|
+
*/
|
|
22
|
+
export type FileInput = string | Uint8Array | {
|
|
23
|
+
path: string;
|
|
24
|
+
} | {
|
|
25
|
+
url: string;
|
|
26
|
+
};
|
|
27
|
+
export declare function isPathInput(v: unknown): v is {
|
|
28
|
+
path: string;
|
|
29
|
+
};
|
|
30
|
+
export declare function isUrlInput(v: unknown): v is {
|
|
31
|
+
url: string;
|
|
32
|
+
};
|
package/dist/input.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export function isPathInput(v) {
|
|
2
|
+
return typeof v === 'object' && v !== null && !(v instanceof Uint8Array) && typeof v.path === 'string';
|
|
3
|
+
}
|
|
4
|
+
export function isUrlInput(v) {
|
|
5
|
+
return typeof v === 'object' && v !== null && !(v instanceof Uint8Array) && typeof v.url === 'string';
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":"AAoBA,MAAM,UAAU,WAAW,CAAC,CAAU;IACpC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,UAAU,CAAC,IAAI,OAAQ,CAAwB,CAAC,IAAI,KAAK,QAAQ,CAAC;AACjI,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAU;IACnC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,UAAU,CAAC,IAAI,OAAQ,CAAuB,CAAC,GAAG,KAAK,QAAQ,CAAC;AAC/H,CAAC"}
|
package/dist/runner.d.ts
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { type FileInput, type Input } from './input.js';
|
|
2
|
+
export interface RunOptions {
|
|
3
|
+
/** Written to the process's stdin. Without it stdin is closed (/dev/null). */
|
|
4
|
+
stdin?: string | Uint8Array;
|
|
5
|
+
/** Kill the process after this many milliseconds. Default: the runner's timeout. */
|
|
6
|
+
timeoutMs?: number;
|
|
7
|
+
/** Aborts the process. */
|
|
8
|
+
signal?: AbortSignal;
|
|
9
|
+
/** Add `--json` and parse stdout as one JSON document. Default `true`. */
|
|
10
|
+
json?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface RunResult<T = unknown> {
|
|
13
|
+
/** The parsed stdout document (`undefined` with `json: false` or empty stdout). */
|
|
14
|
+
document: T;
|
|
15
|
+
stdout: string;
|
|
16
|
+
/** Progress, hints and warnings. With `--json` nothing else goes to stdout. */
|
|
17
|
+
stderr: string;
|
|
18
|
+
}
|
|
19
|
+
export interface RunnerConfig {
|
|
20
|
+
bin: string;
|
|
21
|
+
/** Becomes EUDI_DEV_HOME. */
|
|
22
|
+
home: string;
|
|
23
|
+
/** Extra environment for every call. `undefined` removes a variable. */
|
|
24
|
+
env?: Record<string, string | undefined>;
|
|
25
|
+
/**
|
|
26
|
+
* Pass the caller's EUDI_DEV_* variables through to the binary. Default
|
|
27
|
+
* `false`: they are removed so that a developer's shell setup
|
|
28
|
+
* (EUDI_DEV_STORAGE, EUDI_DEV_SEED, ...) can't change test results.
|
|
29
|
+
*/
|
|
30
|
+
inheritEudiEnv?: boolean;
|
|
31
|
+
timeoutMs?: number;
|
|
32
|
+
cwd?: string;
|
|
33
|
+
/** Upper bound for captured stdout plus stderr. Default 64 MiB. */
|
|
34
|
+
maxBufferBytes?: number;
|
|
35
|
+
}
|
|
36
|
+
/** Builds the environment for a child process. Exported for tests. */
|
|
37
|
+
export declare function buildEnv(config: Pick<RunnerConfig, 'home' | 'env' | 'inheritEudiEnv'>, base?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
|
|
38
|
+
/** Collects flags as `--name=value`, so a value starting with `-` is never read as a flag. */
|
|
39
|
+
export declare class ArgList {
|
|
40
|
+
readonly args: string[];
|
|
41
|
+
constructor(...command: string[]);
|
|
42
|
+
/** `true` → `--name`, `false` → `--name=false`, `undefined` → nothing. */
|
|
43
|
+
bool(name: string, value: boolean | undefined): this;
|
|
44
|
+
/** Only adds `--name` when `value` is true. For flags that default to false. */
|
|
45
|
+
on(name: string, value: boolean | undefined): this;
|
|
46
|
+
value(name: string, value: string | number | undefined | null): this;
|
|
47
|
+
/** A repeatable flag: one `--name=value` per entry. */
|
|
48
|
+
repeat(name: string, values: readonly (string | number)[] | undefined): this;
|
|
49
|
+
/** A comma-separated single flag. */
|
|
50
|
+
csv(name: string, values: readonly string[] | undefined): this;
|
|
51
|
+
push(...args: string[]): this;
|
|
52
|
+
}
|
|
53
|
+
/** Temp files for one call. */
|
|
54
|
+
export declare class Scratch {
|
|
55
|
+
private dir;
|
|
56
|
+
private n;
|
|
57
|
+
/** Writes `content` to a private temp file and returns its path. */
|
|
58
|
+
write(name: string, content: string | Uint8Array): Promise<string>;
|
|
59
|
+
/**
|
|
60
|
+
* Turns a file-valued option into a flag value. Content is written to a temp
|
|
61
|
+
* file. `{ url }` is only allowed when `allowUrl` is set.
|
|
62
|
+
*/
|
|
63
|
+
file(input: FileInput, name: string, opts?: {
|
|
64
|
+
allowUrl?: boolean;
|
|
65
|
+
}): Promise<string>;
|
|
66
|
+
cleanup(): Promise<void>;
|
|
67
|
+
}
|
|
68
|
+
/** Maps an {@link Input} to the positional argument and the stdin content. */
|
|
69
|
+
export declare function positionalInput(input: Input): Promise<{
|
|
70
|
+
arg: string;
|
|
71
|
+
stdin?: string | Uint8Array;
|
|
72
|
+
}>;
|
|
73
|
+
/** Spawns the eudi-dev binary with an isolated environment. */
|
|
74
|
+
export declare class Runner {
|
|
75
|
+
readonly bin: string;
|
|
76
|
+
readonly home: string;
|
|
77
|
+
private readonly config;
|
|
78
|
+
constructor(config: RunnerConfig);
|
|
79
|
+
/**
|
|
80
|
+
* Runs `eudi <args> --json --no-color` and parses stdout as exactly one
|
|
81
|
+
* JSON document. Rejects with {@link EudiDevError} on a non-zero exit, a
|
|
82
|
+
* timeout, or stdout that is not one JSON document.
|
|
83
|
+
*/
|
|
84
|
+
run<T = unknown>(args: readonly string[], opts?: RunOptions): Promise<RunResult<T>>;
|
|
85
|
+
private spawn;
|
|
86
|
+
}
|