@eudiplo/cli 7.6.1-main.8bbb627 → 7.6.1-main.b6900cb

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.
Files changed (91) hide show
  1. package/dist/commands/config/portability/action.d.ts +1 -1
  2. package/dist/commands/config/portability/action.d.ts.map +1 -1
  3. package/dist/commands/config/portability/action.js +49 -95
  4. package/dist/commands/config/portability/action.js.map +1 -1
  5. package/dist/commands/config/portability/index.d.ts.map +1 -1
  6. package/dist/commands/config/portability/index.js +37 -5
  7. package/dist/commands/config/portability/index.js.map +1 -1
  8. package/dist/commands/config/portability/migrations.d.ts +3 -21
  9. package/dist/commands/config/portability/migrations.d.ts.map +1 -1
  10. package/dist/commands/config/portability/migrations.js +4 -92
  11. package/dist/commands/config/portability/migrations.js.map +1 -1
  12. package/dist/commands/config/portability/migrations.spec.js +12 -14
  13. package/dist/commands/config/portability/migrations.spec.js.map +1 -1
  14. package/dist/commands/config/portability/upgrade.d.ts +3 -0
  15. package/dist/commands/config/portability/upgrade.d.ts.map +1 -0
  16. package/dist/commands/config/portability/upgrade.js +199 -0
  17. package/dist/commands/config/portability/upgrade.js.map +1 -0
  18. package/dist/commands/config/tenant/action.js +3 -4
  19. package/dist/commands/config/tenant/action.js.map +1 -1
  20. package/dist/commands/config/validate/validator.d.ts.map +1 -1
  21. package/dist/commands/config/validate/validator.js +50 -30
  22. package/dist/commands/config/validate/validator.js.map +1 -1
  23. package/dist/commands/demo/action.d.ts.map +1 -1
  24. package/dist/commands/demo/action.js +2 -0
  25. package/dist/commands/demo/action.js.map +1 -1
  26. package/dist/commands/deployment/action.d.ts +1 -1
  27. package/dist/commands/deployment/action.d.ts.map +1 -1
  28. package/dist/commands/deployment/action.js +1 -0
  29. package/dist/commands/deployment/action.js.map +1 -1
  30. package/dist/commands/deployment/index.d.ts.map +1 -1
  31. package/dist/commands/deployment/index.js +29 -9
  32. package/dist/commands/deployment/index.js.map +1 -1
  33. package/dist/commands/init/action.d.ts.map +1 -1
  34. package/dist/commands/init/action.js +1 -0
  35. package/dist/commands/init/action.js.map +1 -1
  36. package/dist/commands/instance/action.d.ts.map +1 -1
  37. package/dist/commands/instance/action.js +42 -1
  38. package/dist/commands/instance/action.js.map +1 -1
  39. package/dist/commands/instance/index.d.ts.map +1 -1
  40. package/dist/commands/instance/index.js +5 -1
  41. package/dist/commands/instance/index.js.map +1 -1
  42. package/dist/services/cli-config.d.ts.map +1 -1
  43. package/dist/services/cli-config.js +46 -1
  44. package/dist/services/cli-config.js.map +1 -1
  45. package/dist/services/deployment-drivers.d.ts +10 -0
  46. package/dist/services/deployment-drivers.d.ts.map +1 -1
  47. package/dist/services/deployment-drivers.js +357 -6
  48. package/dist/services/deployment-drivers.js.map +1 -1
  49. package/dist/services/deployment-target.js +1 -1
  50. package/dist/services/deployment-target.js.map +1 -1
  51. package/dist/services/diagnostics.d.ts +3 -9
  52. package/dist/services/diagnostics.d.ts.map +1 -1
  53. package/dist/services/diagnostics.js +1 -7
  54. package/dist/services/diagnostics.js.map +1 -1
  55. package/dist/services/kubectl.d.ts +51 -0
  56. package/dist/services/kubectl.d.ts.map +1 -0
  57. package/dist/services/kubectl.js +150 -0
  58. package/dist/services/kubectl.js.map +1 -0
  59. package/dist/types.d.ts +15 -2
  60. package/dist/types.d.ts.map +1 -1
  61. package/package.json +3 -2
  62. package/templates/demo-config/attribute-providers/claims-provider.json +8 -2
  63. package/templates/demo-config/clients/presentation-test.json +8 -2
  64. package/templates/demo-config/clients/test.json +12 -6
  65. package/templates/demo-config/info.json +7 -1
  66. package/templates/demo-config/issuance/credentials/citizen.json +43 -37
  67. package/templates/demo-config/issuance/credentials/pid-key.json +371 -365
  68. package/templates/demo-config/issuance/credentials/pid-mdoc.json +444 -438
  69. package/templates/demo-config/issuance/credentials/pid.json +472 -466
  70. package/templates/demo-config/issuance/issuance.json +1 -3
  71. package/templates/demo-config/issuance/status-lists/pid.json +12 -6
  72. package/templates/demo-config/key-chains/access.json +2 -4
  73. package/templates/demo-config/key-chains/attestation.json +2 -4
  74. package/templates/demo-config/key-chains/status-list.json +1 -3
  75. package/templates/demo-config/key-chains/trust-list.json +1 -3
  76. package/templates/demo-config/presentation/age-over-18.json +20 -7
  77. package/templates/demo-config/presentation/pid.json +1 -3
  78. package/templates/demo-config/trust-lists/trustlist-580831bc-ef11-43f4-a3be-a2b6bf1b29a3-config.json +96 -90
  79. package/templates/demo-config/webhook-endpoints/notification.json +8 -2
  80. package/templates/schemas/AttributeProviderConfigFile.schema.json +38 -15
  81. package/templates/schemas/ClientConfigFile.schema.json +38 -15
  82. package/templates/schemas/CredentialConfigFile.schema.json +38 -15
  83. package/templates/schemas/IssuanceConfigFile.schema.json +24 -12
  84. package/templates/schemas/KeyChainConfigFile.schema.json +373 -19
  85. package/templates/schemas/KmsConfigFile.schema.json +21 -14
  86. package/templates/schemas/PresentationConfigFile.schema.json +41 -13
  87. package/templates/schemas/RegistrarConfigFile.schema.json +21 -14
  88. package/templates/schemas/StatusListConfigFile.schema.json +38 -15
  89. package/templates/schemas/TenantConfigFile.schema.json +136 -20
  90. package/templates/schemas/TrustListConfigFile.schema.json +38 -15
  91. package/templates/schemas/WebhookEndpointConfigFile.schema.json +38 -15
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Every kubectl invocation carries an explicit context and namespace so a
3
+ * command can never fall through to whatever the user's current kubeconfig
4
+ * happens to point at.
5
+ */
6
+ function scopeArgs(scope) {
7
+ return [
8
+ "--context",
9
+ scope.context,
10
+ "--namespace",
11
+ scope.namespace,
12
+ ];
13
+ }
14
+ export function resolveScope(instance, instanceName) {
15
+ if (!instance.context) {
16
+ throw new Error(`Instance ${instanceName} does not define a Kubernetes context.`);
17
+ }
18
+ if (!instance.namespace) {
19
+ throw new Error(`Instance ${instanceName} does not define a Kubernetes namespace.`);
20
+ }
21
+ return { context: instance.context, namespace: instance.namespace };
22
+ }
23
+ /**
24
+ * Workload names from deployment/k8s/base, used when an instance is registered
25
+ * without an explicit --workload map.
26
+ */
27
+ export const defaultWorkloads = {
28
+ backend: "deployment/eudiplo",
29
+ client: "deployment/eudiplo-client",
30
+ };
31
+ /**
32
+ * Resolves a `--service` value against the configured workload map. Refuses
33
+ * to guess: with several workloads configured and no service named, the
34
+ * caller has to be explicit.
35
+ */
36
+ export function resolveWorkload(instance, service) {
37
+ const workloads = instance.workloads ?? {};
38
+ const names = Object.keys(workloads).sort();
39
+ if (names.length === 0) {
40
+ throw new Error("No workloads are configured for this instance. Add them with: eudiplo instance add --workload <service>=<kind>/<name>");
41
+ }
42
+ if (service === undefined) {
43
+ if (names.length === 1) {
44
+ return workloads[names[0]];
45
+ }
46
+ throw new Error(`Several workloads are configured (${names.join(", ")}). Name one with --service.`);
47
+ }
48
+ const workload = workloads[service];
49
+ if (!workload) {
50
+ throw new Error(`Unknown service ${service}. Configured services: ${names.join(", ")}.`);
51
+ }
52
+ return workload;
53
+ }
54
+ export function resolveWorkloads(instance, service) {
55
+ if (service !== undefined) {
56
+ return [resolveWorkload(instance, service)];
57
+ }
58
+ const workloads = instance.workloads ?? {};
59
+ return Object.keys(workloads)
60
+ .sort()
61
+ .map((name) => workloads[name]);
62
+ }
63
+ export function buildGetPodsArgs(scope) {
64
+ return ["get", "pods", ...scopeArgs(scope), "--output", "wide"];
65
+ }
66
+ export function buildGetWorkloadArgs(scope, workload) {
67
+ return ["get", workload, ...scopeArgs(scope), "--output", "json"];
68
+ }
69
+ export function buildLogsArgs(scope, workload, options = {}) {
70
+ const args = ["logs", workload, ...scopeArgs(scope)];
71
+ if (options.follow === true) {
72
+ args.push("--follow");
73
+ }
74
+ if (options.tail !== undefined) {
75
+ args.push("--tail", String(options.tail));
76
+ }
77
+ return args;
78
+ }
79
+ export function buildRestartArgs(scope, workload) {
80
+ return ["rollout", "restart", workload, ...scopeArgs(scope)];
81
+ }
82
+ export function buildRolloutStatusArgs(scope, workload) {
83
+ return ["rollout", "status", workload, ...scopeArgs(scope)];
84
+ }
85
+ export function buildCanIArgs(scope, verb, resource) {
86
+ return ["auth", "can-i", verb, resource, ...scopeArgs(scope)];
87
+ }
88
+ /**
89
+ * EndpointSlice rather than Endpoints: the v1 Endpoints API is deprecated from
90
+ * Kubernetes 1.33 and reading it makes the API server emit a deprecation
91
+ * warning on every call.
92
+ */
93
+ export function buildGetEndpointSlicesArgs(scope) {
94
+ return ["get", "endpointslices", ...scopeArgs(scope), "--output", "json"];
95
+ }
96
+ const dns1123Label = /^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/;
97
+ const workloadReference = /^[a-z][a-z0-9.-]*\/[a-z0-9]([a-z0-9.-]*[a-z0-9])?$/;
98
+ /**
99
+ * Namespaces are DNS-1123 labels, which cannot start with a hyphen. Checking
100
+ * the shape here means a configured value can never be read by kubectl as a
101
+ * flag rather than as an argument.
102
+ */
103
+ export function assertNamespace(value, label) {
104
+ if (!dns1123Label.test(value) || value.length > 63) {
105
+ throw new Error(`${label} must be a lowercase DNS-1123 label (letters, digits and hyphens, not starting or ending with a hyphen).`);
106
+ }
107
+ }
108
+ /**
109
+ * Context names are freer-form than namespaces, so this only rules out the
110
+ * shapes that would be ambiguous on a command line.
111
+ */
112
+ export function assertContextName(value, label) {
113
+ if (value.length === 0 || value.startsWith("-") || /\s/.test(value)) {
114
+ throw new Error(`${label} must not be empty, start with a hyphen or contain whitespace.`);
115
+ }
116
+ }
117
+ export function assertWorkloadReference(value, label) {
118
+ if (!workloadReference.test(value)) {
119
+ throw new Error(`${label} must be a workload reference of the form <kind>/<name>, for example deployment/eudiplo.`);
120
+ }
121
+ }
122
+ /**
123
+ * Parses `backend=deployment/eudiplo,client=deployment/eudiplo-client` into a
124
+ * workload map, validating each reference as it goes.
125
+ */
126
+ export function parseWorkloadMap(value) {
127
+ const workloads = {};
128
+ for (const entry of value.split(",")) {
129
+ const trimmed = entry.trim();
130
+ if (trimmed.length === 0) {
131
+ continue;
132
+ }
133
+ const separator = trimmed.indexOf("=");
134
+ if (separator <= 0) {
135
+ throw new Error(`Workload ${trimmed} must be given as <service>=<kind>/<name>.`);
136
+ }
137
+ const service = trimmed.slice(0, separator).trim();
138
+ const reference = trimmed.slice(separator + 1).trim();
139
+ if (Object.hasOwn(workloads, service)) {
140
+ throw new Error(`Workload ${service} was given more than once.`);
141
+ }
142
+ assertWorkloadReference(reference, `Workload ${service}`);
143
+ workloads[service] = reference;
144
+ }
145
+ if (Object.keys(workloads).length === 0) {
146
+ throw new Error("At least one workload must be given.");
147
+ }
148
+ return workloads;
149
+ }
150
+ //# sourceMappingURL=kubectl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kubectl.js","sourceRoot":"","sources":["../../src/services/kubectl.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export type DeploymentTarget = "compose" | "external";
1
+ export type DeploymentTarget = "compose" | "external" | "kubernetes";
2
2
  type CliInstallationMethod = "npm" | "standalone";
