65 lines
3.1 KiB
JavaScript
65 lines
3.1 KiB
JavaScript
|
"use strict";
|
||
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||
|
if (k2 === undefined) k2 = k;
|
||
|
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||
|
}) : (function(o, m, k, k2) {
|
||
|
if (k2 === undefined) k2 = k;
|
||
|
o[k2] = m[k];
|
||
|
}));
|
||
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
||
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
||
|
};
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
exports.ArgumentError = exports.Predicate = void 0;
|
||
|
const callsites_1 = require("callsites");
|
||
|
const infer_label_1 = require("./utils/infer-label");
|
||
|
const predicate_1 = require("./predicates/predicate");
|
||
|
Object.defineProperty(exports, "Predicate", { enumerable: true, get: function () { return predicate_1.Predicate; } });
|
||
|
const base_predicate_1 = require("./predicates/base-predicate");
|
||
|
const modifiers_1 = require("./modifiers");
|
||
|
const predicates_1 = require("./predicates");
|
||
|
const test_1 = require("./test");
|
||
|
const ow = (value, labelOrPredicate, predicate) => {
|
||
|
if (!base_predicate_1.isPredicate(labelOrPredicate) && typeof labelOrPredicate !== 'string') {
|
||
|
throw new TypeError(`Expected second argument to be a predicate or a string, got \`${typeof labelOrPredicate}\``);
|
||
|
}
|
||
|
if (base_predicate_1.isPredicate(labelOrPredicate)) {
|
||
|
// If the second argument is a predicate, infer the label
|
||
|
const stackFrames = callsites_1.default();
|
||
|
test_1.default(value, () => infer_label_1.inferLabel(stackFrames), labelOrPredicate);
|
||
|
return;
|
||
|
}
|
||
|
test_1.default(value, labelOrPredicate, predicate);
|
||
|
};
|
||
|
Object.defineProperties(ow, {
|
||
|
isValid: {
|
||
|
value: (value, predicate) => {
|
||
|
try {
|
||
|
test_1.default(value, '', predicate);
|
||
|
return true;
|
||
|
}
|
||
|
catch {
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
create: {
|
||
|
value: (labelOrPredicate, predicate) => (value, label) => {
|
||
|
if (base_predicate_1.isPredicate(labelOrPredicate)) {
|
||
|
const stackFrames = callsites_1.default();
|
||
|
test_1.default(value, label !== null && label !== void 0 ? label : (() => infer_label_1.inferLabel(stackFrames)), labelOrPredicate);
|
||
|
return;
|
||
|
}
|
||
|
test_1.default(value, label !== null && label !== void 0 ? label : (labelOrPredicate), predicate);
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
// Can't use `export default predicates(modifiers(ow)) as Ow` because the variable needs a type annotation to avoid a compiler error when used:
|
||
|
// Assertions require every name in the call target to be declared with an explicit type annotation.ts(2775)
|
||
|
// See https://github.com/microsoft/TypeScript/issues/36931 for more details.
|
||
|
const _ow = predicates_1.default(modifiers_1.default(ow));
|
||
|
exports.default = _ow;
|
||
|
__exportStar(require("./predicates"), exports);
|
||
|
var argument_error_1 = require("./argument-error");
|
||
|
Object.defineProperty(exports, "ArgumentError", { enumerable: true, get: function () { return argument_error_1.ArgumentError; } });
|