decode-it
Version:
a simple zero-dependency type safe json decoder for typescript
34 lines • 1.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.union = void 0;
require("../helperTypes");
require("../toNativeType");
const typeCheckers_1 = require("../typeCheckers");
const ValidationResult_1 = require("./ValidationResult");
require("./Validator");
const createEmptyUnionFailure = (arg) => ({
value: arg,
type: 'unknown',
state: 'failed',
wrapper: 'union',
});
const createFailedUnionValidation = (arg) => ({
value: arg,
type: 'none',
state: 'failed',
wrapper: 'union',
});
const union = (...itemValidators) => {
return (arg) => {
if (typeCheckers_1.isEmptyArray(itemValidators) || itemValidators.length === 1) {
return createEmptyUnionFailure(arg);
}
const validationsResult = itemValidators.map(validate => validate(arg));
const allValidationsFailed = validationsResult.every(v => v.state === 'failed');
return allValidationsFailed
? createFailedUnionValidation(arg)
: ValidationResult_1.passedValidation;
};
};
exports.union = union;
//# sourceMappingURL=union.js.map