@etherspot/data-utils
Version:
Etherspot Data Utils
1 lines • 1.94 kB
Source Map (JSON)
{"version":3,"sources":["../../src/sdk/dto/validators/is-bytes-like.validator.ts"],"sourcesContent":["import { registerDecorator, ValidationOptions } from 'class-validator';\nimport { isHex } from 'viem';\n\nexport function IsBytesLike(options: ValidationOptions & { acceptText?: boolean } = {}) {\n return (object: any, propertyName: string) => {\n registerDecorator({\n propertyName,\n options: {\n message: `${propertyName} must be bytes like`,\n ...options,\n },\n name: 'IsBytesLike',\n target: object ? object.constructor : undefined,\n constraints: [],\n validator: {\n validate(value: any): boolean {\n let result = false;\n\n try {\n if (value) {\n switch (typeof value) {\n case 'string':\n if (options.acceptText) {\n result = true;\n } else {\n result = isHex(value) && value.length % 2 === 0;\n }\n break;\n\n case 'object':\n result = isHex(value);\n break;\n }\n }\n } catch (err) {\n //\n }\n\n return result;\n },\n },\n });\n };\n}\n"],"mappings":";;;;;AAAA,SAAS,yBAA4C;AAG9C,SAAS,YAAY,UAAwD,CAAC,GAAG;AACtF,SAAO,CAAC,QAAa,iBAAyB;AAC5C,sBAAkB;AAAA,MAChB;AAAA,MACA,SAAS;AAAA,QACP,SAAS,GAAG,YAAY;AAAA,QACxB,GAAG;AAAA,MACL;AAAA,MACA,MAAM;AAAA,MACN,QAAQ,SAAS,OAAO,cAAc;AAAA,MACtC,aAAa,CAAC;AAAA,MACd,WAAW;AAAA,QACT,SAAS,OAAqB;AAC5B,cAAI,SAAS;AAEb,cAAI;AACF,gBAAI,OAAO;AACT,sBAAQ,OAAO,OAAO;AAAA,gBACpB,KAAK;AACH,sBAAI,QAAQ,YAAY;AACtB,6BAAS;AAAA,kBACX,OAAO;AACL,6BAAS,MAAM,KAAK,KAAK,MAAM,SAAS,MAAM;AAAA,kBAChD;AACA;AAAA,gBAEF,KAAK;AACH,2BAAS,MAAM,KAAK;AACpB;AAAA,cACJ;AAAA,YACF;AAAA,UACF,SAAS,KAAK;AAAA,UAEd;AAEA,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACF;","names":[]}