{"version":3,"file":"VerificationMethodTransformer.mjs","names":[],"sources":["../../../../../src/modules/dids/domain/verificationMethod/VerificationMethodTransformer.ts"],"sourcesContent":["import { Transform, TransformationType } from 'class-transformer'\nimport type { ValidationOptions } from 'class-validator'\nimport { buildMessage, isInstance, isString, ValidateBy } from 'class-validator'\n\nimport { JsonTransformer } from '../../../../utils/JsonTransformer'\n\nimport { VerificationMethod } from './VerificationMethod'\n\n/**\n * Checks if a given value is a real string.\n */\nfunction IsStringOrVerificationMethod(validationOptions?: ValidationOptions): PropertyDecorator {\n  return ValidateBy(\n    {\n      name: 'isStringOrVerificationMethod',\n      validator: {\n        validate: (value): boolean => isString(value) || isInstance(value, VerificationMethod),\n        defaultMessage: buildMessage(\n          (eachPrefix) => `${eachPrefix}$property must be a string or instance of VerificationMethod`,\n          validationOptions\n        ),\n      },\n    },\n    validationOptions\n  )\n}\n\n/**\n * Decorator that transforms authentication json to corresponding class instances\n *\n * @example\n * class Example {\n *   VerificationMethodTransformer()\n *   private authentication: VerificationMethod\n * }\n */\nfunction VerificationMethodTransformer() {\n  return Transform(({ value, type }: { value?: Array<string | { type: string }>; type: TransformationType }) => {\n    if (type === TransformationType.PLAIN_TO_CLASS) {\n      return value?.map((auth) => {\n        // referenced verification method\n        if (typeof auth === 'string') {\n          return String(auth)\n        }\n\n        // embedded verification method\n        return JsonTransformer.fromJSON(auth, VerificationMethod)\n      })\n    }\n    if (type === TransformationType.CLASS_TO_PLAIN) {\n      return value?.map((auth) => (typeof auth === 'string' ? auth : JsonTransformer.toJSON(auth)))\n    }\n\n    // PLAIN_TO_PLAIN\n    return value\n  })\n}\n\nexport { IsStringOrVerificationMethod, VerificationMethodTransformer }\n"],"mappings":";;;;;;;;;;;AAWA,SAAS,6BAA6B,mBAA0D;AAC9F,QAAO,WACL;EACE,MAAM;EACN,WAAW;GACT,WAAW,UAAmB,SAAS,MAAM,IAAI,WAAW,OAAO,mBAAmB;GACtF,gBAAgB,cACb,eAAe,GAAG,WAAW,+DAC9B,kBACD;GACF;EACF,EACD,kBACD;;;;;;;;;;;AAYH,SAAS,gCAAgC;AACvC,QAAO,WAAW,EAAE,OAAO,WAAmF;AAC5G,MAAI,SAAS,mBAAmB,eAC9B,QAAO,OAAO,KAAK,SAAS;AAE1B,OAAI,OAAO,SAAS,SAClB,QAAO,OAAO,KAAK;AAIrB,UAAO,gBAAgB,SAAS,MAAM,mBAAmB;IACzD;AAEJ,MAAI,SAAS,mBAAmB,eAC9B,QAAO,OAAO,KAAK,SAAU,OAAO,SAAS,WAAW,OAAO,gBAAgB,OAAO,KAAK,CAAE;AAI/F,SAAO;GACP"}