dcql 0.2.22 → 0.3.0-alpha-20250527162348
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/dist/index.d.mts +2018 -64
- package/dist/index.d.ts +2018 -64
- package/dist/index.js +356 -216
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +354 -216
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -6
package/dist/index.mjs
CHANGED
@@ -102,10 +102,13 @@ var DcqlPresentationResultError = class extends DcqlError {
|
|
102
102
|
};
|
103
103
|
|
104
104
|
// src/dcql-presentation/m-dcql-credential-presentation.ts
|
105
|
-
import * as
|
105
|
+
import * as v5 from "valibot";
|
106
106
|
|
107
107
|
// src/u-dcql-credential.ts
|
108
|
-
import * as
|
108
|
+
import * as v4 from "valibot";
|
109
|
+
|
110
|
+
// src/dcql-query/m-dcql-trusted-authorities.ts
|
111
|
+
import * as v2 from "valibot";
|
109
112
|
|
110
113
|
// src/u-dcql.ts
|
111
114
|
import * as v from "valibot";
|
@@ -113,7 +116,17 @@ var idRegex = /^[a-zA-Z0-9_-]+$/;
|
|
113
116
|
var vNonEmptyArray = () => {
|
114
117
|
return v.custom((input) => input.length > 0);
|
115
118
|
};
|
119
|
+
var vIncludesAll = (subset) => {
|
120
|
+
return v.custom(
|
121
|
+
(value) => {
|
122
|
+
if (!Array.isArray(value)) return false;
|
123
|
+
return subset.every((item) => value.includes(item));
|
124
|
+
},
|
125
|
+
`Value must include all of: ${subset.join(", ")}`
|
126
|
+
);
|
127
|
+
};
|
116
128
|
var vIdString = v.pipe(v.string(), v.regex(idRegex), v.nonEmpty());
|
129
|
+
var vBase64url = v.regex(/^(?:[\w-]{4})*(?:[\w-]{2}(?:==)?|[\w-]{3}=?)?$/iu, "must be base64url");
|
117
130
|
function isToJsonable(value) {
|
118
131
|
if (value === null || typeof value !== "object") return false;
|
119
132
|
const toJsonFn = value.toJson;
|
@@ -174,8 +187,75 @@ var vStringToJson = v.rawTransform(({ dataset, addIssue, NEVER }) => {
|
|
174
187
|
}
|
175
188
|
});
|
176
189
|
|
190
|
+
// src/dcql-query/m-dcql-trusted-authorities.ts
|
191
|
+
var vAuthorityKeyIdentifier = v2.object({
|
192
|
+
type: v2.literal("aki"),
|
193
|
+
value: v2.pipe(
|
194
|
+
v2.string(),
|
195
|
+
vBase64url,
|
196
|
+
v2.description(
|
197
|
+
"Contains the KeyIdentifier of the AuthorityKeyIdentifier as defined in Section 4.2.1.1 of [RFC5280], encoded as base64url. The raw byte representation of this element MUST match with the AuthorityKeyIdentifier element of an X.509 certificate in the certificate chain present in the credential (e.g., in the header of an mdoc or SD-JWT). Note that the chain can consist of a single certificate and the credential can include the entire X.509 chain or parts of it."
|
198
|
+
)
|
199
|
+
)
|
200
|
+
});
|
201
|
+
var vEtsiTrustedList = v2.object({
|
202
|
+
type: v2.literal("etsi_tl"),
|
203
|
+
value: v2.pipe(
|
204
|
+
v2.string(),
|
205
|
+
v2.url(),
|
206
|
+
v2.check(
|
207
|
+
(url2) => url2.startsWith("http://") || url2.startsWith("https://"),
|
208
|
+
"etsi_tl trusted authority value must be a valid https url"
|
209
|
+
),
|
210
|
+
v2.description(
|
211
|
+
"The identifier of a Trusted List as specified in ETSI TS 119 612 [ETSI.TL]. An ETSI Trusted List contains references to other Trusted Lists, creating a list of trusted lists, or entries for Trust Service Providers with corresponding service description and X.509 Certificates. The trust chain of a matching Credential MUST contain at least one X.509 Certificate that matches one of the entries of the Trusted List or its cascading Trusted Lists."
|
212
|
+
)
|
213
|
+
)
|
214
|
+
});
|
215
|
+
var vOpenidFederation = v2.object({
|
216
|
+
type: v2.literal("openid_federation"),
|
217
|
+
value: v2.pipe(
|
218
|
+
v2.string(),
|
219
|
+
v2.url(),
|
220
|
+
// TODO: should we have a config similar to oid4vc-ts to support http for development?
|
221
|
+
v2.check(
|
222
|
+
(url2) => url2.startsWith("http://") || url2.startsWith("https://"),
|
223
|
+
"openid_federation trusted authority value must be a valid https url"
|
224
|
+
),
|
225
|
+
v2.description(
|
226
|
+
"The Entity Identifier as defined in Section 1 of [OpenID.Federation] that is bound to an entity in a federation. While this Entity Identifier could be any entity in that ecosystem, this entity would usually have the Entity Configuration of a Trust Anchor. A valid trust path, including the given Entity Identifier, must be constructible from a matching credential."
|
227
|
+
)
|
228
|
+
)
|
229
|
+
});
|
230
|
+
var vTrustedAuthorities = [vAuthorityKeyIdentifier, vEtsiTrustedList, vOpenidFederation];
|
231
|
+
var DcqlTrustedAuthoritiesQuery;
|
232
|
+
((DcqlTrustedAuthoritiesQuery2) => {
|
233
|
+
const vTrustedAuthoritiesQuery = vTrustedAuthorities.map(
|
234
|
+
(authority) => v2.object({
|
235
|
+
type: v2.pipe(
|
236
|
+
authority.entries.type,
|
237
|
+
v2.description(
|
238
|
+
"REQUIRED. A string uniquely identifying the type of information about the issuer trust framework."
|
239
|
+
)
|
240
|
+
),
|
241
|
+
values: v2.pipe(
|
242
|
+
v2.array(authority.entries.value),
|
243
|
+
vNonEmptyArray(),
|
244
|
+
v2.description(
|
245
|
+
"REQUIRED. An array of strings, where each string (value) contains information specific to the used Trusted Authorities Query type that allows to identify an issuer, trust framework, or a federation that an issuer belongs to."
|
246
|
+
)
|
247
|
+
)
|
248
|
+
})
|
249
|
+
);
|
250
|
+
DcqlTrustedAuthoritiesQuery2.vModel = v2.variant("type", vTrustedAuthoritiesQuery);
|
251
|
+
})(DcqlTrustedAuthoritiesQuery || (DcqlTrustedAuthoritiesQuery = {}));
|
252
|
+
var DcqlCredentialTrustedAuthority;
|
253
|
+
((DcqlCredentialTrustedAuthority2) => {
|
254
|
+
DcqlCredentialTrustedAuthority2.vModel = v2.variant("type", vTrustedAuthorities);
|
255
|
+
})(DcqlCredentialTrustedAuthority || (DcqlCredentialTrustedAuthority = {}));
|
256
|
+
|
177
257
|
// src/u-model.ts
|
178
|
-
import * as
|
258
|
+
import * as v3 from "valibot";
|
179
259
|
var Model = class {
|
180
260
|
constructor(input) {
|
181
261
|
this.input = input;
|
@@ -194,28 +274,32 @@ var Model = class {
|
|
194
274
|
});
|
195
275
|
}
|
196
276
|
safeParse(input) {
|
197
|
-
const res =
|
277
|
+
const res = v3.safeParse(this.input.vModel, input);
|
198
278
|
if (res.success) {
|
199
279
|
return { success: true, output: res.output };
|
200
280
|
}
|
201
281
|
return {
|
202
282
|
success: false,
|
203
|
-
error: new
|
204
|
-
flattened:
|
283
|
+
error: new v3.ValiError(res.issues),
|
284
|
+
flattened: v3.flatten(res.issues)
|
205
285
|
};
|
206
286
|
}
|
207
287
|
is(input) {
|
208
|
-
return
|
288
|
+
return v3.is(this.v, input);
|
209
289
|
}
|
210
290
|
};
|
211
291
|
|
212
292
|
// src/u-dcql-credential.ts
|
293
|
+
var vCredentialModelBase = v4.object({
|
294
|
+
authority: v4.optional(DcqlCredentialTrustedAuthority.vModel)
|
295
|
+
});
|
213
296
|
var DcqlMdocCredential;
|
214
297
|
((DcqlMdocCredential2) => {
|
215
|
-
DcqlMdocCredential2.vNamespaces =
|
216
|
-
DcqlMdocCredential2.vModel =
|
217
|
-
|
218
|
-
|
298
|
+
DcqlMdocCredential2.vNamespaces = v4.record(v4.string(), v4.record(v4.string(), v4.unknown()));
|
299
|
+
DcqlMdocCredential2.vModel = v4.object({
|
300
|
+
...vCredentialModelBase.entries,
|
301
|
+
credential_format: v4.literal("mso_mdoc"),
|
302
|
+
doctype: v4.string(),
|
219
303
|
namespaces: DcqlMdocCredential2.vNamespaces
|
220
304
|
});
|
221
305
|
DcqlMdocCredential2.model = new Model({ vModel: DcqlMdocCredential2.vModel });
|
@@ -223,9 +307,10 @@ var DcqlMdocCredential;
|
|
223
307
|
var DcqlSdJwtVcCredential;
|
224
308
|
((DcqlSdJwtVcCredential2) => {
|
225
309
|
DcqlSdJwtVcCredential2.vClaims = vJsonRecord;
|
226
|
-
DcqlSdJwtVcCredential2.vModel =
|
227
|
-
|
228
|
-
|
310
|
+
DcqlSdJwtVcCredential2.vModel = v4.object({
|
311
|
+
...vCredentialModelBase.entries,
|
312
|
+
credential_format: v4.picklist(["vc+sd-jwt", "dc+sd-jwt"]),
|
313
|
+
vct: v4.string(),
|
229
314
|
claims: DcqlSdJwtVcCredential2.vClaims
|
230
315
|
});
|
231
316
|
DcqlSdJwtVcCredential2.model = new Model({ vModel: DcqlSdJwtVcCredential2.vModel });
|
@@ -233,34 +318,36 @@ var DcqlSdJwtVcCredential;
|
|
233
318
|
var DcqlW3cVcCredential;
|
234
319
|
((DcqlW3cVcCredential2) => {
|
235
320
|
DcqlW3cVcCredential2.vClaims = vJsonRecord;
|
236
|
-
DcqlW3cVcCredential2.vModel =
|
237
|
-
|
238
|
-
|
321
|
+
DcqlW3cVcCredential2.vModel = v4.object({
|
322
|
+
...vCredentialModelBase.entries,
|
323
|
+
credential_format: v4.picklist(["ldp_vc", "jwt_vc_json"]),
|
324
|
+
claims: DcqlW3cVcCredential2.vClaims,
|
325
|
+
type: v4.array(v4.string())
|
239
326
|
});
|
240
327
|
DcqlW3cVcCredential2.model = new Model({ vModel: DcqlW3cVcCredential2.vModel });
|
241
328
|
})(DcqlW3cVcCredential || (DcqlW3cVcCredential = {}));
|
242
329
|
var DcqlCredential;
|
243
330
|
((DcqlCredential2) => {
|
244
|
-
DcqlCredential2.vModel =
|
331
|
+
DcqlCredential2.vModel = v4.variant("credential_format", [
|
245
332
|
DcqlMdocCredential.vModel,
|
246
333
|
DcqlSdJwtVcCredential.vModel,
|
247
334
|
DcqlW3cVcCredential.vModel
|
248
335
|
]);
|
249
|
-
DcqlCredential2.vParseSuccess =
|
250
|
-
success:
|
251
|
-
typed:
|
252
|
-
issues:
|
253
|
-
input_credential_index:
|
254
|
-
claim_set_index:
|
336
|
+
DcqlCredential2.vParseSuccess = v4.object({
|
337
|
+
success: v4.literal(true),
|
338
|
+
typed: v4.literal(true),
|
339
|
+
issues: v4.optional(v4.undefined()),
|
340
|
+
input_credential_index: v4.number(),
|
341
|
+
claim_set_index: v4.union([v4.number(), v4.undefined()]),
|
255
342
|
output: DcqlCredential2.vModel
|
256
343
|
});
|
257
|
-
DcqlCredential2.vParseFailure =
|
258
|
-
success:
|
259
|
-
typed:
|
260
|
-
output:
|
261
|
-
issues:
|
262
|
-
input_credential_index:
|
263
|
-
claim_set_index:
|
344
|
+
DcqlCredential2.vParseFailure = v4.object({
|
345
|
+
success: v4.literal(false),
|
346
|
+
typed: v4.boolean(),
|
347
|
+
output: v4.unknown(),
|
348
|
+
issues: v4.pipe(v4.array(v4.unknown()), vNonEmptyArray()),
|
349
|
+
input_credential_index: v4.number(),
|
350
|
+
claim_set_index: v4.union([v4.number(), v4.undefined()])
|
264
351
|
});
|
265
352
|
DcqlCredential2.model = new Model({ vModel: DcqlCredential2.vModel });
|
266
353
|
})(DcqlCredential || (DcqlCredential = {}));
|
@@ -284,7 +371,7 @@ var DcqlW3cVcPresentation;
|
|
284
371
|
var DcqlCredentialPresentation;
|
285
372
|
((DcqlCredentialPresentation2) => {
|
286
373
|
DcqlCredentialPresentation2.model = new Model({
|
287
|
-
vModel:
|
374
|
+
vModel: v5.variant("credential_format", [
|
288
375
|
DcqlMdocPresentation.vModel,
|
289
376
|
DcqlSdJwtVcPresentation.vModel,
|
290
377
|
DcqlW3cVcPresentation.vModel
|
@@ -293,117 +380,126 @@ var DcqlCredentialPresentation;
|
|
293
380
|
})(DcqlCredentialPresentation || (DcqlCredentialPresentation = {}));
|
294
381
|
|
295
382
|
// src/dcql-presentation/m-dcql-presentation-result.ts
|
296
|
-
import * as
|
383
|
+
import * as v12 from "valibot";
|
297
384
|
|
298
385
|
// src/dcql-parser/dcql-credential-query-result.ts
|
299
|
-
import * as
|
386
|
+
import * as v8 from "valibot";
|
300
387
|
|
301
388
|
// src/dcql-parser/dcql-claims-query-result.ts
|
302
|
-
import * as
|
389
|
+
import * as v7 from "valibot";
|
303
390
|
|
304
391
|
// src/dcql-query/m-dcql-claims-query.ts
|
305
|
-
import * as
|
392
|
+
import * as v6 from "valibot";
|
306
393
|
var DcqlClaimsQuery;
|
307
394
|
((DcqlClaimsQuery2) => {
|
308
|
-
DcqlClaimsQuery2.vValue =
|
309
|
-
DcqlClaimsQuery2.vPath =
|
310
|
-
DcqlClaimsQuery2.vW3cSdJwtVc =
|
311
|
-
id:
|
312
|
-
|
313
|
-
|
395
|
+
DcqlClaimsQuery2.vValue = v6.union([v6.string(), v6.pipe(v6.number(), v6.integer()), v6.boolean()]);
|
396
|
+
DcqlClaimsQuery2.vPath = v6.union([v6.string(), v6.pipe(v6.number(), v6.integer(), v6.minValue(0)), v6.null()]);
|
397
|
+
DcqlClaimsQuery2.vW3cSdJwtVc = v6.object({
|
398
|
+
id: v6.pipe(
|
399
|
+
v6.optional(vIdString),
|
400
|
+
v6.description(
|
314
401
|
"A string identifying the particular claim. The value MUST be a non-empty string consisting of alphanumeric, underscore (_) or hyphen (-) characters. Within the particular claims array, the same id MUST NOT be present more than once."
|
315
402
|
)
|
316
403
|
),
|
317
|
-
path:
|
318
|
-
|
404
|
+
path: v6.pipe(
|
405
|
+
v6.array(DcqlClaimsQuery2.vPath),
|
319
406
|
vNonEmptyArray(),
|
320
|
-
|
407
|
+
v6.description(
|
321
408
|
"A non-empty array representing a claims path pointer that specifies the path to a claim within the Verifiable Credential."
|
322
409
|
)
|
323
410
|
),
|
324
|
-
values:
|
325
|
-
|
326
|
-
|
411
|
+
values: v6.pipe(
|
412
|
+
v6.optional(v6.array(DcqlClaimsQuery2.vValue)),
|
413
|
+
v6.description(
|
327
414
|
"An array of strings, integers or boolean values that specifies the expected values of the claim. If the values property is present, the Wallet SHOULD return the claim only if the type and value of the claim both match for at least one of the elements in the array."
|
328
415
|
)
|
329
416
|
)
|
330
417
|
});
|
331
|
-
const vMdocBase =
|
332
|
-
id:
|
333
|
-
|
334
|
-
|
418
|
+
const vMdocBase = v6.object({
|
419
|
+
id: v6.pipe(
|
420
|
+
v6.optional(vIdString),
|
421
|
+
v6.description(
|
335
422
|
"A string identifying the particular claim. The value MUST be a non-empty string consisting of alphanumeric, underscore (_) or hyphen (-) characters. Within the particular claims array, the same id MUST NOT be present more than once."
|
336
423
|
)
|
337
424
|
),
|
338
|
-
values:
|
339
|
-
|
340
|
-
|
425
|
+
values: v6.pipe(
|
426
|
+
v6.optional(v6.array(DcqlClaimsQuery2.vValue)),
|
427
|
+
v6.description(
|
341
428
|
"An array of strings, integers or boolean values that specifies the expected values of the claim. If the values property is present, the Wallet SHOULD return the claim only if the type and value of the claim both match for at least one of the elements in the array."
|
342
429
|
)
|
343
430
|
)
|
344
431
|
});
|
345
|
-
DcqlClaimsQuery2.vMdocNamespace =
|
432
|
+
DcqlClaimsQuery2.vMdocNamespace = v6.object({
|
346
433
|
...vMdocBase.entries,
|
347
|
-
namespace:
|
348
|
-
|
349
|
-
|
434
|
+
namespace: v6.pipe(
|
435
|
+
v6.string(),
|
436
|
+
v6.description(
|
350
437
|
"A string that specifies the namespace of the data element within the mdoc, e.g., org.iso.18013.5.1."
|
351
438
|
)
|
352
439
|
),
|
353
|
-
claim_name:
|
354
|
-
|
355
|
-
|
440
|
+
claim_name: v6.pipe(
|
441
|
+
v6.string(),
|
442
|
+
v6.description(
|
356
443
|
"A string that specifies the data element identifier of the data element within the provided namespace in the mdoc, e.g., first_name."
|
357
444
|
)
|
358
445
|
)
|
359
446
|
});
|
360
|
-
DcqlClaimsQuery2.vMdocPath =
|
447
|
+
DcqlClaimsQuery2.vMdocPath = v6.object({
|
361
448
|
...vMdocBase.entries,
|
362
|
-
intent_to_retain:
|
363
|
-
|
364
|
-
|
449
|
+
intent_to_retain: v6.pipe(
|
450
|
+
v6.optional(v6.boolean()),
|
451
|
+
v6.description(
|
365
452
|
"A boolean that is equivalent to `IntentToRetain` variable defined in Section 8.3.2.1.2.1 of [@ISO.18013-5]."
|
366
453
|
)
|
367
454
|
),
|
368
|
-
path:
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
455
|
+
path: v6.pipe(
|
456
|
+
v6.tuple([
|
457
|
+
v6.pipe(
|
458
|
+
v6.string(),
|
459
|
+
v6.description(
|
373
460
|
"A string that specifies the namespace of the data element within the mdoc, e.g., org.iso.18013.5.1."
|
374
461
|
)
|
375
462
|
),
|
376
|
-
|
377
|
-
|
378
|
-
|
463
|
+
v6.pipe(
|
464
|
+
v6.string(),
|
465
|
+
v6.description(
|
379
466
|
"A string that specifies the data element identifier of the data element within the provided namespace in the mdoc, e.g., first_name."
|
380
467
|
)
|
381
468
|
)
|
382
469
|
]),
|
383
|
-
|
470
|
+
v6.description(
|
384
471
|
"An array defining a claims path pointer into an mdoc. It must contain two elements of type string. The first element refers to a namespace and the second element refers to a data element identifier."
|
385
472
|
)
|
386
473
|
)
|
387
474
|
});
|
388
|
-
DcqlClaimsQuery2.vMdoc =
|
389
|
-
DcqlClaimsQuery2.vModel =
|
475
|
+
DcqlClaimsQuery2.vMdoc = v6.union([DcqlClaimsQuery2.vMdocNamespace, DcqlClaimsQuery2.vMdocPath]);
|
476
|
+
DcqlClaimsQuery2.vModel = v6.union([DcqlClaimsQuery2.vMdoc, DcqlClaimsQuery2.vW3cSdJwtVc]);
|
390
477
|
})(DcqlClaimsQuery || (DcqlClaimsQuery = {}));
|
391
478
|
|
392
479
|
// src/dcql-parser/dcql-claims-query-result.ts
|
480
|
+
var getTrustedAuthorityValue = (credentialQuery) => v7.object({
|
481
|
+
authority: credentialQuery.trusted_authorities ? v7.variant(
|
482
|
+
"type",
|
483
|
+
credentialQuery.trusted_authorities.map(
|
484
|
+
(t) => v7.object({ type: v7.literal(t.type), value: v7.union(t.values.map((value) => v7.literal(value))) })
|
485
|
+
),
|
486
|
+
`Credential query '${credentialQuery.id}' requires the credential to be issued by a trusted authority of type ${credentialQuery.trusted_authorities.map((t) => t.type).join(" | ")}, but none of the type or values match.`
|
487
|
+
) : v7.optional(DcqlCredentialTrustedAuthority.vModel)
|
488
|
+
});
|
393
489
|
var getClaimParser = (input) => {
|
394
490
|
const { value, values } = input;
|
395
491
|
if (value) {
|
396
|
-
return vWithJT(
|
492
|
+
return vWithJT(v7.literal(value));
|
397
493
|
}
|
398
494
|
if (values) {
|
399
|
-
return vWithJT(
|
495
|
+
return vWithJT(v7.union(values.map((val) => v7.literal(val))));
|
400
496
|
}
|
401
|
-
return
|
497
|
+
return v7.nonNullish(v7.any());
|
402
498
|
};
|
403
499
|
var getNamespacesParser = (claimsQueries) => {
|
404
500
|
const claimsForNamespace = {};
|
405
501
|
for (const claimQuery of claimsQueries) {
|
406
|
-
const mdocPathQuery =
|
502
|
+
const mdocPathQuery = v7.is(DcqlClaimsQuery.vMdocNamespace, claimQuery) ? {
|
407
503
|
id: claimQuery.id,
|
408
504
|
path: [claimQuery.namespace, claimQuery.claim_name],
|
409
505
|
values: claimQuery.values
|
@@ -417,9 +513,9 @@ var getNamespacesParser = (claimsQueries) => {
|
|
417
513
|
}
|
418
514
|
const parsersForNamespaces = Object.entries(claimsForNamespace).map(([namespace, claims]) => {
|
419
515
|
const claimParsers = Object.fromEntries(claims.map((claim) => [claim.path[1], getClaimParser(claim)]));
|
420
|
-
return [namespace,
|
516
|
+
return [namespace, v7.object(claimParsers)];
|
421
517
|
});
|
422
|
-
return
|
518
|
+
return v7.object(Object.fromEntries(parsersForNamespaces));
|
423
519
|
};
|
424
520
|
var getClaimQueryParser = (claimQuery, ctx) => {
|
425
521
|
const { index, presentation } = ctx;
|
@@ -429,31 +525,31 @@ var getClaimQueryParser = (claimQuery, ctx) => {
|
|
429
525
|
if (typeof pathElement === "number") {
|
430
526
|
const elementParser = isLast ? vClaimParser : getClaimQueryParser(claimQuery, { ...ctx, index: index + 1 });
|
431
527
|
if (presentation) {
|
432
|
-
return
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
528
|
+
return v7.union([
|
529
|
+
v7.pipe(
|
530
|
+
v7.array(vJson),
|
531
|
+
v7.length(1),
|
532
|
+
v7.transform((input) => input[0]),
|
437
533
|
elementParser
|
438
534
|
),
|
439
535
|
elementParser
|
440
536
|
]);
|
441
537
|
}
|
442
|
-
return
|
443
|
-
|
444
|
-
|
538
|
+
return v7.pipe(
|
539
|
+
v7.array(vJson),
|
540
|
+
v7.transform((input) => input[pathElement]),
|
445
541
|
elementParser
|
446
542
|
);
|
447
543
|
}
|
448
544
|
if (typeof pathElement === "string") {
|
449
|
-
return
|
545
|
+
return v7.object({
|
450
546
|
[pathElement]: isLast ? vClaimParser : getClaimQueryParser(claimQuery, { ...ctx, index: index + 1 })
|
451
547
|
});
|
452
548
|
}
|
453
|
-
return isLast ?
|
549
|
+
return isLast ? v7.array(vClaimParser) : v7.array(getClaimQueryParser(claimQuery, { ...ctx, index: index + 1 }));
|
454
550
|
};
|
455
551
|
var getJsonClaimsParser = (claimsQueries, ctx) => {
|
456
|
-
const claimParser =
|
552
|
+
const claimParser = v7.intersect(
|
457
553
|
claimsQueries.map(
|
458
554
|
(claimQuery) => getClaimQueryParser(claimQuery, {
|
459
555
|
...ctx,
|
@@ -487,12 +583,13 @@ var getJsonClaimsQueriesForClaimSet = (claimsQueries, claimSet) => {
|
|
487
583
|
};
|
488
584
|
var getMdocParser = (credentialQuery, ctx) => {
|
489
585
|
const { claimSet } = ctx;
|
490
|
-
const vDoctype = credentialQuery.meta?.doctype_value ?
|
586
|
+
const vDoctype = credentialQuery.meta?.doctype_value ? v7.literal(credentialQuery.meta.doctype_value) : v7.string();
|
491
587
|
const claimSetQueries = credentialQuery.claims && claimSet ? getMdocClaimsQueriesForClaimSet(credentialQuery.claims, claimSet) : credentialQuery.claims;
|
492
|
-
const credentialParser =
|
493
|
-
credential_format:
|
588
|
+
const credentialParser = v7.object({
|
589
|
+
credential_format: v7.literal("mso_mdoc"),
|
494
590
|
doctype: vDoctype,
|
495
|
-
namespaces: claimSetQueries ? getNamespacesParser(claimSetQueries) :
|
591
|
+
namespaces: claimSetQueries ? getNamespacesParser(claimSetQueries) : v7.record(v7.string(), v7.record(v7.string(), v7.unknown())),
|
592
|
+
...getTrustedAuthorityValue(credentialQuery).entries
|
496
593
|
});
|
497
594
|
return credentialParser;
|
498
595
|
};
|
@@ -500,17 +597,34 @@ var getW3cVcSdJwtVcParser = (credentialQuery, ctx) => {
|
|
500
597
|
const { claimSet } = ctx;
|
501
598
|
const claimSetQueries = credentialQuery.claims && claimSet ? getJsonClaimsQueriesForClaimSet(credentialQuery.claims, claimSet) : credentialQuery.claims;
|
502
599
|
if (credentialQuery.format === "vc+sd-jwt" || credentialQuery.format === "dc+sd-jwt") {
|
503
|
-
return
|
504
|
-
credential_format:
|
505
|
-
vct: credentialQuery.meta?.vct_values ?
|
506
|
-
claims: claimSetQueries ? getJsonClaimsParser(claimSetQueries, ctx) : vJsonRecord
|
600
|
+
return v7.object({
|
601
|
+
credential_format: v7.literal(credentialQuery.format),
|
602
|
+
vct: credentialQuery.meta?.vct_values ? v7.picklist(credentialQuery.meta.vct_values) : v7.string(),
|
603
|
+
claims: claimSetQueries ? getJsonClaimsParser(claimSetQueries, ctx) : vJsonRecord,
|
604
|
+
// TODO: we should split up the:
|
605
|
+
// - vct
|
606
|
+
// - claim value
|
607
|
+
// - trusted authorities
|
608
|
+
// into separate validations so we can make the match result richer with specifically
|
609
|
+
// which steps failed, also we should look at showing exactly which claim paths failed.
|
610
|
+
...getTrustedAuthorityValue(credentialQuery).entries
|
507
611
|
});
|
508
612
|
}
|
509
|
-
|
510
|
-
|
511
|
-
|
613
|
+
if (credentialQuery.format === "jwt_vc_json" || credentialQuery.format === "ldp_vc") {
|
614
|
+
return v7.object({
|
615
|
+
credential_format: v7.literal(credentialQuery.format),
|
616
|
+
claims: claimSetQueries ? getJsonClaimsParser(claimSetQueries, ctx) : vJsonRecord,
|
617
|
+
type: credentialQuery.meta?.type_values ? v7.union(
|
618
|
+
credentialQuery.meta.type_values.map((values) => vIncludesAll(values)),
|
619
|
+
`Type must include at least all values from one of the following subsets: ${credentialQuery.meta.type_values.map((values) => `[${values.join(", ")}]`).join(" | ")}`
|
620
|
+
) : v7.array(v7.string()),
|
621
|
+
...getTrustedAuthorityValue(credentialQuery).entries
|
622
|
+
});
|
623
|
+
}
|
624
|
+
throw new DcqlError({
|
625
|
+
code: "NOT_IMPLEMENTED",
|
626
|
+
message: `Usupported format '${credentialQuery.format}'`
|
512
627
|
});
|
513
|
-
return credentialParser;
|
514
628
|
};
|
515
629
|
var getCredentialQueryParser = (credentialQuery, ctx) => {
|
516
630
|
if (credentialQuery.claim_sets && !ctx.claimSet) {
|
@@ -543,11 +657,11 @@ var runCredentialQuery = (credentialQuery, ctx) => {
|
|
543
657
|
continue;
|
544
658
|
}
|
545
659
|
}
|
546
|
-
const parseResult =
|
660
|
+
const parseResult = v8.safeParse(credentialParser, credential);
|
547
661
|
claimSetResult.push({
|
548
662
|
...parseResult,
|
549
663
|
...parseResult.issues && {
|
550
|
-
flattened:
|
664
|
+
flattened: v8.flatten(parseResult.issues)
|
551
665
|
},
|
552
666
|
input_credential_index: credentialIndex,
|
553
667
|
claim_set_index: credentialQuery.claim_sets ? claimSetIndex : void 0
|
@@ -559,85 +673,107 @@ var runCredentialQuery = (credentialQuery, ctx) => {
|
|
559
673
|
};
|
560
674
|
|
561
675
|
// src/dcql-query-result/m-dcql-query-result.ts
|
562
|
-
import * as
|
676
|
+
import * as v11 from "valibot";
|
563
677
|
|
564
678
|
// src/dcql-query/m-dcql-credential-query.ts
|
565
|
-
import * as
|
679
|
+
import * as v9 from "valibot";
|
566
680
|
var DcqlCredentialQuery;
|
567
681
|
((DcqlCredentialQuery2) => {
|
568
|
-
const vBase =
|
569
|
-
id:
|
570
|
-
|
571
|
-
|
572
|
-
|
682
|
+
const vBase = v9.object({
|
683
|
+
id: v9.pipe(
|
684
|
+
v9.string(),
|
685
|
+
v9.regex(idRegex),
|
686
|
+
v9.description(
|
573
687
|
`REQUIRED. A string identifying the Credential in the response and, if provided, the constraints in 'credential_sets'.`
|
574
688
|
)
|
575
689
|
),
|
576
|
-
claim_sets:
|
577
|
-
|
578
|
-
|
690
|
+
claim_sets: v9.pipe(
|
691
|
+
v9.optional(v9.pipe(v9.array(v9.pipe(v9.array(vIdString), vNonEmptyArray())), vNonEmptyArray())),
|
692
|
+
v9.description(
|
579
693
|
`OPTIONAL. A non-empty array containing arrays of identifiers for elements in 'claims' that specifies which combinations of 'claims' for the Credential are requested.`
|
580
694
|
)
|
695
|
+
),
|
696
|
+
trusted_authorities: v9.pipe(
|
697
|
+
v9.optional(v9.pipe(v9.array(DcqlTrustedAuthoritiesQuery.vModel), vNonEmptyArray())),
|
698
|
+
v9.description(
|
699
|
+
"OPTIONAL. A non-empty array of objects as defined in Section 6.1.1 that specifies expected authorities or trust frameworks that certify Issuers, that the Verifier will accept. Every Credential returned by the Wallet SHOULD match at least one of the conditions present in the corresponding trusted_authorities array if present."
|
700
|
+
)
|
581
701
|
)
|
582
702
|
});
|
583
|
-
DcqlCredentialQuery2.vMdoc =
|
703
|
+
DcqlCredentialQuery2.vMdoc = v9.object({
|
584
704
|
...vBase.entries,
|
585
|
-
format:
|
586
|
-
|
587
|
-
|
705
|
+
format: v9.pipe(
|
706
|
+
v9.literal("mso_mdoc"),
|
707
|
+
v9.description("REQUIRED. A string that specifies the format of the requested Verifiable Credential.")
|
588
708
|
),
|
589
|
-
claims:
|
590
|
-
|
591
|
-
|
709
|
+
claims: v9.pipe(
|
710
|
+
v9.optional(v9.pipe(v9.array(DcqlClaimsQuery.vMdoc), vNonEmptyArray())),
|
711
|
+
v9.description("OPTIONAL. A non-empty array of objects as that specifies claims in the requested Credential.")
|
592
712
|
),
|
593
|
-
meta:
|
594
|
-
|
595
|
-
|
596
|
-
doctype_value:
|
597
|
-
|
598
|
-
|
713
|
+
meta: v9.pipe(
|
714
|
+
v9.optional(
|
715
|
+
v9.object({
|
716
|
+
doctype_value: v9.pipe(
|
717
|
+
v9.optional(v9.string()),
|
718
|
+
v9.description(
|
599
719
|
"OPTIONAL. String that specifies an allowed value for the doctype of the requested Verifiable Credential."
|
600
720
|
)
|
601
721
|
)
|
602
722
|
})
|
603
723
|
),
|
604
|
-
|
724
|
+
v9.description(
|
605
725
|
"OPTIONAL. An object defining additional properties requested by the Verifier that apply to the metadata and validity data of the Credential."
|
606
726
|
)
|
607
727
|
)
|
608
728
|
});
|
609
|
-
DcqlCredentialQuery2.vSdJwtVc =
|
729
|
+
DcqlCredentialQuery2.vSdJwtVc = v9.object({
|
610
730
|
...vBase.entries,
|
611
|
-
format:
|
612
|
-
|
613
|
-
|
731
|
+
format: v9.pipe(
|
732
|
+
v9.picklist(["vc+sd-jwt", "dc+sd-jwt"]),
|
733
|
+
v9.description("REQUIRED. A string that specifies the format of the requested Verifiable Credential.")
|
614
734
|
),
|
615
|
-
claims:
|
616
|
-
|
617
|
-
|
735
|
+
claims: v9.pipe(
|
736
|
+
v9.optional(v9.pipe(v9.array(DcqlClaimsQuery.vW3cSdJwtVc), vNonEmptyArray())),
|
737
|
+
v9.description("OPTIONAL. A non-empty array of objects as that specifies claims in the requested Credential.")
|
618
738
|
),
|
619
|
-
meta:
|
620
|
-
|
621
|
-
|
622
|
-
|
623
|
-
vct_values:
|
739
|
+
meta: v9.pipe(
|
740
|
+
v9.optional(
|
741
|
+
v9.pipe(
|
742
|
+
v9.object({
|
743
|
+
vct_values: v9.optional(v9.array(v9.string()))
|
624
744
|
}),
|
625
|
-
|
745
|
+
v9.description(
|
626
746
|
"OPTIONAL. An array of strings that specifies allowed values for the type of the requested Verifiable Credential."
|
627
747
|
)
|
628
748
|
)
|
629
749
|
),
|
630
|
-
|
750
|
+
v9.description(
|
631
751
|
"OPTIONAL. An object defining additional properties requested by the Verifier that apply to the metadata and validity data of the Credential."
|
632
752
|
)
|
633
753
|
)
|
634
754
|
});
|
635
|
-
DcqlCredentialQuery2.vW3cVc =
|
755
|
+
DcqlCredentialQuery2.vW3cVc = v9.object({
|
636
756
|
...vBase.entries,
|
637
|
-
format:
|
638
|
-
claims:
|
757
|
+
format: v9.picklist(["jwt_vc_json", "ldp_vc"]),
|
758
|
+
claims: v9.optional(v9.pipe(v9.array(DcqlClaimsQuery.vW3cSdJwtVc), vNonEmptyArray())),
|
759
|
+
meta: v9.pipe(
|
760
|
+
v9.pipe(
|
761
|
+
v9.object({
|
762
|
+
type_values: v9.pipe(
|
763
|
+
v9.array(v9.pipe(v9.array(v9.string()), vNonEmptyArray())),
|
764
|
+
vNonEmptyArray(),
|
765
|
+
v9.description(
|
766
|
+
"REQUIRED. An array of string arrays that specifies the fully expanded types (IRIs) after the @context was applied that the Verifier accepts to be presented in the Presentation. Each of the top-level arrays specifies one alternative to match the type values of the Verifiable Credential against. Each inner array specifies a set of fully expanded types that MUST be present in the type property of the Verifiable Credential, regardless of order or the presence of additional types."
|
767
|
+
)
|
768
|
+
)
|
769
|
+
})
|
770
|
+
),
|
771
|
+
v9.description(
|
772
|
+
"REQUIRED. An object defining additional properties requested by the Verifier that apply to the metadata and validity data of the Credential."
|
773
|
+
)
|
774
|
+
)
|
639
775
|
});
|
640
|
-
DcqlCredentialQuery2.vModel =
|
776
|
+
DcqlCredentialQuery2.vModel = v9.variant("format", [DcqlCredentialQuery2.vMdoc, DcqlCredentialQuery2.vSdJwtVc, DcqlCredentialQuery2.vW3cVc]);
|
641
777
|
DcqlCredentialQuery2.validate = (credentialQuery) => {
|
642
778
|
claimSetIdsAreDefined(credentialQuery);
|
643
779
|
};
|
@@ -661,26 +797,26 @@ var claimSetIdsAreDefined = (credentialQuery) => {
|
|
661
797
|
};
|
662
798
|
|
663
799
|
// src/dcql-query/m-dcql-credential-set-query.ts
|
664
|
-
import * as
|
800
|
+
import * as v10 from "valibot";
|
665
801
|
var CredentialSetQuery;
|
666
802
|
((CredentialSetQuery2) => {
|
667
|
-
CredentialSetQuery2.vModel =
|
668
|
-
options:
|
669
|
-
|
803
|
+
CredentialSetQuery2.vModel = v10.object({
|
804
|
+
options: v10.pipe(
|
805
|
+
v10.array(v10.array(vIdString)),
|
670
806
|
vNonEmptyArray(),
|
671
|
-
|
807
|
+
v10.description(
|
672
808
|
"REQUIRED. A non-empty array, where each value in the array is a list of Credential Query identifiers representing one set of Credentials that satisfies the use case."
|
673
809
|
)
|
674
810
|
),
|
675
|
-
required:
|
676
|
-
|
677
|
-
|
811
|
+
required: v10.pipe(
|
812
|
+
v10.optional(v10.boolean(), true),
|
813
|
+
v10.description(
|
678
814
|
`OPTIONAL. Boolean which indicates whether this set of Credentials is required to satisfy the particular use case at the Verifier. If omitted, the default value is 'true'.`
|
679
815
|
)
|
680
816
|
),
|
681
|
-
purpose:
|
682
|
-
|
683
|
-
|
817
|
+
purpose: v10.pipe(
|
818
|
+
v10.optional(v10.union([v10.string(), v10.number(), v10.record(v10.string(), v10.unknown())])),
|
819
|
+
v10.description("OPTIONAL. A string, number or object specifying the purpose of the query.")
|
684
820
|
)
|
685
821
|
});
|
686
822
|
})(CredentialSetQuery || (CredentialSetQuery = {}));
|
@@ -688,39 +824,39 @@ var CredentialSetQuery;
|
|
688
824
|
// src/dcql-query-result/m-dcql-query-result.ts
|
689
825
|
var DcqlQueryResult;
|
690
826
|
((DcqlQueryResult2) => {
|
691
|
-
DcqlQueryResult2.vCredentialQueryResult =
|
692
|
-
|
827
|
+
DcqlQueryResult2.vCredentialQueryResult = v11.pipe(
|
828
|
+
v11.array(v11.array(v11.union([v11.undefined(), DcqlCredential.vParseSuccess, DcqlCredential.vParseFailure]))),
|
693
829
|
vNonEmptyArray()
|
694
830
|
);
|
695
|
-
DcqlQueryResult2.vModel =
|
696
|
-
credentials:
|
697
|
-
|
831
|
+
DcqlQueryResult2.vModel = v11.object({
|
832
|
+
credentials: v11.pipe(
|
833
|
+
v11.array(DcqlCredentialQuery.vModel),
|
698
834
|
vNonEmptyArray(),
|
699
|
-
|
835
|
+
v11.description(
|
700
836
|
"REQUIRED. A non-empty array of Credential Queries that specify the requested Verifiable Credentials."
|
701
837
|
)
|
702
838
|
),
|
703
|
-
credential_matches:
|
704
|
-
|
705
|
-
|
706
|
-
|
839
|
+
credential_matches: v11.record(
|
840
|
+
v11.pipe(vIdString),
|
841
|
+
v11.union([
|
842
|
+
v11.object({
|
707
843
|
...DcqlCredential.vParseSuccess.entries,
|
708
|
-
all:
|
709
|
-
|
710
|
-
|
711
|
-
|
844
|
+
all: v11.pipe(
|
845
|
+
v11.array(
|
846
|
+
v11.pipe(
|
847
|
+
v11.array(v11.union([v11.undefined(), DcqlCredential.vParseSuccess, DcqlCredential.vParseFailure])),
|
712
848
|
vNonEmptyArray()
|
713
849
|
)
|
714
850
|
),
|
715
851
|
vNonEmptyArray()
|
716
852
|
)
|
717
853
|
}),
|
718
|
-
|
854
|
+
v11.object({
|
719
855
|
success: DcqlCredential.vParseFailure.entries.success,
|
720
|
-
all:
|
721
|
-
|
722
|
-
|
723
|
-
|
856
|
+
all: v11.pipe(
|
857
|
+
v11.array(
|
858
|
+
v11.pipe(
|
859
|
+
v11.array(v11.union([v11.undefined(), DcqlCredential.vParseSuccess, DcqlCredential.vParseFailure])),
|
724
860
|
vNonEmptyArray()
|
725
861
|
)
|
726
862
|
),
|
@@ -729,49 +865,49 @@ var DcqlQueryResult;
|
|
729
865
|
})
|
730
866
|
])
|
731
867
|
),
|
732
|
-
credential_sets:
|
733
|
-
|
734
|
-
|
735
|
-
|
868
|
+
credential_sets: v11.optional(
|
869
|
+
v11.pipe(
|
870
|
+
v11.array(
|
871
|
+
v11.object({
|
736
872
|
...CredentialSetQuery.vModel.entries,
|
737
|
-
matching_options:
|
873
|
+
matching_options: v11.union([v11.undefined(), v11.pipe(v11.array(v11.array(v11.string())), vNonEmptyArray())])
|
738
874
|
})
|
739
875
|
),
|
740
876
|
vNonEmptyArray(),
|
741
|
-
|
877
|
+
v11.description(
|
742
878
|
"OPTIONAL. A non-empty array of credential set queries that specifies additional constraints on which of the requested Verifiable Credentials to return."
|
743
879
|
)
|
744
880
|
)
|
745
881
|
),
|
746
|
-
canBeSatisfied:
|
882
|
+
canBeSatisfied: v11.boolean()
|
747
883
|
});
|
748
884
|
})(DcqlQueryResult || (DcqlQueryResult = {}));
|
749
885
|
|
750
886
|
// src/dcql-presentation/m-dcql-presentation-result.ts
|
751
887
|
var DcqlPresentationResult;
|
752
888
|
((DcqlPresentationResult2) => {
|
753
|
-
DcqlPresentationResult2.vModel =
|
754
|
-
...
|
755
|
-
invalid_matches:
|
756
|
-
|
757
|
-
|
758
|
-
|
759
|
-
...
|
760
|
-
presentation_id:
|
889
|
+
DcqlPresentationResult2.vModel = v12.object({
|
890
|
+
...v12.omit(DcqlQueryResult.vModel, ["credential_matches"]).entries,
|
891
|
+
invalid_matches: v12.union([
|
892
|
+
v12.record(
|
893
|
+
v12.pipe(vIdString),
|
894
|
+
v12.object({
|
895
|
+
...v12.omit(DcqlCredential.vParseFailure, ["input_credential_index"]).entries,
|
896
|
+
presentation_id: v12.pipe(vIdString)
|
761
897
|
})
|
762
898
|
),
|
763
|
-
|
899
|
+
v12.undefined()
|
764
900
|
]),
|
765
|
-
valid_matches:
|
766
|
-
|
767
|
-
|
768
|
-
...
|
769
|
-
presentation_id:
|
901
|
+
valid_matches: v12.record(
|
902
|
+
v12.pipe(vIdString),
|
903
|
+
v12.object({
|
904
|
+
...v12.omit(DcqlCredential.vParseSuccess, ["issues", "input_credential_index"]).entries,
|
905
|
+
presentation_id: v12.pipe(vIdString)
|
770
906
|
})
|
771
907
|
)
|
772
908
|
});
|
773
909
|
DcqlPresentationResult2.parse = (input) => {
|
774
|
-
return
|
910
|
+
return v12.parse(DcqlPresentationResult2.vModel, input);
|
775
911
|
};
|
776
912
|
DcqlPresentationResult2.fromDcqlPresentation = (dcqlPresentation, ctx) => {
|
777
913
|
const { dcqlQuery } = ctx;
|
@@ -826,7 +962,7 @@ var DcqlPresentationResult;
|
|
826
962
|
...dcqlQuery,
|
827
963
|
canBeSatisfied: dqclQueryMatched,
|
828
964
|
valid_matches: validMatches,
|
829
|
-
invalid_matches: Object.keys(invalidMatches).length === 0 ? void 0 :
|
965
|
+
invalid_matches: Object.keys(invalidMatches).length === 0 ? void 0 : invalidMatches,
|
830
966
|
credential_sets: credentialSetResults
|
831
967
|
};
|
832
968
|
};
|
@@ -842,15 +978,15 @@ var DcqlPresentationResult;
|
|
842
978
|
})(DcqlPresentationResult || (DcqlPresentationResult = {}));
|
843
979
|
|
844
980
|
// src/dcql-presentation/m-dcql-presentation.ts
|
845
|
-
import * as
|
981
|
+
import * as v13 from "valibot";
|
846
982
|
var DcqlPresentation;
|
847
983
|
((DcqlPresentation2) => {
|
848
|
-
DcqlPresentation2.vModel =
|
984
|
+
DcqlPresentation2.vModel = v13.record(vIdString, v13.union([v13.string(), vJsonRecord]));
|
849
985
|
DcqlPresentation2.parse = (input) => {
|
850
986
|
if (typeof input === "string") {
|
851
|
-
return
|
987
|
+
return v13.parse(v13.pipe(v13.string(), vStringToJson, DcqlPresentation2.vModel), input);
|
852
988
|
}
|
853
|
-
return
|
989
|
+
return v13.parse(DcqlPresentation2.vModel, input);
|
854
990
|
};
|
855
991
|
DcqlPresentation2.encode = (input) => {
|
856
992
|
return JSON.stringify(input);
|
@@ -902,20 +1038,20 @@ var runDcqlQuery = (dcqlQuery, ctx) => {
|
|
902
1038
|
};
|
903
1039
|
|
904
1040
|
// src/dcql-query/m-dcql-query.ts
|
905
|
-
import * as
|
1041
|
+
import * as v14 from "valibot";
|
906
1042
|
var DcqlQuery;
|
907
1043
|
((DcqlQuery2) => {
|
908
|
-
DcqlQuery2.vModel =
|
909
|
-
credentials:
|
910
|
-
|
1044
|
+
DcqlQuery2.vModel = v14.object({
|
1045
|
+
credentials: v14.pipe(
|
1046
|
+
v14.array(DcqlCredentialQuery.vModel),
|
911
1047
|
vNonEmptyArray(),
|
912
|
-
|
1048
|
+
v14.description(
|
913
1049
|
"REQUIRED. A non-empty array of Credential Queries that specify the requested Verifiable Credentials."
|
914
1050
|
)
|
915
1051
|
),
|
916
|
-
credential_sets:
|
917
|
-
|
918
|
-
|
1052
|
+
credential_sets: v14.pipe(
|
1053
|
+
v14.optional(v14.pipe(v14.array(CredentialSetQuery.vModel), vNonEmptyArray())),
|
1054
|
+
v14.description(
|
919
1055
|
"OPTIONAL. A non-empty array of credential set queries that specifies additional constraints on which of the requested Verifiable Credentials to return."
|
920
1056
|
)
|
921
1057
|
)
|
@@ -929,7 +1065,7 @@ var DcqlQuery;
|
|
929
1065
|
return runDcqlQuery(dcqlQuery, { credentials, presentation: false });
|
930
1066
|
};
|
931
1067
|
DcqlQuery2.parse = (input) => {
|
932
|
-
return
|
1068
|
+
return v14.parse(DcqlQuery2.vModel, input);
|
933
1069
|
};
|
934
1070
|
})(DcqlQuery || (DcqlQuery = {}));
|
935
1071
|
var validateUniqueCredentialQueryIds = (query) => {
|
@@ -967,6 +1103,7 @@ export {
|
|
967
1103
|
DcqlCredentialPresentation,
|
968
1104
|
DcqlCredentialQuery,
|
969
1105
|
DcqlCredentialSetError,
|
1106
|
+
DcqlCredentialTrustedAuthority,
|
970
1107
|
DcqlError,
|
971
1108
|
DcqlInvalidClaimsQueryIdError,
|
972
1109
|
DcqlInvalidPresentationRecordError,
|
@@ -982,6 +1119,7 @@ export {
|
|
982
1119
|
DcqlQueryResult,
|
983
1120
|
DcqlSdJwtVcCredential,
|
984
1121
|
DcqlSdJwtVcPresentation,
|
1122
|
+
DcqlTrustedAuthoritiesQuery,
|
985
1123
|
DcqlUndefinedClaimSetIdError,
|
986
1124
|
DcqlW3cVcCredential,
|
987
1125
|
DcqlW3cVcPresentation,
|