3
3
  export interface InstanceConfig {
4
4
  target: DeploymentTarget;
@@ -10,6 +10,10 @@ export interface InstanceConfig {
10
10
  envFile?: string;
11
11
  projectName?: string;
12
12
  projectDirectory?: string;
13
+ context?: string;
14
+ namespace?: string;
15
+ workloads?: Record<string, string>;
16
+ readOnly?: boolean;
13
17
  }
14
18
  export interface CliConfig {
15
19
  defaultInstance?: string;
@@ -29,14 +33,23 @@ export interface DriverCommandOptions {
29
33
  instanceName: string;
30
34
  instance: InstanceConfig;
31
35
  args: string[];
36
+ flags: Record<string, string | boolean>;
32
37
  context: CommandContext;
33
38
  }
39
+ export type CheckStatus = "pass" | "warn" | "fail";
40
+ export interface DoctorCheck {
41
+ name: string;
42
+ status: CheckStatus;
43
+ message: string;
44
+ }
34
45
  export interface DeploymentDriver {
35
46
  target: DeploymentTarget;
36
- diagnostics(instance: InstanceConfig, context: CommandContext): Promise<string[]>;
47
+ diagnostics(instance: InstanceConfig, context: CommandContext): Promise<DoctorCheck[]>;
37
48
  up?(options: DriverCommandOptions): Promise<number>;
38
49
  down?(options: DriverCommandOptions): Promise<number>;
39
50
  logs?(options: DriverCommandOptions): Promise<number>;
51
+ ps?(options: DriverCommandOptions): Promise<number>;
52
+ restart?(options: DriverCommandOptions): Promise<number>;
40
53
  }
41
54
  export interface ParsedArgs {
42
55
  command?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,UAAU,CAAC;AACtD,KAAK,qBAAqB,GAAG,KAAK,GAAG,YAAY,CAAC;AAElD,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,gBAAgB,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,SAAS;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,cAAc;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,kBAAkB,CAAC,EAAE,qBAAqB,CAAC;IAC3C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC1C,KAAK,EAAE,OAAO,KAAK,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,cAAc,CAAC;IACzB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,cAAc,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,gBAAgB,CAAC;IACzB,WAAW,CACP,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,cAAc,GACxB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACrB,EAAE,CAAC,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,CAAC,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,IAAI,CAAC,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,UAAU;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;CAC3C"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;AACrE,KAAK,qBAAqB,GAAG,KAAK,GAAG,YAAY,CAAC;AAElD,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,gBAAgB,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,cAAc;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,kBAAkB,CAAC,EAAE,qBAAqB,CAAC;IAC3C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC1C,KAAK,EAAE,OAAO,KAAK,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,cAAc,CAAC;IACzB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;IACxC,OAAO,EAAE,cAAc,CAAC;CAC3B;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEnD,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,gBAAgB,CAAC;IACzB,WAAW,CACP,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,cAAc,GACxB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1B,EAAE,CAAC,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,CAAC,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,IAAI,CAAC,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,EAAE,CAAC,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,OAAO,CAAC,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,UAAU;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;CAC3C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eudiplo/cli",
3
- "version": "7.6.1-main.8bbb627",
3
+ "version": "7.6.1-main.b6900cb",
4
4
  "description": "Deployment-aware command line tools for EUDIPLO",
5
5
  "private": false,
6
6
  "type": "module",
@@ -49,6 +49,7 @@
49
49
  "access": "public"
50
50
  },
51
51
  "dependencies": {
52
+ "@eudiplo/config-format": "workspace:*",
52
53
  "ajv": "^8.20.0",
53
54
  "ajv-formats": "^3.0.1",
54
55
  "commander": "^15.0.0",
@@ -56,7 +57,7 @@
56
57
  "jsonc-parser": "^3.3.1"
57
58
  },
58
59
  "devDependencies": {
59
- "@biomejs/biome": "2.5.12",
60
+ "@biomejs/biome": "2.5.13",
60
61
  "@types/node": "^26.4.0",
61
62
  "esbuild": "^0.28.2",
62
63
  "tsx": "^4.23.13",
@@ -1,9 +1,15 @@
1
1
  {
2
+ "$schema": "https://eudiplo.dev/schemas/v1/AttributeProviderConfigFile.schema.json",
3
+ "metadata": {
4
+ "generation": 1
5
+ },
6
+ "spec": {
2
7
  "id": "claims-provider",
3
8
  "name": "Claims Provider",
4
9
  "description": "Provides dynamic claim values during credential issuance",
5
10
  "url": "${ATTRIBUTE_PROVIDER_URL:http://localhost:8787}",
6
11
  "auth": {
7
- "type": "none"
12
+ "type": "none"
8
13
  }
9
- }
14
+ }
15
+ }
@@ -1,9 +1,15 @@
1
1
  {
2
+ "$schema": "https://eudiplo.dev/schemas/v1/ClientConfigFile.schema.json",
3
+ "metadata": {
4
+ "generation": 1
5
+ },
6
+ "spec": {
2
7
  "clientId": "presentation-test",
3
8
  "secret": "${PRESENTATION_TEST_CLIENT_SECRET:presentation-test-secret}",
4
9
  "description": "Load test client for OID4VP presentation scenarios",
5
10
  "roles": [
6
- "presentation:request",
7
- "presentation:manage"
11
+ "presentation:request",
12
+ "presentation:manage"
8
13
  ]
14
+ }
9
15
  }
@@ -1,12 +1,18 @@
1
1
  {
2
+ "$schema": "https://eudiplo.dev/schemas/v1/ClientConfigFile.schema.json",
3
+ "metadata": {
4
+ "generation": 1
5
+ },
6
+ "spec": {
2
7
  "clientId": "test-client",
3
8
  "secret": "${TEST_CLIENT_SECRET:test-client-secret}",
4
9
  "description": "Test client",
5
10
  "roles": [
6
- "clients:manage",
7
- "issuance:offer",
8
- "issuance:manage",
9
- "presentation:request",
10
- "presentation:manage"
11
+ "clients:manage",
12
+ "issuance:offer",
13
+ "issuance:manage",
14
+ "presentation:request",
15
+ "presentation:manage"
11
16
  ]
12
- }
17
+ }
18
+ }
@@ -1,4 +1,10 @@
1
1
  {
2
+ "$schema": "https://eudiplo.dev/schemas/v1/TenantConfigFile.schema.json",
3
+ "metadata": {
4
+ "generation": 1
5
+ },
6
+ "spec": {
2
7
  "name": "Demo Tenant",
3
8
  "description": "The demo tenant for the EUDI Wallet"
4
- }
9
+ }
10
+ }
@@ -1,41 +1,47 @@
1
1
  {
2
- "id": "citizen",
3
- "description": "Citizen issuance with IAE flow",
4
- "config": {
5
- "format": "dc+sd-jwt",
6
- "display": [
2
+ "$schema": "https://eudiplo.dev/schemas/v1/CredentialConfigFile.schema.json",
3
+ "metadata": {
4
+ "generation": 1
5
+ },
6
+ "spec": {
7
+ "id": "citizen",
8
+ "description": "Citizen issuance with IAE flow",
9
+ "config": {
10
+ "format": "dc+sd-jwt",
11
+ "display": [
12
+ {
13
+ "name": "Citizen Pass",
14
+ "background_color": "#FFFFFF",
15
+ "background_image": {
16
+ "uri": "credential.png"
17
+ },
18
+ "description": "A pass for this citizen",
19
+ "locale": "en-US",
20
+ "text_color": "#000000"
21
+ }
22
+ ]
23
+ },
24
+ "iaeActions": [
25
+ {
26
+ "type": "openid4vp_presentation",
27
+ "presentationConfigId": "pid",
28
+ "label": "KYC process"
29
+ }
30
+ ],
31
+ "vct": {
32
+ "name": "Citizen",
33
+ "description": "This is our development version of the education credential. Don't panic."
34
+ },
35
+ "fields": [
7
36
  {
8
- "name": "Citizen Pass",
9
- "background_color": "#FFFFFF",
10
- "background_image": {
11
- "uri": "credential.png"
12
- },
13
- "description": "A pass for this citizen",
14
- "locale": "en-US",
15
- "text_color": "#000000"
37
+ "path": [
38
+ "town"
39
+ ],
40
+ "type": "string",
41
+ "defaultValue": "BERLIN",
42
+ "mandatory": true,
43
+ "disclosable": false
16
44
  }
17
45
  ]
18
- },
19
- "iaeActions": [
20
- {
21
- "type": "openid4vp_presentation",
22
- "presentationConfigId": "pid",
23
- "label": "KYC process"
24
- }
25
- ],
26
- "vct": {
27
- "name": "Citizen",
28
- "description": "This is our development version of the education credential. Don't panic."
29
- },
30
- "fields": [
31
- {
32
- "path": [
33
- "town"
34
- ],
35
- "type": "string",
36
- "defaultValue": "BERLIN",
37
- "mandatory": true,
38
- "disclosable": false
39
- }
40
- ]
41
- }
46
+ }
47
+ }