@eudiplo/cli 9.1.0-main.b3aa53d → 9.1.0-main.b97c2d6

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 (64) hide show
  1. package/dist/commands/completion/action.js +3 -1
  2. package/dist/commands/completion/action.js.map +1 -1
  3. package/dist/commands/config/portability/migrations.spec.js +4 -2
  4. package/dist/commands/config/portability/migrations.spec.js.map +1 -1
  5. package/dist/commands/config/validate/action.d.ts.map +1 -1
  6. package/dist/commands/config/validate/action.js +2 -1
  7. package/dist/commands/config/validate/action.js.map +1 -1
  8. package/dist/commands/config/validate/registry.json +10 -0
  9. package/dist/commands/init/action.d.ts.map +1 -1
  10. package/dist/commands/init/action.js +1 -11
  11. package/dist/commands/init/action.js.map +1 -1
  12. package/dist/commands/instance/action.d.ts +2 -0
  13. package/dist/commands/instance/action.d.ts.map +1 -1
  14. package/dist/commands/instance/action.js +68 -12
  15. package/dist/commands/instance/action.js.map +1 -1
  16. package/dist/commands/instance/index.d.ts.map +1 -1
  17. package/dist/commands/instance/index.js +21 -3
  18. package/dist/commands/instance/index.js.map +1 -1
  19. package/dist/commands/open/action.d.ts.map +1 -1
  20. package/dist/commands/open/action.js +13 -2
  21. package/dist/commands/open/action.js.map +1 -1
  22. package/dist/commands/status/action.d.ts.map +1 -1
  23. package/dist/commands/status/action.js +2 -1
  24. package/dist/commands/status/action.js.map +1 -1
  25. package/dist/index.js +4922 -845
  26. package/dist/services/api-auth.d.ts.map +1 -1
  27. package/dist/services/api-auth.js +3 -2
  28. package/dist/services/api-auth.js.map +1 -1
  29. package/dist/services/browser.d.ts.map +1 -1
  30. package/dist/services/browser.js +3 -2
  31. package/dist/services/browser.js.map +1 -1
  32. package/dist/services/cli-config.d.ts +41 -1
  33. package/dist/services/cli-config.d.ts.map +1 -1
  34. package/dist/services/cli-config.js +217 -29
  35. package/dist/services/cli-config.js.map +1 -1
  36. package/dist/services/diagnostics.d.ts.map +1 -1
  37. package/dist/services/diagnostics.js +8 -7
  38. package/dist/services/diagnostics.js.map +1 -1
  39. package/dist/services/instance-selection.d.ts.map +1 -1
  40. package/dist/services/instance-selection.js +2 -5
  41. package/dist/services/instance-selection.js.map +1 -1
  42. package/dist/services/url.d.ts +21 -0
  43. package/dist/services/url.d.ts.map +1 -0
  44. package/dist/services/url.js +61 -0
  45. package/dist/services/url.js.map +1 -0
  46. package/package.json +4 -3
  47. package/templates/demo-config/key-chains/status-list.json +3 -3
  48. package/templates/docker-compose.yml +2 -2
  49. package/templates/schemas/CreateFederationTrustAnchorDto.schema.json +82 -0
  50. package/templates/schemas/CreateRegistrarConfigDto.schema.json +29 -0
  51. package/templates/schemas/FederationTrustAnchorConfigFile.schema.json +60 -0
  52. package/templates/schemas/ImportTenantDto.schema.json +12 -0
  53. package/templates/schemas/IssuanceConfig.schema.json +120 -2
  54. package/templates/schemas/IssuanceConfigFile.schema.json +1434 -1
  55. package/templates/schemas/KeyChainConfigFile.schema.json +370 -1
  56. package/templates/schemas/KeyChainCreateDto.schema.json +10 -0
  57. package/templates/schemas/KeyChainImportDto.schema.json +1 -0
  58. package/templates/schemas/KmsConfigDto.schema.json +186 -0
  59. package/templates/schemas/KmsConfigFile.schema.json +1026 -1
  60. package/templates/schemas/RegistrarConfigFile.schema.json +101 -1
  61. package/templates/schemas/TenantConfigFile.schema.json +281 -0
  62. package/templates/schemas/UpdateFederationTrustAnchorDto.schema.json +70 -0
  63. package/templates/schemas/UpdateTenantDto.schema.json +20 -0
  64. package/templates/schemas.manifest.json +3 -0
