%PDF- %PDF-
Direktori : /www/specpages-backup/node_modules/ow/dist/source/ |
Current File : /www/specpages-backup/node_modules/ow/dist/source/index.js.map |
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./source/predicates/predicate.ts","webpack:///./node_modules/@sindresorhus/is/dist/index.js","webpack:///./source/predicates/base-predicate.ts","webpack:///./source/utils/has-items.ts","webpack:///./source/index.ts","webpack:///./node_modules/lodash.isequal/index.js","webpack:///./source/argument-error.ts","webpack:///./source/predicates.ts","webpack:///./source/utils/of-type.ts","webpack:///./source/test.ts","webpack:///./node_modules/callsites/index.js","webpack:///./source/utils/infer-label.ts","webpack:///external \"fs\"","webpack:///./source/utils/is-valid-identifier.ts","webpack:///./source/utils/node/is-node.ts","webpack:///./source/operators/not.ts","webpack:///./source/utils/random-id.ts","webpack:///./source/modifiers.ts","webpack:///./source/predicates/string.ts","webpack:///./node_modules/vali-date/index.js","webpack:///./source/predicates/number.ts","webpack:///./source/predicates/boolean.ts","webpack:///./source/predicates/array.ts","webpack:///(webpack)/buildin/module.js","webpack:///./source/predicates/object.ts","webpack:///./node_modules/dot-prop/index.js","webpack:///./node_modules/is-obj/index.js","webpack:///./source/utils/of-type-deep.ts","webpack:///./source/utils/match-shape.ts","webpack:///./source/predicates/date.ts","webpack:///./source/predicates/error.ts","webpack:///./source/predicates/map.ts","webpack:///./source/predicates/weak-map.ts","webpack:///./source/predicates/set.ts","webpack:///./source/predicates/weak-set.ts","webpack:///./source/predicates/typed-array.ts","webpack:///./source/predicates/array-buffer.ts","webpack:///./source/predicates/data-view.ts","webpack:///./source/predicates/any.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","validatorSymbol","type","options","context","validators","this","x","toLowerCase","slice","addValidator","message","label","length","validator","testSymbol","main","optional","undefined","result","label2","ArgumentError","not","customValidator","_","error","push","toString","isOfType","getObjectType","objectName","isObjectOfType","is","function_","observable","array","buffer","tagType","String","Boolean","Number","TypeError","string","isNumberType","number","nan","bigint","null_","class_","startsWith","boolean","symbol","numericString","isNaN","Array","isArray","nullOrUndefined","constructor","isBuffer","iterable","iterator","asyncIterable","asyncIterator","generator","next","throw","asyncGenerator","nativePromise","promise","then","catch","hasPromiseAPI","generatorFunction","asyncGeneratorFunction","asyncFunction","boundFunction","regExp","date","map","set","weakMap","weakSet","int8Array","uint8Array","uint8ClampedArray","int16Array","uint16Array","int32Array","uint32Array","float32Array","float64Array","bigInt64Array","bigUint64Array","arrayBuffer","sharedArrayBuffer","dataView","directInstanceOf","instance","getPrototypeOf","urlInstance","urlString","URL","_a","truthy","falsy","primitiveTypeOfTypes","Set","primitive","has","integer","isInteger","safeInteger","isSafeInteger","plainObject","typedArrayTypes","typedArray","objectType","arrayLike","isValidLength","inRange","range","Math","min","max","JSON","stringify","DOM_PROPERTIES_TO_CHECK","domElement","nodeType","nodeName","every","nodeStream","pipe","infinite","Infinity","isAbsoluteMod2","remainder","abs","evenInteger","oddInteger","emptyArray","nonEmptyArray","emptyString","nonEmptyString","emptyStringOrWhitespace","test","isWhiteSpaceString","emptyObject","keys","nonEmptyObject","emptySet","size","nonEmptySet","emptyMap","nonEmptyMap","predicateOnArray","method","predicate","values","any","some","singlePredicate","all","assertType","condition","description","assert","defineProperties","class","function","null","default","isPredicate","source","items","maxValues","missingValues","Predicate","ow","labelOrPredicate","stackFrames","inferLabel","isValid","StringPredicate","NumberPredicate","BooleanPredicate","ArrayPredicate","ObjectPredicate","DatePredicate","ErrorPredicate","MapPredicate","WeakMapPredicate","SetPredicate","WeakSetPredicate","TypedArrayPredicate","ArrayBufferPredicate","DataViewPredicate","AnyPredicate","argsTag","mapTag","objectTag","setTag","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","global","freeSelf","self","root","Function","freeExports","freeModule","moduleExports","freeProcess","process","nodeUtil","binding","e","nodeIsTypedArray","isTypedArray","arraySome","index","mapToArray","forEach","setToArray","uid","func","transform","arrayProto","funcProto","objectProto","coreJsData","funcToString","maskSrcKey","exec","IE_PROTO","nativeObjectToString","reIsNative","RegExp","replace","Buffer","Uint8Array","propertyIsEnumerable","splice","symToStringTag","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","nativeKeys","arg","DataView","getNative","Map","Promise","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","Hash","entries","clear","entry","ListCache","MapCache","SetCache","__data__","add","Stack","data","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","iteratee","baseTimes","isIndex","assocIndexOf","eq","baseGetTag","isOwn","tag","unmasked","getRawTag","objectToString","baseIsArguments","isObjectLike","baseIsEqual","other","bitmask","customizer","stack","equalFunc","objIsArr","othIsArr","objTag","getTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","byteLength","byteOffset","convert","isPartial","stacked","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","getAllKeys","objLength","othLength","skipCtor","objValue","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsNative","isObject","isMasked","isFunction","baseKeys","Ctor","proto","arrLength","seen","arrValue","othIndex","keysFunc","symbolsFunc","offset","arrayPush","baseGetAllKeys","getSymbols","getMapData","getValue","pop","pairs","LARGE_ARRAY_SIZE","resIndex","arrayFilter","ArrayBuffer","resolve","ctorString","arguments","isLength","baseUnary","Error","super","captureStackTrace","predicates","item","callsites","_prepareStackTrace","prepareStackTrace","labelRegex","functionCallStackFrame","fileName","getFileName","lineNumber","getLineNumber","columnNumber","getColumnNumber","content","fs","readFileSync","split","line","match","groups","token","require","identifierRegex","reservedSet","versions","node","originalAddValidator","fn","negatedMessage","placeholder","random","regex","searchString","endsWith","includes","list","printedList","overflow","expected","valiDate","trim","toUpperCase","str","Date","parse","start","end","searchElement","searchElements","el","isEqual","error_","webpackPolyfill","deprecate","paths","children","missingKeys","dotProp","shape","partial","exact","isObj","disallowedKeys","getPathSegments","path","pathArray","parts","segment","ofTypeDeep","parent","objectKeys","delete","firstKey","toISOString","getTime","join","instanceOf","EvalError","RangeError","ReferenceError","SyntaxError","URIError","valueSet","missingItems","errors"],"mappings":"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","file":"index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","import is from '@sindresorhus/is';\nimport {ArgumentError} from '../argument-error';\nimport {not} from '../operators/not';\nimport {BasePredicate, testSymbol} from './base-predicate';\nimport {Main} from '..';\n\n/**\n@hidden\n*/\nexport interface Validator<T> {\n\tmessage(value: T, label?: string, result?: any): string;\n\n\tvalidator(value: T): unknown;\n\n\t/**\n\tProvide custom message used by `not` operator.\n\n\tWhen absent, the return value of `message()` is used and 'not' is inserted after the first 'to',\n\te.g. `Expected 'smth' to be empty` -> `Expected 'smth' to not be empty`.\n\t*/\n\tnegatedMessage?(value: T, label: string): string;\n}\n\n/**\n@hidden\n*/\nexport interface PredicateOptions {\n\toptional?: boolean;\n}\n\n/**\n@hidden\n*/\nexport interface Context<T = unknown> extends PredicateOptions {\n\tvalidators: Array<Validator<T>>;\n}\n\n/**\n@hidden\n*/\nexport const validatorSymbol = Symbol('validators');\n\nexport type CustomValidator<T> = (value: T) => {\n\t/**\n\tShould be `true` if the validation is correct.\n\t*/\n\tvalidator: boolean;\n\n\t/**\n\tThe error message which should be shown if the `validator` is `false`. Or a error function which returns the error message and accepts the label as first argument.\n\t*/\n\tmessage: string | ((label: string) => string);\n};\n\n/**\n@hidden\n*/\nexport class Predicate<T = unknown> implements BasePredicate<T> {\n\tprivate readonly context: Context<T> = {\n\t\tvalidators: []\n\t};\n\n\tconstructor(\n\t\tprivate readonly type: string,\n\t\tprivate readonly options: PredicateOptions = {}\n\t) {\n\t\tthis.context = {\n\t\t\t...this.context,\n\t\t\t...this.options\n\t\t};\n\n\t\tconst x = this.type[0].toLowerCase() + this.type.slice(1);\n\n\t\tthis.addValidator({\n\t\t\tmessage: (value, label) => {\n\t\t\t\t// We do not include type in this label as we do for other messages, because it would be redundant.\n\t\t\t\tconst label_ = label?.slice(this.type.length + 1);\n\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n\t\t\t\treturn `Expected ${label_ || 'argument'} to be of type \\`${this.type}\\` but received type \\`${is(value)}\\``;\n\t\t\t},\n\t\t\tvalidator: value => (is as any)[x](value)\n\t\t});\n\t}\n\n\t/**\n\t@hidden\n\t*/\n\t[testSymbol](value: T, main: Main, label: string | Function): asserts value {\n\t\tfor (const {validator, message} of this.context.validators) {\n\t\t\tif (this.options.optional === true && value === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst result = validator(value);\n\n\t\t\tif (result === true) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet label2 = label;\n\n\t\t\tif (typeof label === 'function') {\n\t\t\t\tlabel2 = label();\n\t\t\t}\n\n\t\t\tlabel2 = label2 ?\n\t\t\t\t`${this.type} \\`${label2}\\`` :\n\t\t\t\tthis.type;\n\n\t\t\t// TODO: Modify the stack output to show the original `ow()` call instead of this `throw` statement\n\t\t\tthrow new ArgumentError(message(value, label2, result), main);\n\t\t}\n\t}\n\n\t/**\n\t@hidden\n\t*/\n\tget [validatorSymbol]() {\n\t\treturn this.context.validators;\n\t}\n\n\t/**\n\tInvert the following validators.\n\t*/\n\tget not(): this {\n\t\treturn not(this);\n\t}\n\n\t/**\n\tTest if the value matches a custom validation function. The validation function should return an object containing a `validator` and `message`. If the `validator` is `false`, the validation fails and the `message` will be used as error message. If the `message` is a function, the function is invoked with the `label` as argument to let you further customize the error message.\n\n\t@param customValidator - Custom validation function.\n\t*/\n\tvalidate(customValidator: CustomValidator<T>) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (_, label, error) => typeof error === 'string' ?\n\t\t\t\t`(${label}) ${error}` :\n\t\t\t\terror(label),\n\t\t\tvalidator: value => {\n\t\t\t\tconst {message, validator} = customValidator(value);\n\n\t\t\t\tif (validator) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn message;\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\tTest if the value matches a custom validation function. The validation function should return `true` if the value passes the function. If the function either returns `false` or a string, the function fails and the string will be used as error message.\n\n\t@param validator - Validation function.\n\t*/\n\tis(validator: (value: T) => boolean | string) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label, error) => (error ?\n\t\t\t\t`(${label}) ${error}` :\n\t\t\t\t`Expected ${label} \\`${value}\\` to pass custom validation function`\n\t\t\t),\n\t\t\tvalidator\n\t\t});\n\t}\n\n\t/**\n\tRegister a new validator.\n\n\t@param validator - Validator to register.\n\t*/\n\tprotected addValidator(validator: Validator<T>) {\n\t\tthis.context.validators.push(validator);\n\t\treturn this;\n\t}\n}\n","\"use strict\";\n/// <reference lib=\"es2018\"/>\n/// <reference lib=\"dom\"/>\n/// <reference types=\"node\"/>\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst { toString } = Object.prototype;\nconst isOfType = (type) => (value) => typeof value === type;\nconst getObjectType = (value) => {\n const objectName = toString.call(value).slice(8, -1);\n if (objectName) {\n return objectName;\n }\n return undefined;\n};\nconst isObjectOfType = (type) => (value) => getObjectType(value) === type;\nfunction is(value) {\n switch (value) {\n case null:\n return \"null\" /* null */;\n case true:\n case false:\n return \"boolean\" /* boolean */;\n default:\n }\n switch (typeof value) {\n case 'undefined':\n return \"undefined\" /* undefined */;\n case 'string':\n return \"string\" /* string */;\n case 'number':\n return \"number\" /* number */;\n case 'bigint':\n return \"bigint\" /* bigint */;\n case 'symbol':\n return \"symbol\" /* symbol */;\n default:\n }\n if (is.function_(value)) {\n return \"Function\" /* Function */;\n }\n if (is.observable(value)) {\n return \"Observable\" /* Observable */;\n }\n if (is.array(value)) {\n return \"Array\" /* Array */;\n }\n if (is.buffer(value)) {\n return \"Buffer\" /* Buffer */;\n }\n const tagType = getObjectType(value);\n if (tagType) {\n return tagType;\n }\n if (value instanceof String || value instanceof Boolean || value instanceof Number) {\n throw new TypeError('Please don\\'t use object wrappers for primitive types');\n }\n return \"Object\" /* Object */;\n}\nis.undefined = isOfType('undefined');\nis.string = isOfType('string');\nconst isNumberType = isOfType('number');\nis.number = (value) => isNumberType(value) && !is.nan(value);\nis.bigint = isOfType('bigint');\n// eslint-disable-next-line @typescript-eslint/ban-types\nis.function_ = isOfType('function');\nis.null_ = (value) => value === null;\nis.class_ = (value) => is.function_(value) && value.toString().startsWith('class ');\nis.boolean = (value) => value === true || value === false;\nis.symbol = isOfType('symbol');\nis.numericString = (value) => is.string(value) && value.length > 0 && !Number.isNaN(Number(value));\nis.array = Array.isArray;\nis.buffer = (value) => !is.nullOrUndefined(value) && !is.nullOrUndefined(value.constructor) && is.function_(value.constructor.isBuffer) && value.constructor.isBuffer(value);\nis.nullOrUndefined = (value) => is.null_(value) || is.undefined(value);\nis.object = (value) => !is.null_(value) && (typeof value === 'object' || is.function_(value));\nis.iterable = (value) => !is.nullOrUndefined(value) && is.function_(value[Symbol.iterator]);\nis.asyncIterable = (value) => !is.nullOrUndefined(value) && is.function_(value[Symbol.asyncIterator]);\nis.generator = (value) => is.iterable(value) && is.function_(value.next) && is.function_(value.throw);\nis.asyncGenerator = (value) => is.asyncIterable(value) && is.function_(value.next) && is.function_(value.throw);\nis.nativePromise = (value) => isObjectOfType(\"Promise\" /* Promise */)(value);\nconst hasPromiseAPI = (value) => is.object(value) &&\n is.function_(value.then) && // eslint-disable-line promise/prefer-await-to-then\n is.function_(value.catch);\nis.promise = (value) => is.nativePromise(value) || hasPromiseAPI(value);\nis.generatorFunction = isObjectOfType(\"GeneratorFunction\" /* GeneratorFunction */);\nis.asyncGeneratorFunction = (value) => getObjectType(value) === \"AsyncGeneratorFunction\" /* AsyncGeneratorFunction */;\nis.asyncFunction = (value) => getObjectType(value) === \"AsyncFunction\" /* AsyncFunction */;\n// eslint-disable-next-line no-prototype-builtins, @typescript-eslint/ban-types\nis.boundFunction = (value) => is.function_(value) && !value.hasOwnProperty('prototype');\nis.regExp = isObjectOfType(\"RegExp\" /* RegExp */);\nis.date = isObjectOfType(\"Date\" /* Date */);\nis.error = isObjectOfType(\"Error\" /* Error */);\nis.map = (value) => isObjectOfType(\"Map\" /* Map */)(value);\nis.set = (value) => isObjectOfType(\"Set\" /* Set */)(value);\nis.weakMap = (value) => isObjectOfType(\"WeakMap\" /* WeakMap */)(value);\nis.weakSet = (value) => isObjectOfType(\"WeakSet\" /* WeakSet */)(value);\nis.int8Array = isObjectOfType(\"Int8Array\" /* Int8Array */);\nis.uint8Array = isObjectOfType(\"Uint8Array\" /* Uint8Array */);\nis.uint8ClampedArray = isObjectOfType(\"Uint8ClampedArray\" /* Uint8ClampedArray */);\nis.int16Array = isObjectOfType(\"Int16Array\" /* Int16Array */);\nis.uint16Array = isObjectOfType(\"Uint16Array\" /* Uint16Array */);\nis.int32Array = isObjectOfType(\"Int32Array\" /* Int32Array */);\nis.uint32Array = isObjectOfType(\"Uint32Array\" /* Uint32Array */);\nis.float32Array = isObjectOfType(\"Float32Array\" /* Float32Array */);\nis.float64Array = isObjectOfType(\"Float64Array\" /* Float64Array */);\nis.bigInt64Array = isObjectOfType(\"BigInt64Array\" /* BigInt64Array */);\nis.bigUint64Array = isObjectOfType(\"BigUint64Array\" /* BigUint64Array */);\nis.arrayBuffer = isObjectOfType(\"ArrayBuffer\" /* ArrayBuffer */);\nis.sharedArrayBuffer = isObjectOfType(\"SharedArrayBuffer\" /* SharedArrayBuffer */);\nis.dataView = isObjectOfType(\"DataView\" /* DataView */);\nis.directInstanceOf = (instance, class_) => Object.getPrototypeOf(instance) === class_.prototype;\nis.urlInstance = (value) => isObjectOfType(\"URL\" /* URL */)(value);\nis.urlString = (value) => {\n if (!is.string(value)) {\n return false;\n }\n try {\n new URL(value); // eslint-disable-line no-new\n return true;\n }\n catch (_a) {\n return false;\n }\n};\n// TODO: Use the `not` operator with a type guard here when it's available.\n// Example: `is.truthy = (value: unknown): value is (not false | not 0 | not '' | not undefined | not null) => Boolean(value);`\nis.truthy = (value) => Boolean(value);\n// Example: `is.falsy = (value: unknown): value is (not true | 0 | '' | undefined | null) => Boolean(value);`\nis.falsy = (value) => !value;\nis.nan = (value) => Number.isNaN(value);\nconst primitiveTypeOfTypes = new Set([\n 'undefined',\n 'string',\n 'number',\n 'bigint',\n 'boolean',\n 'symbol'\n]);\nis.primitive = (value) => is.null_(value) || primitiveTypeOfTypes.has(typeof value);\nis.integer = (value) => Number.isInteger(value);\nis.safeInteger = (value) => Number.isSafeInteger(value);\nis.plainObject = (value) => {\n // From: https://github.com/sindresorhus/is-plain-obj/blob/master/index.js\n if (getObjectType(value) !== \"Object\" /* Object */) {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n return prototype === null || prototype === Object.getPrototypeOf({});\n};\nconst typedArrayTypes = new Set([\n \"Int8Array\" /* Int8Array */,\n \"Uint8Array\" /* Uint8Array */,\n \"Uint8ClampedArray\" /* Uint8ClampedArray */,\n \"Int16Array\" /* Int16Array */,\n \"Uint16Array\" /* Uint16Array */,\n \"Int32Array\" /* Int32Array */,\n \"Uint32Array\" /* Uint32Array */,\n \"Float32Array\" /* Float32Array */,\n \"Float64Array\" /* Float64Array */,\n \"BigInt64Array\" /* BigInt64Array */,\n \"BigUint64Array\" /* BigUint64Array */\n]);\nis.typedArray = (value) => {\n const objectType = getObjectType(value);\n if (objectType === undefined) {\n return false;\n }\n return typedArrayTypes.has(objectType);\n};\nconst isValidLength = (value) => is.safeInteger(value) && value >= 0;\nis.arrayLike = (value) => !is.nullOrUndefined(value) && !is.function_(value) && isValidLength(value.length);\nis.inRange = (value, range) => {\n if (is.number(range)) {\n return value >= Math.min(0, range) && value <= Math.max(range, 0);\n }\n if (is.array(range) && range.length === 2) {\n return value >= Math.min(...range) && value <= Math.max(...range);\n }\n throw new TypeError(`Invalid range: ${JSON.stringify(range)}`);\n};\nconst NODE_TYPE_ELEMENT = 1;\nconst DOM_PROPERTIES_TO_CHECK = [\n 'innerHTML',\n 'ownerDocument',\n 'style',\n 'attributes',\n 'nodeValue'\n];\nis.domElement = (value) => is.object(value) && value.nodeType === NODE_TYPE_ELEMENT && is.string(value.nodeName) &&\n !is.plainObject(value) && DOM_PROPERTIES_TO_CHECK.every(property => property in value);\nis.observable = (value) => {\n if (!value) {\n return false;\n }\n // eslint-disable-next-line no-use-extend-native/no-use-extend-native\n if (value[Symbol.observable] && value === value[Symbol.observable]()) {\n return true;\n }\n if (value['@@observable'] && value === value['@@observable']()) {\n return true;\n }\n return false;\n};\nis.nodeStream = (value) => is.object(value) && is.function_(value.pipe) && !is.observable(value);\nis.infinite = (value) => value === Infinity || value === -Infinity;\nconst isAbsoluteMod2 = (remainder) => (value) => is.integer(value) && Math.abs(value % 2) === remainder;\nis.evenInteger = isAbsoluteMod2(0);\nis.oddInteger = isAbsoluteMod2(1);\nis.emptyArray = (value) => is.array(value) && value.length === 0;\nis.nonEmptyArray = (value) => is.array(value) && value.length > 0;\nis.emptyString = (value) => is.string(value) && value.length === 0;\n// TODO: Use `not ''` when the `not` operator is available.\nis.nonEmptyString = (value) => is.string(value) && value.length > 0;\nconst isWhiteSpaceString = (value) => is.string(value) && /\\S/.test(value) === false;\nis.emptyStringOrWhitespace = (value) => is.emptyString(value) || isWhiteSpaceString(value);\nis.emptyObject = (value) => is.object(value) && !is.map(value) && !is.set(value) && Object.keys(value).length === 0;\n// TODO: Use `not` operator here to remove `Map` and `Set` from type guard:\n// - https://github.com/Microsoft/TypeScript/pull/29317\nis.nonEmptyObject = (value) => is.object(value) && !is.map(value) && !is.set(value) && Object.keys(value).length > 0;\nis.emptySet = (value) => is.set(value) && value.size === 0;\nis.nonEmptySet = (value) => is.set(value) && value.size > 0;\nis.emptyMap = (value) => is.map(value) && value.size === 0;\nis.nonEmptyMap = (value) => is.map(value) && value.size > 0;\nconst predicateOnArray = (method, predicate, values) => {\n if (is.function_(predicate) === false) {\n throw new TypeError(`Invalid predicate: ${JSON.stringify(predicate)}`);\n }\n if (values.length === 0) {\n throw new TypeError('Invalid number of values');\n }\n return method.call(values, predicate);\n};\nis.any = (predicate, ...values) => {\n const predicates = is.array(predicate) ? predicate : [predicate];\n return predicates.some(singlePredicate => predicateOnArray(Array.prototype.some, singlePredicate, values));\n};\nis.all = (predicate, ...values) => predicateOnArray(Array.prototype.every, predicate, values);\nconst assertType = (condition, description, value) => {\n if (!condition) {\n throw new TypeError(`Expected value which is \\`${description}\\`, received value of type \\`${is(value)}\\`.`);\n }\n};\nexports.assert = {\n // Unknowns.\n undefined: (value) => assertType(is.undefined(value), \"undefined\" /* undefined */, value),\n string: (value) => assertType(is.string(value), \"string\" /* string */, value),\n number: (value) => assertType(is.number(value), \"number\" /* number */, value),\n bigint: (value) => assertType(is.bigint(value), \"bigint\" /* bigint */, value),\n // eslint-disable-next-line @typescript-eslint/ban-types\n function_: (value) => assertType(is.function_(value), \"Function\" /* Function */, value),\n null_: (value) => assertType(is.null_(value), \"null\" /* null */, value),\n class_: (value) => assertType(is.class_(value), \"Class\" /* class_ */, value),\n boolean: (value) => assertType(is.boolean(value), \"boolean\" /* boolean */, value),\n symbol: (value) => assertType(is.symbol(value), \"symbol\" /* symbol */, value),\n numericString: (value) => assertType(is.numericString(value), \"string with a number\" /* numericString */, value),\n array: (value) => assertType(is.array(value), \"Array\" /* Array */, value),\n buffer: (value) => assertType(is.buffer(value), \"Buffer\" /* Buffer */, value),\n nullOrUndefined: (value) => assertType(is.nullOrUndefined(value), \"null or undefined\" /* nullOrUndefined */, value),\n object: (value) => assertType(is.object(value), \"Object\" /* Object */, value),\n iterable: (value) => assertType(is.iterable(value), \"Iterable\" /* iterable */, value),\n asyncIterable: (value) => assertType(is.asyncIterable(value), \"AsyncIterable\" /* asyncIterable */, value),\n generator: (value) => assertType(is.generator(value), \"Generator\" /* Generator */, value),\n asyncGenerator: (value) => assertType(is.asyncGenerator(value), \"AsyncGenerator\" /* AsyncGenerator */, value),\n nativePromise: (value) => assertType(is.nativePromise(value), \"native Promise\" /* nativePromise */, value),\n promise: (value) => assertType(is.promise(value), \"Promise\" /* Promise */, value),\n generatorFunction: (value) => assertType(is.generatorFunction(value), \"GeneratorFunction\" /* GeneratorFunction */, value),\n asyncGeneratorFunction: (value) => assertType(is.asyncGeneratorFunction(value), \"AsyncGeneratorFunction\" /* AsyncGeneratorFunction */, value),\n // eslint-disable-next-line @typescript-eslint/ban-types\n asyncFunction: (value) => assertType(is.asyncFunction(value), \"AsyncFunction\" /* AsyncFunction */, value),\n // eslint-disable-next-line @typescript-eslint/ban-types\n boundFunction: (value) => assertType(is.boundFunction(value), \"Function\" /* Function */, value),\n regExp: (value) => assertType(is.regExp(value), \"RegExp\" /* RegExp */, value),\n date: (value) => assertType(is.date(value), \"Date\" /* Date */, value),\n error: (value) => assertType(is.error(value), \"Error\" /* Error */, value),\n map: (value) => assertType(is.map(value), \"Map\" /* Map */, value),\n set: (value) => assertType(is.set(value), \"Set\" /* Set */, value),\n weakMap: (value) => assertType(is.weakMap(value), \"WeakMap\" /* WeakMap */, value),\n weakSet: (value) => assertType(is.weakSet(value), \"WeakSet\" /* WeakSet */, value),\n int8Array: (value) => assertType(is.int8Array(value), \"Int8Array\" /* Int8Array */, value),\n uint8Array: (value) => assertType(is.uint8Array(value), \"Uint8Array\" /* Uint8Array */, value),\n uint8ClampedArray: (value) => assertType(is.uint8ClampedArray(value), \"Uint8ClampedArray\" /* Uint8ClampedArray */, value),\n int16Array: (value) => assertType(is.int16Array(value), \"Int16Array\" /* Int16Array */, value),\n uint16Array: (value) => assertType(is.uint16Array(value), \"Uint16Array\" /* Uint16Array */, value),\n int32Array: (value) => assertType(is.int32Array(value), \"Int32Array\" /* Int32Array */, value),\n uint32Array: (value) => assertType(is.uint32Array(value), \"Uint32Array\" /* Uint32Array */, value),\n float32Array: (value) => assertType(is.float32Array(value), \"Float32Array\" /* Float32Array */, value),\n float64Array: (value) => assertType(is.float64Array(value), \"Float64Array\" /* Float64Array */, value),\n bigInt64Array: (value) => assertType(is.bigInt64Array(value), \"BigInt64Array\" /* BigInt64Array */, value),\n bigUint64Array: (value) => assertType(is.bigUint64Array(value), \"BigUint64Array\" /* BigUint64Array */, value),\n arrayBuffer: (value) => assertType(is.arrayBuffer(value), \"ArrayBuffer\" /* ArrayBuffer */, value),\n sharedArrayBuffer: (value) => assertType(is.sharedArrayBuffer(value), \"SharedArrayBuffer\" /* SharedArrayBuffer */, value),\n dataView: (value) => assertType(is.dataView(value), \"DataView\" /* DataView */, value),\n urlInstance: (value) => assertType(is.urlInstance(value), \"URL\" /* URL */, value),\n urlString: (value) => assertType(is.urlString(value), \"string with a URL\" /* urlString */, value),\n truthy: (value) => assertType(is.truthy(value), \"truthy\" /* truthy */, value),\n falsy: (value) => assertType(is.falsy(value), \"falsy\" /* falsy */, value),\n nan: (value) => assertType(is.nan(value), \"NaN\" /* nan */, value),\n primitive: (value) => assertType(is.primitive(value), \"primitive\" /* primitive */, value),\n integer: (value) => assertType(is.integer(value), \"integer\" /* integer */, value),\n safeInteger: (value) => assertType(is.safeInteger(value), \"integer\" /* safeInteger */, value),\n plainObject: (value) => assertType(is.plainObject(value), \"plain object\" /* plainObject */, value),\n typedArray: (value) => assertType(is.typedArray(value), \"TypedArray\" /* typedArray */, value),\n arrayLike: (value) => assertType(is.arrayLike(value), \"array-like\" /* arrayLike */, value),\n domElement: (value) => assertType(is.domElement(value), \"Element\" /* domElement */, value),\n observable: (value) => assertType(is.observable(value), \"Observable\" /* Observable */, value),\n nodeStream: (value) => assertType(is.nodeStream(value), \"Node.js Stream\" /* nodeStream */, value),\n infinite: (value) => assertType(is.infinite(value), \"infinite number\" /* infinite */, value),\n emptyArray: (value) => assertType(is.emptyArray(value), \"empty array\" /* emptyArray */, value),\n nonEmptyArray: (value) => assertType(is.nonEmptyArray(value), \"non-empty array\" /* nonEmptyArray */, value),\n emptyString: (value) => assertType(is.emptyString(value), \"empty string\" /* emptyString */, value),\n nonEmptyString: (value) => assertType(is.nonEmptyString(value), \"non-empty string\" /* nonEmptyString */, value),\n emptyStringOrWhitespace: (value) => assertType(is.emptyStringOrWhitespace(value), \"empty string or whitespace\" /* emptyStringOrWhitespace */, value),\n emptyObject: (value) => assertType(is.emptyObject(value), \"empty object\" /* emptyObject */, value),\n nonEmptyObject: (value) => assertType(is.nonEmptyObject(value), \"non-empty object\" /* nonEmptyObject */, value),\n emptySet: (value) => assertType(is.emptySet(value), \"empty set\" /* emptySet */, value),\n nonEmptySet: (value) => assertType(is.nonEmptySet(value), \"non-empty set\" /* nonEmptySet */, value),\n emptyMap: (value) => assertType(is.emptyMap(value), \"empty map\" /* emptyMap */, value),\n nonEmptyMap: (value) => assertType(is.nonEmptyMap(value), \"non-empty map\" /* nonEmptyMap */, value),\n // Numbers.\n evenInteger: (value) => assertType(is.evenInteger(value), \"even integer\" /* evenInteger */, value),\n oddInteger: (value) => assertType(is.oddInteger(value), \"odd integer\" /* oddInteger */, value),\n // Two arguments.\n directInstanceOf: (instance, class_) => assertType(is.directInstanceOf(instance, class_), \"T\" /* directInstanceOf */, instance),\n inRange: (value, range) => assertType(is.inRange(value, range), \"in range\" /* inRange */, value),\n // Variadic functions.\n any: (predicate, ...values) => assertType(is.any(predicate, ...values), \"predicate returns truthy for any value\" /* any */, values),\n all: (predicate, ...values) => assertType(is.all(predicate, ...values), \"predicate returns truthy for all values\" /* all */, values)\n};\n// Some few keywords are reserved, but we'll populate them for Node.js users\n// See https://github.com/Microsoft/TypeScript/issues/2536\nObject.defineProperties(is, {\n class: {\n value: is.class_\n },\n function: {\n value: is.function_\n },\n null: {\n value: is.null_\n }\n});\nObject.defineProperties(exports.assert, {\n class: {\n value: exports.assert.class_\n },\n function: {\n value: exports.assert.function_\n },\n null: {\n value: exports.assert.null_\n }\n});\nexports.default = is;\n// For CommonJS default export support\nmodule.exports = is;\nmodule.exports.default = is;\nmodule.exports.assert = exports.assert;\n","import {Main} from '..';\n\n/**\n@hidden\n*/\nexport const testSymbol: unique symbol = Symbol('test');\n\n/**\n@hidden\n*/\nexport const isPredicate = (value: unknown): value is BasePredicate => Boolean((value as any)[testSymbol]);\n\n/**\n@hidden\n*/\nexport interface BasePredicate<T = unknown> {\n\t[testSymbol](value: T, main: Main, label: string | Function): void;\n}\n","/**\n@hidden\n*/\nexport interface CollectionLike<T> {\n\thas(item: T): boolean;\n}\n\n/**\nRetrieve the missing values in a collection based on an array of items.\n\n@hidden\n\n@param source - Source collection to search through.\n@param items - Items to search for.\n@param maxValues - Maximum number of values after the search process is stopped. Default: 5.\n*/\nexport default <T>(source: CollectionLike<T>, items: readonly T[], maxValues = 5) => {\n\tconst missingValues: T[] = [];\n\n\tfor (const value of items) {\n\t\tif (source.has(value)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tmissingValues.push(value);\n\n\t\tif (missingValues.length === maxValues) {\n\t\t\treturn missingValues;\n\t\t}\n\t}\n\n\treturn missingValues.length === 0 ? true : missingValues;\n};\n","import callsites from 'callsites';\nimport {inferLabel} from './utils/infer-label';\nimport {Predicate} from './predicates/predicate';\nimport {BasePredicate, isPredicate} from './predicates/base-predicate';\nimport modifiers, {Modifiers} from './modifiers';\nimport predicates, {Predicates} from './predicates';\nimport test from './test';\n\n/**\n@hidden\n*/\nexport type Main = <T>(value: T, label: string | Function, predicate: BasePredicate<T>) => void;\n\n// Extends is only necessary for the generated documentation to be cleaner. The loaders below infer the correct type.\nexport interface Ow extends Modifiers, Predicates {\n\t/**\n\tTest if the value matches the predicate. Throws an `ArgumentError` if the test fails.\n\n\t@param value - Value to test.\n\t@param predicate - Predicate to test against.\n\t*/\n\t<T>(value: T, predicate: BasePredicate<T>): void;\n\n\t/**\n\tTest if `value` matches the provided `predicate`. Throws an `ArgumentError` with the specified `label` if the test fails.\n\n\t@param value - Value to test.\n\t@param label - Label which should be used in error messages.\n\t@param predicate - Predicate to test against.\n\t*/\n\t<T>(value: T, label: string, predicate: BasePredicate<T>): void;\n\n\t/**\n\tReturns `true` if the value matches the predicate, otherwise returns `false`.\n\n\t@param value - Value to test.\n\t@param predicate - Predicate to test against.\n\t*/\n\tisValid<T>(value: T, predicate: BasePredicate<T>): value is T;\n\n\t/**\n\tCreate a reusable validator.\n\n\t@param predicate - Predicate used in the validator function.\n\t*/\n\tcreate<T>(predicate: BasePredicate<T>): ReusableValidator<T>;\n\n\t/**\n\tCreate a reusable validator.\n\n\t@param label - Label which should be used in error messages.\n\t@param predicate - Predicate used in the validator function.\n\t*/\n\tcreate<T>(label: string, predicate: BasePredicate<T>): ReusableValidator<T>;\n}\n\n/**\nA reusable validator.\n*/\nexport interface ReusableValidator<T> {\n\t/**\n\tTest if the value matches the predicate. Throws an `ArgumentError` if the test fails.\n\n\t@param value - Value to test.\n\t@param label - Override the label which should be used in error messages.\n\t*/\n\t// eslint-disable-next-line @typescript-eslint/prefer-function-type\n\t(value: T, label?: string): void;\n}\n\nconst ow = <T>(value: T, labelOrPredicate: unknown, predicate?: BasePredicate<T>) => {\n\tif (!isPredicate(labelOrPredicate) && typeof labelOrPredicate !== 'string') {\n\t\tthrow new TypeError(`Expected second argument to be a predicate or a string, got \\`${typeof labelOrPredicate}\\``);\n\t}\n\n\tif (isPredicate(labelOrPredicate)) {\n\t\t// If the second argument is a predicate, infer the label\n\t\tconst stackFrames = callsites();\n\n\t\ttest(value, () => inferLabel(stackFrames), labelOrPredicate);\n\n\t\treturn;\n\t}\n\n\ttest(value, labelOrPredicate, predicate as BasePredicate<T>);\n};\n\nObject.defineProperties(ow, {\n\tisValid: {\n\t\tvalue: <T>(value: T, predicate: BasePredicate<T>) => {\n\t\t\ttry {\n\t\t\t\tow(value, predicate);\n\t\t\t\treturn true;\n\t\t\t} catch {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t},\n\tcreate: {\n\t\tvalue: <T>(labelOrPredicate: BasePredicate<T> | string | undefined, predicate?: BasePredicate<T>) => (value: T, label?: string) => {\n\t\t\tif (isPredicate(labelOrPredicate)) {\n\t\t\t\tconst stackFrames = callsites();\n\n\t\t\t\ttest(value, label ?? (() => inferLabel(stackFrames)), labelOrPredicate);\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttest(value, label ?? (labelOrPredicate as string), predicate as BasePredicate<T>);\n\t\t}\n\t}\n});\n\nexport default predicates(modifiers(ow)) as Ow;\nexport {BasePredicate, Predicate};\nexport {\n\tStringPredicate,\n\tNumberPredicate,\n\tBooleanPredicate,\n\tArrayPredicate,\n\tObjectPredicate,\n\tDatePredicate,\n\tErrorPredicate,\n\tMapPredicate,\n\tWeakMapPredicate,\n\tSetPredicate,\n\tWeakSetPredicate,\n\tTypedArrayPredicate,\n\tArrayBufferPredicate,\n\tDataViewPredicate,\n\tAnyPredicate,\n\tShape\n} from './predicates';\nexport {ArgumentError} from './argument-error';\n","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","/**\n@hidden\n*/\nexport class ArgumentError extends Error {\n\tconstructor(message: string, context: Function) {\n\t\tsuper(message);\n\n\t\tif (Error.captureStackTrace) {\n\t\t\t// TODO: Node.js does not preserve the error name in output when using the below, why?\n\t\t\tError.captureStackTrace(this, context);\n\t\t} else {\n\t\t\tthis.stack = (new Error()).stack;\n\t\t}\n\n\t\tthis.name = 'ArgumentError';\n\t}\n}\n","import {TypedArray} from 'type-fest';\nimport {StringPredicate} from './predicates/string';\nimport {NumberPredicate} from './predicates/number';\nimport {BooleanPredicate} from './predicates/boolean';\nimport {Predicate, PredicateOptions} from './predicates/predicate';\nimport {ArrayPredicate} from './predicates/array';\nimport {ObjectPredicate, Shape} from './predicates/object';\nimport {DatePredicate} from './predicates/date';\nimport {ErrorPredicate} from './predicates/error';\nimport {MapPredicate} from './predicates/map';\nimport {WeakMapPredicate} from './predicates/weak-map';\nimport {SetPredicate} from './predicates/set';\nimport {WeakSetPredicate} from './predicates/weak-set';\nimport {TypedArrayPredicate} from './predicates/typed-array';\nimport {ArrayBufferPredicate} from './predicates/array-buffer';\nimport {DataViewPredicate} from './predicates/data-view';\nimport {BasePredicate} from './predicates/base-predicate';\nimport {AnyPredicate} from './predicates/any';\n\nexport interface Predicates {\n\t/**\n\tTest the value to be a string.\n\t*/\n\treadonly string: StringPredicate;\n\n\t/**\n\tTest the value to be a number.\n\t*/\n\treadonly number: NumberPredicate;\n\n\t/**\n\tTest the value to be a boolean.\n\t*/\n\treadonly boolean: BooleanPredicate;\n\n\t/**\n\tTest the value to be undefined.\n\t*/\n\treadonly undefined: Predicate<undefined>;\n\n\t/**\n\tTest the value to be null.\n\t*/\n\treadonly null: Predicate<null>;\n\n\t/**\n\tTest the value to be null or undefined.\n\t*/\n\treadonly nullOrUndefined: Predicate<null | undefined>;\n\n\t/**\n\tTest the value to be not a number.\n\t*/\n\treadonly nan: Predicate<number>;\n\n\t/**\n\tTest the value to be a Symbol.\n\t*/\n\treadonly symbol: Predicate<symbol>;\n\n\t/**\n\tTest the value to be an array.\n\t*/\n\treadonly array: ArrayPredicate;\n\n\t/**\n\tTest the value to be an object.\n\t*/\n\treadonly object: ObjectPredicate;\n\n\t/**\n\tTest the value to be a Date.\n\t*/\n\treadonly date: DatePredicate;\n\n\t/**\n\tTest the value to be an Error.\n\t*/\n\treadonly error: ErrorPredicate;\n\n\t/**\n\tTest the value to be a Map.\n\t*/\n\treadonly map: MapPredicate;\n\n\t/**\n\tTest the value to be a WeakMap.\n\t*/\n\treadonly weakMap: WeakMapPredicate;\n\n\t/**\n\tTest the value to be a Set.\n\t*/\n\treadonly set: SetPredicate;\n\n\t/**\n\tTest the value to be a WeakSet.\n\t*/\n\treadonly weakSet: WeakSetPredicate;\n\n\t/**\n\tTest the value to be a Function.\n\t*/\n\treadonly function: Predicate<Function>;\n\n\t/**\n\tTest the value to be a Buffer.\n\t*/\n\treadonly buffer: Predicate<Buffer>;\n\n\t/**\n\tTest the value to be a RegExp.\n\t*/\n\treadonly regExp: Predicate<RegExp>;\n\n\t/**\n\tTest the value to be a Promise.\n\t*/\n\treadonly promise: Predicate<Promise<unknown>>;\n\n\t/**\n\tTest the value to be a typed array.\n\t*/\n\treadonly typedArray: TypedArrayPredicate<TypedArray>;\n\n\t/**\n\tTest the value to be a Int8Array.\n\t*/\n\treadonly int8Array: TypedArrayPredicate<Int8Array>;\n\n\t/**\n\tTest the value to be a Uint8Array.\n\t*/\n\treadonly uint8Array: TypedArrayPredicate<Uint8Array>;\n\n\t/**\n\tTest the value to be a Uint8ClampedArray.\n\t*/\n\treadonly uint8ClampedArray: TypedArrayPredicate<Uint8ClampedArray>;\n\n\t/**\n\tTest the value to be a Int16Array.\n\t*/\n\treadonly int16Array: TypedArrayPredicate<Int16Array>;\n\n\t/**\n\tTest the value to be a Uint16Array.\n\t*/\n\treadonly uint16Array: TypedArrayPredicate<Uint16Array>;\n\n\t/**\n\tTest the value to be a Int32Array.\n\t*/\n\treadonly int32Array: TypedArrayPredicate<Int32Array>;\n\n\t/**\n\tTest the value to be a Uint32Array.\n\t*/\n\treadonly uint32Array: TypedArrayPredicate<Uint32Array>;\n\n\t/**\n\tTest the value to be a Float32Array.\n\t*/\n\treadonly float32Array: TypedArrayPredicate<Float32Array>;\n\n\t/**\n\tTest the value to be a Float64Array.\n\t*/\n\treadonly float64Array: TypedArrayPredicate<Float64Array>;\n\n\t/**\n\tTest the value to be a ArrayBuffer.\n\t*/\n\treadonly arrayBuffer: ArrayBufferPredicate<ArrayBuffer>;\n\n\t/**\n\tTest the value to be a SharedArrayBuffer.\n\t*/\n\treadonly sharedArrayBuffer: ArrayBufferPredicate<SharedArrayBuffer>;\n\n\t/**\n\tTest the value to be a DataView.\n\t*/\n\treadonly dataView: DataViewPredicate;\n\n\t/**\n\tTest the value to be Iterable.\n\t*/\n\treadonly iterable: Predicate<Iterable<unknown>>;\n\n\t/**\n\tTest that the value matches at least one of the given predicates.\n\t*/\n\tany<T1>(p1: BasePredicate<T1>): AnyPredicate<T1>;\n\tany<T1, T2>(p1: BasePredicate<T1>, p2: BasePredicate<T2>): AnyPredicate<T1 | T2>;\n\tany<T1, T2, T3>(p1: BasePredicate<T1>, p2: BasePredicate<T2>, p3: BasePredicate<T3>): AnyPredicate<T1 | T2 | T3>;\n\tany<T1, T2, T3, T4>(p1: BasePredicate<T1>, p2: BasePredicate<T2>, p3: BasePredicate<T3>, p4: BasePredicate<T4>): AnyPredicate<T1 | T2 | T3 | T4>;\n\tany<T1, T2, T3, T4, T5>(p1: BasePredicate<T1>, p2: BasePredicate<T2>, p3: BasePredicate<T3>, p4: BasePredicate<T4>, p5: BasePredicate<T5>): AnyPredicate<T1 | T2 | T3 | T4 | T5>;\n\tany<T1, T2, T3, T4, T5, T6>(p1: BasePredicate<T1>, p2: BasePredicate<T2>, p3: BasePredicate<T3>, p4: BasePredicate<T4>, p5: BasePredicate<T5>, p6: BasePredicate<T6>): AnyPredicate<T1 | T2 | T3 | T4 | T5 | T6>;\n\tany<T1, T2, T3, T4, T5, T6, T7>(p1: BasePredicate<T1>, p2: BasePredicate<T2>, p3: BasePredicate<T3>, p4: BasePredicate<T4>, p5: BasePredicate<T5>, p6: BasePredicate<T6>, p7: BasePredicate<T7>): AnyPredicate<T1 | T2 | T3 | T4 | T5 | T6 | T7>;\n\tany<T1, T2, T3, T4, T5, T6, T7, T8>(p1: BasePredicate<T1>, p2: BasePredicate<T2>, p3: BasePredicate<T3>, p4: BasePredicate<T4>, p5: BasePredicate<T5>, p6: BasePredicate<T6>, p7: BasePredicate<T7>, p8: BasePredicate<T8>): AnyPredicate<T1 | T2 | T3 | T4 | T5 | T6 | T7 | T8>;\n\tany<T1, T2, T3, T4, T5, T6, T7, T8, T9>(p1: BasePredicate<T1>, p2: BasePredicate<T2>, p3: BasePredicate<T3>, p4: BasePredicate<T4>, p5: BasePredicate<T5>, p6: BasePredicate<T6>, p7: BasePredicate<T7>, p8: BasePredicate<T8>, p9: BasePredicate<T9>): AnyPredicate<T1 | T2 | T3 | T4 | T5 | T6 | T7 | T8 | T9>;\n\tany<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(p1: BasePredicate<T1>, p2: BasePredicate<T2>, p3: BasePredicate<T3>, p4: BasePredicate<T4>, p5: BasePredicate<T5>, p6: BasePredicate<T6>, p7: BasePredicate<T7>, p8: BasePredicate<T8>, p9: BasePredicate<T9>, p10: BasePredicate<T10>): AnyPredicate<T1 | T2 | T3 | T4 | T5 | T6 | T7 | T8 | T9 | T10>;\n\tany(...predicate: BasePredicate[]): AnyPredicate;\n}\n\nexport default <T>(object: T, options?: PredicateOptions): T & Predicates => {\n\tObject.defineProperties(object, {\n\t\tstring: {\n\t\t\tget: () => new StringPredicate(options)\n\t\t},\n\t\tnumber: {\n\t\t\tget: () => new NumberPredicate(options)\n\t\t},\n\t\tboolean: {\n\t\t\tget: () => new BooleanPredicate(options)\n\t\t},\n\t\tundefined: {\n\t\t\tget: () => new Predicate('undefined', options)\n\t\t},\n\t\tnull: {\n\t\t\tget: () => new Predicate('null', options)\n\t\t},\n\t\tnullOrUndefined: {\n\t\t\tget: () => new Predicate('nullOrUndefined', options)\n\t\t},\n\t\tnan: {\n\t\t\tget: () => new Predicate('nan', options)\n\t\t},\n\t\tsymbol: {\n\t\t\tget: () => new Predicate('symbol', options)\n\t\t},\n\t\tarray: {\n\t\t\tget: () => new ArrayPredicate(options)\n\t\t},\n\t\tobject: {\n\t\t\tget: () => new ObjectPredicate(options)\n\t\t},\n\t\tdate: {\n\t\t\tget: () => new DatePredicate(options)\n\t\t},\n\t\terror: {\n\t\t\tget: () => new ErrorPredicate(options)\n\t\t},\n\t\tmap: {\n\t\t\tget: () => new MapPredicate(options)\n\t\t},\n\t\tweakMap: {\n\t\t\tget: () => new WeakMapPredicate(options)\n\t\t},\n\t\tset: {\n\t\t\tget: () => new SetPredicate(options)\n\t\t},\n\t\tweakSet: {\n\t\t\tget: () => new WeakSetPredicate(options)\n\t\t},\n\t\tfunction: {\n\t\t\tget: () => new Predicate('Function', options)\n\t\t},\n\t\tbuffer: {\n\t\t\tget: () => new Predicate('Buffer', options)\n\t\t},\n\t\tregExp: {\n\t\t\tget: () => new Predicate('RegExp', options)\n\t\t},\n\t\tpromise: {\n\t\t\tget: () => new Predicate('Promise', options)\n\t\t},\n\t\ttypedArray: {\n\t\t\tget: () => new TypedArrayPredicate('TypedArray', options)\n\t\t},\n\t\tint8Array: {\n\t\t\tget: () => new TypedArrayPredicate('Int8Array', options)\n\t\t},\n\t\tuint8Array: {\n\t\t\tget: () => new TypedArrayPredicate('Uint8Array', options)\n\t\t},\n\t\tuint8ClampedArray: {\n\t\t\tget: () => new TypedArrayPredicate('Uint8ClampedArray', options)\n\t\t},\n\t\tint16Array: {\n\t\t\tget: () => new TypedArrayPredicate('Int16Array', options)\n\t\t},\n\t\tuint16Array: {\n\t\t\tget: () => new TypedArrayPredicate('Uint16Array', options)\n\t\t},\n\t\tint32Array: {\n\t\t\tget: () => new TypedArrayPredicate('Int32Array', options)\n\t\t},\n\t\tuint32Array: {\n\t\t\tget: () => new TypedArrayPredicate('Uint32Array', options)\n\t\t},\n\t\tfloat32Array: {\n\t\t\tget: () => new TypedArrayPredicate('Float32Array', options)\n\t\t},\n\t\tfloat64Array: {\n\t\t\tget: () => new TypedArrayPredicate('Float64Array', options)\n\t\t},\n\t\tarrayBuffer: {\n\t\t\tget: () => new ArrayBufferPredicate('ArrayBuffer', options)\n\t\t},\n\t\tsharedArrayBuffer: {\n\t\t\tget: () => new ArrayBufferPredicate('SharedArrayBuffer', options)\n\t\t},\n\t\tdataView: {\n\t\t\tget: () => new DataViewPredicate(options)\n\t\t},\n\t\titerable: {\n\t\t\tget: () => new Predicate('Iterable', options)\n\t\t},\n\t\tany: {\n\t\t\tvalue: (...predicates: BasePredicate[]) => new AnyPredicate(predicates, options)\n\t\t}\n\t});\n\n\treturn object as T & Predicates;\n};\n\nexport {\n\tStringPredicate,\n\tNumberPredicate,\n\tBooleanPredicate,\n\tArrayPredicate,\n\tObjectPredicate,\n\tDatePredicate,\n\tErrorPredicate,\n\tMapPredicate,\n\tWeakMapPredicate,\n\tSetPredicate,\n\tWeakSetPredicate,\n\tTypedArrayPredicate,\n\tArrayBufferPredicate,\n\tDataViewPredicate,\n\tAnyPredicate,\n\tShape\n};\n","import {Predicate} from '../predicates/predicate';\nimport ow from '..';\n\n/**\nTest all the values in the collection against a provided predicate.\n\n@hidden\n@param source Source collection to test.\n@param predicate Predicate to test every item in the source collection against.\n*/\nexport default <T>(source: IterableIterator<T> | Set<T> | T[], predicate: Predicate<T>): boolean | string => {\n\ttry {\n\t\tfor (const item of source) {\n\t\t\tow(item, predicate);\n\t\t}\n\n\t\treturn true;\n\t} catch (error) {\n\t\treturn error.message;\n\t}\n};\n","import {testSymbol, BasePredicate} from './predicates/base-predicate';\n\n/**\nValidate the value against the provided predicate.\n\n@hidden\n\n@param value - Value to test.\n@param label - Label which should be used in error messages.\n@param predicate - Predicate to test to value against.\n*/\nexport default function test<T>(value: T, label: string | Function, predicate: BasePredicate<T>) {\n\tpredicate[testSymbol](value, test, label);\n}\n","'use strict';\n\nconst callsites = () => {\n\tconst _prepareStackTrace = Error.prepareStackTrace;\n\tError.prepareStackTrace = (_, stack) => stack;\n\tconst stack = new Error().stack.slice(1);\n\tError.prepareStackTrace = _prepareStackTrace;\n\treturn stack;\n};\n\nmodule.exports = callsites;\n// TODO: Remove this for the next major release\nmodule.exports.default = callsites;\n","import * as fs from 'fs';\nimport {CallSite} from 'callsites';\nimport isValidIdentifier from './is-valid-identifier';\nimport isNode from './node/is-node';\n\n// Regex to extract the label out of the `ow` function call\nconst labelRegex = /^.*?\\((?<label>.*?)[,)]/;\n\n/**\nInfer the label of the caller.\n\n@hidden\n\n@param callsites - List of stack frames.\n*/\nexport const inferLabel = (callsites: readonly CallSite[]) => {\n\tif (!isNode) {\n\t\t// Exit if we are not running in a Node.js environment\n\t\treturn;\n\t}\n\n\t// Grab the stackframe with the `ow` function call\n\tconst functionCallStackFrame = callsites[1];\n\n\tconst fileName = functionCallStackFrame.getFileName();\n\tconst lineNumber = functionCallStackFrame.getLineNumber();\n\tconst columnNumber = functionCallStackFrame.getColumnNumber();\n\n\tif (fileName === null || lineNumber === null || columnNumber === null) {\n\t\treturn;\n\t}\n\n\tlet content: string[] = [];\n\n\ttry {\n\t\tcontent = fs.readFileSync(fileName, 'utf8').split('\\n');\n\t} catch {\n\t\treturn;\n\t}\n\n\tlet line = content[lineNumber - 1];\n\n\tif (!line) {\n\t\t// Exit if the line number couldn't be found\n\t\treturn;\n\t}\n\n\tline = line.slice(columnNumber - 1);\n\n\tconst match = labelRegex.exec(line);\n\n\tif (!match?.groups?.label) {\n\t\t// Exit if we didn't find a label\n\t\treturn;\n\t}\n\n\tconst token = match.groups.label;\n\n\tif (isValidIdentifier(token) || isValidIdentifier(token.split('.').pop())) {\n\t\treturn token;\n\t}\n\n\treturn;\n};\n","module.exports = require(\"fs\");","const identifierRegex = /^[a-z$_][a-z$_\\d]*$/i;\n\nconst reservedSet = new Set([\n\t'undefined',\n\t'null',\n\t'true',\n\t'false',\n\t'super',\n\t'this',\n\t'Infinity',\n\t'NaN'\n]);\n\n/**\nTest if the string is a valid JavaScript identifier.\n\n@param string - String to test.\n*/\nexport default (string: string | undefined) => string && !reservedSet.has(string) && identifierRegex.test(string);\n","export default Boolean(process?.versions?.node);\n","import randomId from '../utils/random-id';\nimport {validatorSymbol} from '../predicates/predicate';\n\n/**\nOperator which inverts the following validation.\n\n@hidden\n\n@param predictate - Predicate to wrap inside the operator.\n*/\nexport const not = (predicate: any) => {\n\tconst originalAddValidator = predicate.addValidator;\n\n\tpredicate.addValidator = (validator: any) => {\n\t\tconst {validator: fn, message, negatedMessage} = validator;\n\t\tconst placeholder = randomId();\n\n\t\tvalidator.message = (value: unknown, label: string) => (\n\t\t\tnegatedMessage ?\n\t\t\t\tnegatedMessage(value, label) :\n\t\t\t\tmessage(value, placeholder).replace(/ to /, '$¬ ').replace(placeholder, label)\n\t\t);\n\n\t\tvalidator.validator = (value: unknown) => !fn(value);\n\n\t\tpredicate[validatorSymbol].push(validator);\n\n\t\tpredicate.addValidator = originalAddValidator;\n\n\t\treturn predicate;\n\t};\n\n\treturn predicate;\n};\n","export default () => Math.random().toString(16).slice(2);\n","import predicates, {Predicates} from './predicates';\n\nexport interface Modifiers {\n\t/**\n\tMake the following predicate optional so it doesn't fail when the value is `undefined`.\n\t*/\n\treadonly optional: Predicates;\n}\n\nexport default <T>(object: T): T & Modifiers => {\n\tObject.defineProperties(object, {\n\t\toptional: {\n\t\t\tget: () => predicates({}, {optional: true})\n\t\t}\n\t});\n\n\treturn object as T & Modifiers;\n};\n","import is from '@sindresorhus/is';\nimport valiDate = require('vali-date');\nimport {Predicate, PredicateOptions} from './predicate';\n\nexport class StringPredicate extends Predicate<string> {\n\t/**\n\t@hidden\n\t*/\n\tconstructor(options?: PredicateOptions) {\n\t\tsuper('string', options);\n\t}\n\n\t/**\n\tTest a string to have a specific length.\n\n\t@param length - The length of the string.\n\t*/\n\tlength(length: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to have length \\`${length}\\`, got \\`${value}\\``,\n\t\t\tvalidator: value => value.length === length\n\t\t});\n\t}\n\n\t/**\n\tTest a string to have a minimum length.\n\n\t@param length - The minimum length of the string.\n\t*/\n\tminLength(length: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to have a minimum length of \\`${length}\\`, got \\`${value}\\``,\n\t\t\tvalidator: value => value.length >= length,\n\t\t\tnegatedMessage: (value, label) => `Expected ${label} to have a maximum length of \\`${length - 1}\\`, got \\`${value}\\``\n\t\t});\n\t}\n\n\t/**\n\tTest a string to have a maximum length.\n\n\t@param length - The maximum length of the string.\n\t*/\n\tmaxLength(length: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to have a maximum length of \\`${length}\\`, got \\`${value}\\``,\n\t\t\tvalidator: value => value.length <= length,\n\t\t\tnegatedMessage: (value, label) => `Expected ${label} to have a minimum length of \\`${length + 1}\\`, got \\`${value}\\``\n\t\t});\n\t}\n\n\t/**\n\tTest a string against a regular expression.\n\n\t@param regex - The regular expression to match the value with.\n\t*/\n\tmatches(regex: RegExp) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to match \\`${regex}\\`, got \\`${value}\\``,\n\t\t\tvalidator: value => regex.test(value)\n\t\t});\n\t}\n\n\t/**\n\tTest a string to start with a specific value.\n\n\t@param searchString - The value that should be the start of the string.\n\t*/\n\tstartsWith(searchString: string) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to start with \\`${searchString}\\`, got \\`${value}\\``,\n\t\t\tvalidator: value => value.startsWith(searchString)\n\t\t});\n\t}\n\n\t/**\n\tTest a string to end with a specific value.\n\n\t@param searchString - The value that should be the end of the string.\n\t*/\n\tendsWith(searchString: string) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to end with \\`${searchString}\\`, got \\`${value}\\``,\n\t\t\tvalidator: value => value.endsWith(searchString)\n\t\t});\n\t}\n\n\t/**\n\tTest a string to include a specific value.\n\n\t@param searchString - The value that should be included in the string.\n\t*/\n\tincludes(searchString: string) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to include \\`${searchString}\\`, got \\`${value}\\``,\n\t\t\tvalidator: value => value.includes(searchString)\n\t\t});\n\t}\n\n\t/**\n\tTest if the string is an element of the provided list.\n\n\t@param list - List of possible values.\n\t*/\n\toneOf(list: readonly string[]) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => {\n\t\t\t\tlet printedList = JSON.stringify(list);\n\n\t\t\t\tif (list.length > 10) {\n\t\t\t\t\tconst overflow = list.length - 10;\n\t\t\t\t\tprintedList = JSON.stringify(list.slice(0, 10)).replace(/]$/, `,…+${overflow} more]`);\n\t\t\t\t}\n\n\t\t\t\treturn `Expected ${label} to be one of \\`${printedList}\\`, got \\`${value}\\``;\n\t\t\t},\n\t\t\tvalidator: value => list.includes(value)\n\t\t});\n\t}\n\n\t/**\n\tTest a string to be empty.\n\t*/\n\tget empty() {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to be empty, got \\`${value}\\``,\n\t\t\tvalidator: value => value === ''\n\t\t});\n\t}\n\n\t/**\n\tTest a string to be not empty.\n\t*/\n\tget nonEmpty() {\n\t\treturn this.addValidator({\n\t\t\tmessage: (_, label) => `Expected ${label} to not be empty`,\n\t\t\tvalidator: value => value !== ''\n\t\t});\n\t}\n\n\t/**\n\tTest a string to be equal to a specified string.\n\n\t@param expected - Expected value to match.\n\t*/\n\tequals(expected: string) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to be equal to \\`${expected}\\`, got \\`${value}\\``,\n\t\t\tvalidator: value => value === expected\n\t\t});\n\t}\n\n\t/**\n\tTest a string to be alphanumeric.\n\t*/\n\tget alphanumeric() {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to be alphanumeric, got \\`${value}\\``,\n\t\t\tvalidator: value => /^[a-z\\d]+$/i.test(value)\n\t\t});\n\t}\n\n\t/**\n\tTest a string to be alphabetical.\n\t*/\n\tget alphabetical() {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to be alphabetical, got \\`${value}\\``,\n\t\t\tvalidator: value => /^[a-z]+$/ig.test(value)\n\t\t});\n\t}\n\n\t/**\n\tTest a string to be numeric.\n\t*/\n\tget numeric() {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to be numeric, got \\`${value}\\``,\n\t\t\tvalidator: value => /^(?:\\+|-)?\\d+$/i.test(value)\n\t\t});\n\t}\n\n\t/**\n\tTest a string to be a valid date.\n\t*/\n\tget date() {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to be a date, got \\`${value}\\``,\n\t\t\tvalidator: valiDate\n\t\t});\n\t}\n\n\t/**\n\tTest a non-empty string to be lowercase. Matching both alphabetical & numbers.\n\t*/\n\tget lowercase() {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to be lowercase, got \\`${value}\\``,\n\t\t\tvalidator: value => value.trim() !== '' && value === value.toLowerCase()\n\t\t});\n\t}\n\n\t/**\n\tTest a non-empty string to be uppercase. Matching both alphabetical & numbers.\n\t*/\n\tget uppercase() {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to be uppercase, got \\`${value}\\``,\n\t\t\tvalidator: value => value.trim() !== '' && value === value.toUpperCase()\n\t\t});\n\t}\n\n\t/**\n\tTest a string to be a valid URL.\n\t*/\n\tget url() {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to be a URL, got \\`${value}\\``,\n\t\t\tvalidator: is.urlString\n\t\t});\n\t}\n}\n","'use strict';\nmodule.exports = function (str) {\n\treturn !isNaN(Date.parse(str));\n};\n","import is from '@sindresorhus/is';\nimport {Predicate, PredicateOptions} from './predicate';\n\nexport class NumberPredicate extends Predicate<number> {\n\t/**\n\t@hidden\n\t*/\n\tconstructor(options?: PredicateOptions) {\n\t\tsuper('number', options);\n\t}\n\n\t/**\n\tTest a number to be in a specified range.\n\n\t@param start - Start of the range.\n\t@param end - End of the range.\n\t*/\n\tinRange(start: number, end: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to be in range [${start}..${end}], got ${value}`,\n\t\t\tvalidator: value => is.inRange(value, [start, end])\n\t\t});\n\t}\n\n\t/**\n\tTest a number to be greater than the provided value.\n\n\t@param number - Minimum value.\n\t*/\n\tgreaterThan(number: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to be greater than ${number}, got ${value}`,\n\t\t\tvalidator: value => value > number\n\t\t});\n\t}\n\n\t/**\n\tTest a number to be greater than or equal to the provided value.\n\n\t@param number - Minimum value.\n\t*/\n\tgreaterThanOrEqual(number: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to be greater than or equal to ${number}, got ${value}`,\n\t\t\tvalidator: value => value >= number\n\t\t});\n\t}\n\n\t/**\n\tTest a number to be less than the provided value.\n\n\t@param number - Maximum value.\n\t*/\n\tlessThan(number: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to be less than ${number}, got ${value}`,\n\t\t\tvalidator: value => value < number\n\t\t});\n\t}\n\n\t/**\n\tTest a number to be less than or equal to the provided value.\n\n\t@param number - Minimum value.\n\t*/\n\tlessThanOrEqual(number: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to be less than or equal to ${number}, got ${value}`,\n\t\t\tvalidator: value => value <= number\n\t\t});\n\t}\n\n\t/**\n\tTest a number to be equal to a specified number.\n\n\t@param expected - Expected value to match.\n\t*/\n\tequal(expected: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to be equal to ${expected}, got ${value}`,\n\t\t\tvalidator: value => value === expected\n\t\t});\n\t}\n\n\t/**\n\tTest if a number is an element of the provided list.\n\n\t@param list - List of possible values.\n\t*/\n\toneOf(list: readonly number[]) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => {\n\t\t\t\tlet printedList = JSON.stringify(list);\n\n\t\t\t\tif (list.length > 10) {\n\t\t\t\t\tconst overflow = list.length - 10;\n\t\t\t\t\tprintedList = JSON.stringify(list.slice(0, 10)).replace(/]$/, `,…+${overflow} more]`);\n\t\t\t\t}\n\n\t\t\t\treturn `Expected ${label} to be one of \\`${printedList}\\`, got ${value}`;\n\t\t\t},\n\t\t\tvalidator: value => list.includes(value)\n\t\t});\n\t}\n\n\t/**\n\tTest a number to be an integer.\n\t*/\n\tget integer() {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to be an integer, got ${value}`,\n\t\t\tvalidator: value => is.integer(value)\n\t\t});\n\t}\n\n\t/**\n\tTest a number to be finite.\n\t*/\n\tget finite() {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to be finite, got ${value}`,\n\t\t\tvalidator: value => !is.infinite(value)\n\t\t});\n\t}\n\n\t/**\n\tTest a number to be infinite.\n\t*/\n\tget infinite() {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to be infinite, got ${value}`,\n\t\t\tvalidator: value => is.infinite(value)\n\t\t});\n\t}\n\n\t/**\n\tTest a number to be positive.\n\t*/\n\tget positive() {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to be positive, got ${value}`,\n\t\t\tvalidator: value => value > 0\n\t\t});\n\t}\n\n\t/**\n\tTest a number to be negative.\n\t*/\n\tget negative() {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to be negative, got ${value}`,\n\t\t\tvalidator: value => value < 0\n\t\t});\n\t}\n\n\t/**\n\tTest a number to be an integer or infinite.\n\t*/\n\tget integerOrInfinite() {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to be an integer or infinite, got ${value}`,\n\t\t\tvalidator: value => is.integer(value) || is.infinite(value)\n\t\t});\n\t}\n\n\t/**\n\tTest a number to be in a valid range for a 8-bit unsigned integer.\n\t*/\n\tget uint8() {\n\t\treturn this.integer.inRange(0, 255);\n\t}\n\n\t/**\n\tTest a number to be in a valid range for a 16-bit unsigned integer.\n\t*/\n\tget uint16() {\n\t\treturn this.integer.inRange(0, 65535);\n\t}\n\n\t/**\n\tTest a number to be in a valid range for a 32-bit unsigned integer.\n\t*/\n\tget uint32() {\n\t\treturn this.integer.inRange(0, 4294967295);\n\t}\n\n\t/**\n\tTest a number to be in a valid range for a 8-bit signed integer.\n\t*/\n\tget int8() {\n\t\treturn this.integer.inRange(-128, 127);\n\t}\n\n\t/**\n\tTest a number to be in a valid range for a 16-bit signed integer.\n\t*/\n\tget int16() {\n\t\treturn this.integer.inRange(-32768, 32767);\n\t}\n\n\t/**\n\tTest a number to be in a valid range for a 32-bit signed integer.\n\t*/\n\tget int32() {\n\t\treturn this.integer.inRange(-2147483648, 2147483647);\n\t}\n}\n","import {Predicate, PredicateOptions} from './predicate';\n\nexport class BooleanPredicate extends Predicate<boolean> {\n\t/**\n\t@hidden\n\t*/\n\tconstructor(options?: PredicateOptions) {\n\t\tsuper('boolean', options);\n\t}\n\n\t/**\n\tTest a boolean to be true.\n\t*/\n\tget true() {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to be true, got ${value}`,\n\t\t\tvalidator: value => value\n\t\t});\n\t}\n\n\t/**\n\tTest a boolean to be false.\n\t*/\n\tget false() {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to be false, got ${value}`,\n\t\t\tvalidator: value => !value\n\t\t});\n\t}\n}\n","import isEqual = require('lodash.isequal');\nimport {BasePredicate} from './base-predicate';\nimport {Predicate, PredicateOptions} from './predicate';\nimport ow from '..';\n\nexport class ArrayPredicate<T = unknown> extends Predicate<T[]> {\n\t/**\n\t@hidden\n\t*/\n\tconstructor(options?: PredicateOptions) {\n\t\tsuper('array', options);\n\t}\n\n\t/**\n\tTest an array to have a specific length.\n\n\t@param length - The length of the array.\n\t*/\n\tlength(length: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to have length \\`${length}\\`, got \\`${value.length}\\``,\n\t\t\tvalidator: value => value.length === length\n\t\t});\n\t}\n\n\t/**\n\tTest an array to have a minimum length.\n\n\t@param length - The minimum length of the array.\n\t*/\n\tminLength(length: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to have a minimum length of \\`${length}\\`, got \\`${value.length}\\``,\n\t\t\tvalidator: value => value.length >= length,\n\t\t\tnegatedMessage: (value, label) => `Expected ${label} to have a maximum length of \\`${length - 1}\\`, got \\`${value.length}\\``\n\t\t});\n\t}\n\n\t/**\n\tTest an array to have a maximum length.\n\n\t@param length - The maximum length of the array.\n\t*/\n\tmaxLength(length: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to have a maximum length of \\`${length}\\`, got \\`${value.length}\\``,\n\t\t\tvalidator: value => value.length <= length,\n\t\t\tnegatedMessage: (value, label) => `Expected ${label} to have a minimum length of \\`${length + 1}\\`, got \\`${value.length}\\``\n\t\t});\n\t}\n\n\t/**\n\tTest an array to start with a specific value. The value is tested by identity, not structure.\n\n\t@param searchElement - The value that should be the start of the array.\n\t*/\n\tstartsWith(searchElement: T) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to start with \\`${searchElement}\\`, got \\`${value[0]}\\``,\n\t\t\tvalidator: value => value[0] === searchElement\n\t\t});\n\t}\n\n\t/**\n\tTest an array to end with a specific value. The value is tested by identity, not structure.\n\n\t@param searchElement - The value that should be the end of the array.\n\t*/\n\tendsWith(searchElement: T) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to end with \\`${searchElement}\\`, got \\`${value[value.length - 1]}\\``,\n\t\t\tvalidator: value => value[value.length - 1] === searchElement\n\t\t});\n\t}\n\n\t/**\n\tTest an array to include all the provided elements. The values are tested by identity, not structure.\n\n\t@param searchElements - The values that should be included in the array.\n\t*/\n\tincludes(...searchElements: readonly T[]) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to include all elements of \\`${JSON.stringify(searchElements)}\\`, got \\`${JSON.stringify(value)}\\``,\n\t\t\tvalidator: value => searchElements.every(el => value.includes(el))\n\t\t});\n\t}\n\n\t/**\n\tTest an array to include any of the provided elements. The values are tested by identity, not structure.\n\n\t@param searchElements - The values that should be included in the array.\n\t*/\n\tincludesAny(...searchElements: readonly T[]) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to include any element of \\`${JSON.stringify(searchElements)}\\`, got \\`${JSON.stringify(value)}\\``,\n\t\t\tvalidator: value => searchElements.some(el => value.includes(el))\n\t\t});\n\t}\n\n\t/**\n\tTest an array to be empty.\n\t*/\n\tget empty() {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to be empty, got \\`${JSON.stringify(value)}\\``,\n\t\t\tvalidator: value => value.length === 0\n\t\t});\n\t}\n\n\t/**\n\tTest an array to be not empty.\n\t*/\n\tget nonEmpty() {\n\t\treturn this.addValidator({\n\t\t\tmessage: (_, label) => `Expected ${label} to not be empty`,\n\t\t\tvalidator: value => value.length > 0\n\t\t});\n\t}\n\n\t/**\n\tTest an array to be deeply equal to the provided array.\n\n\t@param expected - Expected value to match.\n\t*/\n\tdeepEqual(expected: readonly T[]) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to be deeply equal to \\`${JSON.stringify(expected)}\\`, got \\`${JSON.stringify(value)}\\``,\n\t\t\tvalidator: value => isEqual(value, expected)\n\t\t});\n\t}\n\n\t/**\n\tTest all elements in the array to match to provided predicate.\n\n\t@param predicate - The predicate that should be applied against every individual item.\n\n\t@example\n\t```\n\tow(['a', 1], ow.array.ofType(ow.any(ow.string, ow.number)));\n\t```\n\t*/\n\tofType<P extends BasePredicate<T>>(predicate: P) {\n\t\tlet error: string;\n\n\t\treturn this.addValidator({\n\t\t\tmessage: (_, label) => `(${label}) ${error}`,\n\t\t\tvalidator: value => {\n\t\t\t\ttry {\n\t\t\t\t\tfor (const item of value) {\n\t\t\t\t\t\tow(item, predicate);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\t\t\t\t} catch (error_) {\n\t\t\t\t\terror = error_.message;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","import is from '@sindresorhus/is';\n\nimport dotProp = require('dot-prop');\nimport isEqual = require('lodash.isequal');\nimport hasItems from '../utils/has-items';\nimport ofType from '../utils/of-type';\nimport ofTypeDeep from '../utils/of-type-deep';\nimport {partial, exact, Shape} from '../utils/match-shape';\nimport {Predicate, PredicateOptions} from './predicate';\n\nexport {Shape};\n\nexport class ObjectPredicate extends Predicate<object> {\n\t/**\n\t@hidden\n\t*/\n\tconstructor(options?: PredicateOptions) {\n\t\tsuper('object', options);\n\t}\n\n\t/**\n\tTest if an Object is a plain object.\n\t*/\n\tget plain() {\n\t\treturn this.addValidator({\n\t\t\tmessage: (_, label) => `Expected ${label} to be a plain object`,\n\t\t\tvalidator: object => is.plainObject(object)\n\t\t});\n\t}\n\n\t/**\n\tTest an object to be empty.\n\t*/\n\tget empty() {\n\t\treturn this.addValidator({\n\t\t\tmessage: (object, label) => `Expected ${label} to be empty, got \\`${JSON.stringify(object)}\\``,\n\t\t\tvalidator: object => Object.keys(object).length === 0\n\t\t});\n\t}\n\n\t/**\n\tTest an object to be not empty.\n\t*/\n\tget nonEmpty() {\n\t\treturn this.addValidator({\n\t\t\tmessage: (_, label) => `Expected ${label} to not be empty`,\n\t\t\tvalidator: object => Object.keys(object).length > 0\n\t\t});\n\t}\n\n\t/**\n\tTest all the values in the object to match the provided predicate.\n\n\t@param predicate - The predicate that should be applied against every value in the object.\n\t*/\n\tvaluesOfType<T>(predicate: Predicate<T>) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (_, label, error) => `(${label}) ${error}`,\n\t\t\tvalidator: object => ofType(Object.values(object), predicate)\n\t\t});\n\t}\n\n\t/**\n\tTest all the values in the object deeply to match the provided predicate.\n\n\t@param predicate - The predicate that should be applied against every value in the object.\n\t*/\n\tdeepValuesOfType<T>(predicate: Predicate<T>) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (_, label, error) => `(${label}) ${error}`,\n\t\t\tvalidator: object => ofTypeDeep(object, predicate)\n\t\t});\n\t}\n\n\t/**\n\tTest an object to be deeply equal to the provided object.\n\n\t@param expected - Expected object to match.\n\t*/\n\tdeepEqual(expected: object) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (object, label) => `Expected ${label} to be deeply equal to \\`${JSON.stringify(expected)}\\`, got \\`${JSON.stringify(object)}\\``,\n\t\t\tvalidator: object => isEqual(object, expected)\n\t\t});\n\t}\n\n\t/**\n\tTest an object to be of a specific instance type.\n\n\t@param instance - The expected instance type of the object.\n\t*/\n\tinstanceOf(instance: Function) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (object: object, label: string) => {\n\t\t\t\tlet {name} = object.constructor;\n\n\t\t\t\tif (!name || name === 'Object') {\n\t\t\t\t\tname = JSON.stringify(object);\n\t\t\t\t}\n\n\t\t\t\treturn `Expected ${label} \\`${name}\\` to be of type \\`${instance.name}\\``;\n\t\t\t},\n\t\t\tvalidator: object => object instanceof instance\n\t\t});\n\t}\n\n\t/**\n\tTest an object to include all the provided keys. You can use [dot-notation](https://github.com/sindresorhus/dot-prop) in a key to access nested properties.\n\n\t@param keys - The keys that should be present in the object.\n\t*/\n\thasKeys(...keys: readonly string[]) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (_, label, missingKeys) => `Expected ${label} to have keys \\`${JSON.stringify(missingKeys)}\\``,\n\t\t\tvalidator: object => hasItems(\n\t\t\t\t{\n\t\t\t\t\thas: item => dotProp.has(object, item)\n\t\t\t\t},\n\t\t\t\tkeys\n\t\t\t)\n\t\t});\n\t}\n\n\t/**\n\tTest an object to include any of the provided keys. You can use [dot-notation](https://github.com/sindresorhus/dot-prop) in a key to access nested properties.\n\n\t@param keys - The keys that could be a key in the object.\n\t*/\n\thasAnyKeys(...keys: readonly string[]) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (_, label) => `Expected ${label} to have any key of \\`${JSON.stringify(keys)}\\``,\n\t\t\tvalidator: object => keys.some(key => dotProp.has(object, key))\n\t\t});\n\t}\n\n\t/**\n\tTest an object to match the `shape` partially. This means that it ignores unexpected properties. The shape comparison is deep.\n\n\tThe shape is an object which describes how the tested object should look like. The keys are the same as the source object and the values are predicates.\n\n\t@param shape - Shape to test the object against.\n\n\t@example\n\t```\n\timport ow from 'ow';\n\n\tconst object = {\n\t\tunicorn: '🦄',\n\t\trainbow: '🌈'\n\t};\n\n\tow(object, ow.object.partialShape({\n\t\tunicorn: ow.string\n\t}));\n\t```\n\t*/\n\tpartialShape(shape: Shape) {\n\t\treturn this.addValidator({\n\t\t\t// TODO: Improve this when message handling becomes smarter\n\t\t\tmessage: (_, label, message) => `${message.replace('Expected', 'Expected property')} in ${label}`,\n\t\t\tvalidator: object => partial(object, shape)\n\t\t});\n\t}\n\n\t/**\n\tTest an object to match the `shape` exactly. This means that will fail if it comes across unexpected properties. The shape comparison is deep.\n\n\tThe shape is an object which describes how the tested object should look like. The keys are the same as the source object and the values are predicates.\n\n\t@param shape - Shape to test the object against.\n\n\t@example\n\t```\n\timport ow from 'ow';\n\n\tow({unicorn: '🦄'}, ow.object.exactShape({\n\t\tunicorn: ow.string\n\t}));\n\t```\n\t*/\n\texactShape(shape: Shape) {\n\t\treturn this.addValidator({\n\t\t\t// TODO: Improve this when message handling becomes smarter\n\t\t\tmessage: (_, label, message) => `${message.replace('Expected', 'Expected property')} in ${label}`,\n\t\t\tvalidator: object => exact(object, shape)\n\t\t});\n\t}\n}\n","'use strict';\nconst isObj = require('is-obj');\n\nconst disallowedKeys = [\n\t'__proto__',\n\t'prototype',\n\t'constructor'\n];\n\nconst isValidPath = pathSegments => !pathSegments.some(segment => disallowedKeys.includes(segment));\n\nfunction getPathSegments(path) {\n\tconst pathArray = path.split('.');\n\tconst parts = [];\n\n\tfor (let i = 0; i < pathArray.length; i++) {\n\t\tlet p = pathArray[i];\n\n\t\twhile (p[p.length - 1] === '\\\\' && pathArray[i + 1] !== undefined) {\n\t\t\tp = p.slice(0, -1) + '.';\n\t\t\tp += pathArray[++i];\n\t\t}\n\n\t\tparts.push(p);\n\t}\n\n\tif (!isValidPath(parts)) {\n\t\treturn [];\n\t}\n\n\treturn parts;\n}\n\nmodule.exports = {\n\tget(object, path, value) {\n\t\tif (!isObj(object) || typeof path !== 'string') {\n\t\t\treturn value === undefined ? object : value;\n\t\t}\n\n\t\tconst pathArray = getPathSegments(path);\n\t\tif (pathArray.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = 0; i < pathArray.length; i++) {\n\t\t\tif (!Object.prototype.propertyIsEnumerable.call(object, pathArray[i])) {\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tobject = object[pathArray[i]];\n\n\t\t\tif (object === undefined || object === null) {\n\t\t\t\t// `object` is either `undefined` or `null` so we want to stop the loop, and\n\t\t\t\t// if this is not the last bit of the path, and\n\t\t\t\t// if it did't return `undefined`\n\t\t\t\t// it would return `null` if `object` is `null`\n\t\t\t\t// but we want `get({foo: null}, 'foo.bar')` to equal `undefined`, or the supplied value, not `null`\n\t\t\t\tif (i !== pathArray.length - 1) {\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\tset(object, path, value) {\n\t\tif (!isObj(object) || typeof path !== 'string') {\n\t\t\treturn object;\n\t\t}\n\n\t\tconst root = object;\n\t\tconst pathArray = getPathSegments(path);\n\n\t\tfor (let i = 0; i < pathArray.length; i++) {\n\t\t\tconst p = pathArray[i];\n\n\t\t\tif (!isObj(object[p])) {\n\t\t\t\tobject[p] = {};\n\t\t\t}\n\n\t\t\tif (i === pathArray.length - 1) {\n\t\t\t\tobject[p] = value;\n\t\t\t}\n\n\t\t\tobject = object[p];\n\t\t}\n\n\t\treturn root;\n\t},\n\n\tdelete(object, path) {\n\t\tif (!isObj(object) || typeof path !== 'string') {\n\t\t\treturn;\n\t\t}\n\n\t\tconst pathArray = getPathSegments(path);\n\n\t\tfor (let i = 0; i < pathArray.length; i++) {\n\t\t\tconst p = pathArray[i];\n\n\t\t\tif (i === pathArray.length - 1) {\n\t\t\t\tdelete object[p];\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tobject = object[p];\n\n\t\t\tif (!isObj(object)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t},\n\n\thas(object, path) {\n\t\tif (!isObj(object) || typeof path !== 'string') {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst pathArray = getPathSegments(path);\n\t\tif (pathArray.length === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// eslint-disable-next-line unicorn/no-for-loop\n\t\tfor (let i = 0; i < pathArray.length; i++) {\n\t\t\tif (isObj(object)) {\n\t\t\t\tif (!(pathArray[i] in object)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tobject = object[pathArray[i]];\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n};\n","'use strict';\n\nmodule.exports = value => {\n\tconst type = typeof value;\n\treturn value !== null && (type === 'object' || type === 'function');\n};\n","import is from '@sindresorhus/is';\nimport {Predicate} from '../predicates/predicate';\nimport ow from '..';\n\nconst ofTypeDeep = (object: unknown, predicate: Predicate): boolean => {\n\tif (!is.plainObject(object)) {\n\t\tow(object, predicate);\n\t\treturn true;\n\t}\n\n\treturn Object.values(object).every(value => ofTypeDeep(value, predicate));\n};\n\n/**\nTest all the values in the object against a provided predicate.\n\n@hidden\n\n@param predicate - Predicate to test every value in the given object against.\n*/\nexport default (object: unknown, predicate: Predicate): boolean | string => {\n\ttry {\n\t\treturn ofTypeDeep(object, predicate);\n\t} catch (error) {\n\t\treturn error.message;\n\t}\n};\n","import is from '@sindresorhus/is';\nimport test from '../test';\nimport {isPredicate} from '../predicates/base-predicate';\nimport {BasePredicate} from '..';\n\nexport interface Shape {\n\t[key: string]: BasePredicate | Shape;\n}\n\n/**\nTest if the `object` matches the `shape` partially.\n\n@hidden\n\n@param object - Object to test against the provided shape.\n@param shape - Shape to test the object against.\n@param parent - Name of the parent property.\n*/\nexport function partial(object: {[key: string]: any}, shape: Shape, parent?: string): boolean | string {\n\ttry {\n\t\tfor (const key of Object.keys(shape)) {\n\t\t\tconst label = parent ? `${parent}.${key}` : key;\n\n\t\t\tif (isPredicate(shape[key])) {\n\t\t\t\ttest(object[key], label, shape[key] as BasePredicate);\n\t\t\t} else if (is.plainObject(shape[key])) {\n\t\t\t\tconst result = partial(object[key], shape[key] as Shape, label);\n\n\t\t\t\tif (result !== true) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t} catch (error) {\n\t\treturn error.message;\n\t}\n}\n\n/**\nTest if the `object` matches the `shape` exactly.\n\n@hidden\n\n@param object - Object to test against the provided shape.\n@param shape - Shape to test the object against.\n@param parent - Name of the parent property.\n*/\nexport function exact(object: {[key: string]: any}, shape: Shape, parent?: string): boolean | string {\n\ttry {\n\t\tconst objectKeys = new Set<string>(Object.keys(object));\n\n\t\tfor (const key of Object.keys(shape)) {\n\t\t\tobjectKeys.delete(key);\n\n\t\t\tconst label = parent ? `${parent}.${key}` : key;\n\n\t\t\tif (isPredicate(shape[key])) {\n\t\t\t\ttest(object[key], label, shape[key] as BasePredicate);\n\t\t\t} else if (is.plainObject(shape[key])) {\n\t\t\t\tif (!Object.prototype.hasOwnProperty.call(object, key)) {\n\t\t\t\t\treturn `Expected \\`${label}\\` to exist`;\n\t\t\t\t}\n\n\t\t\t\tconst result = exact(object[key], shape[key] as Shape, label);\n\n\t\t\t\tif (result !== true) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (objectKeys.size > 0) {\n\t\t\tconst firstKey = [...objectKeys.keys()][0];\n\t\t\tconst label = parent ? `${parent}.${firstKey}` : firstKey;\n\t\t\treturn `Did not expect property \\`${label}\\` to exist, got \\`${object[firstKey]}\\``;\n\t\t}\n\n\t\treturn true;\n\t} catch (error) {\n\t\treturn error.message;\n\t}\n}\n","import {Predicate, PredicateOptions} from './predicate';\n\nexport class DatePredicate extends Predicate<Date> {\n\t/**\n\t@hidden\n\t*/\n\tconstructor(options?: PredicateOptions) {\n\t\tsuper('date', options);\n\t}\n\n\t/**\n\tTest a date to be before another date.\n\n\t@param date - Maximum value.\n\t*/\n\tbefore(date: Date) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} ${value.toISOString()} to be before ${date.toISOString()}`,\n\t\t\tvalidator: value => value.getTime() < date.getTime()\n\t\t});\n\t}\n\n\t/**\n\tTest a date to be before another date.\n\n\t@param date - Minimum value.\n\t*/\n\tafter(date: Date) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} ${value.toISOString()} to be after ${date.toISOString()}`,\n\t\t\tvalidator: value => value.getTime() > date.getTime()\n\t\t});\n\t}\n}\n","import {Predicate, PredicateOptions} from './predicate';\n\nexport class ErrorPredicate extends Predicate<Error> {\n\t/**\n\t@hidden\n\t*/\n\tconstructor(options?: PredicateOptions) {\n\t\tsuper('error', options);\n\t}\n\n\t/**\n\tTest an error to have a specific name.\n\n\t@param expected - Expected name of the Error.\n\t*/\n\tname(expected: string) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (error, label) => `Expected ${label} to have name \\`${expected}\\`, got \\`${error.name}\\``,\n\t\t\tvalidator: error => error.name === expected\n\t\t});\n\t}\n\n\t/**\n\tTest an error to have a specific message.\n\n\t@param expected - Expected message of the Error.\n\t*/\n\tmessage(expected: string) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (error, label) => `Expected ${label} message to be \\`${expected}\\`, got \\`${error.message}\\``,\n\t\t\tvalidator: error => error.message === expected\n\t\t});\n\t}\n\n\t/**\n\tTest the error message to include a specific message.\n\n\t@param message - Message that should be included in the error.\n\t*/\n\tmessageIncludes(message: string) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (error, label) => `Expected ${label} message to include \\`${message}\\`, got \\`${error.message}\\``,\n\t\t\tvalidator: error => error.message.includes(message)\n\t\t});\n\t}\n\n\t/**\n\tTest the error object to have specific keys.\n\n\t@param keys - One or more keys which should be part of the error object.\n\t*/\n\thasKeys(...keys: readonly string[]) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (_, label) => `Expected ${label} message to have keys \\`${keys.join('`, `')}\\``,\n\t\t\tvalidator: error => keys.every(key => Object.prototype.hasOwnProperty.call(error, key))\n\t\t});\n\t}\n\n\t/**\n\tTest an error to be of a specific instance type.\n\n\t@param instance - The expected instance type of the error.\n\t*/\n\tinstanceOf(instance: Function) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (error, label) => `Expected ${label} \\`${error.name}\\` to be of type \\`${instance.name}\\``,\n\t\t\tvalidator: error => error instanceof instance\n\t\t});\n\t}\n\n\t/**\n\tTest an Error to be a TypeError.\n\t*/\n\tget typeError() {\n\t\treturn this.instanceOf(TypeError);\n\t}\n\n\t/**\n\tTest an Error to be an EvalError.\n\t*/\n\tget evalError() {\n\t\treturn this.instanceOf(EvalError);\n\t}\n\n\t/**\n\tTest an Error to be a RangeError.\n\t*/\n\tget rangeError() {\n\t\treturn this.instanceOf(RangeError);\n\t}\n\n\t/**\n\tTest an Error to be a ReferenceError.\n\t*/\n\tget referenceError() {\n\t\treturn this.instanceOf(ReferenceError);\n\t}\n\n\t/**\n\tTest an Error to be a SyntaxError.\n\t*/\n\tget syntaxError() {\n\t\treturn this.instanceOf(SyntaxError);\n\t}\n\n\t/**\n\tTest an Error to be a URIError.\n\t*/\n\tget uriError() {\n\t\treturn this.instanceOf(URIError);\n\t}\n}\n","import isEqual = require('lodash.isequal');\nimport hasItems from '../utils/has-items';\nimport ofType from '../utils/of-type';\nimport {Predicate, PredicateOptions} from './predicate';\n\nexport class MapPredicate<T1 = unknown, T2 = unknown> extends Predicate<Map<T1, T2>> {\n\t/**\n\t@hidden\n\t*/\n\tconstructor(options?: PredicateOptions) {\n\t\tsuper('Map', options);\n\t}\n\n\t/**\n\tTest a Map to have a specific size.\n\n\t@param size - The size of the Map.\n\t*/\n\tsize(size: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (map, label) => `Expected ${label} to have size \\`${size}\\`, got \\`${map.size}\\``,\n\t\t\tvalidator: map => map.size === size\n\t\t});\n\t}\n\n\t/**\n\tTest an Map to have a minimum size.\n\n\t@param size - The minimum size of the Map.\n\t*/\n\tminSize(size: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (map, label) => `Expected ${label} to have a minimum size of \\`${size}\\`, got \\`${map.size}\\``,\n\t\t\tvalidator: map => map.size >= size,\n\t\t\tnegatedMessage: (map, label) => `Expected ${label} to have a maximum size of \\`${size - 1}\\`, got \\`${map.size}\\``\n\t\t});\n\t}\n\n\t/**\n\tTest an Map to have a maximum size.\n\n\t@param size - The maximum size of the Map.\n\t*/\n\tmaxSize(size: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (map, label) => `Expected ${label} to have a maximum size of \\`${size}\\`, got \\`${map.size}\\``,\n\t\t\tvalidator: map => map.size <= size,\n\t\t\tnegatedMessage: (map, label) => `Expected ${label} to have a minimum size of \\`${size + 1}\\`, got \\`${map.size}\\``\n\t\t});\n\t}\n\n\t/**\n\tTest a Map to include all the provided keys. The keys are tested by identity, not structure.\n\n\t@param keys - The keys that should be a key in the Map.\n\t*/\n\thasKeys(...keys: readonly T1[]) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (_, label, missingKeys) => `Expected ${label} to have keys \\`${JSON.stringify(missingKeys)}\\``,\n\t\t\tvalidator: map => hasItems(map, keys)\n\t\t});\n\t}\n\n\t/**\n\tTest a Map to include any of the provided keys. The keys are tested by identity, not structure.\n\n\t@param keys - The keys that could be a key in the Map.\n\t*/\n\thasAnyKeys(...keys: readonly T1[]) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (_, label) => `Expected ${label} to have any key of \\`${JSON.stringify(keys)}\\``,\n\t\t\tvalidator: map => keys.some(key => map.has(key))\n\t\t});\n\t}\n\n\t/**\n\tTest a Map to include all the provided values. The values are tested by identity, not structure.\n\n\t@param values - The values that should be a value in the Map.\n\t*/\n\thasValues(...values: readonly T2[]) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (_, label, missingValues) => `Expected ${label} to have values \\`${JSON.stringify(missingValues)}\\``,\n\t\t\tvalidator: map => hasItems(new Set(map.values()), values)\n\t\t});\n\t}\n\n\t/**\n\tTest a Map to include any of the provided values. The values are tested by identity, not structure.\n\n\t@param values - The values that could be a value in the Map.\n\t*/\n\thasAnyValues(...values: readonly T2[]) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (_, label) => `Expected ${label} to have any value of \\`${JSON.stringify(values)}\\``,\n\t\t\tvalidator: map => {\n\t\t\t\tconst valueSet = new Set(map.values());\n\t\t\t\treturn values.some(key => valueSet.has(key));\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\tTest all the keys in the Map to match the provided predicate.\n\n\t@param predicate - The predicate that should be applied against every key in the Map.\n\t*/\n\tkeysOfType(predicate: Predicate<T1>) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (_, label, error) => `(${label}) ${error}`,\n\t\t\tvalidator: map => ofType(map.keys(), predicate)\n\t\t});\n\t}\n\n\t/**\n\tTest all the values in the Map to match the provided predicate.\n\n\t@param predicate - The predicate that should be applied against every value in the Map.\n\t*/\n\tvaluesOfType(predicate: Predicate<T2>) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (_, label, error) => `(${label}) ${error}`,\n\t\t\tvalidator: map => ofType(map.values(), predicate)\n\t\t});\n\t}\n\n\t/**\n\tTest a Map to be empty.\n\t*/\n\tget empty() {\n\t\treturn this.addValidator({\n\t\t\tmessage: (map, label) => `Expected ${label} to be empty, got \\`${JSON.stringify([...map])}\\``,\n\t\t\tvalidator: map => map.size === 0\n\t\t});\n\t}\n\n\t/**\n\tTest a Map to be not empty.\n\t*/\n\tget nonEmpty() {\n\t\treturn this.addValidator({\n\t\t\tmessage: (_, label) => `Expected ${label} to not be empty`,\n\t\t\tvalidator: map => map.size > 0\n\t\t});\n\t}\n\n\t/**\n\tTest a Map to be deeply equal to the provided Map.\n\n\t@param expected - Expected Map to match.\n\t*/\n\tdeepEqual(expected: Map<T1, T2>) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (map, label) => `Expected ${label} to be deeply equal to \\`${JSON.stringify([...expected])}\\`, got \\`${JSON.stringify([...map])}\\``,\n\t\t\tvalidator: map => isEqual(map, expected)\n\t\t});\n\t}\n}\n","import hasItems from '../utils/has-items';\nimport {Predicate, PredicateOptions} from './predicate';\n\nexport class WeakMapPredicate<KeyType extends object = object> extends Predicate<WeakMap<KeyType, unknown>> {\n\t/**\n\t@hidden\n\t*/\n\tconstructor(options?: PredicateOptions) {\n\t\tsuper('WeakMap', options);\n\t}\n\n\t/**\n\tTest a WeakMap to include all the provided keys. The keys are tested by identity, not structure.\n\n\t@param keys - The keys that should be a key in the WeakMap.\n\t*/\n\thasKeys(...keys: readonly KeyType[]) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (_, label, missingKeys) => `Expected ${label} to have keys \\`${JSON.stringify(missingKeys)}\\``,\n\t\t\tvalidator: map => hasItems(map, keys)\n\t\t});\n\t}\n\n\t/**\n\tTest a WeakMap to include any of the provided keys. The keys are tested by identity, not structure.\n\n\t@param keys - The keys that could be a key in the WeakMap.\n\t*/\n\thasAnyKeys(...keys: readonly KeyType[]) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (_, label) => `Expected ${label} to have any key of \\`${JSON.stringify(keys)}\\``,\n\t\t\tvalidator: map => keys.some(key => map.has(key))\n\t\t});\n\t}\n}\n","import isEqual = require('lodash.isequal');\nimport hasItems from '../utils/has-items';\nimport ofType from '../utils/of-type';\nimport {Predicate, PredicateOptions} from './predicate';\n\nexport class SetPredicate<T = any> extends Predicate<Set<T>> {\n\t/**\n\t@hidden\n\t*/\n\tconstructor(options?: PredicateOptions) {\n\t\tsuper('Set', options);\n\t}\n\n\t/**\n\tTest a Set to have a specific size.\n\n\t@param size - The size of the Set.\n\t*/\n\tsize(size: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (set, label) => `Expected ${label} to have size \\`${size}\\`, got \\`${set.size}\\``,\n\t\t\tvalidator: set => set.size === size\n\t\t});\n\t}\n\n\t/**\n\tTest a Set to have a minimum size.\n\n\t@param size - The minimum size of the Set.\n\t*/\n\tminSize(size: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (set, label) => `Expected ${label} to have a minimum size of \\`${size}\\`, got \\`${set.size}\\``,\n\t\t\tvalidator: set => set.size >= size,\n\t\t\tnegatedMessage: (set, label) => `Expected ${label} to have a maximum size of \\`${size - 1}\\`, got \\`${set.size}\\``\n\t\t});\n\t}\n\n\t/**\n\tTest a Set to have a maximum size.\n\n\t@param size - The maximum size of the Set.\n\t*/\n\tmaxSize(size: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (set, label) => `Expected ${label} to have a maximum size of \\`${size}\\`, got \\`${set.size}\\``,\n\t\t\tvalidator: set => set.size <= size,\n\t\t\tnegatedMessage: (set, label) => `Expected ${label} to have a minimum size of \\`${size + 1}\\`, got \\`${set.size}\\``\n\t\t});\n\t}\n\n\t/**\n\tTest a Set to include all the provided items. The items are tested by identity, not structure.\n\n\t@param items - The items that should be a item in the Set.\n\t*/\n\thas(...items: readonly T[]) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (_, label, missingItems) => `Expected ${label} to have items \\`${JSON.stringify(missingItems)}\\``,\n\t\t\tvalidator: set => hasItems(set, items)\n\t\t});\n\t}\n\n\t/**\n\tTest a Set to include any of the provided items. The items are tested by identity, not structure.\n\n\t@param items - The items that could be a item in the Set.\n\t*/\n\thasAny(...items: readonly T[]) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (_, label) => `Expected ${label} to have any item of \\`${JSON.stringify(items)}\\``,\n\t\t\tvalidator: set => items.some(item => set.has(item))\n\t\t});\n\t}\n\n\t/**\n\tTest all the items in the Set to match the provided predicate.\n\n\t@param predicate - The predicate that should be applied against every item in the Set.\n\t*/\n\tofType(predicate: Predicate<T>) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (_, label, error) => `(${label}) ${error}`,\n\t\t\tvalidator: set => ofType(set, predicate)\n\t\t});\n\t}\n\n\t/**\n\tTest a Set to be empty.\n\t*/\n\tget empty() {\n\t\treturn this.addValidator({\n\t\t\tmessage: (set, label) => `Expected ${label} to be empty, got \\`${JSON.stringify([...set])}\\``,\n\t\t\tvalidator: set => set.size === 0\n\t\t});\n\t}\n\n\t/**\n\tTest a Set to be not empty.\n\t*/\n\tget nonEmpty() {\n\t\treturn this.addValidator({\n\t\t\tmessage: (_, label) => `Expected ${label} to not be empty`,\n\t\t\tvalidator: set => set.size > 0\n\t\t});\n\t}\n\n\t/**\n\tTest a Set to be deeply equal to the provided Set.\n\n\t@param expected - Expected Set to match.\n\t*/\n\tdeepEqual(expected: Set<T>) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (set, label) => `Expected ${label} to be deeply equal to \\`${JSON.stringify([...expected])}\\`, got \\`${JSON.stringify([...set])}\\``,\n\t\t\tvalidator: set => isEqual(set, expected)\n\t\t});\n\t}\n}\n","import hasItems from '../utils/has-items';\nimport {Predicate, PredicateOptions} from './predicate';\n\nexport class WeakSetPredicate<T extends object = object> extends Predicate<WeakSet<T>> {\n\t/**\n\t@hidden\n\t*/\n\tconstructor(options?: PredicateOptions) {\n\t\tsuper('WeakSet', options);\n\t}\n\n\t/**\n\tTest a WeakSet to include all the provided items. The items are tested by identity, not structure.\n\n\t@param items - The items that should be a item in the WeakSet.\n\t*/\n\thas(...items: readonly T[]) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (_, label, missingItems) => `Expected ${label} to have items \\`${JSON.stringify(missingItems)}\\``,\n\t\t\tvalidator: set => hasItems(set, items)\n\t\t});\n\t}\n\n\t/**\n\tTest a WeakSet to include any of the provided items. The items are tested by identity, not structure.\n\n\t@param items - The items that could be a item in the WeakSet.\n\t*/\n\thasAny(...items: readonly T[]) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (_, label) => `Expected ${label} to have any item of \\`${JSON.stringify(items)}\\``,\n\t\t\tvalidator: set => items.some(item => set.has(item))\n\t\t});\n\t}\n}\n","import {TypedArray} from 'type-fest';\nimport {Predicate} from './predicate';\n\nexport class TypedArrayPredicate<T extends TypedArray> extends Predicate<T> {\n\t/**\n\tTest a typed array to have a specific byte length.\n\n\t@param byteLength - The byte length of the typed array.\n\t*/\n\tbyteLength(byteLength: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to have byte length of \\`${byteLength}\\`, got \\`${value.byteLength}\\``,\n\t\t\tvalidator: value => value.byteLength === byteLength\n\t\t});\n\t}\n\n\t/**\n\tTest a typed array to have a minimum byte length.\n\n\t@param byteLength - The minimum byte length of the typed array.\n\t*/\n\tminByteLength(byteLength: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to have a minimum byte length of \\`${byteLength}\\`, got \\`${value.byteLength}\\``,\n\t\t\tvalidator: value => value.byteLength >= byteLength,\n\t\t\tnegatedMessage: (value, label) => `Expected ${label} to have a maximum byte length of \\`${byteLength - 1}\\`, got \\`${value.byteLength}\\``\n\t\t});\n\t}\n\n\t/**\n\tTest a typed array to have a minimum byte length.\n\n\t@param length - The minimum byte length of the typed array.\n\t*/\n\tmaxByteLength(byteLength: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to have a maximum byte length of \\`${byteLength}\\`, got \\`${value.byteLength}\\``,\n\t\t\tvalidator: value => value.byteLength <= byteLength,\n\t\t\tnegatedMessage: (value, label) => `Expected ${label} to have a minimum byte length of \\`${byteLength + 1}\\`, got \\`${value.byteLength}\\``\n\t\t});\n\t}\n\n\t/**\n\tTest a typed array to have a specific length.\n\n\t@param length - The length of the typed array.\n\t*/\n\tlength(length: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to have length \\`${length}\\`, got \\`${value.length}\\``,\n\t\t\tvalidator: value => value.length === length\n\t\t});\n\t}\n\n\t/**\n\tTest a typed array to have a minimum length.\n\n\t@param length - The minimum length of the typed array.\n\t*/\n\tminLength(length: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to have a minimum length of \\`${length}\\`, got \\`${value.length}\\``,\n\t\t\tvalidator: value => value.length >= length,\n\t\t\tnegatedMessage: (value, label) => `Expected ${label} to have a maximum length of \\`${length - 1}\\`, got \\`${value.length}\\``\n\t\t});\n\t}\n\n\t/**\n\tTest a typed array to have a maximum length.\n\n\t@param length - The maximum length of the typed array.\n\t*/\n\tmaxLength(length: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to have a maximum length of \\`${length}\\`, got \\`${value.length}\\``,\n\t\t\tvalidator: value => value.length <= length,\n\t\t\tnegatedMessage: (value, label) => `Expected ${label} to have a minimum length of \\`${length + 1}\\`, got \\`${value.length}\\``\n\t\t});\n\t}\n}\n","import {Predicate} from './predicate';\n\nexport class ArrayBufferPredicate<T extends ArrayBufferLike> extends Predicate<T> {\n\t/**\n\tTest an array buffer to have a specific byte length.\n\n\t@param byteLength - The byte length of the array buffer.\n\t*/\n\tbyteLength(byteLength: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to have byte length of \\`${byteLength}\\`, got \\`${value.byteLength}\\``,\n\t\t\tvalidator: value => value.byteLength === byteLength\n\t\t});\n\t}\n\n\t/**\n\tTest an array buffer to have a minimum byte length.\n\n\t@param byteLength - The minimum byte length of the array buffer.\n\t*/\n\tminByteLength(byteLength: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to have a minimum byte length of \\`${byteLength}\\`, got \\`${value.byteLength}\\``,\n\t\t\tvalidator: value => value.byteLength >= byteLength,\n\t\t\tnegatedMessage: (value, label) => `Expected ${label} to have a maximum byte length of \\`${byteLength - 1}\\`, got \\`${value.byteLength}\\``\n\t\t});\n\t}\n\n\t/**\n\tTest an array buffer to have a minimum byte length.\n\n\t@param length - The minimum byte length of the array buffer.\n\t*/\n\tmaxByteLength(byteLength: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to have a maximum byte length of \\`${byteLength}\\`, got \\`${value.byteLength}\\``,\n\t\t\tvalidator: value => value.byteLength <= byteLength,\n\t\t\tnegatedMessage: (value, label) => `Expected ${label} to have a minimum byte length of \\`${byteLength + 1}\\`, got \\`${value.byteLength}\\``\n\t\t});\n\t}\n}\n","import {Predicate, PredicateOptions} from './predicate';\n\nexport class DataViewPredicate extends Predicate<DataView> {\n\t/**\n\t@hidden\n\t*/\n\tconstructor(options?: PredicateOptions) {\n\t\tsuper('DataView', options);\n\t}\n\n\t/**\n\tTest a DataView to have a specific byte length.\n\n\t@param byteLength - The byte length of the DataView.\n\t*/\n\tbyteLength(byteLength: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to have byte length of \\`${byteLength}\\`, got \\`${value.byteLength}\\``,\n\t\t\tvalidator: value => value.byteLength === byteLength\n\t\t});\n\t}\n\n\t/**\n\tTest a DataView to have a minimum byte length.\n\n\t@param byteLength - The minimum byte length of the DataView.\n\t*/\n\tminByteLength(byteLength: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to have a minimum byte length of \\`${byteLength}\\`, got \\`${value.byteLength}\\``,\n\t\t\tvalidator: value => value.byteLength >= byteLength,\n\t\t\tnegatedMessage: (value, label) => `Expected ${label} to have a maximum byte length of \\`${byteLength - 1}\\`, got \\`${value.byteLength}\\``\n\t\t});\n\t}\n\n\t/**\n\tTest a DataView to have a minimum byte length.\n\n\t@param length - The minimum byte length of the DataView.\n\t*/\n\tmaxByteLength(byteLength: number) {\n\t\treturn this.addValidator({\n\t\t\tmessage: (value, label) => `Expected ${label} to have a maximum byte length of \\`${byteLength}\\`, got \\`${value.byteLength}\\``,\n\t\t\tvalidator: value => value.byteLength <= byteLength,\n\t\t\tnegatedMessage: (value, label) => `Expected ${label} to have a minimum byte length of \\`${byteLength + 1}\\`, got \\`${value.byteLength}\\``\n\t\t});\n\t}\n}\n","import {ArgumentError} from '../argument-error';\nimport {BasePredicate, testSymbol} from './base-predicate';\nimport {PredicateOptions} from './predicate';\nimport {Main} from '..';\n\n/**\n@hidden\n*/\nexport class AnyPredicate<T = unknown> implements BasePredicate<T> {\n\tconstructor(\n\t\tprivate readonly predicates: BasePredicate[],\n\t\tprivate readonly options: PredicateOptions = {}\n\t) {}\n\n\t[testSymbol](value: T, main: Main, label: string | Function): asserts value {\n\t\tconst errors = [\n\t\t\t'Any predicate failed with the following errors:'\n\t\t];\n\n\t\tfor (const predicate of this.predicates) {\n\t\t\ttry {\n\t\t\t\tmain(value, label, predicate);\n\t\t\t\treturn;\n\t\t\t} catch (error) {\n\t\t\t\tif (value === undefined && this.options.optional === true) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\terrors.push(`- ${error.message}`);\n\t\t\t}\n\t\t}\n\n\t\tthrow new ArgumentError(errors.join('\\n'), main);\n\t}\n}\n"],"sourceRoot":""}