{"version":3,"file":"W3cHolder.mjs","names":[],"sources":["../../../../../src/modules/vc/models/presentation/W3cHolder.ts"],"sourcesContent":["import { instanceToPlain, plainToInstance, Transform, TransformationType } from 'class-transformer'\nimport type { ValidationOptions } from 'class-validator'\nimport { buildMessage, isInstance, isString, ValidateBy } from 'class-validator'\n\nimport { IsUri, isUri } from '../../../../utils/validators'\n\n/**\n * TODO: check how to support arbitrary data in class\n */\nexport interface W3cHolderOptions {\n  id: string\n}\n\nexport class W3cHolder {\n  public constructor(options: W3cHolderOptions) {\n    if (options) {\n      this.id = options.id\n    }\n  }\n\n  @IsUri()\n  public id!: string\n}\n\n// Custom transformers\nexport function W3cHolderTransformer() {\n  return Transform(({ value, type }: { value: string | W3cHolderOptions; type: TransformationType }) => {\n    if (type === TransformationType.PLAIN_TO_CLASS) {\n      if (isString(value)) return value\n      return plainToInstance(W3cHolder, value)\n    }\n    if (type === TransformationType.CLASS_TO_PLAIN) {\n      if (isString(value)) return value\n      return instanceToPlain(value)\n    }\n    // PLAIN_TO_PLAIN\n    return value\n  })\n}\n\n// Custom validators\n\nexport function IsW3cHolder(validationOptions?: ValidationOptions): PropertyDecorator {\n  return ValidateBy(\n    {\n      name: 'IsW3cHolder',\n      validator: {\n        validate: (value): boolean => {\n          if (typeof value === 'string') {\n            return isUri(value)\n          }\n          if (isInstance(value, W3cHolder)) {\n            return isUri(value.id)\n          }\n          return false\n        },\n        defaultMessage: buildMessage(\n          (eachPrefix) => `${eachPrefix}$property must be an URI or an object with an id property which is an URI`,\n          validationOptions\n        ),\n      },\n    },\n    validationOptions\n  )\n}\n"],"mappings":";;;;;;;;;AAaA,IAAa,YAAb,MAAuB;CACrB,AAAO,YAAY,SAA2B;AAC5C,MAAI,QACF,MAAK,KAAK,QAAQ;;;YAIrB,OAAO;AAKV,SAAgB,uBAAuB;AACrC,QAAO,WAAW,EAAE,OAAO,WAA2E;AACpG,MAAI,SAAS,mBAAmB,gBAAgB;AAC9C,OAAI,SAAS,MAAM,CAAE,QAAO;AAC5B,UAAO,gBAAgB,WAAW,MAAM;;AAE1C,MAAI,SAAS,mBAAmB,gBAAgB;AAC9C,OAAI,SAAS,MAAM,CAAE,QAAO;AAC5B,UAAO,gBAAgB,MAAM;;AAG/B,SAAO;GACP;;AAKJ,SAAgB,YAAY,mBAA0D;AACpF,QAAO,WACL;EACE,MAAM;EACN,WAAW;GACT,WAAW,UAAmB;AAC5B,QAAI,OAAO,UAAU,SACnB,QAAO,MAAM,MAAM;AAErB,QAAI,WAAW,OAAO,UAAU,CAC9B,QAAO,MAAM,MAAM,GAAG;AAExB,WAAO;;GAET,gBAAgB,cACb,eAAe,GAAG,WAAW,4EAC9B,kBACD;GACF;EACF,EACD,kBACD"}