@@ -9,7 +9,7 @@
9
9
  "properties": {
10
10
  "$schema": {
11
11
  "type": "string",
12
- "const": "https://eudiplo.dev/schemas/v1/RegistrarConfigFile.schema.json"
12
+ "const": "https://eudiplo.dev/schemas/v2/RegistrarConfigFile.schema.json"
13
13
  },
14
14
  "metadata": {
15
15
  "type": "object",
@@ -39,6 +39,106 @@
39
39
  "spec"
40
40
  ],
41
41
  "additionalProperties": false
42
+ },
43
+ {
44
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
45
+ "$id": "https://eudiplo.dev/schemas/v1/RegistrarConfigFile.schema.json",
46
+ "title": "RegistrarConfigFile",
47
+ "type": "object",
48
+ "properties": {
49
+ "$schema": {
50
+ "type": "string",
51
+ "const": "https://eudiplo.dev/schemas/v1/RegistrarConfigFile.schema.json"
52
+ },
53
+ "metadata": {
54
+ "type": "object",
55
+ "properties": {
56
+ "generation": {
57
+ "type": "integer",
58
+ "minimum": 1,
59
+ "description": "Monotonically increasing configuration generation."
60
+ },
61
+ "ownership": {
62
+ "type": "string",
63
+ "enum": [
64
+ "unmanaged",
65
+ "file-managed"
66
+ ],
67
+ "description": "Requested ownership recorded when the document is applied."
68
+ }
69
+ },
70
+ "additionalProperties": false
71
+ },
72
+ "spec": {
73
+ "$ref": "#/$defs/CreateRegistrarConfigDto"
74
+ }
75
+ },
76
+ "required": [
77
+ "$schema",
78
+ "spec"
79
+ ],
80
+ "additionalProperties": false,
81
+ "$defs": {
82
+ "CreateRegistrarConfigDto": {
83
+ "type": "object",
84
+ "properties": {
85
+ "registrarUrl": {
86
+ "type": "string",
87
+ "format": "uri",
88
+ "description": "Base URL of the registrar service."
89
+ },
90
+ "oidcUrl": {
91
+ "type": "string",
92
+ "format": "uri",
93
+ "description": "OIDC discovery or issuer URL used for authentication."
94
+ },
95
+ "clientId": {
96
+ "type": "string",
97
+ "minLength": 1,
98
+ "description": "OAuth client ID used against the registrar."
99
+ },
100
+ "clientSecret": {
101
+ "description": "Optional OAuth client secret for registrar authentication.",
102
+ "type": "string",
103
+ "minLength": 1
104
+ },
105
+ "username": {
106
+ "type": "string",
107
+ "minLength": 1,
108
+ "description": "Username used for registrar authentication."
109
+ },
110
+ "password": {
111
+ "type": "string",
112
+ "minLength": 1,
113
+ "description": "Password used for registrar authentication."
114
+ },
115
+ "registrationCertificateDefaults": {
116
+ "description": "Optional default registration certificate values.",
117
+ "anyOf": [
118
+ {
119
+ "type": "object",
120
+ "propertyNames": {
121
+ "type": "string"
122
+ },
123
+ "additionalProperties": {}
124
+ },
125
+ {
126
+ "type": "null"
127
+ }
128
+ ]
129
+ }
130
+ },
131
+ "required": [
132
+ "registrarUrl",
133
+ "oidcUrl",
134
+ "clientId",
135
+ "username",
136
+ "password"
137
+ ],
138
+ "additionalProperties": false,
139
+ "title": "CreateRegistrarConfigDto"
140
+ }
141
+ }
42
142
  }
43
143
  ]
44
144
  }
@@ -5,6 +5,144 @@
5
5
  "description": "Configuration file identified by its $schema URL.",
