@etherspot/prime-sdk
Version:
Etherspot Prime (Account Abstraction) SDK
43 lines (42 loc) • 1.67 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.IsBytesLike = void 0;
const ethers_1 = require("ethers");
const class_validator_1 = require("class-validator");
function IsBytesLike(options = {}) {
return (object, propertyName) => {
(0, class_validator_1.registerDecorator)({
propertyName,
options: Object.assign({ message: `${propertyName} must be bytes like` }, options),
name: 'IsBytesLike',
target: object.constructor,
constraints: [],
validator: {
validate(value) {
let result = false;
try {
if (value) {
switch (typeof value) {
case 'string':
if (options.acceptText) {
result = true;
}
else {
result = ethers_1.utils.isHexString(value) && value.length % 2 === 0;
}
break;
case 'object':
result = Array.isArray(value) && value.every((value) => typeof value === 'number');
break;
}
}
}
catch (err) {
}
return result;
},
},
});
};
}
exports.IsBytesLike = IsBytesLike;
;