@openid4vc/openid4vci 0.3.0-alpha-20251017121147 → 0.3.0-alpha-20251017122507

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.js CHANGED
@@ -43,23 +43,23 @@ const zTxCode = zod.default.object({
43
43
  input_mode: zod.default.union([zod.default.literal("numeric"), zod.default.literal("text")]).optional(),
44
44
  length: zod.default.number().int().optional(),
45
45
  description: zod.default.string().max(300).optional()
46
- }).passthrough();
46
+ }).loose();
47
47
  const zCredentialOfferGrants = zod.default.object({
48
48
  authorization_code: zod.default.object({
49
49
  issuer_state: zod.default.string().optional(),
50
50
  authorization_server: __openid4vc_utils.zHttpsUrl.optional()
51
- }).passthrough().optional(),
51
+ }).loose().optional(),
52
52
  [__openid4vc_oauth2.preAuthorizedCodeGrantIdentifier]: zod.default.object({
53
53
  "pre-authorized_code": zod.default.string(),
54
54
  tx_code: zTxCode.optional(),
55
55
  authorization_server: __openid4vc_utils.zHttpsUrl.optional()
56
- }).passthrough().optional()
57
- }).passthrough();
56
+ }).loose().optional()
57
+ }).loose();
58
58
  const zCredentialOfferObjectDraft14 = zod.default.object({
59
59
  credential_issuer: __openid4vc_utils.zHttpsUrl,
60
60
  credential_configuration_ids: zod.default.array(zod.default.string()),
61
61
  grants: zod.default.optional(zCredentialOfferGrants)
62
- }).passthrough();
62
+ }).loose();
63
63
  const zCredentialOfferObjectDraft11To14 = zod.default.object({
64
64
  credential_issuer: __openid4vc_utils.zHttpsUrl,
65
65
  credentials: zod.default.array(zod.default.string({ message: "Only string credential identifiers are supported for draft 11 credential offers" })),
@@ -68,9 +68,9 @@ const zCredentialOfferObjectDraft11To14 = zod.default.object({
68
68
  [__openid4vc_oauth2.preAuthorizedCodeGrantIdentifier]: zod.default.object({
69
69
  "pre-authorized_code": zod.default.string(),
70
70
  user_pin_required: zod.default.optional(zod.default.boolean())
71
- }).passthrough().optional()
71
+ }).loose().optional()
72
72
  }))
73
- }).passthrough().transform(({ credentials, grants,...rest }) => {
73
+ }).loose().transform(({ credentials, grants,...rest }) => {
74
74
  const v14 = {
75
75
  ...rest,
76
76
  credential_configuration_ids: credentials
@@ -177,14 +177,15 @@ const zCredentialConfigurationSupportedClaimsDescriptionDraft14 = zod.default.ob
177
177
  display: zod.default.array(zod.default.object({
178
178
  name: zod.default.string().optional(),
179
179
  locale: zod.default.string().optional()
180
- }).passthrough()).optional()
181
- }).passthrough();
180
+ }).loose()).optional()
181
+ }).loose();
182
182
  const zCredentialConfigurationSupportedClaimsDraft14 = zod.default.record(zod.default.string(), zod.default.union([zCredentialConfigurationSupportedClaimsDescriptionDraft14, zod.default.lazy(() => zCredentialConfigurationSupportedClaimsDraft14)]));
183
- const zClaimsDescriptionPath = zod.default.array(zod.default.union([
183
+ const zClaimDescriptionPathValue = zod.default.union([
184
184
  zod.default.string(),
185
185
  zod.default.number().int().nonnegative(),
186
186
  zod.default.null()
187
- ])).nonempty();
187
+ ]);
188
+ const zClaimsDescriptionPath = zod.default.tuple([zClaimDescriptionPathValue], zClaimDescriptionPathValue);
188
189
  const zMsoMdocClaimsDescriptionPath = zod.default.tuple([zod.default.string(), zod.default.string()], { message: "mso_mdoc claims description path MUST be an array with exactly two string elements, pointing to the namespace and element identifier within an mdoc credential" });
189
190
  const zIssuerMetadataClaimsDescription = zod.default.object({
190
191
  path: zClaimsDescriptionPath,
@@ -192,8 +193,8 @@ const zIssuerMetadataClaimsDescription = zod.default.object({
192
193
  display: zod.default.array(zod.default.object({
193
194
  name: zod.default.string().optional(),
194
195
  locale: zod.default.string().optional()
195
- }).passthrough()).optional()
196
- }).passthrough();
196
+ }).loose()).optional()
197
+ }).loose();
197
198
  const zMsoMdocIssuerMetadataClaimsDescription = zIssuerMetadataClaimsDescription.extend({ path: zMsoMdocClaimsDescriptionPath });
198
199
 
199
200
  //#endregion
