@eudiplo/cli 8.0.2-main.e4bc4d4 → 8.1.0-main.545119e
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/README.md +1 -1
- package/dist/commands/config/portability/migrations.spec.js +5 -3
- package/dist/commands/config/portability/migrations.spec.js.map +1 -1
- package/dist/commands/doctor/action.d.ts +2 -1
- package/dist/commands/doctor/action.d.ts.map +1 -1
- package/dist/commands/doctor/action.js +25 -7
- package/dist/commands/doctor/action.js.map +1 -1
- package/dist/commands/doctor/index.d.ts.map +1 -1
- package/dist/commands/doctor/index.js +2 -0
- package/dist/commands/doctor/index.js.map +1 -1
- package/dist/index.js +2494 -464
- package/dist/services/api-auth.d.ts +31 -0
- package/dist/services/api-auth.d.ts.map +1 -0
- package/dist/services/api-auth.js +78 -0
- package/dist/services/api-auth.js.map +1 -0
- package/dist/services/backend-checks.d.ts +24 -0
- package/dist/services/backend-checks.d.ts.map +1 -0
- package/dist/services/backend-checks.js +105 -0
- package/dist/services/backend-checks.js.map +1 -0
- package/dist/services/compose-project.js +6 -6
- package/dist/services/compose-project.js.map +1 -1
- package/dist/services/container-state.d.ts +14 -0
- package/dist/services/container-state.d.ts.map +1 -0
- package/dist/services/container-state.js +70 -0
- package/dist/services/container-state.js.map +1 -0
- package/dist/services/deployment-drivers.d.ts.map +1 -1
- package/dist/services/deployment-drivers.js +77 -0
- package/dist/services/deployment-drivers.js.map +1 -1
- package/dist/services/diagnostics.d.ts +19 -2
- package/dist/services/diagnostics.d.ts.map +1 -1
- package/dist/services/diagnostics.js +213 -49
- package/dist/services/diagnostics.js.map +1 -1
- package/dist/services/tls-expiry.d.ts +16 -0
- package/dist/services/tls-expiry.d.ts.map +1 -0
- package/dist/services/tls-expiry.js +80 -0
- package/dist/services/tls-expiry.js.map +1 -0
- package/dist/types.d.ts +4 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
- package/templates/demo-config/trust-lists/trustlist-580831bc-ef11-43f4-a3be-a2b6bf1b29a3-config.json +1 -97
- package/templates/docker-compose.yml +35 -28
- package/templates/schemas/IssuanceConfig.schema.json +13 -0
- package/templates/schemas/IssuanceConfigFile.schema.json +663 -1
- package/templates/schemas/PresentationConfigCreateDto.schema.json +3 -6
- package/templates/schemas/PresentationConfigFile.schema.json +723 -1
package/README.md
CHANGED
|
@@ -112,7 +112,7 @@ Interactive `demo` runs use the same directory prompt. Pass a positional
|
|
|
112
112
|
directory, `--directory`, or `--yes` to skip it.
|
|
113
113
|
|
|
114
114
|
`init --preset minimal` writes a local `.eudiplo.env` using SQLite and local
|
|
115
|
-
storage. `standard` provisions PostgreSQL and
|
|
115
|
+
storage. `standard` provisions PostgreSQL and RustFS, while `full` additionally
|
|
116
116
|
provisions Vault. Arbitrary combinations are supported through the component
|
|
117
117
|
flags.
|
|
118
118
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
2
|
import { upgradeDocument } from "./migrations.js";
|
|
3
3
|
describe("offline configuration migrations", () => {
|
|
4
|
-
it("upgrades a v1 document without retaining metadata.id", () => {
|
|
4
|
+
it("upgrades a v1 issuance document to v2 without retaining metadata.id", () => {
|
|
5
5
|
const result = upgradeDocument({
|
|
6
6
|
$schema: "https://eudiplo.dev/schemas/v1/IssuanceConfigFile.schema.json",
|
|
7
7
|
metadata: { generation: 1 },
|
|
@@ -12,11 +12,13 @@ describe("offline configuration migrations", () => {
|
|
|
12
12
|
],
|
|
13
13
|
},
|
|
14
14
|
});
|
|
15
|
-
expect(result.document.$schema).toBe("https://eudiplo.dev/schemas/
|
|
15
|
+
expect(result.document.$schema).toBe("https://eudiplo.dev/schemas/v2/IssuanceConfigFile.schema.json");
|
|
16
16
|
expect(result.document.spec.walletProviderTrustLists).toEqual([
|
|
17
17
|
{ url: "https://example.com/trust-list" },
|
|
18
18
|
]);
|
|
19
|
-
expect(result.migrations).toEqual([
|
|
19
|
+
expect(result.migrations).toEqual([
|
|
20
|
+
"issuance-config-v2-offer-lifetime",
|
|
21
|
+
]);
|
|
20
22
|
expect(result.issues).toEqual([]);
|
|
21
23
|
});
|
|
22
24
|
it("refuses to guess when a document is newer than the CLI", () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.spec.js","sourceRoot":"","sources":["../../../../src/commands/config/portability/migrations.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAC9C,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"migrations.spec.js","sourceRoot":"","sources":["../../../../src/commands/config/portability/migrations.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAC9C,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC3E,MAAM,MAAM,GAAG,eAAe,CAAC;YAC3B,OAAO,EACH,+DAA+D;YACnE,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE;YAC3B,IAAI,EAAE;gBACF,oBAAoB,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;gBAC1D,wBAAwB,EAAE;oBACtB,EAAE,GAAG,EAAE,gCAAgC,EAAE;iBAC5C;aACJ;SACJ,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAChC,+DAA+D,CAClE,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,OAAO,CAAC;YAC1D,EAAE,GAAG,EAAE,gCAAgC,EAAE;SAC5C,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;YAC9B,mCAAmC;SACtC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAC9D,MAAM,CAAC,GAAG,EAAE,CACR,eAAe,CAAC;YACZ,OAAO,EACH,oEAAoE;YACxE,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,EAAE;SACX,CAAC,CACL,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type DoctorOptions } from "../../services/diagnostics.js";
|
|
1
2
|
import type { CliConfig, CommandContext, ParsedArgs } from "../../types.js";
|
|
2
|
-
export declare function runDoctorCommand(config: CliConfig, parsed: ParsedArgs, context: CommandContext): Promise<number>;
|
|
3
|
+
export declare function runDoctorCommand(config: CliConfig, parsed: ParsedArgs, context: CommandContext, options?: DoctorOptions): Promise<number>;
|
|
3
4
|
//# sourceMappingURL=action.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor/action.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor/action.ts"],"names":[],"mappings":"AACA,OAAO,EACH,KAAK,aAAa,EAMrB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,KAAK,EACR,SAAS,EACT,cAAc,EAEd,UAAU,EACb,MAAM,gBAAgB,CAAC;AAExB,wBAAsB,gBAAgB,CAClC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,cAAc,EACvB,OAAO,GAAE,aAAkB,GAC5B,OAAO,CAAC,MAAM,CAAC,CA2BjB"}
|
|
@@ -1,12 +1,30 @@
|
|
|
1
1
|
import { drivers } from "../../services/deployment-drivers.js";
|
|
2
|
-
import { formatChecks, hasFailedChecks, runDoctor, } from "../../services/diagnostics.js";
|
|
2
|
+
import { formatChecks, formatSummary, hasFailedChecks, runDoctor, summarizeChecks, } from "../../services/diagnostics.js";
|
|
3
3
|
import { resolveInstance } from "../../services/instance-selection.js";
|
|
4
|
-
export async function runDoctorCommand(config, parsed, context) {
|
|
5
|
-
const
|
|
4
|
+
export async function runDoctorCommand(config, parsed, context, options = {}) {
|
|
5
|
+
const strict = parsed.flags.strict === true;
|
|
6
|
+
const instances = parsed.flags.all === true
|
|
7
|
+
? Object.keys(config.instances)
|
|
8
|
+
: [resolveInstance(config, parsed)[0]];
|
|
9
|
+
if (instances.length === 0) {
|
|
10
|
+
throw new Error("No instances are configured.");
|
|
11
|
+
}
|
|
12
|
+
let failed = false;
|
|
13
|
+
for (const [index, instanceName] of instances.entries()) {
|
|
14
|
+
const instance = config.instances[instanceName];
|
|
15
|
+
if (index > 0) {
|
|
16
|
+
context.stdout.write("\n");
|
|
17
|
+
}
|
|
18
|
+
const checks = await runDiagnostics(instance, context, options);
|
|
19
|
+
context.stdout.write(`Doctor for ${instanceName} (${instance.target})\n`);
|
|
20
|
+
context.stdout.write(`${formatChecks(checks)}\n`);
|
|
21
|
+
context.stdout.write(`${formatSummary(summarizeChecks(checks))}\n`);
|
|
22
|
+
failed = hasFailedChecks(checks, strict) || failed;
|
|
23
|
+
}
|
|
24
|
+
return failed ? 1 : 0;
|
|
25
|
+
}
|
|
26
|
+
async function runDiagnostics(instance, context, options) {
|
|
6
27
|
const driver = drivers[instance.target];
|
|
7
|
-
|
|
8
|
-
context.stdout.write(`Doctor for ${instanceName} (${instance.target})\n`);
|
|
9
|
-
context.stdout.write(`${formatChecks(checks)}\n`);
|
|
10
|
-
return hasFailedChecks(checks) ? 1 : 0;
|
|
28
|
+
return runDoctor(instance, context, await driver.diagnostics(instance, context), options);
|
|
11
29
|
}
|
|
12
30
|
//# sourceMappingURL=action.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/commands/doctor/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAC/D,OAAO,
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/commands/doctor/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAC/D,OAAO,EAEH,YAAY,EACZ,aAAa,EACb,eAAe,EACf,SAAS,EACT,eAAe,GAClB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAQvE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAClC,MAAiB,EACjB,MAAkB,EAClB,OAAuB,EACvB,OAAO,GAAkB,EAAE;IAE3B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC;IAC5C,MAAM,SAAS,GACX,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI;QACrB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QAC/B,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,KAAK,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;QACtD,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAChE,OAAO,CAAC,MAAM,CAAC,KAAK,CAChB,cAAc,YAAY,KAAK,QAAQ,CAAC,MAAM,KAAK,CACtD,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC;IACvD,CAAC;IAED,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,cAAc,CACzB,QAAwC,EACxC,OAAuB,EACvB,OAAsB;IAEtB,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,SAAS,CACZ,QAAQ,EACR,OAAO,EACP,MAAM,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,EAC3C,OAAO,CACV,CAAC;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAA4B,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAG1E,wBAAgB,mBAAmB,CAC/B,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,WAAW,GACzB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAA4B,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAG1E,wBAAgB,mBAAmB,CAC/B,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,WAAW,GACzB,OAAO,CAmBT"}
|
|
@@ -5,6 +5,8 @@ export function createDoctorCommand(context, setExitCode) {
|
|
|
5
5
|
return new Command("doctor")
|
|
6
6
|
.description("Run deployment diagnostics")
|
|
7
7
|
.option("--instance <name>", "select a configured instance")
|
|
8
|
+
.option("--all", "run the checks for every configured instance")
|
|
9
|
+
.option("--strict", "treat warnings as failures (skipped checks never fail)")
|
|
8
10
|
.action(async (options) => {
|
|
9
11
|
const { config } = await loadCliState(context);
|
|
10
12
|
setExitCode(await runDoctorCommand(config, parsedArgs("doctor", undefined, [], options), context));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/doctor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAoB,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,UAAU,mBAAmB,CAC/B,OAAuB,EACvB,WAAwB;IAExB,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;SACvB,WAAW,CAAC,4BAA4B,CAAC;SACzC,MAAM,CAAC,mBAAmB,EAAE,8BAA8B,CAAC;SAC3D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACtB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;QAC/C,WAAW,CACP,MAAM,gBAAgB,CAClB,MAAM,EACN,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,EAC5C,OAAO,CACV,CACJ,CAAC;IACN,CAAC,CAAC,CAAC;AACX,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/doctor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAoB,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,UAAU,mBAAmB,CAC/B,OAAuB,EACvB,WAAwB;IAExB,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;SACvB,WAAW,CAAC,4BAA4B,CAAC;SACzC,MAAM,CAAC,mBAAmB,EAAE,8BAA8B,CAAC;SAC3D,MAAM,CAAC,OAAO,EAAE,8CAA8C,CAAC;SAC/D,MAAM,CACH,UAAU,EACV,wDAAwD,CAC3D;SACA,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACtB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;QAC/C,WAAW,CACP,MAAM,gBAAgB,CAClB,MAAM,EACN,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,EAC5C,OAAO,CACV,CACJ,CAAC;IACN,CAAC,CAAC,CAAC;AACX,CAAC"}
|