{"version":3,"file":"W3cV2EnvelopedVerifiablePresentation.mjs","names":[],"sources":["../../../../../src/modules/vc/models/presentation/W3cV2EnvelopedVerifiablePresentation.ts"],"sourcesContent":["import { Expose } from 'class-transformer'\nimport { buildMessage, IsDataURI, ValidateBy, type ValidationOptions } from 'class-validator'\nimport type { JsonObject, SingleOrArray } from '../../../../types'\nimport { CREDENTIALS_CONTEXT_V2_URL, ENVELOPED_VERIFIABLE_PRESENTATION_TYPE } from '../../constants'\nimport { IsCredentialJsonLdContext } from '../../validators'\n\nexport interface W3cV2EnvelopedVerifiablePresentationOptions {\n  id: string\n  context?: string | Array<string | JsonObject>\n  type?: SingleOrArray<string>\n}\n\nexport class W3cV2EnvelopedVerifiablePresentation {\n  public constructor(options: W3cV2EnvelopedVerifiablePresentationOptions) {\n    if (options) {\n      this.context = options.context ?? CREDENTIALS_CONTEXT_V2_URL\n      this.id = options.id\n      this.type = options.type ?? ENVELOPED_VERIFIABLE_PRESENTATION_TYPE\n    }\n  }\n\n  @Expose({ name: '@context' })\n  @IsCredentialJsonLdContext({ allowString: true, credentialContext: CREDENTIALS_CONTEXT_V2_URL })\n  public context!: string | Array<string | JsonObject>\n\n  @IsDataURI()\n  public id!: string\n\n  @IsEnvelopedVerifiablePresentationType()\n  public type!: SingleOrArray<string>\n}\n\nexport function isEnvelopedVerifiablePresentationEntry(\n  value: unknown\n): value is W3cV2EnvelopedVerifiablePresentationOptions {\n  if (!value || typeof value !== 'object' || Array.isArray(value)) return false\n\n  const type = (value as { type?: unknown }).type\n  const values = Array.isArray(type) ? type : [type]\n\n  return values.some((entry) => entry === ENVELOPED_VERIFIABLE_PRESENTATION_TYPE)\n}\n\nexport function IsEnvelopedVerifiablePresentationType(validationOptions?: ValidationOptions): PropertyDecorator {\n  return ValidateBy(\n    {\n      name: 'IsEnvelopedVerifiablePresentationType',\n      validator: {\n        validate: (value): boolean => {\n          return Array.isArray(value)\n            ? value.includes(ENVELOPED_VERIFIABLE_PRESENTATION_TYPE)\n            : value === ENVELOPED_VERIFIABLE_PRESENTATION_TYPE\n        },\n        defaultMessage: buildMessage(\n          (eachPrefix) =>\n            `${eachPrefix}$property must be a string that equals, or an array of strings which includes \"${ENVELOPED_VERIFIABLE_PRESENTATION_TYPE}\"`,\n          validationOptions\n        ),\n      },\n    },\n    validationOptions\n  )\n}\n"],"mappings":";;;;;;;AAYA,IAAa,uCAAb,MAAkD;CAChD,YAAmB,SAAsD;EACvE,IAAI,SAAS;GACX,KAAK,UAAU,QAAQ,WAAA;GACvB,KAAK,KAAK,QAAQ;GAClB,KAAK,OAAO,QAAQ,QAAA;EACtB;CACF;AAWF;;CATG,OAAO,EAAE,MAAM,WAAW,CAAC;CAC3B,0BAA0B;EAAE,aAAa;EAAM,mBAAmB;CAA2B,CAAC;;;AAG9F,WAAA,CAAA,UAAU,GAAA,mBAAA,eAAA,MAAA,CAAA,GAAA,qCAAA,WAAA,MAAA,KAAA,CAAA;AAGV,WAAA,CAAA,sCAAsC,GAAA,mBAAA,eAAA,MAAA,CAAA,GAAA,qCAAA,WAAA,QAAA,KAAA,CAAA;AAIzC,SAAgB,uCACd,OACsD;CACtD,IAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,GAAG,OAAO;CAExE,MAAM,OAAQ,MAA6B;CAG3C,QAFe,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI,EAAA,CAEnC,MAAM,UAAU,UAAU,sCAAsC;AAChF;AAEA,SAAgB,sCAAsC,mBAA0D;CAC9G,OAAO,WACL;EACE,MAAM;EACN,WAAW;GACT,WAAW,UAAmB;IAC5B,OAAO,MAAM,QAAQ,KAAK,IACtB,MAAM,SAAS,sCAAsC,IACrD,UAAU;GAChB;GACA,gBAAgB,cACb,eACC,GAAG,WAAW,iFAAiF,uCAAuC,IACxI,iBACF;EACF;CACF,GACA,iBACF;AACF"}