@@ -201,7 +202,7 @@ const zMsoMdocIssuerMetadataClaimsDescription = zIssuerMetadataClaimsDescription
201
202
  const zKeyAttestationJwtHeader = zod.default.object({
202
203
  ...__openid4vc_oauth2.zJwtHeader.shape,
203
204
  typ: zod.default.literal("keyattestation+jwt").or(zod.default.literal("key-attestation+jwt"))
204
- }).passthrough().refine(({ kid, jwk }) => jwk === void 0 || kid === void 0, { message: `Both 'jwk' and 'kid' are defined. Only one is allowed` }).refine(({ trust_chain, kid }) => !trust_chain || !kid, { message: `When 'trust_chain' is provided, 'kid' is required` });
205
+ }).loose().refine(({ kid, jwk }) => jwk === void 0 || kid === void 0, { message: `Both 'jwk' and 'kid' are defined. Only one is allowed` }).refine(({ trust_chain, kid }) => !trust_chain || !kid, { message: `When 'trust_chain' is provided, 'kid' is required` });
205
206
  const zIso18045 = zod.default.enum([
206
207
  "iso_18045_high",
207
208
  "iso_18045_moderate",
@@ -215,13 +216,13 @@ const zKeyAttestationJwtPayload = zod.default.object({
215
216
  attested_keys: zod.default.array(__openid4vc_oauth2.zJwk),
216
217
  key_storage: zod.default.optional(zIso18045OrStringArray),
217
218
  user_authentication: zod.default.optional(zIso18045OrStringArray),
218
- certification: zod.default.optional(zod.default.string().url())
219
- }).passthrough();
219
+ certification: zod.default.optional(zod.default.url())
220
+ }).loose();
220
221
  const zKeyAttestationJwtPayloadForUse = (use) => zod.default.object({
221
222
  ...zKeyAttestationJwtPayload.shape,
222
223
  nonce: use === "proof_type.attestation" ? zod.default.string({ message: `Nonce must be defined when key attestation is used as 'proof_type.attestation' directly` }) : zod.default.optional(zod.default.string()),
223
224
  exp: use === "proof_type.jwt" ? __openid4vc_utils.zInteger : zod.default.optional(__openid4vc_utils.zInteger)
224
- }).passthrough();
225
+ }).loose();
225
226
 
226
227
  //#endregion
227
228
  //#region src/metadata/credential-issuer/z-credential-configuration-supported-common.ts
@@ -231,12 +232,12 @@ const zCredentialConfigurationSupportedDisplayEntry = zod.default.object({
231
232
  logo: zod.default.object({
232
233
  uri: zod.default.string().optional(),
233
234
  alt_text: zod.default.string().optional()
234
- }).passthrough().optional(),
235
+ }).loose().optional(),
235
236
  description: zod.default.string().optional(),
236
237
  background_color: zod.default.string().optional(),
237
- background_image: zod.default.object({ uri: zod.default.string().optional() }).passthrough().optional(),
238
+ background_image: zod.default.object({ uri: zod.default.string().optional() }).loose().optional(),
238
239
  text_color: zod.default.string().optional()
239
- }).passthrough();
240
+ }).loose();
240
241
  const zCredentialConfigurationSupportedCommonCredentialMetadata = zod.default.object({ display: zod.default.array(zCredentialConfigurationSupportedDisplayEntry).optional() });
241
242
  const zCredentialConfigurationSupportedCommon = zod.default.object({
242
243
  format: zod.default.string(),
@@ -252,11 +253,11 @@ const zCredentialConfigurationSupportedCommon = zod.default.object({
252
253
  key_attestations_required: zod.default.object({
253
254
  key_storage: zIso18045OrStringArray.optional(),
254
255
  user_authentication: zIso18045OrStringArray.optional()
255
- }).passthrough().optional()
256
+ }).loose().optional()
256
257
  })).optional(),
257
258
  credential_metadata: zCredentialConfigurationSupportedCommonCredentialMetadata.optional(),
258
259
  claims: zod.default.optional(zod.default.never())
259
- }).passthrough();
260
+ }).loose();
260
261
  const zCredentialConfigurationSupportedCommonDraft15 = zod.default.object({
261
262
  format: zod.default.string(),
262
263
  scope: zod.default.string().optional(),
@@ -271,11 +272,11 @@ const zCredentialConfigurationSupportedCommonDraft15 = zod.default.object({
271
272
  key_attestations_required: zod.default.object({
272
273
  key_storage: zIso18045OrStringArray.optional(),
273
274
  user_authentication: zIso18045OrStringArray.optional()
274
- }).passthrough().optional()
275
+ }).loose().optional()
275
276
  })).optional(),
276
277
  display: zod.default.array(zCredentialConfigurationSupportedDisplayEntry).optional(),
277
278
  credential_metadata: zod.default.optional(zod.default.never())
278
- }).passthrough();
279
+ }).loose();
279
280
 
280
281
  //#endregion
281
282
  //#region src/formats/credential/mso-mdoc/z-mso-mdoc.ts
