UNPKG

ts-cast

Version:
37 lines (36 loc) 1.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.toBe = void 0; var names_1 = require("../helpers/names"); var throw_type_error_1 = require("./throw-type-error"); var spy = function (fn) { var isCalled = false; var result = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } isCalled = true; return fn.apply(void 0, args); }; Object.defineProperty(result, 'isCalled', { get: function () { return isCalled; }, }); return result; }; var toBe = function (casterFn, predicate, typeName) { if (typeName === void 0) { typeName = "".concat(casterFn.name, "<").concat(predicate.name, ">"); } return (0, names_1.withName)(function (value, context, reportError) { if (reportError === void 0) { reportError = throw_type_error_1.throwTypeError; } var spyReportError = spy(reportError); var typedValue = casterFn(value, context, spyReportError); if (spyReportError.isCalled) return typedValue; if (!predicate(typedValue)) { reportError("".concat(typeName, " expected").concat(context ? " in ".concat(context) : '', " but \"").concat(value, "\" received."), context); return undefined; } return typedValue; }, typeName); }; exports.toBe = toBe;