UNPKG

decode-it

Version:

a simple zero-dependency type safe json decoder for typescript

45 lines 1.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.optional = void 0; const decode_1 = require("../decode"); require("../toNativeType"); const typeCheckers_1 = require("../typeCheckers"); const ValidationResult_1 = require("./ValidationResult"); require("./Validator"); const createNoOptionalValidatorFailure = arg => ({ value: arg, state: 'failed', type: 'validator', wrapper: 'optional', }); const createNonObjectOptionalFailure = arg => ({ value: arg, type: 'object', state: 'failed', wrapper: 'optional', }); const createNestedOptionalFailure = (failedInnerDecode) => ({ value: failedInnerDecode.actual, path: failedInnerDecode.path, type: 'object', state: 'failed', wrapper: 'optional', }); const optional = validator => arg => { if (typeCheckers_1.isUndefined(validator)) return createNoOptionalValidatorFailure(validator); if (typeCheckers_1.isUndefined(arg)) return ValidationResult_1.passedValidation; if (typeCheckers_1.isObject(validator)) { if (!typeCheckers_1.isObject(arg)) return createNonObjectOptionalFailure(arg); const [failedDecode] = decode_1.getFailedDecodes(validator, arg); return failedDecode ? createNestedOptionalFailure(failedDecode) : ValidationResult_1.passedValidation; } const result = validator(arg); return { ...result, wrapper: 'optional' }; }; exports.optional = optional; //# sourceMappingURL=optional.js.map