@@ -368,8 +369,8 @@ const zCredentialSubjectLeafTypeDraft14 = zod.default.object({
368
369
  display: zod.default.array(zod.default.object({
369
370
  name: zod.default.string().optional(),
370
371
  locale: zod.default.string().optional()
371
- }).passthrough()).optional()
372
- }).passthrough();
372
+ }).loose()).optional()
373
+ }).loose();
373
374
  const zClaimValueSchemaDraft14 = zod.default.union([
374
375
  zod.default.array(zod.default.any()),
375
376
  zod.default.record(zod.default.string(), zod.default.any()),
@@ -378,14 +379,14 @@ const zClaimValueSchemaDraft14 = zod.default.union([
378
379
  const zW3cVcCredentialSubjectDraft14 = zod.default.record(zod.default.string(), zClaimValueSchemaDraft14);
379
380
  const zW3cVcJsonLdCredentialDefinition = zod.default.object({
380
381
  "@context": zod.default.array(zod.default.string()),
381
- type: zod.default.array(zod.default.string()).nonempty()
382
- }).passthrough();
382
+ type: zod.default.tuple([zod.default.string()], zod.default.string())
383
+ }).loose();
383
384
  const zW3cVcJsonLdCredentialDefinitionDraft14 = zW3cVcJsonLdCredentialDefinition.extend({ credentialSubject: zW3cVcCredentialSubjectDraft14.optional() });
384
385
 
385
386
  //#endregion
386
387
  //#region src/formats/credential/w3c-vc/z-w3c-jwt-vc-json.ts
387
388
  const zJwtVcJsonFormatIdentifier = zod.default.literal("jwt_vc_json");
388
- const zJwtVcJsonCredentialDefinition = zod.default.object({ type: zod.default.array(zod.default.string()).nonempty() }).passthrough();
389
+ const zJwtVcJsonCredentialDefinition = zod.default.object({ type: zod.default.tuple([zod.default.string()], zod.default.string()) }).loose();
389
390
  const zJwtVcJsonCredentialDefinitionDraft14 = zJwtVcJsonCredentialDefinition.extend({ credentialSubject: zW3cVcCredentialSubjectDraft14.optional() });
390
391
  const zJwtVcJsonCredentialIssuerMetadata = zCredentialConfigurationSupportedCommon.extend({
391
392
  format: zJwtVcJsonFormatIdentifier,
@@ -405,9 +406,9 @@ const zJwtVcJsonCredentialIssuerMetadataDraft14 = zCredentialConfigurationSuppor
405
406
  const zJwtVcJsonCredentialIssuerMetadataDraft11 = zod.default.object({
406
407
  format: zJwtVcJsonFormatIdentifier,
407
408
  order: zod.default.array(zod.default.string()).optional(),
408
- types: zod.default.array(zod.default.string()),
409
+ types: zod.default.tuple([zod.default.string()], zod.default.string()),
409
410
  credentialSubject: zW3cVcCredentialSubjectDraft14.optional()
410
- }).passthrough();
411
+ }).loose();
411
412
  const zJwtVcJsonCredentialIssuerMetadataDraft11To14 = zJwtVcJsonCredentialIssuerMetadataDraft11.transform(({ types, credentialSubject,...rest }) => ({
412
413
  ...rest,
413
414
  credential_definition: {
@@ -415,7 +416,7 @@ const zJwtVcJsonCredentialIssuerMetadataDraft11To14 = zJwtVcJsonCredentialIssuer
415
416
  ...credentialSubject ? { credentialSubject } : {}
416
417
  }
417
418
  }));
418
- const zJwtVcJsonCredentialIssuerMetadataDraft14To11 = zJwtVcJsonCredentialIssuerMetadataDraft14.passthrough().transform(({ credential_definition: { type,...credentialDefinition },...rest }) => ({
419
+ const zJwtVcJsonCredentialIssuerMetadataDraft14To11 = zJwtVcJsonCredentialIssuerMetadataDraft14.loose().transform(({ credential_definition: { type,...credentialDefinition },...rest }) => ({
419
420
  ...rest,
420
421
  types: type,
421
422
  ...credentialDefinition
@@ -426,9 +427,9 @@ const zJwtVcJsonCredentialRequestFormatDraft14 = zod.default.object({
426
427
  });
427
428
  const zJwtVcJsonCredentialRequestDraft11 = zod.default.object({
428
429
  format: zJwtVcJsonFormatIdentifier,
429
- types: zod.default.array(zod.default.string()),
430
+ types: zod.default.tuple([zod.default.string()], zod.default.string()),
430
431
  credentialSubject: zod.default.optional(zW3cVcCredentialSubjectDraft14)
431
- }).passthrough();
432
+ }).loose();
432
433
  const zJwtVcJsonCredentialRequestDraft11To14 = zJwtVcJsonCredentialRequestDraft11.transform(({ types, credentialSubject,...rest }) => {
433
434
  return {
434
435
  ...rest,
@@ -438,7 +439,7 @@ const zJwtVcJsonCredentialRequestDraft11To14 = zJwtVcJsonCredentialRequestDraft1
438
439
  }
439
440
  };
440
441
  });
441
- const zJwtVcJsonCredentialRequestDraft14To11 = zJwtVcJsonCredentialRequestFormatDraft14.passthrough().transform(({ credential_definition: { type,...credentialDefinition },...rest }) => ({
442
+ const zJwtVcJsonCredentialRequestDraft14To11 = zJwtVcJsonCredentialRequestFormatDraft14.loose().transform(({ credential_definition: { type,...credentialDefinition },...rest }) => ({
442
443
  ...rest,
443
444
  types: type,
444
445
  ...credentialDefinition
@@ -466,9 +467,9 @@ const zJwtVcJsonLdCredentialIssuerMetadataDraft11 = zod.default.object({
466
467
  order: zod.default.array(zod.default.string()).optional(),
467
468
  format: zJwtVcJsonLdFormatIdentifier,
468
469
  "@context": zod.default.array(zod.default.string()),
469
- types: zod.default.array(zod.default.string()),
470
+ types: zod.default.tuple([zod.default.string()], zod.default.string()),
470
471
  credentialSubject: zW3cVcCredentialSubjectDraft14.optional()
471
- }).passthrough();
472
+ }).loose();
472
473
  const zJwtVcJsonLdCredentialIssuerMetadataDraft11To14 = zJwtVcJsonLdCredentialIssuerMetadataDraft11.transform(({ "@context": context, types, credentialSubject,...rest }) => ({
473
474
  ...rest,
474
475
  credential_definition: {
@@ -477,7 +478,7 @@ const zJwtVcJsonLdCredentialIssuerMetadataDraft11To14 = zJwtVcJsonLdCredentialIs
477
478
  ...credentialSubject ? { credentialSubject } : {}
478
479
  }
479
480
  }));
480
- const zJwtVcJsonLdCredentialIssuerMetadataDraft14To11 = zJwtVcJsonLdCredentialIssuerMetadataDraft14.passthrough().transform(({ credential_definition: { type,...credentialDefinition },...rest }) => ({
481
+ const zJwtVcJsonLdCredentialIssuerMetadataDraft14To11 = zJwtVcJsonLdCredentialIssuerMetadataDraft14.loose().transform(({ credential_definition: { type,...credentialDefinition },...rest }) => ({
481
482
  ...rest,
482
483
  ...credentialDefinition,
483
484
  types: type
@@ -490,10 +491,10 @@ const zJwtVcJsonLdCredentialRequestDraft11 = zod.default.object({
490
491
  format: zJwtVcJsonLdFormatIdentifier,
491
492
  credential_definition: zod.default.object({
492
493
  "@context": zod.default.array(zod.default.string()),
493
- types: zod.default.array(zod.default.string()),
494
+ types: zod.default.tuple([zod.default.string()], zod.default.string()),
494
495
  credentialSubject: zod.default.optional(zW3cVcCredentialSubjectDraft14)
495
- }).passthrough()
496
- }).passthrough();
496
+ }).loose()
497
+ }).loose();
497
498
  const zJwtVcJsonLdCredentialRequestDraft11To14 = zJwtVcJsonLdCredentialRequestDraft11.transform(({ credential_definition: { types,...restCredentialDefinition },...rest }) => ({
498
499
  ...rest,
499
500
  credential_definition: {
@@ -501,7 +502,7 @@ const zJwtVcJsonLdCredentialRequestDraft11To14 = zJwtVcJsonLdCredentialRequestDr
501
502
  type: types
502
503
  }
503
504
  }));
504
- const zJwtVcJsonLdCredentialRequestDraft14To11 = zJwtVcJsonLdCredentialRequestFormatDraft14.passthrough().transform(({ credential_definition: { type,...restCredentialDefinition },...rest }) => ({
505
+ const zJwtVcJsonLdCredentialRequestDraft14To11 = zJwtVcJsonLdCredentialRequestFormatDraft14.loose().transform(({ credential_definition: { type,...restCredentialDefinition },...rest }) => ({
505
506
  ...rest,
506
507
  credential_definition: {
507
508
  ...restCredentialDefinition,
@@ -531,9 +532,9 @@ const zLdpVcCredentialIssuerMetadataDraft11 = zod.default.object({
531
532
  order: zod.default.array(zod.default.string()).optional(),
532
533
  format: zLdpVcFormatIdentifier,
533
534
  "@context": zod.default.array(zod.default.string()),
534
- types: zod.default.array(zod.default.string()),
535
+ types: zod.default.tuple([zod.default.string()], zod.default.string()),
535
536
  credentialSubject: zW3cVcCredentialSubjectDraft14.optional()
536
- }).passthrough();
537
+ }).loose();
537
538
  const zLdpVcCredentialIssuerMetadataDraft11To14 = zLdpVcCredentialIssuerMetadataDraft11.transform(({ "@context": context, types, credentialSubject,...rest }) => ({
538
539
  ...rest,
539
540
  credential_definition: {
@@ -542,7 +543,7 @@ const zLdpVcCredentialIssuerMetadataDraft11To14 = zLdpVcCredentialIssuerMetadata
542
543
  ...credentialSubject ? { credentialSubject } : {}
543
544
  }
544
545
  }));
545
- const zLdpVcCredentialIssuerMetadataDraft14To11 = zLdpVcCredentialIssuerMetadataDraft14.passthrough().transform(({ credential_definition: { type,...credentialDefinition },...rest }) => ({
546
+ const zLdpVcCredentialIssuerMetadataDraft14To11 = zLdpVcCredentialIssuerMetadataDraft14.loose().transform(({ credential_definition: { type,...credentialDefinition },...rest }) => ({
546
547
  ...rest,
547
548
  ...credentialDefinition,
548
549
  types: type
@@ -555,10 +556,10 @@ const zLdpVcCredentialRequestDraft11 = zod.default.object({
555
556
  format: zLdpVcFormatIdentifier,
556
557
  credential_definition: zod.default.object({
557
558
  "@context": zod.default.array(zod.default.string()),
558
- types: zod.default.array(zod.default.string()),
559
+ types: zod.default.tuple([zod.default.string()], zod.default.string()),
559
560
  credentialSubject: zW3cVcCredentialSubjectDraft14.optional()
560
561
  })
561
- }).passthrough();
562
+ }).loose();
562
563
  const zLdpVcCredentialRequestDraft11To14 = zLdpVcCredentialRequestDraft11.transform(({ credential_definition: { types,...restCredentialDefinition },...rest }) => ({
563
564
  ...rest,
564
565
  credential_definition: {
@@ -566,7 +567,7 @@ const zLdpVcCredentialRequestDraft11To14 = zLdpVcCredentialRequestDraft11.transf
566
567
  type: types
567
568
  }
568
569
  }));
569
- const zLdpVcCredentialRequestDraft14To11 = zLdpVcCredentialRequestFormatDraft14.passthrough().transform(({ credential_definition: { type,...restCredentialDefinition },...rest }) => ({
570
+ const zLdpVcCredentialRequestDraft14To11 = zLdpVcCredentialRequestFormatDraft14.loose().transform(({ credential_definition: { type,...restCredentialDefinition },...rest }) => ({
570
571
  ...rest,
571
572
  credential_definition: {
572
573
  ...restCredentialDefinition,
@@ -577,7 +578,7 @@ const zLdpVcCredentialRequestDraft14To11 = zLdpVcCredentialRequestFormatDraft14.
577
578
  //#endregion
578
579
  //#region src/formats/credential/w3c-vc/z-w3c-sd-jwt-vc.ts
579
580
  const zSdJwtW3VcFormatIdentifier = zod.default.literal("vc+sd-jwt");
580
- const zSdJwtW3VcCredentialDefinition = zod.default.object({ type: zod.default.array(zod.default.string()).nonempty() }).passthrough();
581
+ const zSdJwtW3VcCredentialDefinition = zod.default.object({ type: zod.default.tuple([zod.default.string()], zod.default.string()) }).loose();
581
582
  const zSdJwtW3VcCredentialIssuerMetadata = zCredentialConfigurationSupportedCommon.extend({
582
583
  format: zSdJwtW3VcFormatIdentifier,
583
584
  credential_definition: zSdJwtW3VcCredentialDefinition,
@@ -622,9 +623,12 @@ const allCredentialIssuerMetadataFormatIdentifiers = allCredentialIssuerMetadata
622
623
  const zCredentialConfigurationSupportedWithFormats = zod.default.union([zCredentialConfigurationSupportedCommon, zCredentialConfigurationSupportedCommonDraft15]).transform((data, ctx) => {
623
624
  if (!allCredentialIssuerMetadataFormatIdentifiers.includes(data.format)) return data;
624
625
  const validators = allCredentialIssuerMetadataFormats.filter((formatValidator) => formatValidator.shape.format.value === data.format);
625
- const result = zod.default.object({}).passthrough().and(validators.length > 1 ? zod.default.union(validators) : validators[0]).safeParse(data);
626
+ const result = zod.default.object({}).loose().and(validators.length > 1 ? zod.default.union(validators) : validators[0]).safeParse(data);
626
627
  if (result.success) return result.data;
627
- for (const issue of result.error.issues) ctx.addIssue(issue);
628
+ for (const issue of result.error.issues) ctx.addIssue({
629
+ ...issue,
630
+ code: issue.code
631
+ });
628
632
  return zod.default.NEVER;
629
633
  });
630
634
  const zCredentialIssuerMetadataDisplayEntry = zod.default.object({
@@ -633,8 +637,8 @@ const zCredentialIssuerMetadataDisplayEntry = zod.default.object({
633
637
  logo: zod.default.object({
634
638
  uri: zod.default.string().optional(),
635
639
  alt_text: zod.default.string().optional()
636
- }).passthrough().optional()
637
- }).passthrough();
640
+ }).loose().optional()
641
+ }).loose();
638
642
  const zCredentialIssuerMetadataDraft14Draft15Draft16 = zod.default.object({
639
643
  credential_issuer: __openid4vc_utils.zHttpsUrl,
640
644
  authorization_servers: zod.default.array(__openid4vc_utils.zHttpsUrl).optional(),
@@ -646,22 +650,22 @@ const zCredentialIssuerMetadataDraft14Draft15Draft16 = zod.default.object({
646
650
  alg_values_supported: zod.default.array(zod.default.string()),
647
651
  enc_values_supported: zod.default.array(zod.default.string()),
648
652
  encryption_required: zod.default.boolean()
649
- }).passthrough().optional(),
650
- batch_credential_issuance: zod.default.object({ batch_size: zod.default.number().positive() }).passthrough().optional(),
653
+ }).loose().optional(),
654
+ batch_credential_issuance: zod.default.object({ batch_size: zod.default.number().positive() }).loose().optional(),
651
655
  signed_metadata: __openid4vc_oauth2.zCompactJwt.optional(),
652
656
  display: zod.default.array(zCredentialIssuerMetadataDisplayEntry).optional(),
653
657
  credential_configurations_supported: zod.default.record(zod.default.string(), zCredentialConfigurationSupportedWithFormats)
654
- }).passthrough();
658
+ }).loose();
655
659
  const zCredentialConfigurationSupportedDraft11To16 = zod.default.object({
656
660
  id: zod.default.string().optional(),
657
661
  format: zod.default.string(),
658
662
  cryptographic_suites_supported: zod.default.array(zod.default.string()).optional(),
659
663
  display: zod.default.array(zod.default.object({
660
- logo: zod.default.object({ url: zod.default.string().url().optional() }).passthrough().optional(),
661
- background_image: zod.default.object({ url: zod.default.string().url().optional() }).passthrough().optional()
662
- }).passthrough()).optional(),
664
+ logo: zod.default.object({ url: zod.default.url().optional() }).loose().optional(),
665
+ background_image: zod.default.object({ url: zod.default.url().optional() }).loose().optional()
666
+ }).loose()).optional(),
663
667
  claims: zod.default.any().optional()
664
- }).passthrough().transform(({ cryptographic_suites_supported, display, claims, id,...rest }) => ({
668
+ }).loose().transform(({ cryptographic_suites_supported, display, claims, id,...rest }) => ({
665
669
  ...rest,
666
670
  ...cryptographic_suites_supported ? { credential_signing_alg_values_supported: cryptographic_suites_supported } : {},
667
671
  ...claims || display ? { credential_metadata: {
@@ -681,13 +685,16 @@ const zCredentialConfigurationSupportedDraft11To16 = zod.default.object({
681
685
  if (!Object.keys(formatSpecificTransformations).includes(data.format)) return data;
682
686
  const result = formatSpecificTransformations[data.format].safeParse(data);
683
687
  if (result.success) return result.data;
684
- for (const issue of result.error.issues) ctx.addIssue(issue);
688
+ for (const issue of result.error.issues) ctx.addIssue({
689
+ ...issue,
690
+ code: issue.code
691
+ });
685
692
  return zod.default.NEVER;
686
693
  }).pipe(zCredentialConfigurationSupportedWithFormats);
687
694
  const zCredentialConfigurationSupportedDraft16To11 = zCredentialConfigurationSupportedWithFormats.transform(({ credential_metadata,...rest }) => ({
688
695
  ...credential_metadata,
689
696
  ...rest
690
- })).and(zod.default.object({ id: zod.default.string() }).passthrough()).transform(({ id, credential_signing_alg_values_supported, display, proof_types_supported, scope,...rest }) => ({
697
+ })).and(zod.default.object({ id: zod.default.string() }).loose()).transform(({ id, credential_signing_alg_values_supported, display, proof_types_supported, scope,...rest }) => ({
691
698
  ...rest,
692
699
  ...credential_signing_alg_values_supported ? { cryptographic_suites_supported: credential_signing_alg_values_supported } : {},
693
700
  ...display ? { display: display.map(({ logo, background_image,...displayRest }) => {
@@ -714,18 +721,18 @@ const zCredentialConfigurationSupportedDraft16To11 = zCredentialConfigurationSup
714
721
  zLdpVcFormatIdentifier.value,
715
722
  zJwtVcJsonFormatIdentifier.value,
716
723
  zJwtVcJsonLdFormatIdentifier.value
717
- ].includes(input)) }).passthrough()
724
+ ].includes(input)) }).loose()
718
725
  ]));
719
726
  const zCredentialIssuerMetadataDraft11To16 = zod.default.object({
720
727
  authorization_server: zod.default.string().optional(),
721
- credentials_supported: zod.default.array(zod.default.object({ id: zod.default.string().optional() }).passthrough())
722
- }).passthrough().transform(({ authorization_server, credentials_supported,...rest }) => {
728
+ credentials_supported: zod.default.array(zod.default.object({ id: zod.default.string().optional() }).loose())
729
+ }).loose().transform(({ authorization_server, credentials_supported,...rest }) => {
723
730
  return {
724
731
  ...rest,
725
732
  ...authorization_server ? { authorization_servers: [authorization_server] } : {},
726
733
  credential_configurations_supported: Object.fromEntries(credentials_supported.map((supported) => supported.id ? [supported.id, supported] : void 0).filter((i) => i !== void 0))
727
734
  };
728
- }).pipe(zod.default.object({ credential_configurations_supported: zod.default.record(zod.default.string(), zCredentialConfigurationSupportedDraft11To16) }).passthrough()).pipe(zCredentialIssuerMetadataDraft14Draft15Draft16);
735
+ }).pipe(zod.default.object({ credential_configurations_supported: zod.default.record(zod.default.string(), zCredentialConfigurationSupportedDraft11To16) }).loose()).pipe(zCredentialIssuerMetadataDraft14Draft15Draft16);
729
736
  const zCredentialIssuerMetadataWithDraft11 = zCredentialIssuerMetadataDraft14Draft15Draft16.transform((issuerMetadata) => ({
730
737
  ...issuerMetadata,
731
738
  ...issuerMetadata.authorization_servers ? { authorization_server: issuerMetadata.authorization_servers[0] } : {},
@@ -982,16 +989,16 @@ const zCredentialRequestProofJwt = zod.default.object({
982
989
  const zCredentialRequestJwtProofTypeHeader = __openid4vc_oauth2.zJwtHeader.merge(zod.default.object({
983
990
  key_attestation: zod.default.optional(__openid4vc_oauth2.zCompactJwt),
984
991
  typ: zod.default.literal("openid4vci-proof+jwt")
985
- })).passthrough().refine(({ kid, jwk }) => jwk === void 0 || kid === void 0, { message: `Both 'jwk' and 'kid' are defined. Only one is allowed` }).refine(({ trust_chain, kid }) => !trust_chain || !kid, { message: `When 'trust_chain' is provided, 'kid' is required` });
992
+ })).loose().refine(({ kid, jwk }) => jwk === void 0 || kid === void 0, { message: `Both 'jwk' and 'kid' are defined. Only one is allowed` }).refine(({ trust_chain, kid }) => !trust_chain || !kid, { message: `When 'trust_chain' is provided, 'kid' is required` });
986
993
  const zCredentialRequestJwtProofTypePayload = zod.default.object({
987
994
  ...__openid4vc_oauth2.zJwtPayload.shape,
988
995
  aud: __openid4vc_utils.zHttpsUrl,
989
996
  iat: __openid4vc_utils.zInteger
990
- }).passthrough();
997
+ }).loose();
991
998
 
992
999
  //#endregion
993
1000
  //#region src/credential-request/z-credential-request-common.ts
994
- const zCredentialRequestProofCommon = zod.default.object({ proof_type: zod.default.string() }).passthrough();
1001
+ const zCredentialRequestProofCommon = zod.default.object({ proof_type: zod.default.string() }).loose();
995
1002
  const allCredentialRequestProofs = [zCredentialRequestProofJwt, zCredentialRequestProofAttestation];
996
1003
  const zCredentialRequestProof = zod.default.union([zCredentialRequestProofCommon, zod.default.discriminatedUnion("proof_type", allCredentialRequestProofs)]);
997
1004
  const zCredentialRequestProofsCommon = zod.default.record(zod.default.string(), zod.default.array(zod.default.unknown()));
@@ -1006,8 +1013,8 @@ const zCredentialRequestCommon = zod.default.object({
1006
1013
  jwk: __openid4vc_oauth2.zJwk,
1007
1014
  alg: zod.default.string(),
1008
1015
  enc: zod.default.string()
1009
- }).passthrough().optional()
1010
- }).passthrough().refine(({ proof, proofs }) => !(proof !== void 0 && proofs !== void 0), { message: `Both 'proof' and 'proofs' are defined. Only one is allowed` });
1016
+ }).loose().optional()
1017
+ }).loose().refine(({ proof, proofs }) => !(proof !== void 0 && proofs !== void 0), { message: `Both 'proof' and 'proofs' are defined. Only one is allowed` });
1011
1018
 
1012
1019
  //#endregion
1013
1020
  //#region src/credential-request/z-credential-request.ts
@@ -1034,12 +1041,15 @@ const zCredentialRequestFormat = zod.default.object({
1034
1041
  format: zod.default.string(),
1035
1042
  credential_identifier: zod.default.never({ message: "'credential_identifier' cannot be defined when 'format' is set." }).optional(),
1036
1043
  credential_configuration_id: zod.default.never({ message: "'credential_configuration_id' cannot be defined when 'format' is set." }).optional()
1037
- }).passthrough();
1044
+ }).loose();
1038
1045
  const zCredentialRequestDraft14WithFormat = zCredentialRequestCommon.and(zCredentialRequestFormat).transform((data, ctx) => {
1039
1046
  if (!allCredentialRequestFormatIdentifiers.includes(data.format)) return data;
1040
- const result = zod.default.object({}).passthrough().and(zod.default.union(allCredentialRequestFormats)).safeParse(data);
1047
+ const result = zod.default.object({}).loose().and(zod.default.union(allCredentialRequestFormats)).safeParse(data);
1041
1048
  if (result.success) return result.data;
1042
- for (const issue of result.error.issues) ctx.addIssue(issue);
1049
+ for (const issue of result.error.issues) ctx.addIssue({
1050
+ ...issue,
1051
+ code: issue.code
1052
+ });
1043
1053
  return zod.default.NEVER;
1044
1054
  });
1045
1055
  const zCredentialRequestDraft15 = zod.default.union([zCredentialRequestCommon.and(zAuthorizationDetailsCredentialRequest), zCredentialRequestCommon.and(zCredentialRequestCredentialConfigurationId)]);
@@ -1053,10 +1063,22 @@ const zCredentialRequestDraft11To14 = zCredentialRequestCommon.and(zCredentialRe
1053
1063
  if (!Object.keys(formatSpecificTransformations).includes(data.format)) return data;
1054
1064
  const result = formatSpecificTransformations[data.format].safeParse(data);
1055
1065
  if (result.success) return result.data;
1056
- for (const issue of result.error.issues) ctx.addIssue(issue);
1066
+ for (const issue of result.error.issues) ctx.addIssue({
1067
+ ...issue,
1068
+ code: issue.code
1069
+ });
1057
1070
  return zod.default.NEVER;
1058
1071
  }).pipe(zCredentialRequestDraft14);
1059
- const zCredentialRequestDraft14To11 = zCredentialRequestDraft14.refine((data) => data.credential_identifier === void 0, `'credential_identifier' is not supported in OpenID4VCI draft 11`).transform((data, ctx) => {
1072
+ const zCredentialRequestDraft14To11 = zCredentialRequestDraft14.transform((data, ctx) => {
1073
+ if (data.credential_identifier !== void 0) {
1074
+ ctx.addIssue({
1075
+ code: "custom",
1076
+ continue: false,
1077
+ message: `'credential_identifier' is not supported in OpenID4VCI draft 11`,
1078
+ path: ["credential_identifier"]
1079
+ });
1080
+ return zod.default.NEVER;
1081
+ }
1060
1082
  const formatSpecificTransformations = {
1061
1083
  [zLdpVcFormatIdentifier.value]: zLdpVcCredentialRequestDraft14To11,
1062
1084
  [zJwtVcJsonFormatIdentifier.value]: zJwtVcJsonCredentialRequestDraft14To11,
@@ -1065,7 +1087,10 @@ const zCredentialRequestDraft14To11 = zCredentialRequestDraft14.refine((data) =>
1065
1087
  if (!Object.keys(formatSpecificTransformations).includes(data.format)) return data;
1066
1088
  const result = formatSpecificTransformations[data.format].safeParse(data);
1067
1089
  if (result.success) return result.data;
1068
- for (const issue of result.error.issues) ctx.addIssue(issue);
1090
+ for (const issue of result.error.issues) ctx.addIssue({
1091
+ ...issue,
1092
+ code: issue.code
1093
+ });
1069
1094
  return zod.default.NEVER;
1070
1095
  });
1071
1096
  const zCredentialRequest = zod.default.union([
@@ -1079,7 +1104,7 @@ const zDeferredCredentialRequest = zod.default.object({
1079
1104
  jwk: __openid4vc_oauth2.zJwk,
1080
1105
  alg: zod.default.string(),
1081
1106
  enc: zod.default.string()
1082
- }).passthrough().optional()
1107
+ }).loose().optional()
1083
1108
  });
1084
1109
 
1085
1110
  //#endregion
@@ -1124,10 +1149,10 @@ let Oauth2ErrorCodes$2 = /* @__PURE__ */ function(Oauth2ErrorCodes$3) {
1124
1149
  return Oauth2ErrorCodes$3;
1125
1150
  }({});
1126
1151
  const zOauth2ErrorResponse = zod.default.object({
1127
- error: zod.default.union([zod.default.nativeEnum(Oauth2ErrorCodes$2), zod.default.string()]),
1152
+ error: zod.default.union([zod.default.enum(Oauth2ErrorCodes$2), zod.default.string()]),
1128
1153
  error_description: zod.default.string().optional(),
1129
1154
  error_uri: zod.default.string().optional()
1130
- }).passthrough();
1155
+ }).loose();
1131
1156
 
1132
1157
  //#endregion
1133
1158
  //#region src/credential-request/z-credential-response.ts
@@ -1136,28 +1161,28 @@ const zBaseCredentialResponse = zod.default.object({
1136
1161
  credentials: zod.default.union([zod.default.array(zod.default.object({ credential: zCredentialEncoding })), zod.default.array(zCredentialEncoding)]).optional(),
1137
1162
  interval: zod.default.number().int().positive().optional(),
1138
1163
  notification_id: zod.default.string().optional()
1139
- }).passthrough();
1164
+ }).loose();
1140
1165
  const zCredentialResponse = zBaseCredentialResponse.extend({
1141
1166
  credential: zod.default.optional(zCredentialEncoding),
1142
1167
  transaction_id: zod.default.string().optional(),
1143
1168
  c_nonce: zod.default.string().optional(),
1144
1169
  c_nonce_expires_in: zod.default.number().int().optional()
1145
- }).passthrough().superRefine((value, ctx) => {
1170
+ }).loose().superRefine((value, ctx) => {
1146
1171
  const { credential, credentials, transaction_id, interval, notification_id } = value;
1147
1172
  if ([
1148
1173
  credential,
1149
1174
  credentials,
1150
1175
  transaction_id
1151
1176
  ].filter((i) => i !== void 0).length !== 1) ctx.addIssue({
1152
- code: zod.default.ZodIssueCode.custom,
1177
+ code: "custom",
1153
1178
  message: `Exactly one of 'credential', 'credentials', or 'transaction_id' MUST be defined.`
1154
1179
  });
1155
1180
  if (transaction_id && !interval) ctx.addIssue({
1156
- code: zod.default.ZodIssueCode.custom,
1181
+ code: "custom",
1157
1182
  message: `'interval' MUST be defined when 'transaction_id' is defined.`
1158
1183
  });
1159
1184
  if (notification_id && !(credentials || credential)) ctx.addIssue({
1160
- code: zod.default.ZodIssueCode.custom,
1185
+ code: "custom",
1161
1186
  message: `'notification_id' MUST NOT be defined when 'credential' or 'credentials' are not defined.`
1162
1187
  });
1163
1188
  });
@@ -1165,7 +1190,7 @@ const zCredentialErrorResponse = zod.default.object({
1165
1190
  ...zOauth2ErrorResponse.shape,
1166
1191
  c_nonce: zod.default.string().optional(),
1167
1192
  c_nonce_expires_in: zod.default.number().int().optional()
1168
- }).passthrough();
1193
+ }).loose();
1169
1194
  const zDeferredCredentialResponse = zBaseCredentialResponse.refine((value) => {
1170
1195
  const { credentials, interval } = value;
1171
1196
  return [credentials, interval].filter((i) => i !== void 0).length === 1;
@@ -1391,7 +1416,7 @@ async function resolveIssuerMetadata(credentialIssuer, options) {
1391
1416
  const zNonceResponse = zod.default.object({
1392
1417
  c_nonce: zod.default.string(),
1393
1418
  c_nonce_expires_in: zod.default.optional(__openid4vc_utils.zInteger)
1394
- }).passthrough();
1419
+ }).loose();
1395
1420
 
1396
1421
  //#endregion
1397
1422
  //#region src/nonce/nonce-request.ts
@@ -1430,8 +1455,8 @@ const zNotificationRequest = zod.default.object({
1430
1455
  notification_id: zod.default.string(),
1431
1456
  event: zNotificationEvent,
1432
1457
  event_description: zod.default.optional(zod.default.string())
1433
- }).passthrough();
1434
- const zNotificationErrorResponse = zod.default.object({ error: zod.default.enum(["invalid_notification_id", "invalid_notification_request"]) }).passthrough();
1458
+ }).loose();
1459
+ const zNotificationErrorResponse = zod.default.object({ error: zod.default.enum(["invalid_notification_id", "invalid_notification_request"]) }).loose();
1435
1460
 
1436
1461
  //#endregion
1437
1462
  //#region src/notification/notification.ts