6
6
  "oneOf": [
7
7
  {
8
+ "type": "object",
9
+ "properties": {
10
+ "$schema": {
11
+ "type": "string",
12
+ "const": "https://eudiplo.dev/schemas/v3/TenantConfigFile.schema.json"
13
+ },
14
+ "metadata": {
15
+ "type": "object",
16
+ "properties": {
17
+ "generation": {
18
+ "type": "integer",
19
+ "minimum": 1,
20
+ "maximum": 9007199254740991
21
+ },
22
+ "ownership": {
23
+ "type": "string",
24
+ "enum": [
25
+ "unmanaged",
26
+ "file-managed"
27
+ ]
28
+ }
29
+ },
30
+ "additionalProperties": false
31
+ },
32
+ "spec": {
33
+ "type": "object",
34
+ "properties": {
35
+ "name": {
36
+ "default": "EUDIPLO",
37
+ "description": "Display name of the tenant.",
38
+ "type": "string",
39
+ "minLength": 1
40
+ },
41
+ "description": {
42
+ "description": "Optional tenant description.",
43
+ "type": "string",
44
+ "minLength": 1
45
+ },
46
+ "sessionConfig": {
47
+ "description": "Optional tenant-specific session storage configuration.",
48
+ "type": "object",
49
+ "properties": {
50
+ "ttlSeconds": {
51
+ "description": "Session time-to-live in seconds.",
52
+ "type": "integer",
53
+ "minimum": 60,
54
+ "maximum": 9007199254740991
55
+ },
56
+ "cleanupMode": {
57
+ "description": "Whether to fully delete or anonymize expired sessions.",
58
+ "type": "string",
59
+ "enum": [
60
+ "full",
61
+ "anonymize"
62
+ ]
63
+ }
64
+ },
65
+ "additionalProperties": false
66
+ },
67
+ "statusListConfig": {
68
+ "description": "Optional tenant-specific status list defaults.",
69
+ "type": "object",
70
+ "properties": {
71
+ "capacity": {
72
+ "description": "Default status list capacity.",
73
+ "type": "integer",
74
+ "minimum": 100,
75
+ "maximum": 9007199254740991
76
+ },
77
+ "bits": {
78
+ "description": "Bits-per-status setting (1, 2, 4, or 8).",
79
+ "anyOf": [
80
+ {
81
+ "type": "number",
82
+ "const": 1
83
+ },
84
+ {
85
+ "type": "number",
86
+ "const": 2
87
+ },
88
+ {
89
+ "type": "number",
90
+ "const": 4
91
+ },
92
+ {
93
+ "type": "number",
94
+ "const": 8
95
+ }
96
+ ]
97
+ },
98
+ "ttl": {
99
+ "description": "JWT TTL for status list tokens in seconds.",
100
+ "type": "integer",
101
+ "minimum": 60,
102
+ "maximum": 9007199254740991
103
+ },
104
+ "immediateUpdate": {
105
+ "description": "Regenerate status list JWTs immediately after status updates.",
106
+ "type": "boolean"
107
+ },
108
+ "enableAggregation": {
109
+ "description": "Include aggregation_uri in generated status list JWTs.",
110
+ "type": "boolean"
111
+ }
112
+ },
113
+ "additionalProperties": false
114
+ },
115
+ "defaultKeyChains": {
116
+ "type": "object",
117
+ "properties": {
118
+ "access": {
119
+ "description": "ID of the access key chain used where no configuration names one: presentation requests of configurations without accessKeyChainId and the signed issuer metadata. Without it, EUDIPLO picks one of the tenant's access key chains by rule.",
120
+ "type": "string",
121
+ "minLength": 1
122
+ }
123
+ },
124
+ "additionalProperties": false,
125
+ "description": "The tenant's key chain per usage type, used where no configuration names one. A usage type without an entry uses a key chain picked by rule."
126
+ }
127
+ },
128
+ "required": [
129
+ "name"
130
+ ],
131
+ "additionalProperties": false,
132
+ "description": "Payload used when importing tenant metadata from config files."
133
+ }
134
+ },
135
+ "required": [
136
+ "$schema",
137
+ "metadata",
138
+ "spec"
139
+ ],
140
+ "additionalProperties": false
141
+ },
142
+ {
143
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
144
+ "$id": "https://eudiplo.dev/schemas/v1/TenantConfigFile.schema.json",
145
+ "title": "TenantConfigFile",
8
146
  "type": "object",
9
147
  "properties": {
10
148
  "$schema": {
@@ -127,6 +265,137 @@
127
265
  ],
128
266
  "additionalProperties": false
129
267
  },
268
+ {
269
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
270
+ "$id": "https://eudiplo.dev/schemas/v2/TenantConfigFile.schema.json",
271
+ "title": "TenantConfigFile",
272
+ "type": "object",
273
+ "properties": {
274
+ "$schema": {
275
+ "type": "string",
276
+ "const": "https://eudiplo.dev/schemas/v2/TenantConfigFile.schema.json"
277
+ },
278
+ "metadata": {
279
+ "type": "object",
280
+ "properties": {
281
+ "generation": {
282
+ "type": "integer",
283
+ "minimum": 1,
284
+ "maximum": 9007199254740991
285
+ },
286
+ "ownership": {
287
+ "type": "string",
288
+ "enum": [
289
+ "unmanaged",
290
+ "file-managed"
291
+ ]
292
+ }
293
+ },
294
+ "additionalProperties": false
295
+ },
296
+ "spec": {
297
+ "type": "object",
298
+ "properties": {
299
+ "name": {
300
+ "default": "EUDIPLO",
301
+ "description": "Display name of the tenant.",
302
+ "type": "string",
303
+ "minLength": 1
304
+ },
305
+ "description": {
306
+ "description": "Optional tenant description.",
307
+ "type": "string",
308
+ "minLength": 1
309
+ },
310
+ "sessionConfig": {
311
+ "description": "Optional tenant-specific session storage configuration.",
312
+ "type": "object",
313
+ "properties": {
314
+ "ttlSeconds": {
315
+ "description": "Session time-to-live in seconds.",
316
+ "type": "integer",
317
+ "minimum": 60,
318
+ "maximum": 9007199254740991
319
+ },
320
+ "cleanupMode": {
321
+ "description": "Whether to fully delete or anonymize expired sessions.",
322
+ "type": "string",
323
+ "enum": [
324
+ "full",
325
+ "anonymize"
326
+ ]
327
+ }
328
+ },
329
+ "additionalProperties": false
330
+ },
331
+ "statusListConfig": {
332
+ "description": "Optional tenant-specific status list defaults.",
333
+ "type": "object",
334
+ "properties": {
335
+ "capacity": {
336
+ "description": "Default status list capacity.",
337
+ "type": "integer",
338
+ "minimum": 100,
339
+ "maximum": 9007199254740991
340
+ },
341
+ "bits": {
342
+ "description": "Bits-per-status setting (1, 2, 4, or 8).",
343
+ "anyOf": [
344
+ {
345
+ "type": "number",
346
+ "const": 1
347
+ },
348
+ {
349
+ "type": "number",
350
+ "const": 2
351
+ },
352
+ {
353
+ "type": "number",
354
+ "const": 4
355
+ },
356
+ {
357
+ "type": "number",
358
+ "const": 8
359
+ }
360
+ ]
361
+ },
362
+ "ttl": {
363
+ "description": "JWT TTL for status list tokens in seconds.",
364
+ "type": "integer",
365
+ "minimum": 60,
366
+ "maximum": 9007199254740991
367
+ },
368
+ "immediateUpdate": {
369
+ "description": "Regenerate status list JWTs immediately after status updates.",
370
+ "type": "boolean"
371
+ },
372
+ "enableAggregation": {
373
+ "description": "Include aggregation_uri in generated status list JWTs.",
374
+ "type": "boolean"
375
+ }
376
+ },
377
+ "additionalProperties": false
378
+ },
379
+ "defaultAccessKeyChainId": {
380
+ "description": "ID of the access key chain used where no configuration names one: presentation requests of configurations without accessKeyChainId and the signed issuer metadata. Without it, EUDIPLO picks one of the tenant's access key chains by rule.",
381
+ "type": "string",
382
+ "minLength": 1
383
+ }
384
+ },
385
+ "required": [
386
+ "name"
387
+ ],
388
+ "additionalProperties": false,
389
+ "description": "Payload used when importing tenant metadata from config files."
390
+ }
391
+ },
392
+ "required": [
393
+ "$schema",
394
+ "metadata",
395
+ "spec"
396
+ ],
397
+ "additionalProperties": false
398
+ },
130
399
  {
131
400
  "type": "object",
132
401
  "properties": {
@@ -209,6 +478,18 @@
209
478
  }
210
479
  },
211
480
  "additionalProperties": false
481
+ },
482
+ "defaultKeyChains": {
483
+ "type": "object",
484
+ "properties": {
485
+ "access": {
486
+ "description": "ID of the access key chain used where no configuration names one: presentation requests of configurations without accessKeyChainId and the signed issuer metadata. Without it, EUDIPLO picks one of the tenant's access key chains by rule.",
487
+ "type": "string",
488
+ "minLength": 1
489
+ }
490
+ },
491
+ "additionalProperties": false,
492
+ "description": "The tenant's key chain per usage type, used where no configuration names one. A usage type without an entry uses a key chain picked by rule."
212
493
  }
213
494
  },
