{"version":3,"file":"W3cPresentation.mjs","names":[],"sources":["../../../../../src/modules/vc/models/presentation/W3cPresentation.ts"],"sourcesContent":["import { Expose } from 'class-transformer'\nimport { IsOptional, ValidateNested } from 'class-validator'\nimport type { JsonObject, SingleOrArray } from '../../../../types'\nimport { JsonTransformer } from '../../../../utils'\nimport { IsInstanceOrArrayOfInstances, IsUri } from '../../../../utils/validators'\nimport { CREDENTIALS_CONTEXT_V1_URL, VERIFIABLE_PRESENTATION_TYPE } from '../../constants'\nimport { W3cJsonLdVerifiableCredential } from '../../data-integrity/models/W3cJsonLdVerifiableCredential'\nimport { W3cJwtVerifiableCredential } from '../../jwt-vc/W3cJwtVerifiableCredential'\nimport { IsCredentialJsonLdContext, IsVerifiablePresentationType } from '../../validators'\nimport { type W3cVerifiableCredential, W3cVerifiableCredentialTransformer } from '../credential/W3cVerifiableCredential'\nimport type { W3cHolderOptions } from './W3cHolder'\nimport { IsW3cHolder, W3cHolder, W3cHolderTransformer } from './W3cHolder'\nimport type { W3cJsonPresentation } from './W3cJsonPresentation'\n\nexport interface W3cPresentationOptions {\n  id?: string\n  context?: Array<string | JsonObject>\n  type?: Array<string>\n  verifiableCredential: SingleOrArray<W3cVerifiableCredential>\n  holder?: string | W3cHolderOptions\n}\n\nexport class W3cPresentation {\n  public constructor(options: W3cPresentationOptions) {\n    if (options) {\n      this.id = options.id\n      this.context = options.context ?? [CREDENTIALS_CONTEXT_V1_URL]\n      this.type = options.type ?? [VERIFIABLE_PRESENTATION_TYPE]\n      this.verifiableCredential = options.verifiableCredential\n\n      if (options.holder) {\n        this.holder = typeof options.holder === 'string' ? options.holder : new W3cHolder(options.holder)\n      }\n    }\n  }\n\n  @Expose({ name: '@context' })\n  @IsCredentialJsonLdContext()\n  public context!: Array<string | JsonObject>\n\n  @IsOptional()\n  @IsUri()\n  public id?: string\n\n  @IsVerifiablePresentationType()\n  public type!: Array<string>\n\n  @W3cHolderTransformer()\n  @IsW3cHolder()\n  @IsOptional()\n  public holder?: string | W3cHolder\n\n  @W3cVerifiableCredentialTransformer()\n  @IsInstanceOrArrayOfInstances({ classType: [W3cJsonLdVerifiableCredential, W3cJwtVerifiableCredential] })\n  @ValidateNested({ each: true })\n  public verifiableCredential!: SingleOrArray<W3cVerifiableCredential>\n\n  public get holderId(): string | null {\n    if (!this.holder) return null\n\n    return this.holder instanceof W3cHolder ? this.holder.id : this.holder\n  }\n\n  public toJSON() {\n    return JsonTransformer.toJSON(this) as W3cJsonPresentation\n  }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAsBA,IAAa,kBAAb,MAA6B;CAC3B,AAAO,YAAY,SAAiC;AAClD,MAAI,SAAS;AACX,QAAK,KAAK,QAAQ;AAClB,QAAK,UAAU,QAAQ,WAAW,CAAC,2BAA2B;AAC9D,QAAK,OAAO,QAAQ,QAAQ,CAAC,6BAA6B;AAC1D,QAAK,uBAAuB,QAAQ;AAEpC,OAAI,QAAQ,OACV,MAAK,SAAS,OAAO,QAAQ,WAAW,WAAW,QAAQ,SAAS,IAAI,UAAU,QAAQ,OAAO;;;CA0BvG,IAAW,WAA0B;AACnC,MAAI,CAAC,KAAK,OAAQ,QAAO;AAEzB,SAAO,KAAK,kBAAkB,YAAY,KAAK,OAAO,KAAK,KAAK;;CAGlE,AAAO,SAAS;AACd,SAAO,gBAAgB,OAAO,KAAK;;;;CA5BpC,OAAO,EAAE,MAAM,YAAY,CAAC;CAC5B,2BAA2B;;;;CAG3B,YAAY;CACZ,OAAO;;;YAGP,8BAA8B;;CAG9B,sBAAsB;CACtB,aAAa;CACb,YAAY;;;;CAGZ,oCAAoC;CACpC,6BAA6B,EAAE,WAAW,CAAC,+BAA+B,2BAA2B,EAAE,CAAC;CACxG,eAAe,EAAE,MAAM,MAAM,CAAC"}