{"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,AAAO,YAAY,SAAqC;AACtD,MAAI,SAAS;GACX,MAAM,EAAE,OAAO,UAAU,WAAW,GAAG,SAAS;AAEhD,yBAAsB,MAAM,KAAK;AAEjC,QAAK,QAAQ;AACb,QAAK,WAAW;AAChB,QAAK,YAAY;;;;;CAIpB,OAAO,EAAE,MAAM,UAAU,CAAC;CAC1B,UAAU;;;;CAGV,OAAO,EAAE,MAAM,aAAa,CAAC;CAC7B,YAAY;CACZ,UAAU;;;;CAGV,OAAO,EAAE,MAAM,cAAc,CAAC;CAC9B,YAAY;CACZ,OAAO;EAAC;EAAO;EAAO;EAAK,CAAC;;;AAM/B,SAAgB,iCAAiC;AAC/C,QAAO,WAAW,EAAE,OAAO,WAAqF;AAC9G,MAAI,SAAS,mBAAmB,gBAAgB;AAC9C,OAAI,SAAS,MAAM,CACjB,QAAO;AAGT,OAAI,MAAM,QAAQ,MAAM,CACtB,QAAO,MAAM,KAAK,MAAM,gBAAgB,qBAAqB,EAAE,CAAC;AAGlE,UAAO,gBAAgB,qBAAqB,MAAM;;AAGpD,MAAI,SAAS,mBAAmB,gBAAgB;AAC9C,OAAI,SAAS,MAAM,CACjB,QAAO;AAGT,OAAI,MAAM,QAAQ,MAAM,CACtB,QAAO,MAAM,KAAK,MAAM,gBAAgB,qBAAqB,EAAE,CAAC;AAGlE,UAAO,gBAAgB,MAAM;;AAI/B,SAAO;GACP"}