214
495
  "required": [
@@ -0,0 +1,70 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "entityId": {
6
+ "type": "string",
7
+ "minLength": 1,
8
+ "maxLength": 2048,
9
+ "description": "Entity identifier of the trust anchor, exactly as configured in `federation.trustAnchors` and DCQL `openid_federation` values."
10
+ },
11
+ "description": {
12
+ "anyOf": [
13
+ {
14
+ "type": "string",
15
+ "minLength": 1,
16
+ "maxLength": 1000
17
+ },
18
+ {
19
+ "type": "null"
20
+ }
21
+ ],
22
+ "description": "Optional description of the trust anchor."
23
+ },
24
+ "jwks": {
25
+ "type": "object",
26
+ "properties": {
27
+ "keys": {
28
+ "minItems": 1,
29
+ "maxItems": 20,
30
+ "type": "array",
31
+ "items": {
32
+ "type": "object",
33
+ "properties": {
34
+ "kty": {
35
+ "type": "string",
36
+ "enum": [
37
+ "EC",
38
+ "RSA",
39
+ "OKP"
40
+ ],
41
+ "description": "Key type of the public federation key."
42
+ },
43
+ "kid": {
44
+ "type": "string",
45
+ "minLength": 1,
46
+ "maxLength": 256,
47
+ "description": "Key ID. Federation statements name their signing key with `kid`."
48
+ }
49
+ },
50
+ "required": [
51
+ "kty",
52
+ "kid"
53
+ ],
54
+ "additionalProperties": {},
55
+ "description": "Public federation key of the trust anchor as a JWK."
56
+ },
57
+ "description": "The trust anchor's federation keys."
58
+ }
59
+ },
60
+ "required": [
61
+ "keys"
62
+ ],
63
+ "additionalProperties": false,
64
+ "description": "JWK set with the federation keys of the trust anchor, obtained out of band (OpenID Federation 1.0 Section 10.2)."
65
+ }
66
+ },
67
+ "additionalProperties": false,
68
+ "$id": "./UpdateFederationTrustAnchorDto.schema.json",
69
+ "title": "UpdateFederationTrustAnchorDto"
70
+ }
@@ -87,6 +87,26 @@
87
87
  }
