@tatumio/tatum-v1
Version:
Tatum API client allows browsers and Node.js clients to interact with Tatum API.
34 lines • 2.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.OneOf = void 0;
const class_validator_1 = require("class-validator");
// eslint-disable-next-line @typescript-eslint/ban-types
const OneOf = (oneOfFields, validationOptions) => (object, propertyName) => {
class_validator_1.registerDecorator({
name: 'oneOf',
target: object.constructor,
propertyName,
constraints: [oneOfFields],
options: validationOptions,
validator: {
validate(value, args) {
let isSet = false;
for (const oneOfField in args.object) {
if (oneOfFields.includes(oneOfField)) {
// @ts-ignore
if (args.object[oneOfField]) {
if (isSet) {
return false;
}
isSet = true;
}
}
}
return isSet;
},
defaultMessage: class_validator_1.buildMessage(() => `Exactly one of ${oneOfFields.join(", ")} fields can be filled.`, validationOptions),
},
});
};
exports.OneOf = OneOf;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT25lT2YuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9kZWwvdmFsaWRhdGlvbi9PbmVPZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBMEc7QUFFMUcsd0RBQXdEO0FBQ2pELE1BQU0sS0FBSyxHQUFHLENBQUMsV0FBcUIsRUFBRSxpQkFBcUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFjLEVBQUUsWUFBb0IsRUFBRSxFQUFFO0lBQzVILG1DQUFpQixDQUFDO1FBQ2QsSUFBSSxFQUFFLE9BQU87UUFDYixNQUFNLEVBQUUsTUFBTSxDQUFDLFdBQVc7UUFDMUIsWUFBWTtRQUNaLFdBQVcsRUFBRSxDQUFDLFdBQVcsQ0FBQztRQUMxQixPQUFPLEVBQUUsaUJBQWlCO1FBQzFCLFNBQVMsRUFBRTtZQUNQLFFBQVEsQ0FBQyxLQUFVLEVBQUUsSUFBeUI7Z0JBQzFDLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztnQkFDbEIsS0FBSyxNQUFNLFVBQVUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO29CQUNsQyxJQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUU7d0JBQ2pDLGFBQWE7d0JBQ2IsSUFBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFOzRCQUN4QixJQUFHLEtBQUssRUFBRTtnQ0FDTixPQUFPLEtBQUssQ0FBQTs2QkFDZjs0QkFDRCxLQUFLLEdBQUcsSUFBSSxDQUFBO3lCQUNmO3FCQUNKO2lCQUNKO2dCQUNELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUNILGNBQWMsRUFBRSw4QkFBWSxDQUN4QixHQUFHLEVBQUUsQ0FDRCxrQkFBa0IsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQ3BFLGlCQUFpQixDQUNwQjtTQUNKO0tBQ0osQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDO0FBOUJXLFFBQUEsS0FBSyxTQThCaEIifQ==