ts-cast
Version:
Runtime typechecking
66 lines (65 loc) • 3.14 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createCaster = exports.casterApi = exports.is = void 0;
var restrict_1 = require("./restrict");
var optional_1 = require("./optional");
var required_1 = require("./required");
var map_1 = require("./map");
var default_1 = require("./default");
var nullable_1 = require("./nullable");
var either_1 = require("./either");
var validate_1 = require("./validate");
var memo0_1 = require("../helpers/memo0");
var to_be_1 = require("./to-be");
var is_1 = require("./is");
Object.defineProperty(exports, "is", { enumerable: true, get: function () { return is_1.is; } });
var casterApi = function (casterFn) {
return Object.defineProperties(casterFn, __assign(__assign({}, Object.getOwnPropertyDescriptors(casterFn)), { optional: {
enumerable: true,
get: (0, memo0_1.memo)(function () { return (0, exports.casterApi)((0, optional_1.default)(casterFn)); }),
}, nullable: {
enumerable: true,
get: (0, memo0_1.memo)(function () { return (0, exports.casterApi)((0, nullable_1.nullable)(casterFn)); }),
}, restrict: {
enumerable: true,
value: function () {
var rules = [];
for (var _i = 0; _i < arguments.length; _i++) {
rules[_i] = arguments[_i];
}
return (0, exports.casterApi)((0, restrict_1.restrict)(casterFn, rules));
},
}, map: {
enumerable: true,
value: function (transform) { return (0, exports.casterApi)((0, map_1.default)(casterFn, transform)); },
}, default: {
enumerable: true,
value: function (def) { return (0, exports.casterApi)((0, default_1.default)(casterFn, def)); },
}, either: {
enumerable: true,
value: function (leftFactory, rightFactory) { return (0, either_1.default)(casterFn, leftFactory, rightFactory); },
}, validation: {
enumerable: true,
value: function (invalidFactory, validFactory) { return (0, validate_1.validation)(casterFn, invalidFactory, validFactory); },
}, validate: {
enumerable: true,
get: (0, memo0_1.memo)(function () { return (0, validate_1.validate)(casterFn); }),
}, toBe: {
enumerable: true,
value: function (predicate, typeName) { return (0, exports.casterApi)((0, to_be_1.toBe)(casterFn, predicate, typeName)); },
} }));
};
exports.casterApi = casterApi;
var createCaster = function (typeName, typeGuard, transform) { return (0, exports.casterApi)((0, required_1.default)(typeName, typeGuard, transform)); };
exports.createCaster = createCaster;