{"version":3,"file":"W3cV2LocalizedValue.mjs","names":[],"sources":["../../../../../src/modules/vc/models/credential/W3cV2LocalizedValue.ts"],"sourcesContent":["import {\n  Expose,\n  instanceToPlain,\n  plainToClassFromExist,\n  plainToInstance,\n  Transform,\n  TransformationType,\n} from 'class-transformer'\nimport { IsEnum, IsOptional, IsString, isString } from 'class-validator'\n\nexport interface W3cV2LocalizedValueOptions {\n  value: string\n  language?: string | null\n  direction?: 'ltr' | 'rtl' | null\n  [property: string]: unknown\n}\n\n/**\n * Represents a localized string.\n *\n * @see https://www.w3.org/TR/vc-data-model-2.0/#internationalization-considerations\n */\nexport class W3cV2LocalizedValue {\n  public constructor(options: W3cV2LocalizedValueOptions) {\n    if (options) {\n      const { value, language, direction, ...rest } = options\n\n      plainToClassFromExist(this, rest)\n\n      this.value = value\n      this.language = language\n      this.direction = direction\n    }\n  }\n\n  @Expose({ name: '@value' })\n  @IsString()\n  public value!: string\n\n  @Expose({ name: '@language' })\n  @IsOptional()\n  @IsString()\n  public language?: string | null\n\n  @Expose({ name: '@direction' })\n  @IsOptional()\n  @IsEnum(['ltr', 'rtl', null])\n  public direction?: 'ltr' | 'rtl' | null;\n\n  [property: string]: unknown\n}\n\nexport function W3cV2LocalizedValueTransformer() {\n  return Transform(({ value, type }: { value: string | W3cV2LocalizedValueOptions; type: TransformationType }) => {\n    if (type === TransformationType.PLAIN_TO_CLASS) {\n      if (isString(value)) {\n        return value\n      }\n\n      if (Array.isArray(value)) {\n        return value.map((v) => plainToInstance(W3cV2LocalizedValue, v))\n      }\n\n      return plainToInstance(W3cV2LocalizedValue, value)\n    }\n\n    if (type === TransformationType.CLASS_TO_PLAIN) {\n      if (isString(value)) {\n        return value\n      }\n\n      if (Array.isArray(value)) {\n        return value.map((v) => instanceToPlain(W3cV2LocalizedValue, v))\n      }\n\n      return instanceToPlain(value)\n    }\n\n    // PLAIN_TO_PLAIN\n    return value\n  })\n}\n"],"mappings":";;;;;;;;;;AAsBA,IAAa,sBAAb,MAAiC;CAC/B,YAAmB,SAAqC;EACtD,IAAI,SAAS;GACX,MAAM,EAAE,OAAO,UAAU,WAAW,GAAG,SAAS;GAEhD,sBAAsB,MAAM,IAAI;GAEhC,KAAK,QAAQ;GACb,KAAK,WAAW;GAChB,KAAK,YAAY;EACnB;CACF;AAiBF;;CAfG,OAAO,EAAE,MAAM,SAAS,CAAC;CACzB,SAAS;;;;CAGT,OAAO,EAAE,MAAM,YAAY,CAAC;CAC5B,WAAW;CACX,SAAS;;;;CAGT,OAAO,EAAE,MAAM,aAAa,CAAC;CAC7B,WAAW;CACX,OAAO;EAAC;EAAO;EAAO;CAAI,CAAC;;;AAM9B,SAAgB,iCAAiC;CAC/C,OAAO,WAAW,EAAE,OAAO,WAAqF;EAC9G,IAAI,SAAS,mBAAmB,gBAAgB;GAC9C,IAAI,SAAS,KAAK,GAChB,OAAO;GAGT,IAAI,MAAM,QAAQ,KAAK,GACrB,OAAO,MAAM,KAAK,MAAM,gBAAgB,qBAAqB,CAAC,CAAC;GAGjE,OAAO,gBAAgB,qBAAqB,KAAK;EACnD;EAEA,IAAI,SAAS,mBAAmB,gBAAgB;GAC9C,IAAI,SAAS,KAAK,GAChB,OAAO;GAGT,IAAI,MAAM,QAAQ,KAAK,GACrB,OAAO,MAAM,KAAK,MAAM,gBAAgB,qBAAqB,CAAC,CAAC;GAGjE,OAAO,gBAAgB,KAAK;EAC9B;EAGA,OAAO;CACT,CAAC;AACH"}