88
88
  },
89
89
  "additionalProperties": false
90
+ },
91
+ "defaultKeyChains": {
92
+ "description": "The tenant's key chain per usage type, used where no configuration names one. Replaces the stored entries; omit to keep them, or set to null to remove them.",
93
+ "anyOf": [
94
+ {
95
+ "type": "object",
96
+ "properties": {
97
+ "access": {
98
+ "description": "ID of the access key chain used where no configuration names one: presentation requests of configurations without accessKeyChainId and the signed issuer metadata. Without it, EUDIPLO picks one of the tenant's access key chains by rule.",
99
+ "type": "string",
100
+ "minLength": 1
101
+ }
102
+ },
103
+ "additionalProperties": false,
104
+ "description": "The tenant's key chain per usage type, used where no configuration names one. A usage type without an entry uses a key chain picked by rule."
105
+ },
106
+ {
107
+ "type": "null"
108
+ }
109
+ ]
90
110
  }
91
111
  },
92
112
  "additionalProperties": false,
@@ -6,6 +6,7 @@
6
6
  "ConfigDocumentMetadata.schema.json",
7
7
  "CreateAttributeProviderDto.schema.json",
8
8
  "CreateClientDto.schema.json",
9
+ "CreateFederationTrustAnchorDto.schema.json",
9
10
  "CreateRegistrarConfigDto.schema.json",
10
11
  "CreateStatusListDto.schema.json",
11
12
  "CreateTenantDto.schema.json",
@@ -14,6 +15,7 @@
14
15
  "CredentialConfigFile.schema.json",
15
16
  "DCQL.schema.json",
16
17
  "EmbeddedDisclosurePolicy.schema.json",
18
+ "FederationTrustAnchorConfigFile.schema.json",
17
19
  "ImportTenantDto.schema.json",
18
20
  "IssuanceConfig.schema.json",
19
21
  "IssuanceConfigFile.schema.json",
@@ -38,6 +40,7 @@
38
40
  "TrustListCreateDto.schema.json",
39
41
  "UpdateAttributeProviderDto.schema.json",
40
42
  "UpdateClientDto.schema.json",
43
+ "UpdateFederationTrustAnchorDto.schema.json",
41
44
  "UpdateStatusListConfigDto.schema.json",
42
45
  "UpdateStatusListDto.schema.json",
43
46
  "UpdateTenantDto.schema.json",