{"_id":"isntnt","_rev":"44-52049fb9def52c7a8a5623f5e295a304","name":"isntnt","dist-tags":{"latest":"1.6.0","next":"2.0.0-beta.9"},"versions":{"1.0.0":{"name":"isntnt","version":"1.0.0","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && tsc -d --skipLibCheck","test":"jest --watchAll --coverage"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^3.6.2"},"dependencies":{"abab":"^2.0.0","acorn-globals":"^4.3.3","acorn-jsx":"^5.0.2","abbrev":"^1.1.1","ajv":"^6.10.2","acorn-walk":"^6.2.0","acorn":"^7.0.0","ansi-escapes":"^3.2.0","ansi-regex":"^4.1.0","ansi-align":"^3.0.0","anymatch":"^2.0.0","aproba":"^1.2.0","ansi-styles":"^3.2.1","are-we-there-yet":"^1.1.5","argparse":"^1.0.10","arr-diff":"^4.0.0","array-equal":"^1.0.0","array-includes":"^3.0.3","arr-flatten":"^1.1.0","array-unique":"^0.3.2","arr-union":"^3.1.0","assert-plus":"^1.0.0","astral-regex":"^1.0.0","asn1":"^0.2.4","assign-symbols":"^1.0.0","async-limiter":"^1.0.1","asynckit":"^0.4.0","aws4":"^1.8.0","atob":"^2.1.2","aws-sign2":"^0.7.0","babel-jest":"^24.9.0","babel-plugin-istanbul":"^5.2.0","balanced-match":"^1.0.0","babel-plugin-jest-hoist":"^24.9.0","base":"^0.11.2","babel-preset-jest":"^24.9.0","bcrypt-pbkdf":"^1.0.2","boxen":"^3.2.0","braces":"^2.3.2","browser-process-hrtime":"^0.1.3","brace-expansion":"^1.1.11","bs-logger":"^0.2.6","bser":"^2.1.0","cache-base":"^1.0.1","buffer-from":"^1.1.1","browser-resolve":"^1.11.3","camelcase":"^5.3.1","caseless":"^0.12.0","callsites":"^3.1.0","chalk":"^2.4.2","chownr":"^1.1.2","chardet":"^0.7.0","ci-info":"^2.0.0","capture-exit":"^2.0.0","cli-boxes":"^2.2.0","cli-cursor":"^2.1.0","cliui":"^5.0.0","class-utils":"^0.3.6","cli-width":"^2.2.0","co":"^4.6.0","collection-visit":"^1.0.0","code-point-at":"^1.1.0","color-convert":"^1.9.3","combined-stream":"^1.0.8","color-name":"^1.1.3","commander":"^2.20.0","component-emitter":"^1.3.0","concat-map":"^0.0.1","console-control-strings":"^1.1.0","contains-path":"^0.1.0","convert-source-map":"^1.6.0","copy-descriptor":"^0.1.1","core-util-is":"^1.0.2","cross-spawn":"^6.0.5","cssom":"^0.3.8","cssstyle":"^1.4.0","dashdash":"^1.14.1","data-urls":"^1.1.0","debug":"^2.6.9","debug-log":"^1.0.1","decamelize":"^1.2.0","decode-uri-component":"^0.2.0","deep-extend":"^0.6.0","deep-is":"^0.1.3","define-properties":"^1.1.3","define-property":"^0.2.5","deglob":"^4.0.0","delayed-stream":"^1.0.0","delegates":"^1.0.0","detect-libc":"^1.0.3","detect-newline":"^2.1.0","diff-sequences":"^24.9.0","doctrine":"^1.5.0","domexception":"^1.0.1","ecc-jsbn":"^0.1.2","emoji-regex":"^7.0.3","error-ex":"^1.3.2","end-of-stream":"^1.4.1","es-abstract":"^1.13.0","es-to-primitive":"^1.2.0","escape-string-regexp":"^1.0.5","escodegen":"^1.12.0","eslint":"^6.1.0","eslint-import-resolver-node":"^0.3.2","eslint-config-standard":"^14.0.1","eslint-config-standard-jsx":"^8.0.1","eslint-module-utils":"^2.4.1","eslint-plugin-es":"^1.4.0","eslint-plugin-import":"^2.18.2","eslint-plugin-node":"^9.1.0","eslint-plugin-promise":"^4.2.1","eslint-plugin-react":"^7.14.3","eslint-plugin-standard":"^4.0.1","eslint-scope":"^5.0.0","eslint-utils":"^1.4.2","eslint-visitor-keys":"^1.1.0","espree":"^6.1.0","esprima":"^4.0.1","esquery":"^1.0.1","esrecurse":"^4.2.1","estraverse":"^4.3.0","esutils":"^2.0.3","exec-sh":"^0.3.2","execa":"^1.0.0","exit":"^0.1.2","expect":"^24.9.0","expand-brackets":"^2.1.4","extend-shallow":"^2.0.1","extend":"^3.0.2","external-editor":"^3.1.0","extglob":"^2.0.4","extsprintf":"^1.3.0","fast-deep-equal":"^2.0.1","fast-json-stable-stringify":"^2.0.0","fast-levenshtein":"^2.0.6","fb-watchman":"^2.0.0","figures":"^2.0.0","file-entry-cache":"^5.0.1","fill-range":"^4.0.0","find-root":"^1.1.0","find-up":"^3.0.0","flat-cache":"^2.0.1","flatted":"^2.0.1","for-in":"^1.0.2","forever-agent":"^0.6.1","form-data":"^2.3.3","fragment-cache":"^0.2.1","fs-minipass":"^1.2.6","fs.realpath":"^1.0.0","fsevents":"^1.2.9","function-bind":"^1.1.1","functional-red-black-tree":"^1.0.1","funding":"^1.0.3","gauge":"^2.7.4","get-caller-file":"^2.0.5","get-stdin":"^7.0.0","get-stream":"^4.1.0","get-value":"^2.0.6","getpass":"^0.1.7","glob":"^7.1.4","glob-parent":"^5.0.0","globals":"^11.12.0","graceful-fs":"^4.2.2","growly":"^1.3.0","har-schema":"^2.0.0","handlebars":"^4.1.2","har-validator":"^5.1.3","has":"^1.0.3","has-flag":"^3.0.0","has-symbols":"^1.0.0","has-unicode":"^2.0.1","has-value":"^1.0.0","has-values":"^1.0.0","hosted-git-info":"^2.8.4","html-encoding-sniffer":"^1.0.2","http-signature":"^1.2.0","iconv-lite":"^0.4.24","ignore":"^5.1.4","ignore-walk":"^3.0.1","import-fresh":"^3.1.0","import-local":"^2.0.0","imurmurhash":"^0.1.4","inflight":"^1.0.6","inherits":"^2.0.4","ini":"^1.3.5","inquirer":"^6.5.2","invariant":"^2.2.4","is-accessor-descriptor":"^1.0.0","is-buffer":"^1.1.6","is-arrayish":"^0.2.1","is-ci":"^2.0.0","is-callable":"^1.1.4","is-data-descriptor":"^1.0.0","is-date-object":"^1.0.1","is-descriptor":"^1.0.2","is-extendable":"^0.1.1","is-extglob":"^2.1.1","is-fullwidth-code-point":"^2.0.0","is-generator-fn":"^2.1.0","is-glob":"^4.0.1","is-number":"^3.0.0","is-plain-object":"^2.0.4","is-promise":"^2.1.0","is-regex":"^1.0.4","is-stream":"^1.1.0","is-symbol":"^1.0.2","is-typedarray":"^1.0.0","is-windows":"^1.0.2","is-wsl":"^1.1.0","isarray":"^1.0.0","isexe":"^2.0.0","isobject":"^3.0.1","isstream":"^0.1.2","istanbul-lib-coverage":"^2.0.5","istanbul-lib-instrument":"^3.3.0","istanbul-lib-report":"^2.0.8","istanbul-lib-source-maps":"^3.0.6","jest-changed-files":"^24.9.0","istanbul-reports":"^2.2.6","jest-cli":"^24.9.0","jest-config":"^24.9.0","jest-diff":"^24.9.0","jest-docblock":"^24.9.0","jest-each":"^24.9.0","jest-environment-jsdom":"^24.9.0","jest-environment-node":"^24.9.0","jest-get-type":"^24.9.0","jest-haste-map":"^24.9.0","jest-jasmine2":"^24.9.0","jest-leak-detector":"^24.9.0","jest-matcher-utils":"^24.9.0","jest-message-util":"^24.9.0","jest-mock":"^24.9.0","jest-pnp-resolver":"^1.2.1","jest-regex-util":"^24.9.0","jest-resolve":"^24.9.0","jest-resolve-dependencies":"^24.9.0","jest-runner":"^24.9.0","jest-runtime":"^24.9.0","jest-serializer":"^24.9.0","jest-snapshot":"^24.9.0","jest-util":"^24.9.0","jest-validate":"^24.9.0","jest-watcher":"^24.9.0","jest-worker":"^24.9.0","js-tokens":"^4.0.0","js-yaml":"^3.13.1","jsbn":"^0.1.1","jsdom":"^11.12.0","json-parse-better-errors":"^1.0.2","jsesc":"^2.5.2","json-schema":"^0.2.3","json-stable-stringify-without-jsonify":"^1.0.1","json-schema-traverse":"^0.4.1","json-stringify-safe":"^5.0.1","json5":"^2.1.0","jsprim":"^1.4.1","jsx-ast-utils":"^2.2.1","kind-of":"^3.2.2","kleur":"^3.0.3","left-pad":"^1.3.0","leven":"^3.1.0","levn":"^0.3.0","load-json-file":"^5.3.0","locate-path":"^3.0.0","lodash":"^4.17.15","lodash.sortby":"^4.7.0","loose-envify":"^1.4.0","lru-cache":"^4.1.5","make-dir":"^2.1.0","make-error":"^1.3.5","makeerror":"^1.0.11","map-cache":"^0.2.2","map-visit":"^1.0.0","merge-stream":"^2.0.0","micromatch":"^3.1.10","mime-db":"^1.40.0","mime-types":"^2.1.24","mimic-fn":"^1.2.0","minimatch":"^3.0.4","minimist":"^1.2.0","minipass":"^2.3.5","minizlib":"^1.2.1","mixin-deep":"^1.3.2","mkdirp":"^0.5.1","ms":"^2.1.2","mute-stream":"^0.0.7","nan":"^2.14.0","nanomatch":"^1.2.13","natural-compare":"^1.4.0","needle":"^2.4.0","neo-async":"^2.6.1","nice-try":"^1.0.5","node-modules-regexp":"^1.0.0","node-int64":"^0.4.0","node-pre-gyp":"^0.12.0","node-notifier":"^5.4.3","nopt":"^4.0.1","normalize-package-data":"^2.5.0","normalize-path":"^2.1.1","npm-bundled":"^1.0.6","npm-packlist":"^1.4.4","npm-run-path":"^2.0.2","npmlog":"^4.1.2","number-is-nan":"^1.0.1","nwsapi":"^2.1.4","oauth-sign":"^0.9.0","object-assign":"^4.1.1","object-copy":"^0.1.0","object-keys":"^1.1.1","object-visit":"^1.0.1","object.assign":"^4.1.0","object.entries":"^1.1.0","object.fromentries":"^2.0.0","object.getownpropertydescriptors":"^2.0.3","object.pick":"^1.3.0","object.values":"^1.1.0","once":"^1.4.0","onetime":"^2.0.1","optimist":"^0.6.1","optionator":"^0.8.2","os-homedir":"^1.0.2","os-tmpdir":"^1.0.2","osenv":"^0.1.5","p-each-series":"^1.0.0","p-finally":"^1.0.0","p-limit":"^2.2.1","p-locate":"^3.0.0","p-reduce":"^1.0.0","p-try":"^2.2.0","parent-module":"^1.0.1","parse-json":"^4.0.0","parse5":"^4.0.0","pascalcase":"^0.1.1","path-exists":"^3.0.0","path-is-absolute":"^1.0.1","path-key":"^2.0.1","path-parse":"^1.0.6","path-type":"^2.0.0","performance-now":"^2.1.0","pirates":"^4.0.1","pify":"^2.3.0","pkg-conf":"^3.1.0","pkg-config":"^1.1.1","pkg-dir":"^3.0.0","pn":"^1.1.0","posix-character-classes":"^0.1.1","prelude-ls":"^1.1.2","pretty-format":"^24.9.0","process-nextick-args":"^2.0.1","progress":"^2.0.3","prompts":"^2.2.1","prop-types":"^15.7.2","pseudomap":"^1.0.2","psl":"^1.3.0","pump":"^3.0.0","punycode":"^2.1.1","qs":"^6.5.2","rc":"^1.2.8","react-is":"^16.9.0","read-pkg":"^2.0.0","read-pkg-up":"^2.0.0","readable-stream":"^2.3.6","realpath-native":"^1.1.0","regex-not":"^1.0.2","regexpp":"^2.0.1","remove-trailing-separator":"^1.1.0","repeat-element":"^1.1.3","request":"^2.88.0","repeat-string":"^1.6.1","request-promise-core":"^1.1.2","request-promise-native":"^1.0.7","require-directory":"^2.1.1","require-main-filename":"^2.0.0","resolve":"^1.12.0","resolve-cwd":"^2.0.0","resolve-from":"^3.0.0","restore-cursor":"^2.0.0","resolve-url":"^0.2.1","ret":"^0.1.15","rsvp":"^4.8.5","rimraf":"^2.7.1","run-async":"^2.3.0","run-parallel":"^1.1.9","rxjs":"^6.5.2","safe-buffer":"^5.2.0","safe-regex":"^1.1.0","safer-buffer":"^2.1.2","sane":"^4.1.0","sax":"^1.2.4","semver":"^5.7.1","set-blocking":"^2.0.0","set-value":"^2.0.1","shebang-command":"^1.2.0","shebang-regex":"^1.0.0","shellwords":"^0.1.1","signal-exit":"^3.0.2","sisteransi":"^1.0.3","slash":"^2.0.0","slice-ansi":"^2.1.0","snapdragon":"^0.8.2","snapdragon-node":"^2.1.1","source-map":"^0.6.1","snapdragon-util":"^3.0.1","source-map-resolve":"^0.5.2","source-map-support":"^0.5.13","source-map-url":"^0.4.0","spdx-correct":"^3.1.0","spdx-exceptions":"^2.2.0","spdx-expression-parse":"^3.0.0","spdx-license-ids":"^3.0.5","split-string":"^3.1.0","sprintf-js":"^1.0.3","sshpk":"^1.16.1","stack-utils":"^1.0.2","standard":"^14.0.2","standard-engine":"^12.0.0","static-extend":"^0.1.2","stealthy-require":"^1.1.1","string-length":"^2.0.0","string-width":"^3.1.0","string_decoder":"^1.1.1","strip-ansi":"^5.2.0","strip-bom":"^3.0.0","strip-eof":"^1.0.0","strip-json-comments":"^3.0.1","supports-color":"^6.1.0","symbol-tree":"^3.2.4","table":"^5.4.6","tar":"^4.4.10","test-exclude":"^5.2.3","term-size":"^2.1.0","text-table":"^0.2.0","through":"^2.3.8","throat":"^4.1.0","tmp":"^0.0.33","tmpl":"^1.0.4","to-fast-properties":"^2.0.0","to-object-path":"^0.3.0","to-regex":"^3.0.2","to-regex-range":"^2.1.1","tr46":"^1.0.1","tough-cookie":"^2.5.0","trim-right":"^1.0.1","tunnel-agent":"^0.6.0","tslib":"^1.10.0","tweetnacl":"^0.14.5","type-fest":"^0.3.1","type-check":"^0.3.2","uglify-js":"^3.6.0","union-value":"^1.0.1","uniq":"^1.0.1","unset-value":"^1.0.0","uri-js":"^4.2.2","urix":"^0.1.0","use":"^3.1.1","util-deprecate":"^1.0.2","util.promisify":"^1.0.0","uuid":"^3.3.2","v8-compile-cache":"^2.1.0","validate-npm-package-license":"^3.0.4","verror":"^1.10.0","walker":"^1.0.7","webidl-conversions":"^4.0.2","w3c-hr-time":"^1.0.1","whatwg-mimetype":"^2.3.0","whatwg-encoding":"^1.0.5","whatwg-url":"^6.5.0","which-module":"^2.0.0","which":"^1.3.1","wide-align":"^1.1.3","widest-line":"^2.0.1","wordwrap":"^1.0.0","wrap-ansi":"^5.1.0","word-wrap":"^1.2.3","wrappy":"^1.0.2","write":"^1.0.3","write-file-atomic":"^2.4.1","ws":"^5.2.2","xtend":"^4.0.2","xml-name-validator":"^3.0.0","y18n":"^4.0.0","yallist":"^3.0.3","yargs":"^13.3.0","yargs-parser":"^10.1.0"},"repository":{"type":"git","url":"git+https://github.com/nathanuphoff/isntnt.git"},"keywords":["TypeScript","predicate","typeguard","runtime","generics","intersection","union"],"bugs":{"url":"https://github.com/nathanuphoff/isntnt/issues"},"homepage":"https://github.com/nathanuphoff/isntnt#readme","gitHead":"d8d5ebe991da9745789f294cfb1af6cc79d888d2","_id":"isntnt@1.0.0","_nodeVersion":"11.14.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-myYhcUjjmQn2eY84j2l6i7hbnVwdXM14z3NsEz8YKBAgr2giYIeNrvbr6Y7teifib/veoT+GV1m5jJ+n1BlU0g==","shasum":"e2e3461bfdb1d65374c76e80a843b03fcf81596b","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-1.0.0.tgz","fileCount":292,"unpackedSize":323077,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdaNcICRA9TVsSAnZWagAA36kP/R3bsesIRoWIr7gko+YA\nqdh5wOWQfMAB9wmXZrhPTJuZwgt/0JzJPAYcFnkwQUllEx0oTaM3SWP8SM44\nqnDoDcRnJ8Zf+b0KmInkemnIK/VM3UHo2qnP/gSA+BYwzh+DMcyxFx+/bpCr\nPJr0EJVpli9yViOmL33aG0FvRTlkmnP5mCG+mxerLMjLKgv8F9EyCplZhX81\nALPqCEL9FKDBAoVmxDb3zeJKtomlLC0EOWz0IolClF214Nmjwvtqa+vgtJlk\n4tSub5xknVEbYt9OPPop8/qTDYsyLaLR06tXqYuQNudXDB6ORWCPKoStpKB5\nuLfVrmV5BHAK0xXsOPM8kMaHkM+Po9i1T/s3i1kGfMhNwzD04W25mtL8357E\nHx62xQ0CrIhZBifgnWszoqwU4lYclJRRyIjTrjsfGgMEI/xNB+Shb6oi0M1h\nCLj7bPDsG7RkZ2Dh919NtSqlzlhWlq3TzGe8Gqw7LZe29rxlblhHwaBhndeM\nSntYkGuZsBVP0r+gE58cuZB5KEgjwWLfI+YRMRPUOxuBOzNcfkq8HAWH3+y0\nT7DA26899E95Sq7Lu9AK9XgJgPqEbnOCRIkxiXzESu+dRgqTUak/7vfd2rF5\n+Lv+IG/jaHdND68B5jxuH8893ms2gKWyGcD/BSAOWL8XMLSuYwQmTiiUxuNC\nbT7e\r\n=hy7i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHvYJIG0VUFiu7y8a85pIjtlqYoX6oeV0EzuUIuaGmZOAiEAw47H0ESaoHq5GjTz8TSM6+T9NeWZRN5E1o0+f2yqXG4="}]},"maintainers":[{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"}],"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_1.0.0_1567151880220_0.05772287651880803"},"_hasShrinkwrap":false},"1.0.1":{"name":"isntnt","version":"1.0.1","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && tsc -d --skipLibCheck","test":"jest --watchAll --coverage"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^3.6.2"},"gitHead":"3de1789f167d5039840dd6eec86b26e919a15d18","_id":"isntnt@1.0.1","_nodeVersion":"11.14.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-a8cj8EWSwJ5ra1FSJEqRd+5UdxizkWF8GtBIiPfrPYAl/Os6fltWZGBdO/MD9/HNhfgLv+dwZ905b4NJR3N9vA==","shasum":"eee44cce91741feeca2586c7f3a917d25f5ca3b6","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-1.0.1.tgz","fileCount":187,"unpackedSize":242684,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdaOLkCRA9TVsSAnZWagAAEqAP+gMXg2ZFFzdYPPQjaiou\noDNFIDGioImB8jMvy853NwpdHYKKxBoPg62TXfs4YFVq4S4JAkObgh+ViuTV\n9gvvWaxivBjr86yTnEtw8d2OJWzgL4vPPs3M3A+5XTB9vclp3OZwkk7Dj+kY\n6847GueVTawt93rpvmT0H0j8ihlIfd4IgeHf7mx1ZM25OKhorl+3JjPWTRDf\n6NPHu4GM98yYJC+I8yD7WFgkDAl8dwLjUZ7eKOjnjp1WuhhwJRRt74rp1QAl\nHJKfvG5w8Av8XpG9IUUJvmMd3NvzB9FHy4R1vn+piO4wvI9If4VigIVX7JNX\n2TUxBDpQBhLvEhTBC+KtvrFxBxzY0e80a1H6HG+C2Zy45a0nCe+OeX93Eehe\n4b4y+/1A9GavXPjxBMnVni0i1XQ6eOr841XG07FBIRSt6Rz/NR9JarKtrcAJ\n7eH8eaenzbRey1BnMFSLM0KFjVOrXDIqmbnx5GAxPJfyXC0c/LHe6svqhPqt\nHQ8e9CS98YdkS3uhKK61J1H/JOPqVsm5q0RnCneMQujfpXwsrB86zLzbZIDs\nLFBcwygBMS1Nfi0tl9ctWJm9lHgp7/zmISGHZIOwoLhUHO4+/ZTRhQeHIPoa\ngYQ7dV+y5d3b8VtYVpH/QOE8KBhD1cW2SyNwME+Y3Sdf84zuAqgB5ExhwrCj\nrUMm\r\n=3e8R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDoFq5Chfzd6D4zwJONZKzc1qmlbpXeTRICgmy2BL9KgAIhANG68K9t1AqPAp79kbvVwDJy8VHLy/kwrNuhp/bbhAJI"}]},"maintainers":[{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"}],"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_1.0.1_1567154916312_0.5043158449465259"},"_hasShrinkwrap":false},"1.0.2":{"name":"isntnt","version":"1.0.2","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/index.d.ts","author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && tsc -d --skipLibCheck","test":"jest --watchAll --coverage"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^3.6.2"},"gitHead":"c07b7352d62916701ad0a62e1c0ef1f87a57de1a","_id":"isntnt@1.0.2","_nodeVersion":"11.14.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-sb2Q03MHVRk2z9iUYDMnCxhjIT0IhTtkq9XUF0UBMLQDDapoVSFgCmV2Rxs4EIGIf9a21f9feI7Y/twiySFheg==","shasum":"8dc349a11b7108d57a929201fe5f90185a75e4d2","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-1.0.2.tgz","fileCount":187,"unpackedSize":242714,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdaOY8CRA9TVsSAnZWagAAoK0P/3+GjD6XD+dGXpD9ye+A\nS7p/LKeLVwS8pu2uEWnny1gHvSgvryuDoX1uoEX5IRTCxYQq7aPaTfxCQRIW\nSA99uoCqTNrpU6vX99P3WoxI+GM3TxwKS1QJE7g+Yt0LmIgj3Z5zYsWpvABB\nCpivThCd91T6Hvd908ckspDp46CW5rgt0SGVrFg5bAN7Pw5X07Ta23+7SwGf\nGfmocZIaW8LswB3cp69M1StRXiJV58ESOI1EPIm0fDe9pzcrl0TXJRDNbbWS\no0apDL1QuZlsuwaoX17Zw6/h/Zu00grqkiS107QikGElwFUhJkaLqZcv/oEJ\nHO5kkkqnJf3VDI5b4UG485Lg0IkMl70oK3TaQWCGgD8LgBxwdGEdYpimG/Mn\nXvxzknOHznvt1v17xv9RlMBI+pmiPaC2wRjX92c9iRxhVxgt8oAqJBN/1cH2\nkgYmkVQT/It+Pl2M2Dqs7IKaUFN3Q1afH2KRXShQd2dFCuArRXYk0IcBvhjs\nlmAjZGhqPRG/un+ZaQlv7ELfxS/DzB6R6baQnRJ5GKZfyMXcpIVZk6e3paX2\n5Kq7Zq60uIRoy01IRfJmf6aHyZXKCzLg5RbFBrHuPSEb98A+Yz5wrDxPpdLu\nenrDZm5jN2nWiRFy+EyUXxamBb7UVlBEB/G4glob+TgOASwLY6Ql9uVxW/5y\nKJ+X\r\n=NCUA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICsvOaE7VaiJWGMhN1Asv+QDnPlDJxb0Bd52oj6LsubUAiEA7RSxgXKZHz+q6EYX87kVewKhYg/EapfSmNue3Yink9w="}]},"maintainers":[{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"}],"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_1.0.2_1567155771750_0.463797869317903"},"_hasShrinkwrap":false},"1.1.0":{"name":"isntnt","version":"1.1.0","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/index.d.ts","author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && tsc -d --skipLibCheck","test":"jest --watchAll --coverage"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^3.7.2"},"gitHead":"d7601b107b6f0e073dabeb7990e1622046247709","_id":"isntnt@1.1.0","_nodeVersion":"11.14.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-rgslrPGgTpS9YcJxxZNYHHfoHifXn0Du1b7ze/7gD/mv9wq9G3CCsJjZGf+Ncdi4WuXL+NZjyfZGC2Y8hEt4NQ==","shasum":"4a7c0a62987c30a20a3de74846ca3f04b3f3535b","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-1.1.0.tgz","fileCount":193,"unpackedSize":211218,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd5RDVCRA9TVsSAnZWagAA8AMP/060rpSY7XSBtloFyAyz\nKU+PikcU2kPEBj4QlQYiLcM5bFVBjS5VlZvKKW2GmppEB7C3sfgqqdn1b/IW\nVNtvjMN2wPv5K1LqXYazwwUCW7gPSo20wVE7mZZgTiJNr81vh9va8brwzU+D\nru8qyISOacuHm+Iqr71YUZAhvyeKoYqJNrnEKp7lXPEHQz8tUldJYgdSwKWm\nIVhPlQwQtyHa0zjuo83KJ53NsuVGM89fGQGnY/PlsT4M/xatOYO0F90NnWiN\nlV/h1yAohnON33dRrofjqkjIANx1ArUCT9JefF/O5r9TMJMkfztLbCSWYdl5\npjhgtx/ERzrjF6goq2RrgJHfBi6AoaId5twyR+jKNyjnBqZ4nArwvwGN/6ue\nuDUNZN3MyYPoL8RRuD+XXXLU/PKK8mOO5M53x3rSi9oSf+TA+bN6OacRYwZ8\nnPcPP6vm0HKP5xLccB5P8K/O6yfMGIZFCjZk6ueMDiHblH28xhx6wvgOBRaC\n59Tn0miIR6XBTtzEXBSwu8k2pKQlXT/30h2+DvaN+GBqFwrvBP89hl6FiJSo\njOLXJBuJTDDMLJvigYpgBciQZoBbmOQN3QaRhzB6+u0NO9+boGXMmfyx77tf\naCGJy4q1qQijaE/mdJAJhoW9R799oUAEiBjdXriT+jvyQVZLWhTptDZzhFFA\nuqXY\r\n=VyRs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCV/P590QcIx442WXi5lGZydV8I9CmPMb9MT6ejLJ+5UwIgL4I5n0bOUCK8SVUAVYHHD+3hkjT1Y6Ls0XsK+DGNo1o="}]},"maintainers":[{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"}],"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_1.1.0_1575293141430_0.1741785022420117"},"_hasShrinkwrap":false},"1.2.0":{"name":"isntnt","version":"1.2.0","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/index.d.ts","author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && tsc -d --skipLibCheck","test":"jest --watchAll --coverage"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^3.7.2"},"gitHead":"8b3d48d6f385b617a8568221b76021c7a517158f","_id":"isntnt@1.2.0","_nodeVersion":"11.14.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-oo4Gk+rQN7kL5OtjDiootFpo9qcAUfc0NWg3/iYHrVOZJq81af9NJWk8kmOl6OBQjeI7xFD20ay7VRjv4E9q0w==","shasum":"dde01e16eca4c9df28bfbc2fb56d1733fc754c1b","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-1.2.0.tgz","fileCount":205,"unpackedSize":215013,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd7k2QCRA9TVsSAnZWagAA70cP/R2+whMm0BQwVD7VFPM1\n77vh8ifdr652aQRR95s07bXXZj2VnQzY7m2ZIP3n/gSUgcwGgUS7KjwsxUh5\ncmbbBrOQ467cRalXzpx4pkLxVP3vaxMESuPfL618VC9y9xISoGD/hzclUbTM\nUuXBnWOr6jdrHnHR/lkE3djjeqQw+FqNEMJk+nDONwXJL0GuHU7YkERrX4jb\nl8FZo5/7NvDWFqgMLqsWsBKYSH+VuNli52WvMEVQsQmTONu8Jp+YYneaQeya\nqo5hvfbZCMtooYF3+XYc9EJH3sZFcZrcqSNuK4NZSRCE3pvMf/970X+8NbK/\njBFKE9k40MFGMidAJTux1EyyvB7p1HTxFgbk2cJ+IF/s4ixTBXiXegh3wcao\naqDDB/IskPIaX3h3mxcgib1lY34jvXWoGYXjZpO0wnNFMbySyuAm5K61CHxk\nYP0UM/k6Vm4GI8nHNT+nFv6s+aCjajWyBQDnztBr6WGvTcA5SNWzyYkTabYi\nLlvzx5V0LAtecCoeBJnZSHODavywSs5UCdzPAeMwhWVKWmv2H0oDLEMwAihi\nLSBFqm6anlNOsQTtzlexR17hsDZ2IKQy4jPqEvhKYOlyNnC27I4XM+GmLOa0\n8q7UOAkyfoSt2BQ7zzGcDgE11omdgo5Rf45o15ea2jLt34PYnoRvpOmUePxV\ny4NT\r\n=hxxS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCudVOqWOdWoCvvjyP46MUzO93ti7DUrr9GlCBO45wxagIhAOlkTx+fO7G1a2QvIzXV4q76ZasUtnYVEO91C900EmnE"}]},"maintainers":[{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"}],"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_1.2.0_1575898512488_0.28637604100117464"},"_hasShrinkwrap":false},"1.2.1":{"name":"isntnt","version":"1.2.1","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/index.d.ts","author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && tsc -d --skipLibCheck","test":"jest --watchAll --coverage"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^3.7.2"},"gitHead":"94c0fc740905ddc4d2573cfc4d03cc2c8c88fd51","_id":"isntnt@1.2.1","_nodeVersion":"11.14.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-SYO1VrpUgxbLtDorHnVfulZCdv018Ua0QK2VUHCSSMWD/ODK7m/FJQ+0AK+E2Vc6Zfa7YuzDvW14KHX/TGdkGw==","shasum":"46f1ecda9b942684f16708689f805a1666e8f9b6","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-1.2.1.tgz","fileCount":205,"unpackedSize":215013,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd90vWCRA9TVsSAnZWagAAZv4P/jKfENrqE6RR8ogmQXDi\nxlod0xd3lSCu13ziYXtmzi+hDfPfTKQ/HJr4Id75kQg/lzdNY9pkRioyyfbs\nkeVT2cP0Aak8mYjzH0bPYrZ73wIYAbRSLVUSPH83vBYPGJEnhfeqOdPhMx42\ns0URHS5lql4YXLDY5XerrURCGICZUxEmvWTM/BZGMz4F1K1qxW60t1Suo3Zm\n/saGWxcCNJvLSZOmPD/aFJD+SufV5DTME8DrriFQ8Xkjbx51wIIgs4BI9XyF\nAL4IEoqNrwGhTwNgZaIAy8xyggYJvSwNAjthwt0+RzLBehcuwdNpC/EjNCbo\n6eVSAxMYi6KcFUDtA++vUuAi0aHuR7DvhExXw5HCv/+qYPgyAfnOZygnllRj\nG74FjB011Rybts+rWOj9ZVUfZ7O3Cn+8xxP2Jwr66fuRoFo0v1IPKgGskoT1\nof7wM5qksFz0b0w3fszH0SDKXFbF/5mNdBEc1sQOSySaIzQI6Y/bJgZ75CiH\n+40RvdZ32npU/lymq0FpbkBtRGg88lFyyNsGkkjyhkC5jxMAcmsTm+RnPOQR\n8BShzNCGau9INpS6Ta3o3/NCBQW1gr3GNZhMmsknYilMH52yAKxptpGs03jQ\nVRJK6iFrclBqqvK3zUrwf7iTcU1pvkvErJzluEKyYNhS0JDuV92mSp8/+Zqp\nBOla\r\n=knE0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+g9ovGGa32+/44jZmTguNfuNUdX0CPLGSjB4HjCbhpAIgARtbzhTy6TFwVp8I65StjZtNz2QE3jmHW78bxxTlVcE="}]},"maintainers":[{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"}],"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_1.2.1_1576487893958_0.8911513313722652"},"_hasShrinkwrap":false},"1.2.2":{"name":"isntnt","version":"1.2.2","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/index.d.ts","author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && tsc -d --skipLibCheck","test":"jest --watchAll --coverage"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^3.7.2"},"licenseText":"Copyright © 2019 Nathan Uphoff\nThis work is free. You can redistribute it and/or modify it under the\nterms of the Do What The Fuck You Want To Public License, Version 2,\nas published by Sam Hocevar.\n\n  DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n                   Version 2, December 2004\n\nCopyright (C) 2004 Sam Hocevar\n 14 rue de Plaisance, 75014 Paris, France\nEveryone is permitted to copy and distribute verbatim or modified\ncopies of this license document, and changing it is allowed as long\nas the name is changed.\n\n           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. You just DO WHAT THE FUCK YOU WANT TO.","_id":"isntnt@1.2.2","dist":{"shasum":"d64d7aad5d31b25d42037424e6e1d9dc4b686fdd","integrity":"sha512-6Tr8ZK3vLB64SoOA9P3PRCRbVkNvUjx9gAiEejOySwOPUpfZ3ClZESjenEtxtm/qgxHlY6bQkPTfkyV7VPrlZA==","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-1.2.2.tgz","fileCount":209,"unpackedSize":68022,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd93o0CRA9TVsSAnZWagAAUHoP/0TQIMBALjERb1uq4Stp\nJTowiSoKFktRMGuV2wcTAoqEGSie/YE72D9I8BnUyrmwhEeTkgFAbeK3b45t\nMAakX58/apdaoXjbYVl/T/smT5Z/ExuLJyXF0ndO3pBouBtT3ksk22xqy+od\nBPN8OVCDgWHNsysNS4U45ViSCW+2rhKjDL1EE7tlsTWYNdn38AWyPgv4Cc/o\nk5zH7z+l+BFdqlq6AO9h2WcAlG07IS5lh2keJYAZ6tlfcF5o2HtjjKXPLVie\ne76Z5XGpdO63MwHw+0wuxHDqt5j4MQB0sEAV/Ro+Ze2QoNjcDcaGxDDJvTLr\n7kIwDx3s08P6D+WIFkzxoOgfaYC/wqL6yl94hd/3EWYhDUNOULloa5b4A2SG\nsVTMNTAxX0NPz9QEECNSqU3fcg/Kas+KQIw3RZl3XPyjBSWSri03aB4ZIDPg\nwMp/XCWvxn+p3xjViUvtb698LbOWRinPl5lNc03I5kb0oEav2LsBgnKFU1AF\nXPpBYCYLTifB3st2Bdu+Qc5LHQNjkzMVnWLfGRmlGE+NwFghGWehY4mD7f4m\nD8DESvu4wTki8yMshBz0+IyWrpD5vnJT3Iufd65elNlQAT4Ed/I0tCYMYrs/\n/J7oxHHvTdMxi1QwCL4ysKoag8gV7bEoIhzloY6A+yelzJuGhlnrV2lWXZJ+\nR1Lg\r\n=68Xi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDxV8aZsdqsvamr641m5gF5/EPvt/LBIo1zX4QkjsyHIAIhAPehCqm+SEcy0MwUwEzZHw6IpzncpWQlNla5J66tAhMq"}]},"maintainers":[{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"}],"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_1.2.2_1576499763587_0.5871969050914343"},"_hasShrinkwrap":false},"1.2.3":{"name":"isntnt","version":"1.2.3","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/index.d.ts","author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && tsc -d --skipLibCheck","test":"jest --watchAll --coverage"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^3.7.2"},"licenseText":"Copyright © 2019 Nathan Uphoff\nThis work is free. You can redistribute it and/or modify it under the\nterms of the Do What The Fuck You Want To Public License, Version 2,\nas published by Sam Hocevar.\n\n  DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n                   Version 2, December 2004\n\nCopyright (C) 2004 Sam Hocevar\n 14 rue de Plaisance, 75014 Paris, France\nEveryone is permitted to copy and distribute verbatim or modified\ncopies of this license document, and changing it is allowed as long\nas the name is changed.\n\n           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. You just DO WHAT THE FUCK YOU WANT TO.","_id":"isntnt@1.2.3","dist":{"shasum":"b835880af0a2c7d32c84ecd0c192a1ccdcc7b733","integrity":"sha512-Q1Bs7XMYBIwHxx6um5qkOW69pzoMWazt+Yw7yP2ds8D1utRgY25lv8viwFXO5d+kRf5jhuYlOwpYf3YxHgsXNQ==","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-1.2.3.tgz","fileCount":209,"unpackedSize":68022,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd97U8CRA9TVsSAnZWagAAfCgP/1P6MfSQ7dfBvW55OXBd\njqH+QU7iX2SSH/7ZBOWEqntMQk1+bjLd0va4Y3Mjcq9D4nm8jvdxlyy4MmCO\nPJpE+02y59o/TM2GevRehyidTuEtGliDUT4nbVOltgJB9KWv9L28fOuRY5M1\nHmshEou3YD/JCYYJs3b++hIdwmxaQWSal4X0bWzK85u1QCeB+fWPE8xv1Xv9\nCHMZDj/bkkaCrujbpW5m1Yx7RWcoIj5bM0laXhtySArKuzz7BOWaFAqDONOe\njk2Y55MBwv1P68e4rJfzL5yWZwhD23n0+6KB4jpV4fF0EIhfjBoCXGmVq8TV\nMo5pduzuQYVD0Nn6yZ2YqXh95DvFFaPZH3hdh0EIsP+AiINZKhYhlTEyWBjd\n8Vf2GpVwfGqtk37JCgt6hW1hSsfhEoYUsTmC5ZbOtnugkiKCFhSYMR2oLYmu\naUcX8kbITSEAqSJbw3fka8s1vlPcVm2kT6M7cviPiLRiduLFtqOhBiX5G+ud\nHolMLuF5oaODyDBjoTFcBPNAXrETrQzs88TDSdASMtu9LRB71XSRfSDf5zzV\nrpDKdgZheK1DnYRpT6bUkf19wks9qrWZ8egpsnOVVhbunos92OAp9loKzOQw\nebFLqPttaDkvNB71faIXLF3BKhRY9wVX/SUHq2TNqOwxTyXEHZm3RIzfcW/E\nS+V+\r\n=E9Vl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGSFOJXVvt+yt5yWurRUa+RSLbR4AXfWOFqx5995BvdCAiEA2Y8v+ZGxgm3rhrhDCTYmBq4PbbMsho4pB2FAm1L5By8="}]},"maintainers":[{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"}],"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_1.2.3_1576514875996_0.6632069409746126"},"_hasShrinkwrap":false},"1.2.4":{"name":"isntnt","version":"1.2.4","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/index.d.ts","author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && tsc -d --skipLibCheck","test":"jest --watchAll --coverage"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^3.7.2"},"licenseText":"Copyright © 2019 Nathan Uphoff\nThis work is free. You can redistribute it and/or modify it under the\nterms of the Do What The Fuck You Want To Public License, Version 2,\nas published by Sam Hocevar.\n\n  DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n                   Version 2, December 2004\n\nCopyright (C) 2004 Sam Hocevar\n 14 rue de Plaisance, 75014 Paris, France\nEveryone is permitted to copy and distribute verbatim or modified\ncopies of this license document, and changing it is allowed as long\nas the name is changed.\n\n           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. You just DO WHAT THE FUCK YOU WANT TO.","_id":"isntnt@1.2.4","dist":{"shasum":"3f95377b850a389dc53e9f69e506055d6a3e144b","integrity":"sha512-T6qTZkPyn0I7CQFQtZGeCk9p/0H0XRI1E2WCaqgIAjqilBdlgDMu/JQFI33yNnAK99QOVuOfXG5Xqbst0xSCFA==","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-1.2.4.tgz","fileCount":209,"unpackedSize":68018,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd97YSCRA9TVsSAnZWagAAF9IP/2JGP9urYGYIg+64d5fg\n+rB3ErfE7/JL8UJYaWHbqPCw3bZ35rF7q7P7ifvevs9UY0jFNRnVAea7KlXJ\nn0IfjADBQORskdd79TkkYsn41IwQm3vResy5SYzBtrQLi8oRMNrORE2tYw7z\ncqB5pL3xq8u8UWb+mQsM6KdT7n+j5CzMEwrpreCqOSHJ4rj7cm9nWaYtEapo\nHwSoTHIEsiNp/P/iVpseAllLDZ1RtdLB04+6ByqT4zNu/OUC7UZn8eEoPb2t\nvPSX3C/XrRebZlE4bKWwcnU5r9JzbGEx+RQNOi1geuTzu08Y9FFCVyKbji5e\n5S0XHcSha+m+WMDNqfgUgcTduJFugEAYnifWKdNII0mPTw5ztfuhO4cawftd\ny8GiEqaxMpKzctyCqvW4EBwZy4MjaLXFUXdszZJUEPMw64i6BNfGQgcboPQA\nOdgDEWag1l0j6OoOyWH27mqQMCj3bFnSmEx6YuH6qATq43U+2JAyxvpsHzp+\nqAKRCngAsEDmU5Aks7XAWy0XATZs74eIiS9FufbVZMG2CQ2VaWjIXovx4gwY\nlLJD0qAl+azF46BQLe8LmDB1EZSK5BZ/1GiMDfs+AkkcWaHKRlJQ087wnWCI\nY+9rRMA5gcHDcwe9xCORDGzR4kkQKxmylADmV953S3s2EX+BL7G8nNSe3Klc\nLUns\r\n=vVCn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDH+xI7y1ccNFbPAdp/bqa4qppcgGSv3NCIU5rXxRat6QIhAMD0xlWk987c0KNdkniaKBmgc6rmCC3PZy2A+qPGonZt"}]},"maintainers":[{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"}],"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_1.2.4_1576515090207_0.3496726131311003"},"_hasShrinkwrap":false},"1.2.5":{"name":"isntnt","version":"1.2.5","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/index.d.ts","author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && tsc -d --skipLibCheck","test":"jest --watchAll --coverage","prepublishOnly":"yarn build"},"repository":{"type":"git","url":"https://github.com/mediamonks/isntnt.git"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^3.7.2"},"licenseText":"Copyright © 2019 Nathan Uphoff\nThis work is free. You can redistribute it and/or modify it under the\nterms of the Do What The Fuck You Want To Public License, Version 2,\nas published by Sam Hocevar.\n\n  DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n                   Version 2, December 2004\n\nCopyright (C) 2004 Sam Hocevar\n 14 rue de Plaisance, 75014 Paris, France\nEveryone is permitted to copy and distribute verbatim or modified\ncopies of this license document, and changing it is allowed as long\nas the name is changed.\n\n           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. You just DO WHAT THE FUCK YOU WANT TO.","_id":"isntnt@1.2.5","dist":{"shasum":"e32c097f5136662b492013291b3c2cb2afcd80b1","integrity":"sha512-Xxs3AMgredWSDzy5gQteFxfwS7C2GJm7y+o4wUQlKcoWiIawn21l21jVjEy7gu3H8ODKi6ePxPJmy7+DpX1pMA==","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-1.2.5.tgz","fileCount":331,"unpackedSize":147927,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+JlVCRA9TVsSAnZWagAAc+gP/RxJ0F1ZtHDmL6Ne6nZD\n7SWlA9M3fyzqo+ER0PE9J+Mz3ck01Tc6xPogUXgLBBaPsLUqjq+tfWN9a7j9\nW/8rj2B0ZAJuimMEQimqkO2a82C8zggCbVAS5I2JOpzgIzETrtlt0/XGObRp\nbIun82FZZsPOfWi2GPrU6dWqofnD6iEHec3S9OZj/D122xZzrnwrUKJ0rCsV\nAoQdVOxqxqTnNUsIOrGjKdkmSu1h9QnzNGnoaeyip/lWz7VDu0AkAfkRp8um\n8VG3ydrEdrPzEE01yBVLMGDWQpvE+SxiQCZgbegfh82V4vle8p2wTshlgygn\n0k6FdPCvyM0TkUuFxCQQXnWC7dqST01/9Tz4n2uwhIvwHDycRZ90jHOv8uwK\nhTRvSF0dZW3RPnjY8I8n/xrr2tvxyauYy9P0cYWmawy6NQLnT989KZ0d3atz\nKuquq+lHqbNxvmtUFovP5Q5UIOPw0/TOJGkEO6h0yDnmQS3nW6w14TyPMmF2\nvTIVdZutOOywaOEn37uAEdBFZ0ExPIw0jI7nKYLRYnFCKcL9d27wvrQpeYMF\nM9h/7ON6ANauRd+HndrziLoz0gJ56oyysrnvpom6srSahFWFk0T14aYUr3Z4\nH27XeljdQcw++d2ONdu+zM9LxbIiXXN/aDhcNUY8jkdK4x9dENFi/iW5KFne\nh/3a\r\n=8zIl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHG3gHpR/oCefDgwF7sZSVY7U2BPloNpCbBGVVImkAaPAiAoyxRiVWUF4rqItI0KWYtVq4uHsvUl8c+n3QhfKzj4NQ=="}]},"maintainers":[{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"}],"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_1.2.5_1576573268785_0.8655062745903357"},"_hasShrinkwrap":false},"1.3.0":{"name":"isntnt","version":"1.3.0","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/index.d.ts","author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && tsc -d --skipLibCheck","test":"jest --watchAll --coverage","prepublishOnly":"yarn build"},"repository":{"type":"git","url":"https://github.com/mediamonks/isntnt.git"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^3.7.2"},"licenseText":"Copyright © 2019 Nathan Uphoff\nThis work is free. You can redistribute it and/or modify it under the\nterms of the Do What The Fuck You Want To Public License, Version 2,\nas published by Sam Hocevar.\n\n  DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n                   Version 2, December 2004\n\nCopyright (C) 2004 Sam Hocevar\n 14 rue de Plaisance, 75014 Paris, France\nEveryone is permitted to copy and distribute verbatim or modified\ncopies of this license document, and changing it is allowed as long\nas the name is changed.\n\n           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. You just DO WHAT THE FUCK YOU WANT TO.","_id":"isntnt@1.3.0","dist":{"shasum":"0b1081c81532f727161342a19057ff12999b499e","integrity":"sha512-5FM16GS6aqRDtFKstjjFZwf2KCMUeNkDsNIbGJj0ZHtM1kf7mD2ncjAfbLGkMYi1pYh6qf4PtrQ3vUanfagrVA==","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-1.3.0.tgz","fileCount":337,"unpackedSize":155828,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJelZ1sCRA9TVsSAnZWagAAz7kQAJD2wyuCzLDYWx9G+Kwv\nzLVTpDoW8pHI1w12XbrozXHLVt+CxQceAJ/BOSm0z2jU1yPJ1CDemDA5QLyT\n7q8wQS3MxQ166D2vaQH7Rkz+Covn0trqndYD9L/WsKfm9w5BMBjOCfyKwuYk\nsquhi4kyYt2am71F/4yOFg5zEooANZFkolrgeY1+Srq5oqOc794uLEmyMcQx\n0QVSE2JVzikINWt2/XvgfWYzrMT34yl6a6XYUvwHO0IJfCsFaiZ2qqICB9GF\niBiDdLL/sSm8qGwz84rQWpY5dHm9aT9qKyPjD+zQBE+c0VCTJs0FJhLGq3Dm\nxJmh03qwvsixM1Ra8w7vZhXBCRK31BpHmyJLDty7dxAnFsjGDgIH4wgtrG6B\n88ynUcnewQ13d3OSZvY0Bglf1rx+VZb5jDU4VXsIIobvqyGR8r1CT/aJq0+t\nEAZ/ei5Z8bwR+ELNo4+9CXrf5rYlvw8i6Gzfbg0IEsufcgffyKGt4t34vE9E\nLnUekHBs2hNjPZAy44WnGmypMEMNnBaIIiUy5UhTIg/EO0hQATsxBAd3kojI\n9fYb+WAsxyPja7i6Pak7zHzfPCdhqFOyL/REK4C6WpH8jTOpZrjJiC5UO0Sa\ndAneR0qNgc9rg2GhKkG30GTpIszcx2LwaL3DebLLFGr3AkTn6wj6bHv7IxPb\n9mA8\r\n=iTwe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0DU2GaZIrDJZ4wP84/ZjD0io27gdOtsjgUF+M/PsJewIgMMhctLtX+AgYly3HoADVDWG//bTVlJLC4/r3ZiQLwXY="}]},"maintainers":[{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"}],"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_1.3.0_1586863468490_0.9878047020975445"},"_hasShrinkwrap":false},"1.3.1":{"name":"isntnt","version":"1.3.1","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/index.d.ts","author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && tsc -d --skipLibCheck","test":"jest --watchAll --coverage","prepublishOnly":"yarn build"},"repository":{"type":"git","url":"https://github.com/mediamonks/isntnt.git"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^3.7.2"},"licenseText":"Copyright © 2019 Nathan Uphoff\nThis work is free. You can redistribute it and/or modify it under the\nterms of the Do What The Fuck You Want To Public License, Version 2,\nas published by Sam Hocevar.\n\n  DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n                   Version 2, December 2004\n\nCopyright (C) 2004 Sam Hocevar\n 14 rue de Plaisance, 75014 Paris, France\nEveryone is permitted to copy and distribute verbatim or modified\ncopies of this license document, and changing it is allowed as long\nas the name is changed.\n\n           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. You just DO WHAT THE FUCK YOU WANT TO.","_id":"isntnt@1.3.1","dist":{"shasum":"fd6cbb9de04cf8f09668c3db37b630807d262ce0","integrity":"sha512-8NGpiDSYczZdEzeu1CWUd0hLLBCXUHHzIrQM2mqNfm+Votx3SjYFVgXNWwu07LKd+gaqdsYhqhiIM7dX6BgXGw==","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-1.3.1.tgz","fileCount":337,"unpackedSize":155911,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEZ3VCRA9TVsSAnZWagAALu0P/ReQ/FlCczQMJtRWt0J/\nv/iw0yjgeb7Qr1GVacY4qvtsuwP8M30qHkvNZ+fkdiORiy5O49FjTzqDQILi\nOXZi8vKw7u86jL0ZyyCPlZq0L87nMGpQ8C3WpE0zTSx6/xexzUBbEhabTquE\nE1ULP54MW0JTQd5JUW8TeCQqPCpZDvfPT1dp05OqgWFPGpVDHPwDPyBc2wxw\ntrZW+We2Fs0FHYDo4n15urZ9whE+6tT01qnjeyY5BPa5EQXcPYO6EZH1/2b3\njdPJcXlaSBnWb24udUTKnSZd1uHZqrMz2V+l7qc8DcR/iedmoPPteZkdvxKm\nHRUJhcqn0cd0A31W3YtaqwITUwUUoXC197QDkNdv1FJNoDEKgiwHgJDZctfx\naB/PVcu0lK74alaSCx54kaBC66/2TbF9aqZU89zr93P9VXw4fV7FAYbpWYZB\nytBCE4AL866+vE3ZSqQ3t70Q2Y7KvclxwAYQHLkwXbsMIvEhaWvyg7gcuxF4\nznmQlAsHUEUpBcQjVphWzeXCUBNVWyY9Zu/20ikFAwwz1drgjXfwPNvABEmK\nrOQCOtDNa77hy9Jn30+VjOlA3qbFBlijr8oprAEZIZxUfjvxf7UawAHYbet1\nq3MkkY5CvDW4iovISzk1dfjBUL0ZFUr1zKP5jAIJoW9WqOPAew+ZXCkA8FLp\nsdT9\r\n=XRpr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFtMkVdyrLmFaeQVvwayGDASt2NB4ywJxA+Jw5kbozIbAiEApFkt74WrkHD/89zziNnGDxzMXcwflEumxmy4rYUZKaw="}]},"maintainers":[{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"}],"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_1.3.1_1594990037166_0.10192179670750501"},"_hasShrinkwrap":false},"1.4.0":{"name":"isntnt","version":"1.4.0","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/index.d.ts","author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && tsc -d --skipLibCheck","test":"jest --watchAll --coverage","prepublishOnly":"yarn build"},"repository":{"type":"git","url":"https://github.com/mediamonks/isntnt.git"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^3.7.2"},"licenseText":"Copyright © 2019 Nathan Uphoff\nThis work is free. You can redistribute it and/or modify it under the\nterms of the Do What The Fuck You Want To Public License, Version 2,\nas published by Sam Hocevar.\n\n  DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n                   Version 2, December 2004\n\nCopyright (C) 2004 Sam Hocevar\n 14 rue de Plaisance, 75014 Paris, France\nEveryone is permitted to copy and distribute verbatim or modified\ncopies of this license document, and changing it is allowed as long\nas the name is changed.\n\n           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. You just DO WHAT THE FUCK YOU WANT TO.","_id":"isntnt@1.4.0","dist":{"shasum":"12c555001bbb29e2acbbc3cf679678a2c4d8b547","integrity":"sha512-otyFwzr4Gp9F56whAbUaHUW1aTH8+wl2b5gZ0PruAT1miIzlarZhdYfGy8dfo18zcmfNIH84CMEGQH1swUCTIQ==","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-1.4.0.tgz","fileCount":341,"unpackedSize":156606,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGTN6CRA9TVsSAnZWagAAxLoP/3Pu9hTFcjEuPL9cCY0V\nhCTRBwdXSxuwfN1Fw4L3pG83nrica0RHzWVnvFzwP7JOGbLeasG05joHi0zJ\n1nJqvAGY33w3aiZpbl/FLQolKs5IGnuMgdKYugAKZrqGj2Nk5W4nedeBral5\nEoqUAofkWIjtMarzkzMIkoaulrZQZoa5wBPRVaNkXLIow3sal8r1S6KIQUHB\nXoLmGNL5M7fFFaTUaQOHGIsbBYePLk9V5HMWP33yFiBag3p/52zcQKvRs18O\n2cpcB5nmBaFHVrUTCPkHXyU5PgJn7dhbs5cDZ7jf5CPX8cgRcBS63Dh94Lsr\nmGvDqOAaTOFRexH5Sq3OI/f/dqOzue+/E2h2gHFgq0QX/uPuC0yaOdcj+9n+\nkCfTDgitoK8weE7uc8Z0eoRdnuAo7Kh/hoIn52jxLQ4ITpAkcooo02vjpQ3b\nzcCwVP3ZBr/kd8+ZhgXHBmhFKzav3JvLM9ELbNFO+qbfVZy76MJU1v6m6Ols\no7kTkg88kxYPfn3iqWi/bJEKGliPiLthFK/Q5ZazBxLm36JUhRM+AIQXedbB\nlEdk0/F2vIGmZZpSmmN49/ua0TVcfkB5SkWotHlozCVb60P7N5GjH5wP08HS\nRVvFHAyP2xy25kFp53gD3IAcVG+lQoefkzPBYy/6q6OolXSvTs1r0I40hgE2\nVFgb\r\n=S/Ba\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIElVDrPdTZMKE28lXfmeACTjOb2cQ4TenQOOFLC2RxxwAiB5uvIxKx1F00o9HBRtCCnuEHTEKcVvkdb0QNstUl4aCw=="}]},"maintainers":[{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"}],"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_1.4.0_1595487097700_0.3197737017405522"},"_hasShrinkwrap":false},"1.4.1":{"name":"isntnt","version":"1.4.1","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/index.d.ts","author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && tsc -d --skipLibCheck","test":"jest --watchAll --coverage","prepublishOnly":"yarn build"},"repository":{"type":"git","url":"https://github.com/mediamonks/isntnt.git"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^3.7.2"},"licenseText":"Copyright © 2019 Nathan Uphoff\nThis work is free. You can redistribute it and/or modify it under the\nterms of the Do What The Fuck You Want To Public License, Version 2,\nas published by Sam Hocevar.\n\n  DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n                   Version 2, December 2004\n\nCopyright (C) 2004 Sam Hocevar\n 14 rue de Plaisance, 75014 Paris, France\nEveryone is permitted to copy and distribute verbatim or modified\ncopies of this license document, and changing it is allowed as long\nas the name is changed.\n\n           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. You just DO WHAT THE FUCK YOU WANT TO.","_id":"isntnt@1.4.1","dist":{"shasum":"d2d5ecddb15369e5ffe345f9965d9d855904cdcf","integrity":"sha512-4+cj9mFMlp+rRxwPM9pqUKl31jFnlSyf0XH9zKxKpZQcV0fjpBi0QO7QBmM/+L3jfnmUcQagA6So8nPCHL3Nzw==","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-1.4.1.tgz","fileCount":341,"unpackedSize":157683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKRZeCRA9TVsSAnZWagAA9uQP/0HHb0UdlDAGMt/KRtd/\nEqOqXWR6sioQ/AKZIFcQchPqWmxbQjjRl0k8SzzhJenqsoH5n9HWvIGLeRG4\nPZMC5cX3b/InQyHgUkqJqdqDYmniBeqHdsUlKHSek35jpC4Y3rJyPlIjJVog\nWRZ6tsT7MF4lw7QCyXjHDPjSkL1Wh81LZWVhj1t/W2mOQPfn91877x/DKSpC\nb1RiXbhgGuOyXPw1IF3p5FuRqNiXOKsaL2tf2G8+SNjaqupzUjzTVSjgK1ta\nBpVviMaYDT+Mu/a6/x7/M6b4lI7WfctJ8FD46y1R4NE5p7wGCN3ZoqUXYxhH\nYlFHFbZM/+76tAcP/hsUA8VA9lf2Zg8rMAGX5P3+d+jjMD9W+mScxI3aQSC2\noMIjG3+C1LJlwm3LEUTub5N4m1qcMh5AeGFd0AQHV6n0w3JtB0cMbOI1ElbG\n8vPf2jEYDpES9IJbXtIsKupYOwO6D9mx0HW69KB9hBSATKEZuPVYk1Uv5xiH\ny63mIggWNUq9t25I4c9swIzAsFvy5PtQyF0ZjyIw64sonf3dS/I1Bn5WOn5D\ni355X3blFuDIewxxPQyq4n19+SLiLOivB1+LvlkKNc1D74sf914jjdtRYs7S\n5SLd98eVfZOfxKV9c/T6KLJkw0/paY3+Pfjv01H6DhIwZpBqqjF9wNkkLNuA\nPAKt\r\n=SKfu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAOTDhCvQZcJAS5ybrrm3CrzqiKZ5lWxyO+KDA/00g+JAiEAzqh41O8b1N4dnGeHqFXw5ayVh7z56xUaP8IfOOcNMQ4="}]},"maintainers":[{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"}],"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_1.4.1_1596528221476_0.34422982138461133"},"_hasShrinkwrap":false},"1.4.2":{"name":"isntnt","version":"1.4.2","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/index.d.ts","author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && tsc -d --skipLibCheck","test":"jest --watchAll --coverage","prepublishOnly":"yarn build"},"repository":{"type":"git","url":"https://github.com/mediamonks/isntnt.git"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^3.7.2"},"licenseText":"Copyright © 2020 Nathan Uphoff\n\nThis work is free. You can redistribute it and/or modify it under the\nterms of the Do What The Fuck You Want To Public License, Version 2,\nas published by Sam Hocevar.\n\n  DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n                   Version 2, December 2004\n\nCopyright (C) 2004 Sam Hocevar\n 14 rue de Plaisance, 75014 Paris, France\nEveryone is permitted to copy and distribute verbatim or modified\ncopies of this license document, and changing it is allowed as long\nas the name is changed.\n\n           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. You just DO WHAT THE FUCK YOU WANT TO.","_id":"isntnt@1.4.2","dist":{"shasum":"c2be98b7151dc08911f252db1e0279d5025dd09f","integrity":"sha512-GKbCxzxV40saaJqqy0WYGEV9mQeyzF74KFg12RVMVDiZkc/mVj/PdSpfLxYvh9wKlUuIYYTSBK9CdkXn0IZcCA==","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-1.4.2.tgz","fileCount":341,"unpackedSize":159879,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJft5fQCRA9TVsSAnZWagAAmLIP/2BduLInEDIfVeV6SW0y\n+WcwLm1sx94sVWbVdYw1mhwDcnvXFeDx7ZYWRav0kqb4LRob7HhjcfBMuS7a\n1qAzlNdTU6er8xQiAXeHsKbZgcCbegR8IxHUERZGT04vAes87TzkmlP0utxE\n0EKUhgjgpLVeKJeRpuh8eZQgjfWCzdC0mLAB3SOKPn04OuZ1Qwi4fpTutID/\n91VFC3p9GzCXsP+hYtDR2ObFnR2lb+SpGrd0nFRnFIqS1ANUA7VQumh4Pw5H\n5FrRvJZuExfevWmuGrzXCa2PjoEBwPS9glNzWuZHb4Dt4y7arAcLwLuyyjsi\nm7YZWu7Q/rbYc5S9XboHs9C8THd1IUBKSzcIqmXFh2efnwNWoRzepBs7nhtc\nDXMUxpG7SzMXGYqVfaBKRajfz7nvkl2GhtzzurlnboJg0H802ffJ+EDKqHps\nPMM7u0FOLaiHwcug5VPd3twsG2s4cIqamU73/HdPQhU9ZMXehwiGQlFolHLv\nGJkaL5LpYKxGgtCSgYNF1IW28d8R6J3xzKnAdnnAw7W8JOZBA6CkjDf+SmA3\nyn827Tx3dqaHzq7S/5UtJ3HdoLPzlMqakwNp0gllVGc9CG8wDXxfgdLd5dn8\n/kz/hI9IaHEUCj+rwx7itv1j+6fYZtUIXmq6JOigSPC08wDpNgmPw5AALalb\nkhHL\r\n=36g6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqxCdF1Sajsba1skpWfA8ipw994yMpqtR9/Rm0J/oZygIhAM1dK8+cxkaEcjB/Yo0f1WoPpXno1JnIeV2ZCH5HmZZv"}]},"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"maintainers":[{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_1.4.2_1605867471538_0.2803883661116844"},"_hasShrinkwrap":false},"1.4.3":{"name":"isntnt","version":"1.4.3","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/esm/index.js","author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && yarn build:ts && yarn build:ts-esm","build:ts":"tsc -d --skipLibCheck","build:ts-esm":"tsc -p tsconfig.esm.json -d --skipLibCheck","test":"jest --watchAll --coverage","prepublishOnly":"yarn build"},"repository":{"type":"git","url":"git+https://github.com/mediamonks/isntnt.git"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^3.7.2"},"gitHead":"a81e3300868986639c97452e93a17b8af8a917f4","bugs":{"url":"https://github.com/mediamonks/isntnt/issues"},"homepage":"https://github.com/mediamonks/isntnt#readme","_id":"isntnt@1.4.3","_nodeVersion":"14.7.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-GZzPn4+tSYgVzazt4jTo4TfZI51JA8BA7Rg+M7OR3HCLlGGVNC6NFdIUyDTu9JtMlXdvA9CGLhRtLsT1bjRsCg==","shasum":"2716c5297b891b10f6f30d5a43710e33099fa102","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-1.4.3.tgz","fileCount":411,"unpackedSize":132169,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyQKHCRA9TVsSAnZWagAAfXsP/RGplWroKBCoKTs4BUf+\njFnDtQtW85Wgf9jvEEhGaunV+jeqjM1SZaoMRklbQQ/gMjz9d/n3AgClbrVr\nBC7ABPihio8DwWb6sAZmuPcqTjO7j9UGjsj+QD7wIcNWFQuU1QaFr12GG/WZ\naQiG0WpcmwsbNpH+SKh3sfuoaCWGdXZrf7N9NBEGMHj4yvVou5BFt9SUni7W\ntIyzmWAj1oOOUpeMIyDkeMXObepD1oYhOpn/S1RnFZpH79dsSCdGJp3TNtVV\nlG6WpmCeMy/3N5RCvHGj2KqVtUKKJ3Sg/LfN2fZwRfYMZ/inNIjgN8GyetQG\nb16ZS8UcR5oIXbBVIA0P+MaQzVXwyjejG09SKDqxsaPSgIioKTndsN6OHEKL\nQZg/1kBzUAbjAF71OPef7PHda+a4kduBAchuo/mLD+v5dj9/nevaDqbyBhU7\nUa4dRT7LC82Pve+BVj+KZkyM+ROhWBGI/RsL3pAeA9iwX7MbP3bBSDztKVZn\nsTypMp4C5aeHI8RKcU1ZUfLGK510mDV4DXGAFkh50ztYVgYIIRpye8/AH2tM\nzR6x9zRDZoRsX6z9nURZ4coDcFpTWg/dBQ7FnnjdJgdbfMqPQjBg5x4tBUn+\nTAVp++Pr3goxfoxOyh7NZQ83GMSAKVI+1TCcx2pIHAVma6g3PHabDfb1PO7l\npUmR\r\n=5lYF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgqmYsnvbxMn7jLikqJGx1HrtpJ9z6CSSLfMoh3iym7QIhAIs1XY3sXF/bunILXKadWiC3gM3N26A4ej0m/taSZMG0"}]},"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"maintainers":[{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_1.4.3_1607008902368_0.9141880089599814"},"_hasShrinkwrap":false},"1.4.4":{"name":"isntnt","version":"1.4.4","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/esm/index.js","author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && yarn build:ts && yarn build:ts-esm","build:ts":"tsc -d --skipLibCheck","build:ts-esm":"tsc -p tsconfig.esm.json -d --skipLibCheck","test":"jest --watchAll --coverage","prepublishOnly":"yarn build"},"repository":{"type":"git","url":"git+https://github.com/mediamonks/isntnt.git"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^3.7.2"},"gitHead":"f31fe8092f13697d60be8f828a1d14a02ec1bc4f","bugs":{"url":"https://github.com/mediamonks/isntnt/issues"},"homepage":"https://github.com/mediamonks/isntnt#readme","_id":"isntnt@1.4.4","_nodeVersion":"11.15.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-2zjHFz6i04BFBOPltVKhLS+XoOLcPpWPvYHdEc4OCZxqMY1J8He7IbwflYAAYaHfjjPLIZ6pOnxsfufxGIqWIA==","shasum":"b1c9b217478b1a9964bf312ed7fe7dfca0501566","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-1.4.4.tgz","fileCount":531,"unpackedSize":216941,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyh7ECRA9TVsSAnZWagAAUPUP/0f325NvefzKUY8MH16v\nlZ96fDdJLXMZ1BG/1tslmYttu6jy9hPQYOtStmgb4zoJpbujvPe+8k3/8rJV\n2i16fxrrGVSCQGhimzH+fr9cM/sQq3+gvUZdysh2PicyRTH8dyFycV9KrqaS\nWqEn4Dne9y25VrYqf4z36HXcP9XrFLQ2VdnWD5CWqIOskuLiTtOrJKmPomar\nTEn7D1p1RLjWYnEK6t0wwTPhvF6Ntv06N6fZvOKyDBoaVoJQZWwt4rLNdKix\nhTiFdobx5Ipnp6+HfkD1D1ziefTA1bUFd6M5z8pdREh+G25q7RIc0SWYv+s0\nEvWaUVMcVgnK06hC/uMbN8vhxuOnjKsRoCHLHjwIEdLok1Vr2rUJz396FI9O\nK8Hj97GTbd9kkR1LxhpaIHSBLgixvnHcTKHy0mUXnJ3otK45gWVLcM/EN0+x\ngHINz5TYrbrDEyDyp43nKd6Pz4yV9Pkzpm3cWardpBLiWP17RHSgbk8TZVw1\nfwc/c86RRKKiZeWybiT4hA7MNpZ1MGl9ggujRKgQjXbOR4in53kgsQz32b4K\n5hdoDh3LgpfeTJoyDcCFpNr+r8VA4MiFSGpBNzXeAJIVItogO5BImDAazGRi\nsTQ5PtvlAca7ZRIytN1qOShajpYx39esYbBlZU/4e4YYsBoBbzH0LxrtH4Ek\nWAvV\r\n=lHlu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEWV7Hx9qix26cvVl2QXI+YvUmCLCZVb/BwuNaix+mlfAiEAjaO8f7B7OIOqjoE40RZAkZP5akNAz74E5BgyF7+yEJs="}]},"_npmUser":{"name":"thanarie","email":"thanarie@gmail.com"},"directories":{},"maintainers":[{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},{"name":"psimk","email":"p.simkevi@gmail.com"},{"name":"thi.js","email":"npm@tyz.nl"},{"name":"mientjan","email":"mientjan.stelling@gmail.com"},{"name":"devmonk","email":"devmonk@mediamonks.com"},{"name":"thanarie","email":"thanarie@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_1.4.4_1607081668037_0.17600433251726977"},"_hasShrinkwrap":false},"1.4.5":{"name":"isntnt","version":"1.4.5","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","sideEffects":false,"author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && yarn build:ts && yarn build:ts-esm","build:ts":"tsc -d --skipLibCheck","build:ts-esm":"tsc -p tsconfig.esm.json -d --skipLibCheck","test":"jest --watchAll --coverage","prepublishOnly":"yarn build"},"repository":{"type":"git","url":"git+https://github.com/mediamonks/isntnt.git"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^3.7.2"},"gitHead":"e3a097fef6e442a1f54c07d38e55d1df431ffc6d","bugs":{"url":"https://github.com/mediamonks/isntnt/issues"},"homepage":"https://github.com/mediamonks/isntnt#readme","_id":"isntnt@1.4.5","_nodeVersion":"11.15.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-oJvZ+dv3GvZdVRROOFKdu3ovNCz35Eqz5QwM9Xcm3W5Z86FlrKTlf5kuFbeAqYXc7igXouEhB9ZQgLGYerwVFg==","shasum":"8ffb3654c1df6f98d6dc0660b117ad44bfa5f7c5","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-1.4.5.tgz","fileCount":531,"unpackedSize":216969,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9wByCRA9TVsSAnZWagAAO0AP/jPCNvElyZj1DNuMy8Fl\nZLM+d58xdqlmgKZPIPkG7HTcC2El8eYGSsFNKGYNo0cFX4Gx6rdAAXttvjry\nEhJuBT6qqQ0BwzC16SVOrZ4w4r5mO0M1nhImN7LvQHgooAyah40cLhefcaZX\nSvvOUG2zCh9C2lK41+cUyUVfwKVzFQniRUIx7AStQQa87fdIkJwZxl7oXHu1\nisqFLb2/yR8WSB/5xzXYVNpjoQOWu+VWy7TZtxZLSurPnckbBhVgK5lzFuPV\ne9nVwzZ48Sk7CRPVqndUj8KcFocq8lWqFKjfcmfGvzGiFhUN4cr8n2CQK01j\nv4MVX2hTwxo3r2l5Ipu7k9nv3Jy3XE1dz8B1lyYnPb7Hrc96yTgH9x22iOQm\n4eAnXbvqLGMkxEctBwzOAC3CWYrLHFCD7DkRw6m2TzmsWTHh7gn9unShMA4V\n1rXSho6mvukB2+OZateG6X4Nep14sHa1zi5kqF9Hlw0f647WNKIjWXh98go6\n4h5XW9T2PvH4rIx1p2LRSMsj8hMdBLh4RMH6UG7pcu8f/iY2EpAmlPlG3aDe\nMVhL5l3Od4Yh6mA0Ep9jOPJ5JxOPgCjb5Tu9dEdzUCtwa3l4Lx799NZR88dn\nnKsNKP3kpN4xD8pXHBjB5R6NYqGW/Fdhgosrl8cESPf0a44sLRNqkaWbEr/s\n9mup\r\n=OY4Q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGadLK1B19ub/U0AlWp1TAxyWuqafV6lmiW/jxk+p4/oAiEAxtmrLHI0CDy9/Dtiao2JRjsPy7iE011MgcsYL1y3xIU="}]},"_npmUser":{"name":"thanarie","email":"thanarie@gmail.com"},"directories":{},"maintainers":[{"name":"mientjan","email":"mientjan.stelling@gmail.com"},{"name":"devmonk","email":"devmonk@mediamonks.com"},{"name":"thanarie","email":"thanarie@gmail.com"},{"name":"thi.js","email":"npm@tyz.nl"},{"name":"psimk","email":"p.simkevi@gmail.com"},{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_1.4.5_1610023026136_0.1376537777952156"},"_hasShrinkwrap":false},"2.0.0-beta.0":{"name":"isntnt","version":"2.0.0-beta.0","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","sideEffects":false,"author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && yarn build:ts && yarn build:ts-esm","build:ts":"tsc -d --skipLibCheck","build:ts-esm":"tsc -p tsconfig.esm.json -d --skipLibCheck","test":"jest --watchAll --coverage","prepublishOnly":"yarn build"},"repository":{"type":"git","url":"git+https://github.com/mediamonks/isntnt.git"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^4.2.3"},"readme":"Isntnt is a collection of composable JavaScript runtime type predicates with TypeScript type guard declarations. Supports generics including union and intersection types.\n\n# Generics\n\n## above\n`(floor: number) => (value: unknown) => value is number`\n\n```typescript\nconst isAboveZero = above(0)\n```\n\n## and\n`<T extends Array<Predicate<any>>>(...predicates: T) => (value: unknown) => value is Predicate<Intersect<Static<T[number]>>>`\n\n```typescript\nconst isBetween0And21 = and(above(0), below(21))\n\nconst isUser = shape({ name: isString })\nconst hasEmailAddress = at('email', isString)\n\nconst isUserWithEmail = and(isUser, hasEmailAddress) // (value: unknown) => { name: string } & { email: string }\n```\n\n## array\n`<T>(predicate: Predicate<T>) => (value: unknown) => value is Array<T>`\n\n```typescript\nconst isAnyArray = array(isAny) // (value: unknown) => value is Array<any>\n```\n\n## at\n`<T extends PropertyKey, U>(key: T, predicate: Predicate<U>) => (value: unknown) => value is { [P in T]: U }`\n\n```typescript\nconst isAnyAtFoo = at('foo', isAny) // (value: unknown) => value is { foo: any }\n```\n\n## below\n`(max: number) => (value: unknown) => value is number`\n\n```typescript\nconst isBelow21 = below(21)\n```\n\n## either\n`<T extends Array<Primitive>>(...literalValues: T) => (value: unknown) => value is T[number]`\n\n```typescript\nconst isFooOrBar = either('foo', 'bar') // (value: unknown) => value is 'foo' | 'bar'\n```\n\n## has\n`<T extends PropertyKey>(key: T) => (value: unknown) => value is { [P in T]: unknown }`\n\n```typescript\nconst hasFoo = has('foo') // (value: unknown) => value is { 'foo': unknown }\n```\n\n## instance\n`<T extends Constructor<any, any>>(constructor: T) => (value: unknown) => value is InstanceType<T>`\n\n```typescript\nconst isInstanceofString = instance(String) // (value: unknown) => value is String\n```\n\n## literal\n`<T extends Primitive>(literalValue: T) => (value: unknown) => value is T`\n\n```typescript\nconst is42 = literal(42) // (value: unknown) => value is 42\n```\n\n## max\n`<T extends number>(max: number) => (value: unknown) => value is number`\n\n```typescript\nconst isMax255 = max(255)\n```\n\n## maybe\n`<T>(predicate: Predicate<T>) => (value: unknown) => value is T | null | undefined`\n\n```typescript\nconst isMaybeString = maybe(isString) // (value: unknown) => value is string | null | undefined\n```\n\n## min\n`(min: number) => (value: unknown) => value is number`\n\n```typescript\nconst isMin18 = min(18)\n```\n\n## noneable\n\nAliases [`maybe`](#maybe)\n\n## nullable\n`<T>(predicate: Predicate<T>) => (value: unknown) => value is T | null`\n\n```typescript\nconst isNullableString = nullable(isString) // (value: unknown) => value is string | null\n```\n\n## object\n`<T>(predicate: Predicate<T>) => (value: unknown) => value is Record<any, T>`\n\n```typescript\nconst isEnum = object(isUint) // (value: unknown) => value is Record<any, number>\n```\n\n## optional\n`<T>(predicate: Predicate<T>) => (value: unknown) => value is T | undefined`\n\n```typescript\nconst isOptionalString = optional(isString) // (value: unknown) => value is string | undefined\n```\n\n## or\n`<T extends Array<Predicate<any>>>(...predicates: T) => (value: unknown) => value is Static<T[number]>`\n\n```typescript\nconst isStringOrNumber = or(isString, isNumber) // (value: unknown) => value is string | number\n```\n\n## record\n`<T extends PropertyKey, U>(keyPredicate: Predicate<T>, valuePredicate: Predicate<U>) => (value: unknown) => value is Record<T, U>`\n\n```typescript\nconst isDictionary = record(isString, isInt) // (value: unknown) => value is Record<string, number>\n```\n\n## shape\n`<T extends Record<PropertyKey, Predicate<any>>>(predicates: T) => (value: unknown) => value is { [P in keyof T]: Static<T[P]> }`\n\n> Note: Actual signature also considers optional members (`{ name?: T }`) in its `Predicate` type\n\n```typescript\nconst isCoordinate = shape({ x: isNumber, y: isNumber }) // (value: unknown) => value is { x: number, y: number }\n```\n\n## test\n`(expression: RegExp) => (value: unknown) => value is string`\n\n```typescript\nconst isSlug = test(/^[\\w-]+$/)\n```\n\n## tuple\n`<T extends Array<any>>(...predicates: { [K in keyof T]: Predicate<T[K]> }) => (value: unknown) => value is T`\n\n```typescript\nconst isPoint = tuple(isNumber, isNumber) // (value: unknown) => value is [number, number]\n```\n\n# Predicates\n\n## isAny\n`(value: unknown) => value is any`\n\nAlways returns `true`.\n\n```typescript\nisAny(value)\n```\n\n## isArray\n`(value: unknown) => value is Array<unknown>`\n\n```typescript\nisArray(value)\n```\n\n## isArrayLike\n`(value: unknown) => value is Record<number, unknown>`\n\n```typescript\nisArrayLike(value)\n```\n\n## isBigInt\n`(value: unknown) => value is bigint`\n\n```typescript\nisBigInt(value)\n```\n\n## isBoolean\n`(value: unknown) => value is boolean`\n\n```typescript\nisBoolean(value)\n```\n\n## isDate\n`(value: unknown) => value is Date`\n\n```typescript\nisDate(value)\n```\n\n## isDictionary\n`(value: unknown) => value is Record<any, string>`\n\n```typescript\nisDictionary(value)\n```\n\n## isFalse\n`(value: unknown) => value is false`\n\n```typescript\nisFalse(value)\n```\n\n## isFunction\n`(value: unknown) => value is Function`\n\n```typescript\nisFunction(value)\n```\n\n## isInt\n`(value: unknown) => value is number`\n\n```typescript\nisInt(value)\n```\n\n## isInt8\n`(value: unknown) => value is number`\n\n```typescript\nisInt8(value)\n```\n\n## isInt16\n`(value: unknown) => value is number`\n\n```typescript\nisInt16(value)\n```\n\n## isInt32\n`(value: unknown) => value is number`\n\n```typescript\nisInt32(value)\n```\n\n## isLength\n`(value: unknown) => value is number`\n\n```typescript\nisLength(value)\n```\n\n## isMap\n`(value: unknown) => value is Map<any, unknown>`\n\n```typescript\nisMap(value)\n```\n\n## isNegative\n`(value: unknown) => value is number`\n\n```typescript\nisNegative(value)\n```\n\n## isNever\n`(value: unknown) => value is never`\n\nAlways returns `false`;\n\n```typescript\nisNever(value)\n```\n\n## isNone\n`(value: unknown) => value is null | undefined`\n\n```typescript\nisNone(value)\n```\n\n## isNull\n`(value: unknown) => value is null`\n\n```typescript\nisNull(value)\n```\n\n## isNumber\n`(value: unknown) => value is number`\n\n```typescript\nisNumber(value)\n```\n\n## isObject\n`(value: unknown) => value is object`\n\n```typescript\nisObject(value)\n```\n\n## isObjectLike\n`(value: unknown) => value is ObjectLike`\n\n```typescript\nisObjectLike(value)\n```\n\n## isPlainObject\n`(value: unknown) => value is {}`\n\n```typescript\nisPlainObject(value)\n```\n\n## isPositive\n`(value: unknown) => value is number`\n\n```typescript\nisPositive(value)\n```\n\n## isPrimitive\n`(value: unknown) => value is Primitive`\n\n```typescript\nisPrimitive(value)\n```\n\n\n## isRegExp\n`(value: unknown) => value is RegExp`\n\n```typescript\nisRegExp(value)\n```\n\n## isSerializable\n`(value: unknown) => value is Serializable`\n\n```typescript\nisSerializable(value)\n```\n\n## isSerializableArray\n`(value: unknown) => value is Array<Serializable>`\n\n```typescript\nisSerializableArray(value)\n```\n\n## isSerializableNumber\n`(value: unknown) => value is number`\n\n```typescript\nisSerializableNumber(value)\n```\n\n## isSerializableObject\n`(value: unknown) => value is Record<string, Serializable>`\n\n```typescript\nisSerializableObject(value)\n```\n\n## isSerializablePrimitive\n`(value: unknown) => value is SerializablePrimitive`\n\n```typescript\nisSerializablePrimitive(value)\n```\n\n## isSet\n`(value: unknown) => value is Set<unknown>`\n\n```typescript\nisSet(value)\n```\n\n## isSome\n`(value: unknown) => value is Some`\n\n```typescript\nisSome(value)\n```\n\n## isString\n`(value: unknown) => value is string`\n\n```typescript\nisString(value)\n```\n\n## isSymbol\n`(value: unknown) => value is symbol`\n\n```typescript\nisSymbol(value)\n```\n\n## isTrue\n`(value: unknown) => value is true`\n\n```typescript\nisTrue(value)\n```\n\n## isUint\n`(value: unknown) => value is number`\n\n```typescript\nisUint(value)\n```\n\n## isUint8\n`(value: unknown) => value is number`\n\n```typescript\nisUint8(value)\n```\n\n## isUint16\n`(value: unknown) => value is number`\n\n```typescript\nisUint16(value)\n```\n\n## isUint32\n`(value: unknown) => value is number`\n\n```typescript\nisUint32(value)\n```\n\n## isUndefined\n`(value: unknown) => value is undefined`\n\n```typescript\nisUndefined(value)\n```\n\n## isWeakMap\n`(value: unknown) => value is WeakMap<any, unknown>`\n\n```typescript\nisWeakMap(value)\n```\n\n## isWithLength\n`(value: unknown) => value is { length: number }`\n\n```typescript\nisWithLength(value)\n```\n\n# Types\n\n## Intersect\n\n```typescript\nIntersect<A | B> // A & B\n```\n\n## Maybe\n\n```typescript\nMaybe<T> // T | null | undefined\n```\n\n```typescript\ntype MaybeString = Maybe<string> // string | null | undefined\n```\n\n## None\n\n```typescript\nNone // null | undefined\n```\n\n## Nullable\n\n```typescript\nNullable<T> // T | null\n```\n\n```typescript\ntype NullableString = Nullable<string> // string | null\n```\n\n## Optional\n\n```typescript\nOptional<T> // T | undefined\n```\n\n```typescript\ntype OptionalString = Optional<string> // string | undefined\n```\n\n## Predicate\n\n```typescript\nPredicate<T> // (value: unknown, ...rest: Array<unknown>) => value is T\n```\n\n## Primitive\n\n```typescript\nPrimitive // null | undefined | boolean | number | string | symbol | bigint\n```\n\n## Serializable\n\n```typescript\nSerializable // SerializableArray | SerializableObject | SerializablePrimitive\n```\n\n## SerializableArray\n\n```typescript\nSerializableArray // Array<Serializable>\n```\n\n## SerializableObject\n\n```typescript\nSerializableObject // Partial<{ [key: string]: Serializable }>\n```\n\n## SerializablePrimitive\n\n```typescript\nSerializablePrimitive // null | boolean | number | string\n```\n\n## Some\n\n```typescript\nSome // Function | boolean | bigint | number | string | symbol | object\nSome<T> // Exclude<T, undefined | null>\n```\n\n```typescript\n// Make sure `T` is not `null` or `undefined`\ntype Option<T extends Some, E extends Error> = T | E\n\n// Remove `null` or `undefined` from a type\ntype MaybeString = Optional<string> // string | null | undefined\ntype SomeString = Some<MaybeString> // string\n```\n\n## Static\n\n```typescript\nStatic<Predicate<T>> // T\n```\n\n```typescript\ntype True = Static<typeof isTrue> // true\n```\n","readmeFilename":"README.md","gitHead":"869b0a67e56ccb6d7bba52c519c67665f1f33bfa","bugs":{"url":"https://github.com/mediamonks/isntnt/issues"},"homepage":"https://github.com/mediamonks/isntnt#readme","_id":"isntnt@2.0.0-beta.0","_nodeVersion":"14.7.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-aIJ0WBh+7YomQVZVr9rMD1LaTAMG9Opw+J55eTNwd7V1EWLx2J+wfaqaLS3hvBL3L8FZAn317j7AcCN1JZ+NKQ==","shasum":"4fa13d1468f437ab37981e3b18773b02499535cf","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-2.0.0-beta.0.tgz","fileCount":533,"unpackedSize":239422,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgW2+HCRA9TVsSAnZWagAAwoAP/09fTWJjtB+ZYx0ju94C\n3Y1b9yfqAKz1qSzFjy9E3bllEaab3UMAgTKquZwAWiw5VqUQQIhjtAPBWuBN\nqG1bkb34Ag/6qDoFWB58zerB/fIRqhGb6nzXIypqzMf2a0AI1XojCYPON3Vw\nA2N2G0J3du0hBCrtXkxId8Sr2hNr3HXbkvqvQex4f5gs0mywMWGYTFZy18Zt\n6L99mEtCwbCIc3BFTntHSdszDAxog4wNC9APe5TohSVTecq0TfbLY4pDzLA8\ndvI9MYKlmk+o2RoJqpWYpc3+fQYcKJJfeI9UKHfvYlxWAew3fnQkhiaYuls8\nEG2mLrMFnXOZ8n6T+pGjg9hAAYNhwiRouwx9lkPCr7rNGTj0L6UTHYQ+QJiu\nOoK587caXfG96RCTzUn23b0h/Pmbaj1enEbM420udthL69EDT3+uIiQXtmm+\nheV0APe/igXLiiCXnStbtqdHkoA3kddKF7LwyCuSw8vHmIhz4gL7SKjis9X1\ngNVkng9H/soxOp1Nb1vwP/xu3Tf90Dt77N4FyWN0BYK+T1cuVSmLjjgyNhWM\nXqiFBEiUKtj8QOiE8Tt2nX70UB4BAPG/0YoLKutN+fIyOALxT604JQwcxecn\nLPxPueL+r2MRzAXNl5aOiWBnJPA1JMeSrMdiA7Kj4QXGFimKfTQb862T4K0I\ntBiu\r\n=QgEq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICYsHw5I+MbjrRS3Vxrre4ZtQYeQnW/QPPrNuX4Orjt2AiB7ofIceAyJkoWdd2wTnfCPvS+C4J0ATTIX9uOvg3DL6Q=="}]},"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"maintainers":[{"name":"mientjan","email":"mientjan.stelling@gmail.com"},{"name":"devmonk","email":"devmonk@mediamonks.com"},{"name":"thanarie","email":"thanarie@gmail.com"},{"name":"thi.js","email":"npm@tyz.nl"},{"name":"psimk","email":"p.simkevi@gmail.com"},{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_2.0.0-beta.0_1616605062661_0.9013343108913001"},"_hasShrinkwrap":false},"2.0.0-beta.1":{"name":"isntnt","version":"2.0.0-beta.1","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","sideEffects":false,"author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && yarn build:ts && yarn build:ts-esm","build:ts":"tsc -d --skipLibCheck","build:ts-esm":"tsc -p tsconfig.esm.json -d --skipLibCheck","test":"jest --watchAll --coverage","prepublishOnly":"yarn build"},"repository":{"type":"git","url":"git+https://github.com/mediamonks/isntnt.git"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^4.2.3"},"readme":"Isntnt is a collection of composable JavaScript runtime type predicates with TypeScript type guard declarations. Supports generics including union and intersection types.\n\n# Predicates\n\nA predicate is a function that checks whether a value matches a certain type, it always returns a boolean. Well known examples of JavaScript predicates are `Array.isArray`, `isNan`, and `Number.isNaN`. With `isntnt` you add a whole slew of additional predicates to your toolbox, they are listed below.\n\n## hasLength\n\nReturns `true` when you pass an object with a length property that is a valid [`length`](#isLength).\n\n```typescript\nisWithLength(value)\n```\n\n## isAny\n\nAlways returns `true`.\n\n```typescript\nisAny(value)\n```\n\n## isArray\n\nReturns `true` when you pass an array.\n\n```typescript\nisArray(value)\n```\n\n## isArrayLike\n\nReturns `true` when you pass a object that is not a function with a length property that is a valid [`length`](#isLength).\n\n```typescript\nisArrayLike(value)\n```\n\n## isBigInt\n\nReturns `true` when you pass a bigint.\n\n```typescript\nisBigInt(value)\n```\n\n## isBoolean\n\nReturns `true` when you pass a boolean.\n\n```typescript\nisBoolean(value)\n```\n\n## isDate\n\nReturns `true` when you pass a Date object.\n\n```typescript\nisDate(value)\n```\n\n## isDictionary\n\nReturns `true` when you pass an object of which each property name, and each property value are a string.\n\n```typescript\nisDictionary(value)\n```\n\n## isFalse\n\nReturns `true` when you pass `false`.\n\n```typescript\nisFalse(value)\n```\n\n## isFunction\n\nReturns `true` when you pass a function.\n\n```typescript\nisFunction(value)\n```\n\n## isInt\n\nReturns `true` when you pass an integer (a whole number).\n\n```typescript\nisInt(value)\n```\n\n## isInt8\n\nReturns `true` when you pass an [integer](#isInt) ranging from -128 to 127.\n\n```typescript\nisInt8(value)\n```\n\n## isInt16\n\nReturns `true` when you pass an [integer](#isInt) ranging from -32,768 to 32,767.\n\n```typescript\nisInt16(value)\n```\n\n## isInt32\n\nReturns `true` when you pass an [integer](#isInt) ranging from -2,147,483,648 to 2,147,483,647.\n\n```typescript\nisInt32(value)\n```\n\n## isLength\n\nAlias to [`isUint32`](#isUint32).\n\n```typescript\nisLength(value)\n```\n\n## isMap\n\nReturns `true` when you pas a Map object.\n\n```typescript\nisMap(value)\n```\n\n## isNegative\n\nReturns `true` when you pas a negative number (including -0).\n\n```typescript\nisNegative(value)\n```\n\n## isNever\n\nAlways returns `false`.\n\n```typescript\nisNever(value)\n```\n\n## isNone\n\nReturns `true` when you pass `null` or `undefined`.\n\n```typescript\nisNone(value)\n```\n\n## isNull\n\nReturns `true` when you pass `null`.\n\n```typescript\nisNull(value)\n```\n\n## isNumber\n\nReturns `true` when you pass a number that is not `NaN`.\n\n```typescript\nisNumber(value)\n```\n\n## isObject\n\nReturns `true` when you pass an object that is not `null`.\n\n```typescript\nisObject(value)\n```\n\n## isObjectLike\n\nReturns `true` when you pass an value that is not a boolean, `null`, or `undefined`.\n\n```typescript\nisObjectLike(value)\n```\n\n## isPlainObject\n\nReturns `true` when you pass an object that was constructed by `Object`.\n\n```typescript\nisPlainObject(value)\n```\n\n## isPositive\n\nReturns `true` when you pass a positive number.\n\n```typescript\nisPositive(value)\n```\n\n## isPrimitive\n\nReturns `true` when you pass `null`, `undefined`, a boolean, bigint, number, symbol, or string.\n\n```typescript\nisPrimitive(value)\n```\n\n## isRegExp\n\nReturns `true` when you pass a RegExp object.\n\n```typescript\nisRegExp(value)\n```\n\n## isSerializable\n\nReturns `true` when you pass a [serializable primitive](#isSerializablePrimitive), a [serializable array](#isSerializableArray), or [serializable object](#isSerializableObject).\n\n```typescript\nisSerializable(value)\n```\n\n## isSerializableArray\n\nReturns `true` when you pass an array where every element is [serializable](#isSerializable).\n\n```typescript\nisSerializableArray(value)\n```\n\n## isSerializableNumber\n\nReturns `true` when you pass a number that is not `NaN`, `Infinity`, or `-Infinity`.\n\n```typescript\nisSerializableNumber(value)\n```\n\n## isSerializableObject\n\nReturns `true` when you pass an object where every property is [serializable](#isSerializable).\n\n```typescript\nisSerializableObject(value)\n```\n\n## isSerializablePrimitive\n\nReturns `true` when you pass `null`, a [serializable number](#isSerializableNumber), a boolean, bigint, symbol, or string.\n\n```typescript\nisSerializablePrimitive(value)\n```\n\n## isSet\n\nReturns `true` when you pas a Set object.\n\n```typescript\nisSet(value)\n```\n\n## isSome\n\nReturns `true` when you pas a value other than `null` or `undefined`.\n\n```typescript\nisSome(value)\n```\n\n## isString\n\nReturns `true` when you pas a string.\n\n```typescript\nisString(value)\n```\n\n## isSymbol\n\nReturns `true` when you pas a symbol.\n\n```typescript\nisSymbol(value)\n```\n\n## isTrue\n\nReturns `true` when you pas `true`.\n\n```typescript\nisTrue(value)\n```\n\n## isUint\n\nReturns `true` when you pass a positive [integer](#isInteger).\n\n```typescript\nisUint(value)\n```\n\n## isUint8\n\nReturns `true` when you pass an [unsigned integer](#isUint) ranging from 0 to 255.\n\n```typescript\nisUint8(value)\n```\n\n## isUint16\n\nReturns `true` when you pass an [unsigned integer](#isUint) ranging from 0 to 65,535.\n\n```typescript\nisUint16(value)\n```\n\n## isUint32\n\nReturns `true` when you pass an [unsigned integer](#isUint) ranging from 0 to 4,294,967,295.\n\n```typescript\nisUint32(value)\n```\n\n## isUndefined\n\nReturns `true` when you pass `undefined`.\n\n```typescript\nisUndefined(value)\n```\n\n## isWeakMap\n\nReturns `true` when you pass a `WeakMap` object.\n\n```typescript\nisWeakMap(value)\n```\n\n# Predicate factories\n\nPredicate factories is where the real fun begins, they allow you to create and combine predicates of your own to create new predicates. By composing predicates you can describe objects, union types, number ranges, and so on.\n\n## above\n\nCreate a predicate based on a floor value, it checks if a [number](#isNumber) exceeds the floor value it’s given. This is an analogue to the `>` operator.\n\n```typescript\nconst isAboveZero = above(0)\n\nisAboveZero(-1) // false\nisAboveZero(12) // true\n```\n\nThe `isAboveZero` predicate above returns `true` when you pass a [number](#isNumber) that is greater than `0`.\n\n## and\n\nCreate a predicate based on several other predicates, it returns `true` if every predicate that is passed also returns `true`. This is an analogue to the `&&` operator.\n\n```typescript\nconst adultAge = 18\nconst isMinorAge = and(isUint, below(adultAge))\n\nisMinorAge(12) // true\nisMinorAge(33) // false\n```\n\nThe `isMinorAge` predicate above returns `true` when you pass an [unsigned integer](#isUint) that is below 18.\n\n```typescript\nconst isUser = shape({ name: isString })\nconst hasEmailAddress = shape({ email: isString })\n\nconst isUserWithEmail = and(isUser, hasEmailAddress)\n```\n\nThe `isUserWithEmail` predicate above returns `true` when you pass an object with a `name` and an `email` property, both of which are a string.\n\n## array\n\nCreate a predicate that checks every array element, it returns `true` when its predicate returns `true` for every element in an array.\n\n```typescript\nconst isNumberArray = array(isNumber)\n```\n\nThe `isNumberArray` predicate above returns `true` when you pass an array of which every element is a [number](#isNumber).\n\n## at\n\nCreate a predicate based on a property key and another predicate, it returns `true` when its predicate returns `true` for the value of an object at its given key.\n\n```typescript\nconst isStringAtName = at('name', isString)\n\nisStringAtName({ name: 'Jane' }) // true\nisStringAtName({ name: null }) // false\n```\n\nThe `isStringAtName` predicate above returns `true` when you pass an object of which the `name` property is a string.\n\n## below\n\nCreate a predicate based on a ceiling value, it checks if a [number](#isNumber) is below the ceiling value it’s given. This is an analogue to the `<` operator.\n\n```typescript\nconst isBelow100 = below(100)\n\nisBelow100(124) // false\nisBelow100(32) // true\n```\n\nThe `isBelow100` predicate above returns `true` when you pass a [number](#isNumber) that is less than `100`.\n\n## either\n\nCreate a predicate based on several [literal](#literal) values, it returns `true` if a value matches either of the primitive values it’s given.\n\n```typescript\nconst isAOrB = either('a', 'b')\n\nisAOrB('a') // true\nisAOrB('c') // false\n```\n\nThe `isAOrB` predicate above returns `true` when you pass either `a`, or `b`.\n\n## has\n\nCreate a predicate based on a property key, it returns `true` if an object has a property of the key it’s given.\n\n```typescript\nconst hasName = has('name')\n\nhasName({ name: null }) // true\nhasName({ age: 36 }) // false\n```\n\nThe `hasName` predicate above returns `true` when you pass an object that has a `name` property.\n\n## instance\n\nCreate a predicate based on a constructor, it returns `true` if an object is an instance of the constructor key it’s given.\n\n```typescript\nconst isInstanceofString = instance(String)\n\nisInstanceofString(new String('foo')) // true\nisInstanceofString('foo') // false\n```\n\nThe `isInstanceofString` predicate above returns `true` when you pass a String object.\n\n## literal\n\nCreate a predicate based a [primitive](#isPrimitive) value, it returns `true` if a value equals the primitive value it’s given.\n\n```typescript\nconst is42 = literal(42)\n\nis42(42) // true\nis42(43) // false\n```\n\nThe `is42` predicate above returns `true` when you pass `42`.\n\n## max\n\nCreate a predicate based on a max. value, it checks if a [number](#isNumber) is below or equal to the max. value it’s given. This is an analogue to the `<=` operator.\n\n```typescript\nconst isMax100 = max(100)\n\nisMax100(100) // true\nisMax100(101) // false\n```\n\nThe `isMax100` predicate above returns `true` when you pass a [number](#isNumber) that is below or equal to `100`.\n\n## maybe\n\nCreate a predicate based on another predicate, it checks if a value matches it’s given predicate, or equals `null` or `undefined`.\n\n```typescript\nconst isMaybeString = maybe(isString)\n\nisMaybeString(null) // true\nisMaybeString(12) // false\n```\n\nThe `isMaybeString` predicate above returns `true` when you pass a string, `null`, or `undefined`.\n\n## min\n\nCreate a predicate based on a min. value, it checks if a [number](#isNumber) is above or equal to the min. value it’s given. This is an analogue to the `>=` operator.\n\n```typescript\nconst isMin100 = min(100)\n\nisMin100(100) // true\nisMin100(99) // false\n```\n\nThe `isMin0` predicate above returns `true` when you pass a [number](#isNumber) that is above or equal to `100`.\n\n## noneable\n\nAliases [`maybe`](#maybe).\n\n## nullable\n\nCreate a predicate based on another predicate, it checks if a value matches it’s given predicate, or equals `null`.\n\n```typescript\nconst isNullableString = nullable(isString)\n\nisNullableString(null) // true\nisNullableString(12) // false\n```\n\nThe `isNullableString` predicate above returns `true` when you pass a string or `null`.\n\n## object\n\nCreate a predicate that checks every object property, it returns `true` when its predicate returns `true` for every object value.\n\n```typescript\nconst isEnumerable = object(isUint)\n```\n\nThe `isEnumerable` predicate above returns `true` when you pass an object of which every element is an [unsigned integer](#isUint).\n\n## optional\n\n`<T>(predicate: Predicate<T>) => (value: unknown) => value is T | undefined`\n\n```typescript\nconst isOptionalString = optional(isString)\n\nisOptionalString(undefined) // true\nisOptionalString(12) // false\n```\n\nThe `isOptionalString` predicate above returns `true` when you pass a string or `undefined`.\n\n## or\n\nCreate a predicate based on several other predicates, it returns `true` if some predicate that is passed also returns `true`. This is an analogue to the `||` operator.\n\n```typescript\nconst isContent = or(isString, isSerializableNumber)\n\nisContent(12) // true\nisContent(null) // false\n```\n\nThe `isContent` predicate above returns `true` when you pass a string or a [primitive number](#isPrimitiveNumber).\n\n```typescript\nconst isStringOrNumber = or(isString, isNumber)\n\nisStringOrNumber(8) // true\nisStringOrNumber([]) // false\n```\n\n## record\n\nCreate a predicate based on a key predicate and a value predicate, it returns `true` if each property key of an object returns `true` for its key predicate, and each value returns `true` for its value predicate.\n\n```typescript\nconst isValidKey = either('a', 'b')\n\nconst isKeyValueMap = record(isValidKey, isInt)\n\nisKeyValueMap({ a: 2 }) // true\nisKeyValueMap({ a: null }) // false\nisKeyValueMap({ c: 2 }) // false\n```\n\nThe `isKeyValueMap` predicate above returns `true` when you pass an object where each key is either `a` or `b`, and each property value is an [integer](#isInt).\n\n## shape\n\nCreate a predicate based on a predicate object, it returns `true` if each property value of an object returns `true` for its corresponding predicate.\n\n```typescript\nconst isPoint = shape({ x: isNumber, y: isNumber })\n\nisPoint({ x: 12, y: 36 }) // true\nisPoint({ x: 12 }) // false\n```\n\nThe `isPoint` predicate above returns `true` when you an pass an object where both `x` and `y` properties are a [number](#isNumber).\n\n## test\n\n```typescript\nconst isSlug = test(/^[A-Z0-9-]+$/i)\n\nisSlug('foo-bar') // true\nisSlug('!#$') // false\n```\n\nThe `isSlug` predicate above returns `true` when you an pass a string that matches `/^[A-Z0-9-]+$/i`.\n\n## tuple\n\nCreate a predicate based on index-based predicates, it returns `true` if the element at each index of an array with a fixed length returns `true` for its corresponding predicate.\n\n```typescript\nconst isLatitude = and(min(-90), max(90))\nconst isLongitude = and(min(-180), max(180))\n\nconst isLatLong = tuple(isLatitude, isLongitude)\n\nisLatLong(45, -120) // true\nisLatLong(120, 200) // false\n```\n\nThe `isLatLong` predicate above returns `true` when you an pass an array with a length of 2 where index 0 is a latitude, and index 1 is a longitude value.\n\n# Types\n\n## Intersect\n\n```typescript\ntype User = Intersect<{ name: string } | { email: string }>\n```\n\nequals\n\n```typescript\ntype User = {\n  name: string\n} & {\n  email: string\n}\n```\n\n## Maybe\n\nUnions a type with `null` and `undefined`.\n\n```typescript\ntype MaybeString = Maybe<string>\n```\n\nequals\n\n```typescript\ntype MaybeString = string | null | undefined\n```\n\n## None\n\nUnion of `null` and `undefined`.\n\n```typescript\ntype NoneType = None\n```\n\nequals\n\n```typescript\ntype NoneType = null | undefined\n```\n\n## Nullable\n\nUnions a type with `null`.\n\n```typescript\ntype NullableString = Nullable<string>\n```\n\nequals\n\n```typescript\ntype NullableString = string | null\n```\n\n## Optional\n\nUnions a type with `undefined`.\n\n```typescript\ntype OptionalString = Optional<string>\n```\n\nequals\n\n```typescript\ntype OptionalString = string | undefined\n```\n\n## Predicate\n\nDescribes a predicate function signature\n\n```typescript\ntype IsString = Predicate<string>\n```\n\nequals\n\n```typescript\ntype IsString = <T>(value: T) => value is Extract<T, string>\n```\n\n## Primitive\n\nUnion of all primitive types.\n\n```typescript\ntype PrimitiveType = Primitive\n```\n\nequals\n\n```typescript\ntype PrimitiveType = null | undefined | boolean | number | string | symbol | bigint\n```\n\n## Serializable\n\n```typescript\ntype SerializableType = Serializable\n```\n\nequals\n\n```typescript\ntype SerializableType = SerializableArray | SerializableObject | SerializableObject\n```\n\n## SerializableArray\n\n```typescript\ntype SerializableArrayType = SerializableArray\n```\n\nequals\n\n```typescript\ntype SerializableArrayType = Array<Serializable> | ReadonlyArray<Serializable>\n```\n\n## SerializableObject\n\n```typescript\ntype SerializableObjectType = SerializableObject\n```\n\nequals\n\n```typescript\ntype SerializableObjectType = { [key: string]: Serializable | undefined }\n```\n\n## SerializablePrimitive\n\n```typescript\ntype SerializablePrimitiveType = SerializablePrimitive\n```\n\nequals\n\n```typescript\ntype SerializablePrimitiveType = null | boolean | number | string\n```\n\n## Some\n\nExcludes `null` and `undefined` from type.\n\n```typescript\ntype SomeType = Some\ntype SomeString = Some<string | null>\n```\n\nequals\n\n```typescript\ntype SomeType = Function | boolean | bigint | number | string | symbol | object\ntype SomeString = string\n```\n\n## Static\n\nExtracts type parameter from Predicate type. This is useful to extract TypeScript types from (complex) predicates.\n\n```typescript\ntype PredicateType = Static<Predicate<string>>>\n```\n\nequals\n\n```typescript\ntype PredicateType = string\n```\n","readmeFilename":"README.md","gitHead":"dbef57274abadf96249c75c02f6ba8f558e39593","bugs":{"url":"https://github.com/mediamonks/isntnt/issues"},"homepage":"https://github.com/mediamonks/isntnt#readme","_id":"isntnt@2.0.0-beta.1","_nodeVersion":"14.7.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ksv1qyXadFzao0ltj5G1DGWDHxRtsxaJOCT7+TAYZtgjVt1CK2GSnAOcQXrA9eJNsQy4A2T78OkbWmAQIqImgA==","shasum":"f78bd703209d153d4f654617c3a4be8a5071e762","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-2.0.0-beta.1.tgz","fileCount":540,"unpackedSize":246337,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgW5F0CRA9TVsSAnZWagAAW10QAJjTrGQw2PsUZzetkpOk\nlM5lF83FdggvzUbcT7jRUFRpNanTYM+iCWbi7jDYDnTCm5VBW/isxR+h5Lsk\nKumFOyUnLPURwyQ2AGq3mw8FuszHfqYpGUUEgeOcMpTPH0rOxcy/Tm+pLjIy\nZGHI3ZAwleZ8Hfc0MIqD5TywGIQkwFgc8FAE4CU5GkSsfnHmo080SLUw1RYx\nlKCnFh/5OQaR8aYZcnoFw34TNnK6t24pEnOF7gO+1ImSwVu9cw1Gq46ppHEQ\nDonrnuMLbuEIlbg+mVBI+RnNhVMAlyjs0GAc/aR7g5F3BzhwXGU39Q6S0fDT\nQ3xz9ZVMkXJl1tGrdtjsyTP6Q8EnBQdAcdlocdCXYA12xIYSxlHdWMZSdZSr\nwAcEzqdox95VNJNprrBbyZq4xestIvUMBJVZGFiZyvSNWH4+DgTL3xhKNTdp\nUJ/NzZIS3vxTOJkK+jzKpv8/crpYMFnCcXyg20b+8ljDTg+7aLV89INFvaS8\nkkXOf6cTxu3z8pLMUKJtByA+wxHYQIaBt0NiQw4z3npKVxmuJaEeTtTHTS9L\np8xKRjZrAX+TIRsadmusepcOhpnTu2stCKsQYT1QnREs4sByJZ2A4vDk3C/5\novdsR9J8Vl3XI5q00QFYszRo0PSWoMYJhXcqyGRCn2bIrmCxRLHR3lG5tssG\nPqhG\r\n=4MDD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD7WesMYkcTxcrLReNmvTdYBEcGpQa5B4SATh/EzA8CjAIhAMcM18hiLRlYAxpEpPVJ45rRNC+BZ0+ufM/xRyBltZY1"}]},"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"maintainers":[{"name":"mientjan","email":"mientjan.stelling@gmail.com"},{"name":"devmonk","email":"devmonk@mediamonks.com"},{"name":"thanarie","email":"thanarie@gmail.com"},{"name":"thi.js","email":"npm@tyz.nl"},{"name":"psimk","email":"p.simkevi@gmail.com"},{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_2.0.0-beta.1_1616613747925_0.09943122334525367"},"_hasShrinkwrap":false},"2.0.0-beta.2":{"name":"isntnt","version":"2.0.0-beta.2","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","sideEffects":false,"author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && yarn build:ts && yarn build:ts-esm","build:ts":"tsc -d --skipLibCheck","build:ts-esm":"tsc -p tsconfig.esm.json -d --skipLibCheck","test":"jest --watchAll --coverage","prepublishOnly":"yarn build"},"repository":{"type":"git","url":"git+https://github.com/mediamonks/isntnt.git"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^4.2.3"},"readme":"Isntnt is a collection of composable JavaScript runtime type predicates with TypeScript type guard declarations. Supports generics including union and intersection types.\n\n# Features\n\n- [Predicates](#predicates)\n- [Predicate Factories](#predicate-factories)\n- [Types](#types)\n\n# Predicates\n\nA predicate is a function that checks whether a value matches a certain type, it always returns a boolean. Well known examples of JavaScript predicates are `Array.isArray`, `isNan`, and `Number.isNaN`. With `isntnt` you add a whole slew of additional predicates to your toolbox, they are listed below.\n\n## hasLength\n\nReturns `true` when you pass an object with a length property that is a valid [`length`](#isLength).\n\n```typescript\nhasLength(new ArrayBuffer()) // true\nhasLength({}) // false\n```\n\n## isAny\n\nAlways returns `true`.\n\n```typescript\nisAny(null) // true\nisAny(12) // true\n// always true\n```\n\n## isArray\n\nReturns `true` when you pass an array.\n\n```typescript\nisArray([]) // true\nisArray('foo') // false\n```\n\n## isArrayLike\n\nReturns `true` when you pass a object that is not a function with a length property that is a valid [`length`](#isLength).\n\n```typescript\nisArrayLike({ length: 12 }) // true\nisArrayLike(new Date()) // false\n```\n\n## isBigInt\n\nReturns `true` when you pass a bigint.\n\n```typescript\nisBigInt(116n) // true\nisBigInt(12) // false\n```\n\n## isBoolean\n\nReturns `true` when you pass a boolean.\n\n```typescript\nisBoolean(true) // true\nisBoolean(null) // false\n```\n\n## isDate\n\nReturns `true` when you pass a Date object.\n\n```typescript\nisDate(new Date()) // true\nisDate(Date.now()) // false\n```\n\n## isDictionary\n\nReturns `true` when you pass an object of which each property name, and each property value are a string.\n\n```typescript\nisDictionary({ a: 'foo' })\nisDictionary({ b: 12 })\n```\n\n## isFalse\n\nReturns `true` when you pass `false`.\n\n```typescript\nisFalse(false) // true\nisFalse(true) // false\n```\n\n## isFunction\n\nReturns `true` when you pass a function.\n\n```typescript\nisFunction(isFunction) // true\nisFunction({}) // true\n```\n\n## isInt\n\nReturns `true` when you pass an integer (a whole number).\n\n```typescript\nisInt(1) // true\nisInt(1.5) // false\n```\n\n## isInt8\n\nReturns `true` when you pass an [integer](#isInt) ranging from -128 to 127.\n\n```typescript\nisInt8(127) // true\nisInt8(128) // false\n```\n\n## isInt16\n\nReturns `true` when you pass an [integer](#isInt) ranging from -32,768 to 32,767.\n\n```typescript\nisInt16(12) // true\nisInt16(-50_000) // false\n```\n\n## isInt32\n\nReturns `true` when you pass an [integer](#isInt) ranging from -2,147,483,648 to 2,147,483,647.\n\n```typescript\nisInt32(12) // true\nisInt32(Number.MAX_SAFE_INTEGER) // false\n```\n\n## isLength\n\nAlias to [`isUint32`](#isUint32).\n\n## isMap\n\nReturns `true` when you pas a Map object.\n\n```typescript\nisMap(new Map()) // true\nisMap({}) // false\n```\n\n## isNegative\n\nReturns `true` when you pas a negative number (including -0).\n\n```typescript\nisNegative(-1) // true\nisNegative(1) // false\n```\n\n## isNever\n\nAlways returns `false`.\n\n```typescript\nisNever(null) // false\nisNever(true) // false\n// always returns false\n```\n\n## isNone\n\nReturns `true` when you pass `null` or `undefined`.\n\n```typescript\nisNone(null) // true\nisNone(128) // false\n```\n\n## isNull\n\nReturns `true` when you pass `null`.\n\n```typescript\nisNull(null) // true\nisNull(undefined) // false\n```\n\n## isNumber\n\nReturns `true` when you pass a number that is not `NaN`.\n\n```typescript\nisNumber(12) // true\nisNumber(NaN) // false\n```\n\n## isObject\n\nReturns `true` when you pass an object that is not `null`.\n\n```typescript\nisObject({}) // true\nisObject(null) // false\n```\n\n## isObjectLike\n\nReturns `true` when you pass an value that is not a boolean, `null`, or `undefined`.\n\n```typescript\nisObjectLike([]) // true\nisObjectLike(true) // false\n```\n\n## isPlainObject\n\nReturns `true` when you pass an object that was constructed by `Object`.\n\n```typescript\nisPlainObject({}) // true\nisPlainObject(new Date()) // false\n```\n\n## isPositive\n\nReturns `true` when you pass a positive number.\n\n```typescript\nisPositive(1) // true\nisPositive(-1) // false\n```\n\n## isPrimitive\n\nReturns `true` when you pass `null`, `undefined`, a boolean, bigint, number, symbol, or string.\n\n```typescript\nisPrimitive(1) // true\nisPrimitive([]) // false\n```\n\n## isRegExp\n\nReturns `true` when you pass a RegExp object.\n\n```typescript\nisRegExp(/foo/) // true\nisRegExp([]) // false\n```\n\n## isSerializable\n\nReturns `true` when you pass a [serializable primitive](#isSerializablePrimitive), a [serializable array](#isSerializableArray), or [serializable object](#isSerializableObject).\n\n```typescript\nisSerializable(12) // true\nisSerializable(console.log) // false\n```\n\n## isSerializableArray\n\nReturns `true` when you pass an array where every element is [serializable](#isSerializable).\n\n```typescript\nisSerializableArray(['foo', 1]) // true\nisSerializableArray([new Date()]) // false\n```\n\n## isSerializableNumber\n\nReturns `true` when you pass a number that is not `NaN`, `Infinity`, or `-Infinity`.\n\n```typescript\nisSerializableNumber(1) // true\nisSerializableNumber(Infinity) // false\n```\n\n## isSerializableObject\n\nReturns `true` when you pass an object where every property is [serializable](#isSerializable).\n\n```typescript\nisSerializableObject({ foo: 1 }) // true\nisSerializableObject({ bar: Infinity }) // false\n```\n\n## isSerializablePrimitive\n\nReturns `true` when you pass `null`, a [serializable number](#isSerializableNumber), a boolean, bigint, symbol, or string.\n\n```typescript\nisSerializablePrimitive(null) // true\nisSerializablePrimitive(NaN) // false\n```\n\n## isSet\n\nReturns `true` when you pas a Set object.\n\n```typescript\nisSet(new Set()) // true\nisSet([]) // false\n```\n\n## isSome\n\nReturns `true` when you pas a value other than `null` or `undefined`.\n\n```typescript\nisSome('foo') // true\nisSome(null) // false\n```\n\n## isString\n\nReturns `true` when you pas a string.\n\n```typescript\nisString('bar') // true\nisString(48) // false\n```\n\n## isSymbol\n\nReturns `true` when you pas a symbol.\n\n```typescript\nisSymbol(Symbol()) // true\nisSymbol('baz') // false\n```\n\n## isTrue\n\nReturns `true` when you pas `true`.\n\n```typescript\nisTrue(true) // true\nisTrue(false) // false\n```\n\n## isUint\n\nReturns `true` when you pass a positive [integer](#isInt).\n\n```typescript\nisUint(112) // true\nisUint(-16) // false\n```\n\n## isUint8\n\nReturns `true` when you pass an [unsigned integer](#isUint) ranging from 0 to 255.\n\n```typescript\nisUint8(255) // true\nisUint8(1.2) // false\n```\n\n## isUint16\n\nReturns `true` when you pass an [unsigned integer](#isUint) ranging from 0 to 65,535.\n\n```typescript\nisUint16(2048) // true\nisUint16(-12) // false\n```\n\n## isUint32\n\nReturns `true` when you pass an [unsigned integer](#isUint) ranging from 0 to 4,294,967,295.\n\n```typescript\nisUint32(256) // true\nisUint(Number.MAX_SAFE_INTEGER) // false\n```\n\n## isUndefined\n\nReturns `true` when you pass `undefined`.\n\n```typescript\nisUndefined(undefined) // true\nisUndefined(null) // false\n```\n\n## isWeakMap\n\nReturns `true` when you pass a `WeakMap` object.\n\n```typescript\nisWeakMap(new WeakMap()) // true\nisWeakMap(new Map()) // false\n```\n\n# Predicate factories\n\nPredicate factories is where the real fun begins, they allow you to create and combine predicates of your own to create new predicates. By composing predicates you can describe objects, union types, number ranges, and so on.\n\n## above\n\nCreate a predicate based on a floor value, it checks if a [number](#isNumber) exceeds the floor value it’s given. This is an analogue to the `>` operator.\n\n```typescript\nconst isAboveZero = above(0)\n\nisAboveZero(-1) // false\nisAboveZero(12) // true\n```\n\nThe `isAboveZero` predicate above returns `true` when you pass a [number](#isNumber) that is greater than `0`.\n\n## and\n\nCreate a predicate based on several other predicates, it returns `true` if every predicate that is passed also returns `true`. This is an analogue to the `&&` operator.\n\n```typescript\nconst adultAge = 18\nconst isMinorAge = and(isUint, below(adultAge))\n\nisMinorAge(12) // true\nisMinorAge(33) // false\n```\n\nThe `isMinorAge` predicate above returns `true` when you pass an [unsigned integer](#isUint) that is below 18.\n\n```typescript\nconst isUser = shape({ name: isString })\nconst hasEmailAddress = shape({ email: isString })\n\nconst isUserWithEmail = and(isUser, hasEmailAddress)\n```\n\nThe `isUserWithEmail` predicate above returns `true` when you pass an object with a `name` and an `email` property, both of which are a string.\n\n## array\n\nCreate a predicate that checks every array element, it returns `true` when its predicate returns `true` for every element in an array.\n\n```typescript\nconst isNumberArray = array(isNumber)\n```\n\nThe `isNumberArray` predicate above returns `true` when you pass an array of which every element is a [number](#isNumber).\n\n## at\n\nCreate a predicate based on a property key and another predicate, it returns `true` when its predicate returns `true` for the value of an object at its given key.\n\n```typescript\nconst isStringAtName = at('name', isString)\n\nisStringAtName({ name: 'Jane' }) // true\nisStringAtName({ name: null }) // false\n```\n\nThe `isStringAtName` predicate above returns `true` when you pass an object of which the `name` property is a string.\n\n## below\n\nCreate a predicate based on a ceiling value, it checks if a [number](#isNumber) is below the ceiling value it’s given. This is an analogue to the `<` operator.\n\n```typescript\nconst isBelow100 = below(100)\n\nisBelow100(124) // false\nisBelow100(32) // true\n```\n\nThe `isBelow100` predicate above returns `true` when you pass a [number](#isNumber) that is less than `100`.\n\n## either\n\nCreate a predicate based on several [literal](#literal) values, it returns `true` if a value matches either of the primitive values it’s given.\n\n```typescript\nconst isAOrB = either('a', 'b')\n\nisAOrB('a') // true\nisAOrB('c') // false\n```\n\nThe `isAOrB` predicate above returns `true` when you pass either `a`, or `b`.\n\n## has\n\nCreate a predicate based on a property key, it returns `true` if an object has a property of the key it’s given.\n\n```typescript\nconst hasName = has('name')\n\nhasName({ name: null }) // true\nhasName({ age: 36 }) // false\n```\n\nThe `hasName` predicate above returns `true` when you pass an object that has a `name` property.\n\n## instance\n\nCreate a predicate based on a constructor, it returns `true` if an object is an instance of the constructor key it’s given.\n\n```typescript\nconst isInstanceofString = instance(String)\n\nisInstanceofString(new String('foo')) // true\nisInstanceofString('foo') // false\n```\n\nThe `isInstanceofString` predicate above returns `true` when you pass a String object.\n\n## literal\n\nCreate a predicate based a [primitive](#isPrimitive) value, it returns `true` if a value equals the primitive value it’s given.\n\n```typescript\nconst is42 = literal(42)\n\nis42(42) // true\nis42(43) // false\n```\n\nThe `is42` predicate above returns `true` when you pass `42`.\n\n## max\n\nCreate a predicate based on a max. value, it checks if a [number](#isNumber) is below or equal to the max. value it’s given. This is an analogue to the `<=` operator.\n\n```typescript\nconst isMax100 = max(100)\n\nisMax100(100) // true\nisMax100(101) // false\n```\n\nThe `isMax100` predicate above returns `true` when you pass a [number](#isNumber) that is below or equal to `100`.\n\n## maybe\n\nCreate a predicate based on another predicate, it checks if a value matches it’s given predicate, or equals `null` or `undefined`.\n\n```typescript\nconst isMaybeString = maybe(isString)\n\nisMaybeString(null) // true\nisMaybeString(12) // false\n```\n\nThe `isMaybeString` predicate above returns `true` when you pass a string, `null`, or `undefined`.\n\n## min\n\nCreate a predicate based on a min. value, it checks if a [number](#isNumber) is above or equal to the min. value it’s given. This is an analogue to the `>=` operator.\n\n```typescript\nconst isMin100 = min(100)\n\nisMin100(100) // true\nisMin100(99) // false\n```\n\nThe `isMin0` predicate above returns `true` when you pass a [number](#isNumber) that is above or equal to `100`.\n\n## noneable\n\nAliases [`maybe`](#maybe).\n\n## nullable\n\nCreate a predicate based on another predicate, it checks if a value matches it’s given predicate, or equals `null`.\n\n```typescript\nconst isNullableString = nullable(isString)\n\nisNullableString(null) // true\nisNullableString(12) // false\n```\n\nThe `isNullableString` predicate above returns `true` when you pass a string or `null`.\n\n## object\n\nCreate a predicate that checks every object property, it returns `true` when its predicate returns `true` for every object value.\n\n```typescript\nconst isEnumerable = object(isUint)\n```\n\nThe `isEnumerable` predicate above returns `true` when you pass an object of which every element is an [unsigned integer](#isUint).\n\n## optional\n\n`<T>(predicate: Predicate<T>) => (value: unknown) => value is T | undefined`\n\n```typescript\nconst isOptionalString = optional(isString)\n\nisOptionalString(undefined) // true\nisOptionalString(12) // false\n```\n\nThe `isOptionalString` predicate above returns `true` when you pass a string or `undefined`.\n\n## or\n\nCreate a predicate based on several other predicates, it returns `true` if some predicate that is passed also returns `true`. This is an analogue to the `||` operator.\n\n```typescript\nconst isContent = or(isString, isSerializableNumber)\n\nisContent(12) // true\nisContent(null) // false\n```\n\nThe `isContent` predicate above returns `true` when you pass a string or a [primitive number](#isPrimitiveNumber).\n\n```typescript\nconst isStringOrNumber = or(isString, isNumber)\n\nisStringOrNumber(8) // true\nisStringOrNumber([]) // false\n```\n\n## record\n\nCreate a predicate based on a key predicate and a value predicate, it returns `true` if each property key of an object returns `true` for its key predicate, and each value returns `true` for its value predicate.\n\n```typescript\nconst isValidKey = either('a', 'b')\n\nconst isKeyValueMap = record(isValidKey, isInt)\n\nisKeyValueMap({ a: 2 }) // true\nisKeyValueMap({ a: null }) // false\nisKeyValueMap({ c: 2 }) // false\n```\n\nThe `isKeyValueMap` predicate above returns `true` when you pass an object where each key is either `a` or `b`, and each property value is an [integer](#isInt).\n\n## shape\n\nCreate a predicate based on a predicate object, it returns `true` if each property value of an object returns `true` for its corresponding predicate.\n\n```typescript\nconst isPoint = shape({ x: isNumber, y: isNumber })\n\nisPoint({ x: 12, y: 36 }) // true\nisPoint({ x: 12 }) // false\n```\n\nThe `isPoint` predicate above returns `true` when you an pass an object where both `x` and `y` properties are a [number](#isNumber).\n\n## test\n\n```typescript\nconst isSlug = test(/^[A-Z0-9-]+$/i)\n\nisSlug('foo-bar') // true\nisSlug('!#$') // false\n```\n\nThe `isSlug` predicate above returns `true` when you an pass a string that matches `/^[A-Z0-9-]+$/i`.\n\n## tuple\n\nCreate a predicate based on index-based predicates, it returns `true` if the element at each index of an array with a fixed length returns `true` for its corresponding predicate.\n\n```typescript\nconst isLatitude = and(min(-90), max(90))\nconst isLongitude = and(min(-180), max(180))\n\nconst isLatLong = tuple(isLatitude, isLongitude)\n\nisLatLong(45, -120) // true\nisLatLong(120, 200) // false\n```\n\nThe `isLatLong` predicate above returns `true` when you an pass an array with a length of 2 where index 0 is a latitude, and index 1 is a longitude value.\n\n# Types\n\n## Intersect\n\n```typescript\ntype User = Intersect<{ name: string } | { email: string }> // { name: string } & { email: string }\n```\n\n## Maybe\n\nUnions a type with `null` and `undefined`.\n\n```typescript\ntype MaybeString = Maybe<string> // string | null | undefined\n```\n\n## None\n\nUnion of `null` and `undefined`.\n\n```typescript\ntype X = None // null | undefined\n```\n\n## Nullable\n\nUnions a type with `null`.\n\n```typescript\ntype NullableString = Nullable<string> // string | null\n```\n\n## Optional\n\nUnions a type with `undefined`.\n\n```typescript\ntype OptionalString = Optional<string> // string | undefined\n```\n\n## Predicate\n\nDescribes a predicate function signature\n\n```typescript\ntype IsString = Predicate<string> // <U>(value: U): value is Extract<U, string>\n```\n\n## Primitive\n\nUnion of all primitive types.\n\n```typescript\ntype X = Primitive // null | undefined | boolean | number | string | symbol | bigint\n```\n\n## Serializable\n\n```typescript\ntype X = Serializable // SerializableArray | SerializableObject | SerializableObject\n```\n\n## SerializableArray\n\n```typescript\ntype X = SerializableArray // Array<Serializable> | ReadonlyArray<Serializable>\n```\n\n## SerializableObject\n\n```typescript\ntype X = SerializableObject // { [key: string]: Serializable | undefined }\n```\n\n## SerializablePrimitive\n\n```typescript\ntype X = SerializablePrimitive // null | boolean | number | string\n```\n\n## Some\n\nExcludes `null` and `undefined` from a type, type parameter is optional.\n\n```typescript\ntype X = Some // Function | boolean | bigint | number | string | symbol | object\ntype Y = Some<string | null> // string\n```\n\n## Static\n\nExtracts type parameter from Predicate type. This is useful to extract TypeScript types from (complex) predicates.\n\n```typescript\ntype X = Static<Predicate<string>>> // string\n```\n","readmeFilename":"README.md","gitHead":"3207b3eb285a4f6e33fc73c86801c9dfd0cfec3a","bugs":{"url":"https://github.com/mediamonks/isntnt/issues"},"homepage":"https://github.com/mediamonks/isntnt#readme","_id":"isntnt@2.0.0-beta.2","_nodeVersion":"14.7.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-4/zSb+wHS80rIaF8GmLi5wvJq3x71jYGNt5yLpsMMtbcfiMP5GL9xB/6IX0pTt4NeJnqJc9Z+sDfTiF+OvMe6A==","shasum":"8575f746ec1127255335c6a564d3d914c7b418f9","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-2.0.0-beta.2.tgz","fileCount":540,"unpackedSize":247824,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXEiFCRA9TVsSAnZWagAA2ykP/iSKnzNUeHUfvm5vzlRq\nFq2EImDUhQfh7ck+jPNz1ZlbN3z/lEaziXz8hbmqqT53pFdyEWyLZtt8Tp5g\nWCnxSi7Axk6YU/CbeBWSS/IBu19ML8usuIzb2/8+xfGea89ceOmWtmJz8rph\n4LcOQZe5MNRtmZxfAexZrKthKoCsPrP3HvIiuGuqG0ytY2W4r1XOsJwGgpn8\nYtP1b2iHgIcsZ/XQmX8CjPWLcfotqQmlWhIEK1fPlBrmrSrMmuMwRWL2Oh8J\nVePVFmnga65NC6pmY8UVFtvmcocLcPh1GyHBVFMnh42LR7lPQP7PldCxeC2i\nn7d3pmUit3mFDlrIQNxUptMkdYLOUl5S9BoQqYyizawf+Qj8gdboDjf0+djW\nhMCyP/TjgbGLOG8kBlzdJBJkC9m0kIXdFifqgeLEiRH8pdJCebGESbKyKPgj\nbxKkJ6gf1OkZdQJA5KkQOwiD9JZzpGeW/FcXGbK9/7O7YX7zXNzZS7IiTh8F\n1HcZNv3SJS1r5BcYHtZHu/utktSxOqe9E6rNzEyOvbSHdL3/l7mHHMzWNrQu\nHVWM9BAC1vjO0q/9GtByLxJVsZk00I9mYkozsIw+6v5KdAwWgPYpCPJmWN3v\nOb8BDDp7gf5Yu9hzaOwcA09dI+3OR1bARWzDcI/4zcThGnMjiHcbs9hVeE/u\nAEz5\r\n=pgsr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGkLeIUyM5DRQz5GBHrsdNN0R9AiIGXYV4BPhRMw/Q2uAiAOL/YnL51jCLPLiibiKtM0xcL6tFA/0zazyNJ1kHAzLQ=="}]},"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"maintainers":[{"name":"mientjan","email":"mientjan.stelling@gmail.com"},{"name":"devmonk","email":"devmonk@mediamonks.com"},{"name":"thanarie","email":"thanarie@gmail.com"},{"name":"thi.js","email":"npm@tyz.nl"},{"name":"psimk","email":"p.simkevi@gmail.com"},{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_2.0.0-beta.2_1616660612712_0.2946399843180896"},"_hasShrinkwrap":false},"2.0.0-beta.3":{"name":"isntnt","version":"2.0.0-beta.3","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","sideEffects":false,"author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && yarn build:ts && yarn build:ts-esm","build:ts":"tsc -d --skipLibCheck","build:ts-esm":"tsc -p tsconfig.esm.json -d --skipLibCheck","test":"jest --watchAll --coverage","prepublishOnly":"yarn build"},"repository":{"type":"git","url":"https://github.com/mediamonks/isntnt.git"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^4.2.3"},"licenseText":"Copyright © 2020 Nathan Uphoff\n\nThis work is free. You can redistribute it and/or modify it under the\nterms of the Do What The Fuck You Want To Public License, Version 2,\nas published by Sam Hocevar.\n\n  DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n                   Version 2, December 2004\n\nCopyright (C) 2004 Sam Hocevar\n 14 rue de Plaisance, 75014 Paris, France\nEveryone is permitted to copy and distribute verbatim or modified\ncopies of this license document, and changing it is allowed as long\nas the name is changed.\n\n           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. You just DO WHAT THE FUCK YOU WANT TO.","_id":"isntnt@2.0.0-beta.3","dist":{"shasum":"45f6edbcb09899c0641960e7a610a3046b94d338","integrity":"sha512-gUCCtdni/3UbSg7dVx+kWPEOI4F2cK66btBv99swYEqeQe26D71z95csoZOzIf/xK8e39v2ggHS0peSwlxgnpA==","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-2.0.0-beta.3.tgz","fileCount":621,"unpackedSize":276076,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpYDfCRA9TVsSAnZWagAAyy8QAIwZhPOZbarm7tbNll6X\nj2vS3yShJe5kLKZl++PDyCN3wKDHUL3A/6SsGTOIA6Ape8aOcKTMdDh5GqR6\nw3uOqD/MmcEHNhw3+r2Fk5D0WhSzNn/X+r7S/Xd5a3QC1T1BqWupWf9GqSaF\n6ER0TIHA8kzIaLKboM8bAj9dATI+cyR+/hVKYTJKWyCDhRf4PnIbUjtjvmts\n9rq7FNupMx2Bsg6oQXLE5qJQd7b488Z8V9HL8gIjcyQNaPZRa5A8nvpnvtML\nsOKYMs+FacJ+jT6mdSKhNjiQVZjxCuxruXmmwWj43YAA8Sp13yqEtKQ601Qt\nL0TI0n6ev8HQhXIKGkTIYXUHgqnDvAitSlZnAVtZgmhyLtVJWOWDomV55P/I\nOEMoonwKLpwiUUJ4jFXl1zk+O0qTGSfTVPNE7v54sSwjkOg+d7gwPNdGph/v\njHfLYoPUXalmegXzVNupzTxQ3UGQJ05wio4hoRH2evmu9jFexBXxSrKTS4X9\nQPO1P6xDrCflXId5QVDI8ExRH5ZherCt0FQPeRZhBr5b9dfmiwFmVX73o/Er\neBB4o0spJaOEOGg/9Pc3JOI1xKyPNNxwR9bw5k8aC02CkcfQcJpxNneSH5Zh\nMjtSMeaVo11myvitJ9XRKV2cprGgTTZtfniSlsYL58fxqedQTZazNWKZ8Szl\nEbpj\r\n=nUhv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCAQx/mONdj2p139Dn7FPFgtWq/s2cAa55xw+jvknN+FwIhAL+F4fmtwodgZQIZ/FDRqhp6kMgvt5qvU5bsm072vbGO"}]},"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"maintainers":[{"name":"larsvanbraam","email":"larsvanbraam@gmail.com"},{"name":"mientjan","email":"mientjan.stelling@gmail.com"},{"name":"devmonk","email":"devmonk@mediamonks.com"},{"name":"thanarie","email":"thanarie@gmail.com"},{"name":"thi.js","email":"npm@tyz.nl"},{"name":"psimk","email":"p.simkevi@gmail.com"},{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_2.0.0-beta.3_1621459167140_0.3729247985710016"},"_hasShrinkwrap":false},"2.0.0-beta.5":{"name":"isntnt","version":"2.0.0-beta.5","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","sideEffects":false,"author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && yarn build:ts && yarn build:ts-esm","build:ts":"tsc -d --skipLibCheck","build:ts-esm":"tsc -p tsconfig.esm.json -d --skipLibCheck","test":"jest --watchAll --coverage","prepublishOnly":"yarn build"},"repository":{"type":"git","url":"https://github.com/mediamonks/isntnt.git"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^4.2.3"},"readmeFilename":"README.md","readme":"Isntnt is a collection of composable JavaScript runtime type predicates with TypeScript type guard declarations. Supports generics including union and intersection types.\n\n# Features\n\n- [Predicates](#predicates)\n- [Predicate Factories](#predicate-factories)\n- [Types](#types)\n\n# Predicates\n\nA predicate is a function that checks whether a value matches a certain type, it always returns a boolean. Well known examples of JavaScript predicates are `Array.isArray`, `isNan`, and `Number.isNaN`. With `isntnt` you add a whole slew of additional predicates to your toolbox, they are listed below.\n\n## hasLength\n\nReturns `true` when you pass an object with a length property that is a valid [`length`](#isLength).\n\n```typescript\nhasLength(new ArrayBuffer()) // true\nhasLength({}) // false\n```\n\n## isAny\n\nAlways returns `true`.\n\n```typescript\nisAny(null) // true\nisAny(12) // true\n// always true\n```\n\n## isArray\n\nReturns `true` when you pass an array.\n\n```typescript\nisArray([]) // true\nisArray('foo') // false\n```\n\n## isArrayLike\n\nReturns `true` when you pass a object that is not a function with a length property that is a valid [`length`](#isLength).\n\n```typescript\nisArrayLike({ length: 12 }) // true\nisArrayLike(new Date()) // false\n```\n\n## isBigInt\n\nReturns `true` when you pass a bigint.\n\n```typescript\nisBigInt(116n) // true\nisBigInt(12) // false\n```\n\n## isBoolean\n\nReturns `true` when you pass a boolean.\n\n```typescript\nisBoolean(true) // true\nisBoolean(null) // false\n```\n\n## isDate\n\nReturns `true` when you pass a Date object.\n\n```typescript\nisDate(new Date()) // true\nisDate(Date.now()) // false\n```\n\n## isDictionary\n\nReturns `true` when you pass an object of which each property name, and each property value are a string.\n\n```typescript\nisDictionary({ a: 'foo' })\nisDictionary({ b: 12 })\n```\n\n## isFalse\n\nReturns `true` when you pass `false`.\n\n```typescript\nisFalse(false) // true\nisFalse(true) // false\n```\n\n## isFunction\n\nReturns `true` when you pass a function.\n\n```typescript\nisFunction(isFunction) // true\nisFunction({}) // true\n```\n\n## isInt\n\nReturns `true` when you pass an integer (a whole number).\n\n```typescript\nisInt(1) // true\nisInt(1.5) // false\n```\n\n## isInt8\n\nReturns `true` when you pass an [integer](#isInt) ranging from -128 to 127.\n\n```typescript\nisInt8(127) // true\nisInt8(128) // false\n```\n\n## isInt16\n\nReturns `true` when you pass an [integer](#isInt) ranging from -32,768 to 32,767.\n\n```typescript\nisInt16(12) // true\nisInt16(-50_000) // false\n```\n\n## isInt32\n\nReturns `true` when you pass an [integer](#isInt) ranging from -2,147,483,648 to 2,147,483,647.\n\n```typescript\nisInt32(12) // true\nisInt32(Number.MAX_SAFE_INTEGER) // false\n```\n\n## isLength\n\nAlias to [`isUint32`](#isUint32).\n\n## isMap\n\nReturns `true` when you pas a Map object.\n\n```typescript\nisMap(new Map()) // true\nisMap({}) // false\n```\n\n## isNegative\n\nReturns `true` when you pas a negative number (including -0).\n\n```typescript\nisNegative(-1) // true\nisNegative(1) // false\n```\n\n## isNever\n\nAlways returns `false`.\n\n```typescript\nisNever(null) // false\nisNever(true) // false\n// always returns false\n```\n\n## isNone\n\nReturns `true` when you pass `null` or `undefined`.\n\n```typescript\nisNone(null) // true\nisNone(128) // false\n```\n\n## isNull\n\nReturns `true` when you pass `null`.\n\n```typescript\nisNull(null) // true\nisNull(undefined) // false\n```\n\n## isNumber\n\nReturns `true` when you pass a number that is not `NaN`.\n\n```typescript\nisNumber(12) // true\nisNumber(NaN) // false\n```\n\n## isObject\n\nReturns `true` when you pass an object that is not `null`.\n\n```typescript\nisObject({}) // true\nisObject(null) // false\n```\n\n## isObjectLike\n\nReturns `true` when you pass an value that is not a boolean, `null`, or `undefined`.\n\n```typescript\nisObjectLike([]) // true\nisObjectLike(true) // false\n```\n\n## isPlainObject\n\nReturns `true` when you pass an object that was constructed by `Object`.\n\n```typescript\nisPlainObject({}) // true\nisPlainObject(new Date()) // false\n```\n\n## isPositive\n\nReturns `true` when you pass a positive number.\n\n```typescript\nisPositive(1) // true\nisPositive(-1) // false\n```\n\n## isPrimitive\n\nReturns `true` when you pass `null`, `undefined`, a boolean, bigint, number, symbol, or string.\n\n```typescript\nisPrimitive(1) // true\nisPrimitive([]) // false\n```\n\n## isRegExp\n\nReturns `true` when you pass a RegExp object.\n\n```typescript\nisRegExp(/foo/) // true\nisRegExp([]) // false\n```\n\n## isSerializable\n\nReturns `true` when you pass a [serializable primitive](#isSerializablePrimitive), a [serializable array](#isSerializableArray), or [serializable object](#isSerializableObject).\n\n```typescript\nisSerializable(12) // true\nisSerializable(console.log) // false\n```\n\n## isSerializableArray\n\nReturns `true` when you pass an array where every element is [serializable](#isSerializable).\n\n```typescript\nisSerializableArray(['foo', 1]) // true\nisSerializableArray([new Date()]) // false\n```\n\n## isSerializableNumber\n\nReturns `true` when you pass a number that is not `NaN`, `Infinity`, or `-Infinity`.\n\n```typescript\nisSerializableNumber(1) // true\nisSerializableNumber(Infinity) // false\n```\n\n## isSerializableObject\n\nReturns `true` when you pass an object where every property is [serializable](#isSerializable).\n\n```typescript\nisSerializableObject({ foo: 1 }) // true\nisSerializableObject({ bar: Infinity }) // false\n```\n\n## isSerializablePrimitive\n\nReturns `true` when you pass `null`, a [serializable number](#isSerializableNumber), a boolean, bigint, symbol, or string.\n\n```typescript\nisSerializablePrimitive(null) // true\nisSerializablePrimitive(NaN) // false\n```\n\n## isSet\n\nReturns `true` when you pas a Set object.\n\n```typescript\nisSet(new Set()) // true\nisSet([]) // false\n```\n\n## isSome\n\nReturns `true` when you pas a value other than `null` or `undefined`.\n\n```typescript\nisSome('foo') // true\nisSome(null) // false\n```\n\n## isString\n\nReturns `true` when you pas a string.\n\n```typescript\nisString('bar') // true\nisString(48) // false\n```\n\n## isSymbol\n\nReturns `true` when you pas a symbol.\n\n```typescript\nisSymbol(Symbol()) // true\nisSymbol('baz') // false\n```\n\n## isTrue\n\nReturns `true` when you pas `true`.\n\n```typescript\nisTrue(true) // true\nisTrue(false) // false\n```\n\n## isUint\n\nReturns `true` when you pass a positive [integer](#isInt).\n\n```typescript\nisUint(112) // true\nisUint(-16) // false\n```\n\n## isUint8\n\nReturns `true` when you pass an [unsigned integer](#isUint) ranging from 0 to 255.\n\n```typescript\nisUint8(255) // true\nisUint8(1.2) // false\n```\n\n## isUint16\n\nReturns `true` when you pass an [unsigned integer](#isUint) ranging from 0 to 65,535.\n\n```typescript\nisUint16(2048) // true\nisUint16(-12) // false\n```\n\n## isUint32\n\nReturns `true` when you pass an [unsigned integer](#isUint) ranging from 0 to 4,294,967,295.\n\n```typescript\nisUint32(256) // true\nisUint(Number.MAX_SAFE_INTEGER) // false\n```\n\n## isUndefined\n\nReturns `true` when you pass `undefined`.\n\n```typescript\nisUndefined(undefined) // true\nisUndefined(null) // false\n```\n\n## isWeakMap\n\nReturns `true` when you pass a `WeakMap` object.\n\n```typescript\nisWeakMap(new WeakMap()) // true\nisWeakMap(new Map()) // false\n```\n\n# Predicate factories\n\nPredicate factories is where the real fun begins, they allow you to create and combine predicates of your own to create new predicates. By composing predicates you can describe objects, union types, number ranges, and so on.\n\n## above\n\nCreate a predicate based on a floor value, it checks if a [number](#isNumber) exceeds the floor value it’s given. This is an analogue to the `>` operator.\n\n```typescript\nconst isAboveZero = above(0)\n\nisAboveZero(-1) // false\nisAboveZero(12) // true\n```\n\nThe `isAboveZero` predicate above returns `true` when you pass a [number](#isNumber) that is greater than `0`.\n\n## and\n\nCreate a predicate based on several other predicates, it returns `true` if every predicate that is passed also returns `true`. This is an analogue to the `&&` operator.\n\n```typescript\nconst adultAge = 18\nconst isMinorAge = and(isUint, below(adultAge))\n\nisMinorAge(12) // true\nisMinorAge(33) // false\n```\n\nThe `isMinorAge` predicate above returns `true` when you pass an [unsigned integer](#isUint) that is below 18.\n\n```typescript\nconst isUser = shape({ name: isString })\nconst hasEmailAddress = shape({ email: isString })\n\nconst isUserWithEmail = and(isUser, hasEmailAddress)\n```\n\nThe `isUserWithEmail` predicate above returns `true` when you pass an object with a `name` and an `email` property, both of which are a string.\n\n## array\n\nCreate a predicate that checks every array element, it returns `true` when its predicate returns `true` for every element in an array.\n\n```typescript\nconst isNumberArray = array(isNumber)\n```\n\nThe `isNumberArray` predicate above returns `true` when you pass an array of which every element is a [number](#isNumber).\n\n## at\n\nCreate a predicate based on a property key and another predicate, it returns `true` when its predicate returns `true` for the value of an object at its given key.\n\n```typescript\nconst isStringAtName = at('name', isString)\n\nisStringAtName({ name: 'Jane' }) // true\nisStringAtName({ name: null }) // false\n```\n\nThe `isStringAtName` predicate above returns `true` when you pass an object of which the `name` property is a string.\n\n## below\n\nCreate a predicate based on a ceiling value, it checks if a [number](#isNumber) is below the ceiling value it’s given. This is an analogue to the `<` operator.\n\n```typescript\nconst isBelow100 = below(100)\n\nisBelow100(124) // false\nisBelow100(32) // true\n```\n\nThe `isBelow100` predicate above returns `true` when you pass a [number](#isNumber) that is less than `100`.\n\n## either\n\nCreate a predicate based on several [literal](#literal) values, it returns `true` if a value matches either of the primitive values it’s given.\n\n```typescript\nconst isAOrB = either('a', 'b')\n\nisAOrB('a') // true\nisAOrB('c') // false\n```\n\nThe `isAOrB` predicate above returns `true` when you pass either `a`, or `b`.\n\n## has\n\nCreate a predicate based on a property key, it returns `true` if an object has a property of the key it’s given.\n\n```typescript\nconst hasName = has('name')\n\nhasName({ name: null }) // true\nhasName({ age: 36 }) // false\n```\n\nThe `hasName` predicate above returns `true` when you pass an object that has a `name` property.\n\n## instance\n\nCreate a predicate based on a constructor, it returns `true` if an object is an instance of the constructor key it’s given.\n\n```typescript\nconst isInstanceofString = instance(String)\n\nisInstanceofString(new String('foo')) // true\nisInstanceofString('foo') // false\n```\n\nThe `isInstanceofString` predicate above returns `true` when you pass a String object.\n\n## literal\n\nCreate a predicate based a [primitive](#isPrimitive) value, it returns `true` if a value equals the primitive value it’s given.\n\n```typescript\nconst is42 = literal(42)\n\nis42(42) // true\nis42(43) // false\n```\n\nThe `is42` predicate above returns `true` when you pass `42`.\n\n## max\n\nCreate a predicate based on a max. value, it checks if a [number](#isNumber) is below or equal to the max. value it’s given. This is an analogue to the `<=` operator.\n\n```typescript\nconst isMax100 = max(100)\n\nisMax100(100) // true\nisMax100(101) // false\n```\n\nThe `isMax100` predicate above returns `true` when you pass a [number](#isNumber) that is below or equal to `100`.\n\n## maybe\n\nCreate a predicate based on another predicate, it checks if a value matches it’s given predicate, or equals `null` or `undefined`.\n\n```typescript\nconst isMaybeString = maybe(isString)\n\nisMaybeString(null) // true\nisMaybeString(12) // false\n```\n\nThe `isMaybeString` predicate above returns `true` when you pass a string, `null`, or `undefined`.\n\n## min\n\nCreate a predicate based on a min. value, it checks if a [number](#isNumber) is above or equal to the min. value it’s given. This is an analogue to the `>=` operator.\n\n```typescript\nconst isMin100 = min(100)\n\nisMin100(100) // true\nisMin100(99) // false\n```\n\nThe `isMin0` predicate above returns `true` when you pass a [number](#isNumber) that is above or equal to `100`.\n\n## noneable\n\nAliases [`maybe`](#maybe).\n\n## nullable\n\nCreate a predicate based on another predicate, it checks if a value matches it’s given predicate, or equals `null`.\n\n```typescript\nconst isNullableString = nullable(isString)\n\nisNullableString(null) // true\nisNullableString(12) // false\n```\n\nThe `isNullableString` predicate above returns `true` when you pass a string or `null`.\n\n## object\n\nCreate a predicate that checks every object property, it returns `true` when its predicate returns `true` for every object value.\n\n```typescript\nconst isEnumerable = object(isUint)\n```\n\nThe `isEnumerable` predicate above returns `true` when you pass an object of which every element is an [unsigned integer](#isUint).\n\n## optional\n\n`<T>(predicate: Predicate<T>) => (value: unknown) => value is T | undefined`\n\n```typescript\nconst isOptionalString = optional(isString)\n\nisOptionalString(undefined) // true\nisOptionalString(12) // false\n```\n\nThe `isOptionalString` predicate above returns `true` when you pass a string or `undefined`.\n\n## or\n\nCreate a predicate based on several other predicates, it returns `true` if some predicate that is passed also returns `true`. This is an analogue to the `||` operator.\n\n```typescript\nconst isContent = or(isString, isSerializableNumber)\n\nisContent(12) // true\nisContent(null) // false\n```\n\nThe `isContent` predicate above returns `true` when you pass a string or a [primitive number](#isPrimitiveNumber).\n\n```typescript\nconst isStringOrNumber = or(isString, isNumber)\n\nisStringOrNumber(8) // true\nisStringOrNumber([]) // false\n```\n\n## record\n\nCreate a predicate based on a key predicate and a value predicate, it returns `true` if each property key of an object returns `true` for its key predicate, and each value returns `true` for its value predicate.\n\n```typescript\nconst isValidKey = either('a', 'b')\n\nconst isKeyValueMap = record(isValidKey, isInt)\n\nisKeyValueMap({ a: 2 }) // true\nisKeyValueMap({ a: null }) // false\nisKeyValueMap({ c: 2 }) // false\n```\n\nThe `isKeyValueMap` predicate above returns `true` when you pass an object where each key is either `a` or `b`, and each property value is an [integer](#isInt).\n\n## shape\n\nCreate a predicate based on a predicate object, it returns `true` if each property value of an object returns `true` for its corresponding predicate.\n\n```typescript\nconst isPoint = shape({ x: isNumber, y: isNumber })\n\nisPoint({ x: 12, y: 36 }) // true\nisPoint({ x: 12 }) // false\n```\n\nThe `isPoint` predicate above returns `true` when you an pass an object where both `x` and `y` properties are a [number](#isNumber).\n\n## test\n\n```typescript\nconst isSlug = test(/^[A-Z0-9-]+$/i)\n\nisSlug('foo-bar') // true\nisSlug('!#$') // false\n```\n\nThe `isSlug` predicate above returns `true` when you an pass a string that matches `/^[A-Z0-9-]+$/i`.\n\n## tuple\n\nCreate a predicate based on index-based predicates, it returns `true` if the element at each index of an array with a fixed length returns `true` for its corresponding predicate.\n\n```typescript\nconst isLatitude = and(min(-90), max(90))\nconst isLongitude = and(min(-180), max(180))\n\nconst isLatLong = tuple(isLatitude, isLongitude)\n\nisLatLong(45, -120) // true\nisLatLong(120, 200) // false\n```\n\nThe `isLatLong` predicate above returns `true` when you an pass an array with a length of 2 where index 0 is a latitude, and index 1 is a longitude value.\n\n# Types\n\n## Intersect\n\n```typescript\ntype User = Intersect<{ name: string } | { email: string }> // { name: string } & { email: string }\n```\n\n## Maybe\n\nUnions a type with `null` and `undefined`.\n\n```typescript\ntype MaybeString = Maybe<string> // string | null | undefined\n```\n\n## None\n\nUnion of `null` and `undefined`.\n\n```typescript\ntype X = None // null | undefined\n```\n\n## Nullable\n\nUnions a type with `null`.\n\n```typescript\ntype NullableString = Nullable<string> // string | null\n```\n\n## Optional\n\nUnions a type with `undefined`.\n\n```typescript\ntype OptionalString = Optional<string> // string | undefined\n```\n\n## Predicate\n\nDescribes a predicate function signature\n\n```typescript\ntype IsString = Predicate<string> // <U>(value: U): value is Extract<U, string>\n```\n\n## Primitive\n\nUnion of all primitive types.\n\n```typescript\ntype X = Primitive // null | undefined | boolean | number | string | symbol | bigint\n```\n\n## Serializable\n\n```typescript\ntype X = Serializable // SerializableArray | SerializableObject | SerializableObject\n```\n\n## SerializableArray\n\n```typescript\ntype X = SerializableArray // Array<Serializable> | ReadonlyArray<Serializable>\n```\n\n## SerializableObject\n\n```typescript\ntype X = SerializableObject // { [key: string]: Serializable | undefined }\n```\n\n## SerializablePrimitive\n\n```typescript\ntype X = SerializablePrimitive // null | boolean | number | string\n```\n\n## Some\n\nExcludes `null` and `undefined` from a type, type parameter is optional.\n\n```typescript\ntype X = Some // Function | boolean | bigint | number | string | symbol | object\ntype Y = Some<string | null> // string\n```\n\n## Static\n\nExtracts type parameter from Predicate type. This is useful to extract TypeScript types from (complex) predicates.\n\n```typescript\ntype X = Static<Predicate<string>>> // string\n```\n","licenseText":"Copyright © 2020 Nathan Uphoff\n\nThis work is free. You can redistribute it and/or modify it under the\nterms of the Do What The Fuck You Want To Public License, Version 2,\nas published by Sam Hocevar.\n\n  DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n                   Version 2, December 2004\n\nCopyright (C) 2004 Sam Hocevar\n 14 rue de Plaisance, 75014 Paris, France\nEveryone is permitted to copy and distribute verbatim or modified\ncopies of this license document, and changing it is allowed as long\nas the name is changed.\n\n           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. You just DO WHAT THE FUCK YOU WANT TO.","_id":"isntnt@2.0.0-beta.5","dist":{"shasum":"438368779c1f0e6d7961eabd3b0997a679b01dc5","integrity":"sha512-laMt5P0Cwa82iX6QS2BPMqRSH+n5xT8Zn3NZfMedoL3EEe8wFV8UQwbZu4I4KCiMKFNhr6oOkxz50mXpgHTApA==","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-2.0.0-beta.5.tgz","fileCount":635,"unpackedSize":299283,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgplG/CRA9TVsSAnZWagAAALEP/3YkYvQw2aAueJY2v2cc\nQ/p0e5tuvigdXpl3O6OVW4WydttxskVg3OoEKt7u76/Bj4lHqliHpowveUAk\n8X8cVyRo60s1BsKH34mgMR6pvrw+qindxFYiCDIb0A1rC5d7Tmm9Aq6ci56t\nKb39Ahs7OQdlyUXF6ePWqj/kqGyheDKT9jidRZ9bTHqnh0gOJKnblaiT7aPT\nHaKizxIAVkNE2LusbCYH4/gqB0+rDJE0b8/Xg0Xi657yckZbEshNrhMS0yup\nA/RVLg6NqPoUfXFEpCxjpIG4ISWqWjMYXk8ktW+QUqn3DFj+b8gnoVttKfQa\nfT/km4W8xqA20IhrwYHCh8BK9JmDx+z6QPMI4147jBYCzM3zvknGW/o2ACJW\nHx6tmtv921z5au4Odl+Ma6IvZy7AIbFAUoMaQy3wiitkgkYmk0peaAvQdU5V\nc0EyDSzcajmACBo+AcsvUyECZXEO6ltCsSfZcUJTjjmSFA4L3JAnKf2nAycv\nP6GGGS1+yhcn5ps4u8zECCFSnxE0L5w0E/IGeo0PdmNfMbsSmw9YxCscoKxE\n3xrHVWVfIGLOVFZ4LMt+QJmfCPGGS6YyGeBYXvb72re6IhAxeVzJtmW3FO4R\nSyrVNRjs8brDTy/6S9skd19PfKFINMC9tTBUQCq82Bie7gF1h/gzpHpyRpZS\nhrpO\r\n=JF/g\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFhFID7clHPmt1hnLlg741xdUdhK2FQIMN37EYYvQcnlAiEAm1E2K+weySzPwyLu1f3gTAUok0VJCu0r0KDOdF9lfGo="}]},"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"maintainers":[{"name":"larsvanbraam","email":"larsvanbraam@gmail.com"},{"name":"mientjan","email":"mientjan.stelling@gmail.com"},{"name":"devmonk","email":"devmonk@mediamonks.com"},{"name":"thanarie","email":"thanarie@gmail.com"},{"name":"thi.js","email":"npm@tyz.nl"},{"name":"psimk","email":"p.simkevi@gmail.com"},{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_2.0.0-beta.5_1621512639270_0.07340892120933096"},"_hasShrinkwrap":false},"2.0.0-beta.6":{"name":"isntnt","version":"2.0.0-beta.6","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","sideEffects":false,"author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && yarn build:ts && yarn build:ts-esm","build:ts":"tsc -d --skipLibCheck","build:ts-esm":"tsc -p tsconfig.esm.json -d --skipLibCheck","test":"jest --watchAll --coverage","prepublishOnly":"yarn build"},"repository":{"type":"git","url":"https://github.com/mediamonks/isntnt.git"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^4.2.3"},"readmeFilename":"README.md","readme":"Isntnt is a collection of composable JavaScript runtime type predicates with TypeScript type guard declarations. Supports generics including union and intersection types.\n\n# Features\n\n- [Predicates](#predicates)\n- [Predicate Factories](#predicate-factories)\n- [Types](#types)\n\n# Predicates\n\nA predicate is a function that checks whether a value matches a certain type, it always returns a boolean. Well known examples of JavaScript predicates are `Array.isArray`, `isNan`, and `Number.isNaN`. With `isntnt` you add a whole slew of additional predicates to your toolbox, they are listed below.\n\n## hasLength\n\nReturns `true` when you pass an object with a length property that is a valid [`length`](#isLength).\n\n```typescript\nhasLength(new ArrayBuffer()) // true\nhasLength({}) // false\n```\n\n## isAny\n\nAlways returns `true`.\n\n```typescript\nisAny(null) // true\nisAny(12) // true\n// always true\n```\n\n## isArray\n\nReturns `true` when you pass an array.\n\n```typescript\nisArray([]) // true\nisArray('foo') // false\n```\n\n## isArrayLike\n\nReturns `true` when you pass a object that is not a function with a length property that is a valid [`length`](#isLength).\n\n```typescript\nisArrayLike({ length: 12 }) // true\nisArrayLike(new Date()) // false\n```\n\n## isBigInt\n\nReturns `true` when you pass a bigint.\n\n```typescript\nisBigInt(116n) // true\nisBigInt(12) // false\n```\n\n## isBoolean\n\nReturns `true` when you pass a boolean.\n\n```typescript\nisBoolean(true) // true\nisBoolean(null) // false\n```\n\n## isDate\n\nReturns `true` when you pass a Date object.\n\n```typescript\nisDate(new Date()) // true\nisDate(Date.now()) // false\n```\n\n## isDictionary\n\nReturns `true` when you pass an object of which each property name, and each property value are a string.\n\n```typescript\nisDictionary({ a: 'foo' })\nisDictionary({ b: 12 })\n```\n\n## isFalse\n\nReturns `true` when you pass `false`.\n\n```typescript\nisFalse(false) // true\nisFalse(true) // false\n```\n\n## isFunction\n\nReturns `true` when you pass a function.\n\n```typescript\nisFunction(isFunction) // true\nisFunction({}) // true\n```\n\n## isInt\n\nReturns `true` when you pass an integer (a whole number).\n\n```typescript\nisInt(1) // true\nisInt(1.5) // false\n```\n\n## isInt8\n\nReturns `true` when you pass an [integer](#isInt) ranging from -128 to 127.\n\n```typescript\nisInt8(127) // true\nisInt8(128) // false\n```\n\n## isInt16\n\nReturns `true` when you pass an [integer](#isInt) ranging from -32,768 to 32,767.\n\n```typescript\nisInt16(12) // true\nisInt16(-50_000) // false\n```\n\n## isInt32\n\nReturns `true` when you pass an [integer](#isInt) ranging from -2,147,483,648 to 2,147,483,647.\n\n```typescript\nisInt32(12) // true\nisInt32(Number.MAX_SAFE_INTEGER) // false\n```\n\n## isLength\n\nAlias to [`isUint32`](#isUint32).\n\n## isMap\n\nReturns `true` when you pas a Map object.\n\n```typescript\nisMap(new Map()) // true\nisMap({}) // false\n```\n\n## isNegative\n\nReturns `true` when you pas a negative number (including -0).\n\n```typescript\nisNegative(-1) // true\nisNegative(1) // false\n```\n\n## isNever\n\nAlways returns `false`.\n\n```typescript\nisNever(null) // false\nisNever(true) // false\n// always returns false\n```\n\n## isNone\n\nReturns `true` when you pass `null` or `undefined`.\n\n```typescript\nisNone(null) // true\nisNone(128) // false\n```\n\n## isNull\n\nReturns `true` when you pass `null`.\n\n```typescript\nisNull(null) // true\nisNull(undefined) // false\n```\n\n## isNumber\n\nReturns `true` when you pass a number that is not `NaN`.\n\n```typescript\nisNumber(12) // true\nisNumber(NaN) // false\n```\n\n## isObject\n\nReturns `true` when you pass an object that is not `null`.\n\n```typescript\nisObject({}) // true\nisObject(null) // false\n```\n\n## isObjectLike\n\nReturns `true` when you pass an value that is not a boolean, `null`, or `undefined`.\n\n```typescript\nisObjectLike([]) // true\nisObjectLike(true) // false\n```\n\n## isPlainObject\n\nReturns `true` when you pass an object that was constructed by `Object`.\n\n```typescript\nisPlainObject({}) // true\nisPlainObject(new Date()) // false\n```\n\n## isPositive\n\nReturns `true` when you pass a positive number.\n\n```typescript\nisPositive(1) // true\nisPositive(-1) // false\n```\n\n## isPrimitive\n\nReturns `true` when you pass `null`, `undefined`, a boolean, bigint, number, symbol, or string.\n\n```typescript\nisPrimitive(1) // true\nisPrimitive([]) // false\n```\n\n## isRegExp\n\nReturns `true` when you pass a RegExp object.\n\n```typescript\nisRegExp(/foo/) // true\nisRegExp([]) // false\n```\n\n## isSerializable\n\nReturns `true` when you pass a [serializable primitive](#isSerializablePrimitive), a [serializable array](#isSerializableArray), or [serializable object](#isSerializableObject).\n\n```typescript\nisSerializable(12) // true\nisSerializable(console.log) // false\n```\n\n## isSerializableArray\n\nReturns `true` when you pass an array where every element is [serializable](#isSerializable).\n\n```typescript\nisSerializableArray(['foo', 1]) // true\nisSerializableArray([new Date()]) // false\n```\n\n## isSerializableNumber\n\nReturns `true` when you pass a number that is not `NaN`, `Infinity`, or `-Infinity`.\n\n```typescript\nisSerializableNumber(1) // true\nisSerializableNumber(Infinity) // false\n```\n\n## isSerializableObject\n\nReturns `true` when you pass an object where every property is [serializable](#isSerializable).\n\n```typescript\nisSerializableObject({ foo: 1 }) // true\nisSerializableObject({ bar: Infinity }) // false\n```\n\n## isSerializablePrimitive\n\nReturns `true` when you pass `null`, a [serializable number](#isSerializableNumber), a boolean, bigint, symbol, or string.\n\n```typescript\nisSerializablePrimitive(null) // true\nisSerializablePrimitive(NaN) // false\n```\n\n## isSet\n\nReturns `true` when you pas a Set object.\n\n```typescript\nisSet(new Set()) // true\nisSet([]) // false\n```\n\n## isSome\n\nReturns `true` when you pas a value other than `null` or `undefined`.\n\n```typescript\nisSome('foo') // true\nisSome(null) // false\n```\n\n## isString\n\nReturns `true` when you pas a string.\n\n```typescript\nisString('bar') // true\nisString(48) // false\n```\n\n## isSymbol\n\nReturns `true` when you pas a symbol.\n\n```typescript\nisSymbol(Symbol()) // true\nisSymbol('baz') // false\n```\n\n## isTrue\n\nReturns `true` when you pas `true`.\n\n```typescript\nisTrue(true) // true\nisTrue(false) // false\n```\n\n## isUint\n\nReturns `true` when you pass a positive [integer](#isInt).\n\n```typescript\nisUint(112) // true\nisUint(-16) // false\n```\n\n## isUint8\n\nReturns `true` when you pass an [unsigned integer](#isUint) ranging from 0 to 255.\n\n```typescript\nisUint8(255) // true\nisUint8(1.2) // false\n```\n\n## isUint16\n\nReturns `true` when you pass an [unsigned integer](#isUint) ranging from 0 to 65,535.\n\n```typescript\nisUint16(2048) // true\nisUint16(-12) // false\n```\n\n## isUint32\n\nReturns `true` when you pass an [unsigned integer](#isUint) ranging from 0 to 4,294,967,295.\n\n```typescript\nisUint32(256) // true\nisUint(Number.MAX_SAFE_INTEGER) // false\n```\n\n## isUndefined\n\nReturns `true` when you pass `undefined`.\n\n```typescript\nisUndefined(undefined) // true\nisUndefined(null) // false\n```\n\n## isWeakMap\n\nReturns `true` when you pass a `WeakMap` object.\n\n```typescript\nisWeakMap(new WeakMap()) // true\nisWeakMap(new Map()) // false\n```\n\n# Predicate factories\n\nPredicate factories is where the real fun begins, they allow you to create and combine predicates of your own to create new predicates. By composing predicates you can describe objects, union types, number ranges, and so on.\n\n## above\n\nCreate a predicate based on a floor value, it checks if a [number](#isNumber) exceeds the floor value it’s given. This is an analogue to the `>` operator.\n\n```typescript\nconst isAboveZero = above(0)\n\nisAboveZero(-1) // false\nisAboveZero(12) // true\n```\n\nThe `isAboveZero` predicate above returns `true` when you pass a [number](#isNumber) that is greater than `0`.\n\n## and\n\nCreate a predicate based on several other predicates, it returns `true` if every predicate that is passed also returns `true`. This is an analogue to the `&&` operator.\n\n```typescript\nconst adultAge = 18\nconst isMinorAge = and(isUint, below(adultAge))\n\nisMinorAge(12) // true\nisMinorAge(33) // false\n```\n\nThe `isMinorAge` predicate above returns `true` when you pass an [unsigned integer](#isUint) that is below 18.\n\n```typescript\nconst isUser = shape({ name: isString })\nconst hasEmailAddress = shape({ email: isString })\n\nconst isUserWithEmail = and(isUser, hasEmailAddress)\n```\n\nThe `isUserWithEmail` predicate above returns `true` when you pass an object with a `name` and an `email` property, both of which are a string.\n\n## array\n\nCreate a predicate that checks every array element, it returns `true` when its predicate returns `true` for every element in an array.\n\n```typescript\nconst isNumberArray = array(isNumber)\n```\n\nThe `isNumberArray` predicate above returns `true` when you pass an array of which every element is a [number](#isNumber).\n\n## at\n\nCreate a predicate based on a property key and another predicate, it returns `true` when its predicate returns `true` for the value of an object at its given key.\n\n```typescript\nconst isStringAtName = at('name', isString)\n\nisStringAtName({ name: 'Jane' }) // true\nisStringAtName({ name: null }) // false\n```\n\nThe `isStringAtName` predicate above returns `true` when you pass an object of which the `name` property is a string.\n\n## below\n\nCreate a predicate based on a ceiling value, it checks if a [number](#isNumber) is below the ceiling value it’s given. This is an analogue to the `<` operator.\n\n```typescript\nconst isBelow100 = below(100)\n\nisBelow100(124) // false\nisBelow100(32) // true\n```\n\nThe `isBelow100` predicate above returns `true` when you pass a [number](#isNumber) that is less than `100`.\n\n## either\n\nCreate a predicate based on several [literal](#literal) values, it returns `true` if a value matches either of the primitive values it’s given.\n\n```typescript\nconst isAOrB = either('a', 'b')\n\nisAOrB('a') // true\nisAOrB('c') // false\n```\n\nThe `isAOrB` predicate above returns `true` when you pass either `a`, or `b`.\n\n## has\n\nCreate a predicate based on a property key, it returns `true` if an object has a property of the key it’s given.\n\n```typescript\nconst hasName = has('name')\n\nhasName({ name: null }) // true\nhasName({ age: 36 }) // false\n```\n\nThe `hasName` predicate above returns `true` when you pass an object that has a `name` property.\n\n## instance\n\nCreate a predicate based on a constructor, it returns `true` if an object is an instance of the constructor key it’s given.\n\n```typescript\nconst isInstanceofString = instance(String)\n\nisInstanceofString(new String('foo')) // true\nisInstanceofString('foo') // false\n```\n\nThe `isInstanceofString` predicate above returns `true` when you pass a String object.\n\n## literal\n\nCreate a predicate based a [primitive](#isPrimitive) value, it returns `true` if a value equals the primitive value it’s given.\n\n```typescript\nconst is42 = literal(42)\n\nis42(42) // true\nis42(43) // false\n```\n\nThe `is42` predicate above returns `true` when you pass `42`.\n\n## max\n\nCreate a predicate based on a max. value, it checks if a [number](#isNumber) is below or equal to the max. value it’s given. This is an analogue to the `<=` operator.\n\n```typescript\nconst isMax100 = max(100)\n\nisMax100(100) // true\nisMax100(101) // false\n```\n\nThe `isMax100` predicate above returns `true` when you pass a [number](#isNumber) that is below or equal to `100`.\n\n## maybe\n\nCreate a predicate based on another predicate, it checks if a value matches it’s given predicate, or equals `null` or `undefined`.\n\n```typescript\nconst isMaybeString = maybe(isString)\n\nisMaybeString(null) // true\nisMaybeString(12) // false\n```\n\nThe `isMaybeString` predicate above returns `true` when you pass a string, `null`, or `undefined`.\n\n## min\n\nCreate a predicate based on a min. value, it checks if a [number](#isNumber) is above or equal to the min. value it’s given. This is an analogue to the `>=` operator.\n\n```typescript\nconst isMin100 = min(100)\n\nisMin100(100) // true\nisMin100(99) // false\n```\n\nThe `isMin0` predicate above returns `true` when you pass a [number](#isNumber) that is above or equal to `100`.\n\n## noneable\n\nAliases [`maybe`](#maybe).\n\n## nullable\n\nCreate a predicate based on another predicate, it checks if a value matches it’s given predicate, or equals `null`.\n\n```typescript\nconst isNullableString = nullable(isString)\n\nisNullableString(null) // true\nisNullableString(12) // false\n```\n\nThe `isNullableString` predicate above returns `true` when you pass a string or `null`.\n\n## object\n\nCreate a predicate that checks every object property, it returns `true` when its predicate returns `true` for every object value.\n\n```typescript\nconst isEnumerable = object(isUint)\n```\n\nThe `isEnumerable` predicate above returns `true` when you pass an object of which every element is an [unsigned integer](#isUint).\n\n## optional\n\n`<T>(predicate: Predicate<T>) => (value: unknown) => value is T | undefined`\n\n```typescript\nconst isOptionalString = optional(isString)\n\nisOptionalString(undefined) // true\nisOptionalString(12) // false\n```\n\nThe `isOptionalString` predicate above returns `true` when you pass a string or `undefined`.\n\n## or\n\nCreate a predicate based on several other predicates, it returns `true` if some predicate that is passed also returns `true`. This is an analogue to the `||` operator.\n\n```typescript\nconst isContent = or(isString, isSerializableNumber)\n\nisContent(12) // true\nisContent(null) // false\n```\n\nThe `isContent` predicate above returns `true` when you pass a string or a [primitive number](#isPrimitiveNumber).\n\n```typescript\nconst isStringOrNumber = or(isString, isNumber)\n\nisStringOrNumber(8) // true\nisStringOrNumber([]) // false\n```\n\n## record\n\nCreate a predicate based on a key predicate and a value predicate, it returns `true` if each property key of an object returns `true` for its key predicate, and each value returns `true` for its value predicate.\n\n```typescript\nconst isValidKey = either('a', 'b')\n\nconst isKeyValueMap = record(isValidKey, isInt)\n\nisKeyValueMap({ a: 2 }) // true\nisKeyValueMap({ a: null }) // false\nisKeyValueMap({ c: 2 }) // false\n```\n\nThe `isKeyValueMap` predicate above returns `true` when you pass an object where each key is either `a` or `b`, and each property value is an [integer](#isInt).\n\n## shape\n\nCreate a predicate based on a predicate object, it returns `true` if each property value of an object returns `true` for its corresponding predicate.\n\n```typescript\nconst isPoint = shape({ x: isNumber, y: isNumber })\n\nisPoint({ x: 12, y: 36 }) // true\nisPoint({ x: 12 }) // false\n```\n\nThe `isPoint` predicate above returns `true` when you an pass an object where both `x` and `y` properties are a [number](#isNumber).\n\n## test\n\n```typescript\nconst isSlug = test(/^[A-Z0-9-]+$/i)\n\nisSlug('foo-bar') // true\nisSlug('!#$') // false\n```\n\nThe `isSlug` predicate above returns `true` when you an pass a string that matches `/^[A-Z0-9-]+$/i`.\n\n## tuple\n\nCreate a predicate based on index-based predicates, it returns `true` if the element at each index of an array with a fixed length returns `true` for its corresponding predicate.\n\n```typescript\nconst isLatitude = and(min(-90), max(90))\nconst isLongitude = and(min(-180), max(180))\n\nconst isLatLong = tuple(isLatitude, isLongitude)\n\nisLatLong(45, -120) // true\nisLatLong(120, 200) // false\n```\n\nThe `isLatLong` predicate above returns `true` when you an pass an array with a length of 2 where index 0 is a latitude, and index 1 is a longitude value.\n\n# Types\n\n## Intersect\n\n```typescript\ntype User = Intersect<{ name: string } | { email: string }> // { name: string } & { email: string }\n```\n\n## Maybe\n\nUnions a type with `null` and `undefined`.\n\n```typescript\ntype MaybeString = Maybe<string> // string | null | undefined\n```\n\n## None\n\nUnion of `null` and `undefined`.\n\n```typescript\ntype X = None // null | undefined\n```\n\n## Nullable\n\nUnions a type with `null`.\n\n```typescript\ntype NullableString = Nullable<string> // string | null\n```\n\n## Optional\n\nUnions a type with `undefined`.\n\n```typescript\ntype OptionalString = Optional<string> // string | undefined\n```\n\n## Predicate\n\nDescribes a predicate function signature\n\n```typescript\ntype IsString = Predicate<string> // <U>(value: U): value is Extract<U, string>\n```\n\n## Primitive\n\nUnion of all primitive types.\n\n```typescript\ntype X = Primitive // null | undefined | boolean | number | string | symbol | bigint\n```\n\n## Serializable\n\n```typescript\ntype X = Serializable // SerializableArray | SerializableObject | SerializableObject\n```\n\n## SerializableArray\n\n```typescript\ntype X = SerializableArray // Array<Serializable> | ReadonlyArray<Serializable>\n```\n\n## SerializableObject\n\n```typescript\ntype X = SerializableObject // { [key: string]: Serializable | undefined }\n```\n\n## SerializablePrimitive\n\n```typescript\ntype X = SerializablePrimitive // null | boolean | number | string\n```\n\n## Some\n\nExcludes `null` and `undefined` from a type, type parameter is optional.\n\n```typescript\ntype X = Some // Function | boolean | bigint | number | string | symbol | object\ntype Y = Some<string | null> // string\n```\n\n## Static\n\nExtracts type parameter from Predicate type. This is useful to extract TypeScript types from (complex) predicates.\n\n```typescript\ntype X = Static<Predicate<string>>> // string\n```\n","licenseText":"Copyright © 2020 Nathan Uphoff\n\nThis work is free. You can redistribute it and/or modify it under the\nterms of the Do What The Fuck You Want To Public License, Version 2,\nas published by Sam Hocevar.\n\n  DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n                   Version 2, December 2004\n\nCopyright (C) 2004 Sam Hocevar\n 14 rue de Plaisance, 75014 Paris, France\nEveryone is permitted to copy and distribute verbatim or modified\ncopies of this license document, and changing it is allowed as long\nas the name is changed.\n\n           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. You just DO WHAT THE FUCK YOU WANT TO.","_id":"isntnt@2.0.0-beta.6","dist":{"shasum":"932039a5aa2a5b704ec680f81ed65a5f14d8268d","integrity":"sha512-nuckd22Z+nr4LaX4eiP6iK8VzVqvflHILcU/LsZ1HiE1NHG0vBbraL6xLuW2sCDJQNEHmYAVW9VhrGVTR9YXtQ==","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-2.0.0-beta.6.tgz","fileCount":635,"unpackedSize":299788,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpl3/CRA9TVsSAnZWagAAokQP/RRTFk34sRyKDz47JYjD\nrQNUp6X5VFLDU8R2qyzZRip5JrUzGmQytMvZvUA8zaBzQWQzkKQbO8fqzXVq\nDmmYk/6EkYfHn0hdZgb0x+kSBQw++KTS0CNV/U7uO2n3gnYD7FnBiSURaUyZ\njexzn7hS4h+kn0JGreioP+0pnKb5bIsGzJrAUwif4FBD/0RjEn9naAJUAUft\n8GtezLvxh1KLRWPXZxCNecCRM50zGZ6nx/xiu3j22qpx3Uxi8VQUou0RyL6S\nQ6WfC/nXLoA1dlxFHtjMJKFGO/jasMdF3UMRFuzq73eNJgoWbZ1d+XpWMT3v\nEb/ATD9s4iXDKJdyAWirGV9Er1apOhddl6g9ZlMFoLDaQwyMENHB58fQIbAp\n+07iq8Eo6HwHo3JA+iMUtvnuPA3zE79lqxcMDcIIAdHdoq73Vys4fpSupw5A\nQ6FjsxQPZbZGVFHMOfdIA1DlAixL/PfMYANMW8PDXoZvZPNbw4MqGYMVi7ut\n0gjW5eWv4G2oNU95oLJIfYAiq35PBuH7+cYc4cspKqgqDp5lrV4fgObA8HtV\nXMrvWJSoaGwMH5nLkORiENHCkNvUeh3FIgyr/GVn7aDhX3Q/+apSiQ2V7l9w\n8RamwroUZnrDNtHRGOSI7IfxyCMbMC5jYVDuPqsZ03+XE1YP8vSr9BwcK1kP\nGKQs\r\n=u/Lf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGObpY3P7hXleSckKAtlC794tY+G4gqWVqz/8jEIxePWAiEAvne8Sb4fo8IZHCCZ/jxWBS05fsECZXT0no7rEVImZy0="}]},"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"maintainers":[{"name":"larsvanbraam","email":"larsvanbraam@gmail.com"},{"name":"mientjan","email":"mientjan.stelling@gmail.com"},{"name":"devmonk","email":"devmonk@mediamonks.com"},{"name":"thanarie","email":"thanarie@gmail.com"},{"name":"thi.js","email":"npm@tyz.nl"},{"name":"psimk","email":"p.simkevi@gmail.com"},{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_2.0.0-beta.6_1621515774685_0.933742033615278"},"_hasShrinkwrap":false},"1.4.6":{"name":"isntnt","version":"1.4.6","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","sideEffects":false,"author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && yarn build:ts && yarn build:ts-esm","build:ts":"tsc -d --skipLibCheck","build:ts-esm":"tsc -p tsconfig.esm.json -d --skipLibCheck","test":"jest --watchAll --coverage","prepublishOnly":"yarn build"},"repository":{"type":"git","url":"https://github.com/mediamonks/isntnt.git"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^3.7.2"},"licenseText":"Copyright © 2020 Nathan Uphoff\n\nThis work is free. You can redistribute it and/or modify it under the\nterms of the Do What The Fuck You Want To Public License, Version 2,\nas published by Sam Hocevar.\n\n  DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n                   Version 2, December 2004\n\nCopyright (C) 2004 Sam Hocevar\n 14 rue de Plaisance, 75014 Paris, France\nEveryone is permitted to copy and distribute verbatim or modified\ncopies of this license document, and changing it is allowed as long\nas the name is changed.\n\n           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. You just DO WHAT THE FUCK YOU WANT TO.","_id":"isntnt@1.4.6","dist":{"shasum":"5d5740611764e1647c7cb2305c8712294f78f3a7","integrity":"sha512-Oh+FCyZfbZl1xnA23lEmab2rg1Xa3HarOR9gpCLkJB5id6JYU5hD3oOdhRPVvtWmfWS4W4dr+xmopbJ8ECTo2g==","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-1.4.6.tgz","fileCount":546,"unpackedSize":239804,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgp6qmCRA9TVsSAnZWagAAV7QP/j7t5jrJ5MZVlPZNsQ2a\nauK9TGdlhquQa5hpc65xoeA7QUV3aIXJpScd1xs+8rftskSZ/dMXQ8762sDS\nuNiY+sOCNj4bMkNwMzoYxpnBHSVR9DGPWjqDOEZBokkXb5Gv4HYtoJ/yWixX\nfgxE0uae2LV+4jNGJ73Mnvmyjs22LEgqxBa2Ykks1bDewgqjwwIyZyveFe3Q\nnd4JtW7YA8V7ozC12mMeIXr2vgN0+jwl5t3E6yIX/BIjG7FixW82v3qp6dGS\n1ka7SJOh6DXLd6xhkABcYFqGI8g6BWRHGdKL4grhldhbnNk3RzUaGGR8L/yM\nZqbj+AUuauGw7qKB8mUEal1d8Fp1QEhmzpgg3H5P2QMC1oMXSLGPP3ADlHKw\nqwU1qzmiWr63JlsOYi+OQfwmblo797mHQ1qmqZ3PSuEQG7ndyAWW2sBeQc8G\ntWKdK68RO4/RkxhlWldFFVH0Ezro4pqdkvi/7q60o4fuvE1/wRoEOXI5EF1M\ncbHvX3gionOQRIbVEH7Jd1tNxB2ORMFcri3N4+9x/N4XW8F8uVcCOrJrxh/l\nvqfblcZULMHj6RWM3Rf4TaRtb3kbPyRkp/OQR2EOb2vRAwwpxkzqNTB/gA88\nT7F2gsSrGw9d2km9+cFHH4EXCDVFq7cxeP+6GcV9WghLAGMW4k0EHtT50Auw\nRUTQ\r\n=gTXD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEWgHx0XVj+vQqGGf+Rv4ZC5ew9QNpVhMTbOGqTJQbuZAiAHTiXc1kUkMr/X3NWfurlMDj8Wzjyya6vJ8e5CfhzMvQ=="}]},"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"maintainers":[{"name":"larsvanbraam","email":"larsvanbraam@gmail.com"},{"name":"mientjan","email":"mientjan.stelling@gmail.com"},{"name":"devmonk","email":"devmonk@mediamonks.com"},{"name":"thanarie","email":"thanarie@gmail.com"},{"name":"thi.js","email":"npm@tyz.nl"},{"name":"psimk","email":"p.simkevi@gmail.com"},{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_1.4.6_1621600933804_0.7492737591644081"},"_hasShrinkwrap":false},"2.0.0-beta.7":{"name":"isntnt","version":"2.0.0-beta.7","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","sideEffects":false,"author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && yarn build:ts && yarn build:ts-esm","build:ts":"tsc -d --skipLibCheck","build:ts-esm":"tsc -p tsconfig.esm.json -d --skipLibCheck","test":"jest --watchAll --coverage","prepublishOnly":"yarn build"},"repository":{"type":"git","url":"https://github.com/mediamonks/isntnt.git"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^4.3.2"},"readmeFilename":"README.md","readme":"Isntnt is a collection of composable JavaScript runtime type predicates with TypeScript type guard declarations. Supports generics including union and intersection types.\n\n# Features\n\n- [Predicates](#predicates)\n- [Predicate Factories](#predicate-factories)\n- [Types](#types)\n\n# Predicates\n\nA predicate is a function that checks whether a value matches a certain type, it always returns a boolean. Well known examples of JavaScript predicates are `Array.isArray`, `isNan`, and `Number.isNaN`. With `isntnt` you add a whole slew of additional predicates to your toolbox, they are listed below.\n\n## hasLength\n\nReturns `true` when you pass an object with a length property that is a valid [`length`](#isLength).\n\n```typescript\nhasLength(new ArrayBuffer()) // true\nhasLength({}) // false\n```\n\n## isAny\n\nAlways returns `true`.\n\n```typescript\nisAny(null) // true\nisAny(12) // true\n// always true\n```\n\n## isArray\n\nReturns `true` when you pass an array.\n\n```typescript\nisArray([]) // true\nisArray('foo') // false\n```\n\n## isArrayLike\n\nReturns `true` when you pass a object that is not a function with a length property that is a valid [`length`](#isLength).\n\n```typescript\nisArrayLike({ length: 12 }) // true\nisArrayLike(new Date()) // false\n```\n\n## isBigInt\n\nReturns `true` when you pass a bigint.\n\n```typescript\nisBigInt(116n) // true\nisBigInt(12) // false\n```\n\n## isBoolean\n\nReturns `true` when you pass a boolean.\n\n```typescript\nisBoolean(true) // true\nisBoolean(null) // false\n```\n\n## isDate\n\nReturns `true` when you pass a Date object.\n\n```typescript\nisDate(new Date()) // true\nisDate(Date.now()) // false\n```\n\n## isDictionary\n\nReturns `true` when you pass an object of which each property name, and each property value are a string.\n\n```typescript\nisDictionary({ a: 'foo' })\nisDictionary({ b: 12 })\n```\n\n## isFalse\n\nReturns `true` when you pass `false`.\n\n```typescript\nisFalse(false) // true\nisFalse(true) // false\n```\n\n## isFunction\n\nReturns `true` when you pass a function.\n\n```typescript\nisFunction(isFunction) // true\nisFunction({}) // true\n```\n\n## isInt\n\nReturns `true` when you pass an integer (a whole number).\n\n```typescript\nisInt(1) // true\nisInt(1.5) // false\n```\n\n## isInt8\n\nReturns `true` when you pass an [integer](#isInt) ranging from -128 to 127.\n\n```typescript\nisInt8(127) // true\nisInt8(128) // false\n```\n\n## isInt16\n\nReturns `true` when you pass an [integer](#isInt) ranging from -32,768 to 32,767.\n\n```typescript\nisInt16(12) // true\nisInt16(-50_000) // false\n```\n\n## isInt32\n\nReturns `true` when you pass an [integer](#isInt) ranging from -2,147,483,648 to 2,147,483,647.\n\n```typescript\nisInt32(12) // true\nisInt32(Number.MAX_SAFE_INTEGER) // false\n```\n\n## isLength\n\nAlias to [`isUint32`](#isUint32).\n\n## isMap\n\nReturns `true` when you pas a Map object.\n\n```typescript\nisMap(new Map()) // true\nisMap({}) // false\n```\n\n## isNegative\n\nReturns `true` when you pas a negative number (including -0).\n\n```typescript\nisNegative(-1) // true\nisNegative(1) // false\n```\n\n## isNever\n\nAlways returns `false`.\n\n```typescript\nisNever(null) // false\nisNever(true) // false\n// always returns false\n```\n\n## isNone\n\nReturns `true` when you pass `null` or `undefined`.\n\n```typescript\nisNone(null) // true\nisNone(128) // false\n```\n\n## isNull\n\nReturns `true` when you pass `null`.\n\n```typescript\nisNull(null) // true\nisNull(undefined) // false\n```\n\n## isNumber\n\nReturns `true` when you pass a number that is not `NaN`.\n\n```typescript\nisNumber(12) // true\nisNumber(NaN) // false\n```\n\n## isObject\n\nReturns `true` when you pass an object that is not `null`.\n\n```typescript\nisObject({}) // true\nisObject(null) // false\n```\n\n## isObjectLike\n\nReturns `true` when you pass an value that is not a boolean, `null`, or `undefined`.\n\n```typescript\nisObjectLike([]) // true\nisObjectLike(true) // false\n```\n\n## isPlainObject\n\nReturns `true` when you pass an object that was constructed by `Object`.\n\n```typescript\nisPlainObject({}) // true\nisPlainObject(new Date()) // false\n```\n\n## isPositive\n\nReturns `true` when you pass a positive number.\n\n```typescript\nisPositive(1) // true\nisPositive(-1) // false\n```\n\n## isPrimitive\n\nReturns `true` when you pass `null`, `undefined`, a boolean, bigint, number, symbol, or string.\n\n```typescript\nisPrimitive(1) // true\nisPrimitive([]) // false\n```\n\n## isRegExp\n\nReturns `true` when you pass a RegExp object.\n\n```typescript\nisRegExp(/foo/) // true\nisRegExp([]) // false\n```\n\n## isSerializable\n\nReturns `true` when you pass a [serializable primitive](#isSerializablePrimitive), a [serializable array](#isSerializableArray), or [serializable object](#isSerializableObject).\n\n```typescript\nisSerializable(12) // true\nisSerializable(console.log) // false\n```\n\n## isSerializableArray\n\nReturns `true` when you pass an array where every element is [serializable](#isSerializable).\n\n```typescript\nisSerializableArray(['foo', 1]) // true\nisSerializableArray([new Date()]) // false\n```\n\n## isSerializableNumber\n\nReturns `true` when you pass a number that is not `NaN`, `Infinity`, or `-Infinity`.\n\n```typescript\nisSerializableNumber(1) // true\nisSerializableNumber(Infinity) // false\n```\n\n## isSerializableObject\n\nReturns `true` when you pass an object where every property is [serializable](#isSerializable).\n\n```typescript\nisSerializableObject({ foo: 1 }) // true\nisSerializableObject({ bar: Infinity }) // false\n```\n\n## isSerializablePrimitive\n\nReturns `true` when you pass `null`, a [serializable number](#isSerializableNumber), a boolean, bigint, symbol, or string.\n\n```typescript\nisSerializablePrimitive(null) // true\nisSerializablePrimitive(NaN) // false\n```\n\n## isSet\n\nReturns `true` when you pas a Set object.\n\n```typescript\nisSet(new Set()) // true\nisSet([]) // false\n```\n\n## isSome\n\nReturns `true` when you pas a value other than `null` or `undefined`.\n\n```typescript\nisSome('foo') // true\nisSome(null) // false\n```\n\n## isString\n\nReturns `true` when you pas a string.\n\n```typescript\nisString('bar') // true\nisString(48) // false\n```\n\n## isSymbol\n\nReturns `true` when you pas a symbol.\n\n```typescript\nisSymbol(Symbol()) // true\nisSymbol('baz') // false\n```\n\n## isTrue\n\nReturns `true` when you pas `true`.\n\n```typescript\nisTrue(true) // true\nisTrue(false) // false\n```\n\n## isUint\n\nReturns `true` when you pass a positive [integer](#isInt).\n\n```typescript\nisUint(112) // true\nisUint(-16) // false\n```\n\n## isUint8\n\nReturns `true` when you pass an [unsigned integer](#isUint) ranging from 0 to 255.\n\n```typescript\nisUint8(255) // true\nisUint8(1.2) // false\n```\n\n## isUint16\n\nReturns `true` when you pass an [unsigned integer](#isUint) ranging from 0 to 65,535.\n\n```typescript\nisUint16(2048) // true\nisUint16(-12) // false\n```\n\n## isUint32\n\nReturns `true` when you pass an [unsigned integer](#isUint) ranging from 0 to 4,294,967,295.\n\n```typescript\nisUint32(256) // true\nisUint(Number.MAX_SAFE_INTEGER) // false\n```\n\n## isUndefined\n\nReturns `true` when you pass `undefined`.\n\n```typescript\nisUndefined(undefined) // true\nisUndefined(null) // false\n```\n\n## isWeakMap\n\nReturns `true` when you pass a `WeakMap` object.\n\n```typescript\nisWeakMap(new WeakMap()) // true\nisWeakMap(new Map()) // false\n```\n\n# Predicate factories\n\nPredicate factories is where the real fun begins, they allow you to create and combine predicates of your own to create new predicates. By composing predicates you can describe objects, union types, number ranges, and so on.\n\n## above\n\nCreate a predicate based on a floor value, it checks if a [number](#isNumber) exceeds the floor value it’s given. This is an analogue to the `>` operator.\n\n```typescript\nconst isAboveZero = above(0)\n\nisAboveZero(-1) // false\nisAboveZero(12) // true\n```\n\nThe `isAboveZero` predicate above returns `true` when you pass a [number](#isNumber) that is greater than `0`.\n\n## and\n\nCreate a predicate based on several other predicates, it returns `true` if every predicate that is passed also returns `true`. This is an analogue to the `&&` operator.\n\n```typescript\nconst adultAge = 18\nconst isMinorAge = and(isUint, below(adultAge))\n\nisMinorAge(12) // true\nisMinorAge(33) // false\n```\n\nThe `isMinorAge` predicate above returns `true` when you pass an [unsigned integer](#isUint) that is below 18.\n\n```typescript\nconst isUser = shape({ name: isString })\nconst hasEmailAddress = shape({ email: isString })\n\nconst isUserWithEmail = and(isUser, hasEmailAddress)\n```\n\nThe `isUserWithEmail` predicate above returns `true` when you pass an object with a `name` and an `email` property, both of which are a string.\n\n## array\n\nCreate a predicate that checks every array element, it returns `true` when its predicate returns `true` for every element in an array.\n\n```typescript\nconst isNumberArray = array(isNumber)\n```\n\nThe `isNumberArray` predicate above returns `true` when you pass an array of which every element is a [number](#isNumber).\n\n## at\n\nCreate a predicate based on a property key and another predicate, it returns `true` when its predicate returns `true` for the value of an object at its given key.\n\n```typescript\nconst isStringAtName = at('name', isString)\n\nisStringAtName({ name: 'Jane' }) // true\nisStringAtName({ name: null }) // false\n```\n\nThe `isStringAtName` predicate above returns `true` when you pass an object of which the `name` property is a string.\n\n## below\n\nCreate a predicate based on a ceiling value, it checks if a [number](#isNumber) is below the ceiling value it’s given. This is an analogue to the `<` operator.\n\n```typescript\nconst isBelow100 = below(100)\n\nisBelow100(124) // false\nisBelow100(32) // true\n```\n\nThe `isBelow100` predicate above returns `true` when you pass a [number](#isNumber) that is less than `100`.\n\n## either\n\nCreate a predicate based on several [literal](#literal) values, it returns `true` if a value matches either of the primitive values it’s given.\n\n```typescript\nconst isAOrB = either('a', 'b')\n\nisAOrB('a') // true\nisAOrB('c') // false\n```\n\nThe `isAOrB` predicate above returns `true` when you pass either `a`, or `b`.\n\n## has\n\nCreate a predicate based on a property key, it returns `true` if an object has a property of the key it’s given.\n\n```typescript\nconst hasName = has('name')\n\nhasName({ name: null }) // true\nhasName({ age: 36 }) // false\n```\n\nThe `hasName` predicate above returns `true` when you pass an object that has a `name` property.\n\n## instance\n\nCreate a predicate based on a constructor, it returns `true` if an object is an instance of the constructor key it’s given.\n\n```typescript\nconst isInstanceofString = instance(String)\n\nisInstanceofString(new String('foo')) // true\nisInstanceofString('foo') // false\n```\n\nThe `isInstanceofString` predicate above returns `true` when you pass a String object.\n\n## literal\n\nCreate a predicate based a [primitive](#isPrimitive) value, it returns `true` if a value equals the primitive value it’s given.\n\n```typescript\nconst is42 = literal(42)\n\nis42(42) // true\nis42(43) // false\n```\n\nThe `is42` predicate above returns `true` when you pass `42`.\n\n## max\n\nCreate a predicate based on a max. value, it checks if a [number](#isNumber) is below or equal to the max. value it’s given. This is an analogue to the `<=` operator.\n\n```typescript\nconst isMax100 = max(100)\n\nisMax100(100) // true\nisMax100(101) // false\n```\n\nThe `isMax100` predicate above returns `true` when you pass a [number](#isNumber) that is below or equal to `100`.\n\n## maybe\n\nCreate a predicate based on another predicate, it checks if a value matches it’s given predicate, or equals `null` or `undefined`.\n\n```typescript\nconst isMaybeString = maybe(isString)\n\nisMaybeString(null) // true\nisMaybeString(12) // false\n```\n\nThe `isMaybeString` predicate above returns `true` when you pass a string, `null`, or `undefined`.\n\n## min\n\nCreate a predicate based on a min. value, it checks if a [number](#isNumber) is above or equal to the min. value it’s given. This is an analogue to the `>=` operator.\n\n```typescript\nconst isMin100 = min(100)\n\nisMin100(100) // true\nisMin100(99) // false\n```\n\nThe `isMin0` predicate above returns `true` when you pass a [number](#isNumber) that is above or equal to `100`.\n\n## noneable\n\nAliases [`maybe`](#maybe).\n\n## nullable\n\nCreate a predicate based on another predicate, it checks if a value matches it’s given predicate, or equals `null`.\n\n```typescript\nconst isNullableString = nullable(isString)\n\nisNullableString(null) // true\nisNullableString(12) // false\n```\n\nThe `isNullableString` predicate above returns `true` when you pass a string or `null`.\n\n## object\n\nCreate a predicate that checks every object property, it returns `true` when its predicate returns `true` for every object value.\n\n```typescript\nconst isEnumerable = object(isUint)\n```\n\nThe `isEnumerable` predicate above returns `true` when you pass an object of which every element is an [unsigned integer](#isUint).\n\n## optional\n\n`<T>(predicate: Predicate<T>) => (value: unknown) => value is T | undefined`\n\n```typescript\nconst isOptionalString = optional(isString)\n\nisOptionalString(undefined) // true\nisOptionalString(12) // false\n```\n\nThe `isOptionalString` predicate above returns `true` when you pass a string or `undefined`.\n\n## or\n\nCreate a predicate based on several other predicates, it returns `true` if some predicate that is passed also returns `true`. This is an analogue to the `||` operator.\n\n```typescript\nconst isContent = or(isString, isSerializableNumber)\n\nisContent(12) // true\nisContent(null) // false\n```\n\nThe `isContent` predicate above returns `true` when you pass a string or a [primitive number](#isPrimitiveNumber).\n\n```typescript\nconst isStringOrNumber = or(isString, isNumber)\n\nisStringOrNumber(8) // true\nisStringOrNumber([]) // false\n```\n\n## record\n\nCreate a predicate based on a key predicate and a value predicate, it returns `true` if each property key of an object returns `true` for its key predicate, and each value returns `true` for its value predicate.\n\n```typescript\nconst isValidKey = either('a', 'b')\n\nconst isKeyValueMap = record(isValidKey, isInt)\n\nisKeyValueMap({ a: 2 }) // true\nisKeyValueMap({ a: null }) // false\nisKeyValueMap({ c: 2 }) // false\n```\n\nThe `isKeyValueMap` predicate above returns `true` when you pass an object where each key is either `a` or `b`, and each property value is an [integer](#isInt).\n\n## shape\n\nCreate a predicate based on a predicate object, it returns `true` if each property value of an object returns `true` for its corresponding predicate.\n\n```typescript\nconst isPoint = shape({ x: isNumber, y: isNumber })\n\nisPoint({ x: 12, y: 36 }) // true\nisPoint({ x: 12 }) // false\n```\n\nThe `isPoint` predicate above returns `true` when you an pass an object where both `x` and `y` properties are a [number](#isNumber).\n\n## test\n\n```typescript\nconst isSlug = test(/^[A-Z0-9-]+$/i)\n\nisSlug('foo-bar') // true\nisSlug('!#$') // false\n```\n\nThe `isSlug` predicate above returns `true` when you an pass a string that matches `/^[A-Z0-9-]+$/i`.\n\n## tuple\n\nCreate a predicate based on index-based predicates, it returns `true` if the element at each index of an array with a fixed length returns `true` for its corresponding predicate.\n\n```typescript\nconst isLatitude = and(min(-90), max(90))\nconst isLongitude = and(min(-180), max(180))\n\nconst isLatLong = tuple(isLatitude, isLongitude)\n\nisLatLong(45, -120) // true\nisLatLong(120, 200) // false\n```\n\nThe `isLatLong` predicate above returns `true` when you an pass an array with a length of 2 where index 0 is a latitude, and index 1 is a longitude value.\n\n# Types\n\n## Intersect\n\n```typescript\ntype User = Intersect<{ name: string } | { email: string }> // { name: string } & { email: string }\n```\n\n## Maybe\n\nUnions a type with `null` and `undefined`.\n\n```typescript\ntype MaybeString = Maybe<string> // string | null | undefined\n```\n\n## None\n\nUnion of `null` and `undefined`.\n\n```typescript\ntype X = None // null | undefined\n```\n\n## Nullable\n\nUnions a type with `null`.\n\n```typescript\ntype NullableString = Nullable<string> // string | null\n```\n\n## Optional\n\nUnions a type with `undefined`.\n\n```typescript\ntype OptionalString = Optional<string> // string | undefined\n```\n\n## Predicate\n\nDescribes a predicate function signature\n\n```typescript\ntype IsString = Predicate<string> // <U>(value: U): value is Extract<U, string>\n```\n\n## Primitive\n\nUnion of all primitive types.\n\n```typescript\ntype X = Primitive // null | undefined | boolean | number | string | symbol | bigint\n```\n\n## Serializable\n\n```typescript\ntype X = Serializable // SerializableArray | SerializableObject | SerializableObject\n```\n\n## SerializableArray\n\n```typescript\ntype X = SerializableArray // Array<Serializable> | ReadonlyArray<Serializable>\n```\n\n## SerializableObject\n\n```typescript\ntype X = SerializableObject // { [key: string]: Serializable | undefined }\n```\n\n## SerializablePrimitive\n\n```typescript\ntype X = SerializablePrimitive // null | boolean | number | string\n```\n\n## Some\n\nExcludes `null` and `undefined` from a type, type parameter is optional.\n\n```typescript\ntype X = Some // Function | boolean | bigint | number | string | symbol | object\ntype Y = Some<string | null> // string\n```\n\n## Static\n\nExtracts type parameter from Predicate type. This is useful to extract TypeScript types from (complex) predicates.\n\n```typescript\ntype X = Static<Predicate<string>>> // string\n```\n","licenseText":"Copyright © 2020 Nathan Uphoff\n\nThis work is free. You can redistribute it and/or modify it under the\nterms of the Do What The Fuck You Want To Public License, Version 2,\nas published by Sam Hocevar.\n\n  DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n                   Version 2, December 2004\n\nCopyright (C) 2004 Sam Hocevar\n 14 rue de Plaisance, 75014 Paris, France\nEveryone is permitted to copy and distribute verbatim or modified\ncopies of this license document, and changing it is allowed as long\nas the name is changed.\n\n           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. You just DO WHAT THE FUCK YOU WANT TO.","_id":"isntnt@2.0.0-beta.7","dist":{"shasum":"59a0f1e789ee9d95683061546737f0ba8b210873","integrity":"sha512-OflMCMwuBtXfBJWLd0n6m6vXQ1HGErtD9KYBi+AQCvef2aDaUIqkDWeX/yfeiUdLVQJuNDkiN6D2rybIrlb39w==","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-2.0.0-beta.7.tgz","fileCount":642,"unpackedSize":300728,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvzRUCRA9TVsSAnZWagAA7iwP/0IkIR2HAR+CTLPA+fcF\nD2zrOz3HX5evZ9PqTbz24gSjv7p7U185ujn9oe8ezAXI6y0B4Vvjrp97Q0pr\ndCqd4yPkbgddaS2FFMknsWxbfIkLv883i2Apv3y8svWMefBqO1ZP7e86I7ND\n2/f1O1Qgagjk+TNQ/ZSDp8yuZPqwgmYoDcE57OsE2dDnn6zcAK5TZXNg7hG2\noaKfngj+vNhLEMUru2R2gJLRR+tX3RikdWKV0FUSHUKtoP1M7bruYfCNbNs+\nHcPH/ZEPU/nHoszwLPWTyDnThTGmU4V3ywcrgQ65Av0f8BhtsKI5l8w3Qkxl\ndlUEyvdEcXQi6JP4BcTVeF1Y6yoPF2IpihGiS230LtLpReD+EnCNNx3G9Hyz\niDu46ha8Mu2FUODCf5wALyyuwxugemSRbUirH31WNuS7oARj2rRY4VFdtAZ1\n+xnQVPcS6asWjZtpM9GMSnHzv1uLbET2+2wltc22bFrFZgJ54RHA+RXUwNJv\no8Hz1LU7JRsm4Z6LkTPBiJg3VKO3XyrtGCTKht5hLrORYBIWWlXfrY6+dsj0\nlo7pgzaj6do13ubQ8xhOLfxrJtIeFlcguorzS+khjVQvNp99UjYZUkFo+eyC\ncxcxou86MYwx9BZO8uyjYQeKit0glvx4VMPNKNvhxRcwNP+ZMp+peJI1zFz2\nVR4+\r\n=ONCd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGVP2vdh1H2L6+BaxTqACp5XDzHoH7a6xWah2OyEkHATAiEAvH3f8X0sqo54scpgdJVNSP23OilpZRzDiNxlLhKaFiI="}]},"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"maintainers":[{"name":"n0cha","email":"n0chabizniz@gmail.com"},{"name":"larsvanbraam","email":"larsvanbraam@gmail.com"},{"name":"mientjan","email":"mientjan.stelling@gmail.com"},{"name":"devmonk","email":"devmonk@mediamonks.com"},{"name":"thanarie","email":"thanarie@gmail.com"},{"name":"thi.js","email":"npm@tyz.nl"},{"name":"psimk","email":"p.simkevi@gmail.com"},{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_2.0.0-beta.7_1623143508051_0.94291909748745"},"_hasShrinkwrap":false},"2.0.0-beta.8":{"name":"isntnt","version":"2.0.0-beta.8","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","sideEffects":false,"author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && yarn build:ts && yarn build:ts-esm","build:ts":"tsc -d --skipLibCheck","build:ts-esm":"tsc -p tsconfig.esm.json -d --skipLibCheck","test":"jest --watchAll --coverage","prepublishOnly":"yarn build"},"repository":{"type":"git","url":"https://github.com/mediamonks/isntnt.git"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^4.3.2"},"readmeFilename":"README.md","readme":"Isntnt is a collection of composable JavaScript runtime type predicates with TypeScript type guard declarations. Supports generics including union and intersection types.\n\n# Features\n\n- [Predicates](#predicates)\n- [Predicate Factories](#predicate-factories)\n- [Types](#types)\n\n# Predicates\n\nA predicate is a function that checks whether a value matches a certain type, it always returns a boolean. Well known examples of JavaScript predicates are `Array.isArray`, `isNan`, and `Number.isNaN`. With `isntnt` you add a whole slew of additional predicates to your toolbox, they are listed below.\n\n## hasLength\n\nReturns `true` when you pass an object with a length property that is a valid [`length`](#isLength).\n\n```typescript\nhasLength(new ArrayBuffer()) // true\nhasLength({}) // false\n```\n\n## isAny\n\nAlways returns `true`.\n\n```typescript\nisAny(null) // true\nisAny(12) // true\n// always true\n```\n\n## isArray\n\nReturns `true` when you pass an array.\n\n```typescript\nisArray([]) // true\nisArray('foo') // false\n```\n\n## isArrayLike\n\nReturns `true` when you pass a object that is not a function with a length property that is a valid [`length`](#isLength).\n\n```typescript\nisArrayLike({ length: 12 }) // true\nisArrayLike(new Date()) // false\n```\n\n## isBigInt\n\nReturns `true` when you pass a bigint.\n\n```typescript\nisBigInt(116n) // true\nisBigInt(12) // false\n```\n\n## isBoolean\n\nReturns `true` when you pass a boolean.\n\n```typescript\nisBoolean(true) // true\nisBoolean(null) // false\n```\n\n## isDate\n\nReturns `true` when you pass a Date object.\n\n```typescript\nisDate(new Date()) // true\nisDate(Date.now()) // false\n```\n\n## isDictionary\n\nReturns `true` when you pass an object of which each property name, and each property value are a string.\n\n```typescript\nisDictionary({ a: 'foo' })\nisDictionary({ b: 12 })\n```\n\n## isFalse\n\nReturns `true` when you pass `false`.\n\n```typescript\nisFalse(false) // true\nisFalse(true) // false\n```\n\n## isFunction\n\nReturns `true` when you pass a function.\n\n```typescript\nisFunction(isFunction) // true\nisFunction({}) // true\n```\n\n## isInt\n\nReturns `true` when you pass an integer (a whole number).\n\n```typescript\nisInt(1) // true\nisInt(1.5) // false\n```\n\n## isInt8\n\nReturns `true` when you pass an [integer](#isInt) ranging from -128 to 127.\n\n```typescript\nisInt8(127) // true\nisInt8(128) // false\n```\n\n## isInt16\n\nReturns `true` when you pass an [integer](#isInt) ranging from -32,768 to 32,767.\n\n```typescript\nisInt16(12) // true\nisInt16(-50_000) // false\n```\n\n## isInt32\n\nReturns `true` when you pass an [integer](#isInt) ranging from -2,147,483,648 to 2,147,483,647.\n\n```typescript\nisInt32(12) // true\nisInt32(Number.MAX_SAFE_INTEGER) // false\n```\n\n## isLength\n\nAlias to [`isUint32`](#isUint32).\n\n## isMap\n\nReturns `true` when you pas a Map object.\n\n```typescript\nisMap(new Map()) // true\nisMap({}) // false\n```\n\n## isNegative\n\nReturns `true` when you pas a negative number (including -0).\n\n```typescript\nisNegative(-1) // true\nisNegative(1) // false\n```\n\n## isNever\n\nAlways returns `false`.\n\n```typescript\nisNever(null) // false\nisNever(true) // false\n// always returns false\n```\n\n## isNone\n\nReturns `true` when you pass `null` or `undefined`.\n\n```typescript\nisNone(null) // true\nisNone(128) // false\n```\n\n## isNull\n\nReturns `true` when you pass `null`.\n\n```typescript\nisNull(null) // true\nisNull(undefined) // false\n```\n\n## isNumber\n\nReturns `true` when you pass a number that is not `NaN`.\n\n```typescript\nisNumber(12) // true\nisNumber(NaN) // false\n```\n\n## isObject\n\nReturns `true` when you pass an object that is not `null`.\n\n```typescript\nisObject({}) // true\nisObject(null) // false\n```\n\n## isObjectLike\n\nReturns `true` when you pass an value that is not a boolean, `null`, or `undefined`.\n\n```typescript\nisObjectLike([]) // true\nisObjectLike(true) // false\n```\n\n## isPlainObject\n\nReturns `true` when you pass an object that was constructed by `Object`.\n\n```typescript\nisPlainObject({}) // true\nisPlainObject(new Date()) // false\n```\n\n## isPositive\n\nReturns `true` when you pass a positive number.\n\n```typescript\nisPositive(1) // true\nisPositive(-1) // false\n```\n\n## isPrimitive\n\nReturns `true` when you pass `null`, `undefined`, a boolean, bigint, number, symbol, or string.\n\n```typescript\nisPrimitive(1) // true\nisPrimitive([]) // false\n```\n\n## isRegExp\n\nReturns `true` when you pass a RegExp object.\n\n```typescript\nisRegExp(/foo/) // true\nisRegExp([]) // false\n```\n\n## isSerializable\n\nReturns `true` when you pass a [serializable primitive](#isSerializablePrimitive), a [serializable array](#isSerializableArray), or [serializable object](#isSerializableObject).\n\n```typescript\nisSerializable(12) // true\nisSerializable(console.log) // false\n```\n\n## isSerializableArray\n\nReturns `true` when you pass an array where every element is [serializable](#isSerializable).\n\n```typescript\nisSerializableArray(['foo', 1]) // true\nisSerializableArray([new Date()]) // false\n```\n\n## isSerializableNumber\n\nReturns `true` when you pass a number that is not `NaN`, `Infinity`, or `-Infinity`.\n\n```typescript\nisSerializableNumber(1) // true\nisSerializableNumber(Infinity) // false\n```\n\n## isSerializableObject\n\nReturns `true` when you pass an object where every property is [serializable](#isSerializable).\n\n```typescript\nisSerializableObject({ foo: 1 }) // true\nisSerializableObject({ bar: Infinity }) // false\n```\n\n## isSerializablePrimitive\n\nReturns `true` when you pass `null`, a [serializable number](#isSerializableNumber), a boolean, bigint, symbol, or string.\n\n```typescript\nisSerializablePrimitive(null) // true\nisSerializablePrimitive(NaN) // false\n```\n\n## isSet\n\nReturns `true` when you pas a Set object.\n\n```typescript\nisSet(new Set()) // true\nisSet([]) // false\n```\n\n## isSome\n\nReturns `true` when you pas a value other than `null` or `undefined`.\n\n```typescript\nisSome('foo') // true\nisSome(null) // false\n```\n\n## isString\n\nReturns `true` when you pas a string.\n\n```typescript\nisString('bar') // true\nisString(48) // false\n```\n\n## isSymbol\n\nReturns `true` when you pas a symbol.\n\n```typescript\nisSymbol(Symbol()) // true\nisSymbol('baz') // false\n```\n\n## isTrue\n\nReturns `true` when you pas `true`.\n\n```typescript\nisTrue(true) // true\nisTrue(false) // false\n```\n\n## isUint\n\nReturns `true` when you pass a positive [integer](#isInt).\n\n```typescript\nisUint(112) // true\nisUint(-16) // false\n```\n\n## isUint8\n\nReturns `true` when you pass an [unsigned integer](#isUint) ranging from 0 to 255.\n\n```typescript\nisUint8(255) // true\nisUint8(1.2) // false\n```\n\n## isUint16\n\nReturns `true` when you pass an [unsigned integer](#isUint) ranging from 0 to 65,535.\n\n```typescript\nisUint16(2048) // true\nisUint16(-12) // false\n```\n\n## isUint32\n\nReturns `true` when you pass an [unsigned integer](#isUint) ranging from 0 to 4,294,967,295.\n\n```typescript\nisUint32(256) // true\nisUint(Number.MAX_SAFE_INTEGER) // false\n```\n\n## isUndefined\n\nReturns `true` when you pass `undefined`.\n\n```typescript\nisUndefined(undefined) // true\nisUndefined(null) // false\n```\n\n## isWeakMap\n\nReturns `true` when you pass a `WeakMap` object.\n\n```typescript\nisWeakMap(new WeakMap()) // true\nisWeakMap(new Map()) // false\n```\n\n# Predicate factories\n\nPredicate factories is where the real fun begins, they allow you to create and combine predicates of your own to create new predicates. By composing predicates you can describe objects, union types, number ranges, and so on.\n\n## above\n\nCreate a predicate based on a floor value, it checks if a [number](#isNumber) exceeds the floor value it’s given. This is an analogue to the `>` operator.\n\n```typescript\nconst isAboveZero = above(0)\n\nisAboveZero(-1) // false\nisAboveZero(12) // true\n```\n\nThe `isAboveZero` predicate above returns `true` when you pass a [number](#isNumber) that is greater than `0`.\n\n## and\n\nCreate a predicate based on several other predicates, it returns `true` if every predicate that is passed also returns `true`. This is an analogue to the `&&` operator.\n\n```typescript\nconst adultAge = 18\nconst isMinorAge = and(isUint, below(adultAge))\n\nisMinorAge(12) // true\nisMinorAge(33) // false\n```\n\nThe `isMinorAge` predicate above returns `true` when you pass an [unsigned integer](#isUint) that is below 18.\n\n```typescript\nconst isUser = shape({ name: isString })\nconst hasEmailAddress = shape({ email: isString })\n\nconst isUserWithEmail = and(isUser, hasEmailAddress)\n```\n\nThe `isUserWithEmail` predicate above returns `true` when you pass an object with a `name` and an `email` property, both of which are a string.\n\n## array\n\nCreate a predicate that checks every array element, it returns `true` when its predicate returns `true` for every element in an array.\n\n```typescript\nconst isNumberArray = array(isNumber)\n```\n\nThe `isNumberArray` predicate above returns `true` when you pass an array of which every element is a [number](#isNumber).\n\n## at\n\nCreate a predicate based on a property key and another predicate, it returns `true` when its predicate returns `true` for the value of an object at its given key.\n\n```typescript\nconst isStringAtName = at('name', isString)\n\nisStringAtName({ name: 'Jane' }) // true\nisStringAtName({ name: null }) // false\n```\n\nThe `isStringAtName` predicate above returns `true` when you pass an object of which the `name` property is a string.\n\n## below\n\nCreate a predicate based on a ceiling value, it checks if a [number](#isNumber) is below the ceiling value it’s given. This is an analogue to the `<` operator.\n\n```typescript\nconst isBelow100 = below(100)\n\nisBelow100(124) // false\nisBelow100(32) // true\n```\n\nThe `isBelow100` predicate above returns `true` when you pass a [number](#isNumber) that is less than `100`.\n\n## either\n\nCreate a predicate based on several [literal](#literal) values, it returns `true` if a value matches either of the primitive values it’s given.\n\n```typescript\nconst isAOrB = either('a', 'b')\n\nisAOrB('a') // true\nisAOrB('c') // false\n```\n\nThe `isAOrB` predicate above returns `true` when you pass either `a`, or `b`.\n\n## has\n\nCreate a predicate based on a property key, it returns `true` if an object has a property of the key it’s given.\n\n```typescript\nconst hasName = has('name')\n\nhasName({ name: null }) // true\nhasName({ age: 36 }) // false\n```\n\nThe `hasName` predicate above returns `true` when you pass an object that has a `name` property.\n\n## instance\n\nCreate a predicate based on a constructor, it returns `true` if an object is an instance of the constructor key it’s given.\n\n```typescript\nconst isInstanceofString = instance(String)\n\nisInstanceofString(new String('foo')) // true\nisInstanceofString('foo') // false\n```\n\nThe `isInstanceofString` predicate above returns `true` when you pass a String object.\n\n## literal\n\nCreate a predicate based a [primitive](#isPrimitive) value, it returns `true` if a value equals the primitive value it’s given.\n\n```typescript\nconst is42 = literal(42)\n\nis42(42) // true\nis42(43) // false\n```\n\nThe `is42` predicate above returns `true` when you pass `42`.\n\n## max\n\nCreate a predicate based on a max. value, it checks if a [number](#isNumber) is below or equal to the max. value it’s given. This is an analogue to the `<=` operator.\n\n```typescript\nconst isMax100 = max(100)\n\nisMax100(100) // true\nisMax100(101) // false\n```\n\nThe `isMax100` predicate above returns `true` when you pass a [number](#isNumber) that is below or equal to `100`.\n\n## maybe\n\nCreate a predicate based on another predicate, it checks if a value matches it’s given predicate, or equals `null` or `undefined`.\n\n```typescript\nconst isMaybeString = maybe(isString)\n\nisMaybeString(null) // true\nisMaybeString(12) // false\n```\n\nThe `isMaybeString` predicate above returns `true` when you pass a string, `null`, or `undefined`.\n\n## min\n\nCreate a predicate based on a min. value, it checks if a [number](#isNumber) is above or equal to the min. value it’s given. This is an analogue to the `>=` operator.\n\n```typescript\nconst isMin100 = min(100)\n\nisMin100(100) // true\nisMin100(99) // false\n```\n\nThe `isMin0` predicate above returns `true` when you pass a [number](#isNumber) that is above or equal to `100`.\n\n## noneable\n\nAliases [`maybe`](#maybe).\n\n## nullable\n\nCreate a predicate based on another predicate, it checks if a value matches it’s given predicate, or equals `null`.\n\n```typescript\nconst isNullableString = nullable(isString)\n\nisNullableString(null) // true\nisNullableString(12) // false\n```\n\nThe `isNullableString` predicate above returns `true` when you pass a string or `null`.\n\n## object\n\nCreate a predicate that checks every object property, it returns `true` when its predicate returns `true` for every object value.\n\n```typescript\nconst isEnumerable = object(isUint)\n```\n\nThe `isEnumerable` predicate above returns `true` when you pass an object of which every element is an [unsigned integer](#isUint).\n\n## optional\n\n`<T>(predicate: Predicate<T>) => (value: unknown) => value is T | undefined`\n\n```typescript\nconst isOptionalString = optional(isString)\n\nisOptionalString(undefined) // true\nisOptionalString(12) // false\n```\n\nThe `isOptionalString` predicate above returns `true` when you pass a string or `undefined`.\n\n## or\n\nCreate a predicate based on several other predicates, it returns `true` if some predicate that is passed also returns `true`. This is an analogue to the `||` operator.\n\n```typescript\nconst isContent = or(isString, isSerializableNumber)\n\nisContent(12) // true\nisContent(null) // false\n```\n\nThe `isContent` predicate above returns `true` when you pass a string or a [primitive number](#isPrimitiveNumber).\n\n```typescript\nconst isStringOrNumber = or(isString, isNumber)\n\nisStringOrNumber(8) // true\nisStringOrNumber([]) // false\n```\n\n## record\n\nCreate a predicate based on a key predicate and a value predicate, it returns `true` if each property key of an object returns `true` for its key predicate, and each value returns `true` for its value predicate.\n\n```typescript\nconst isValidKey = either('a', 'b')\n\nconst isKeyValueMap = record(isValidKey, isInt)\n\nisKeyValueMap({ a: 2 }) // true\nisKeyValueMap({ a: null }) // false\nisKeyValueMap({ c: 2 }) // false\n```\n\nThe `isKeyValueMap` predicate above returns `true` when you pass an object where each key is either `a` or `b`, and each property value is an [integer](#isInt).\n\n## shape\n\nCreate a predicate based on a predicate object, it returns `true` if each property value of an object returns `true` for its corresponding predicate.\n\n```typescript\nconst isPoint = shape({ x: isNumber, y: isNumber })\n\nisPoint({ x: 12, y: 36 }) // true\nisPoint({ x: 12 }) // false\n```\n\nThe `isPoint` predicate above returns `true` when you an pass an object where both `x` and `y` properties are a [number](#isNumber).\n\n## test\n\n```typescript\nconst isSlug = test(/^[A-Z0-9-]+$/i)\n\nisSlug('foo-bar') // true\nisSlug('!#$') // false\n```\n\nThe `isSlug` predicate above returns `true` when you an pass a string that matches `/^[A-Z0-9-]+$/i`.\n\n## tuple\n\nCreate a predicate based on index-based predicates, it returns `true` if the element at each index of an array with a fixed length returns `true` for its corresponding predicate.\n\n```typescript\nconst isLatitude = and(min(-90), max(90))\nconst isLongitude = and(min(-180), max(180))\n\nconst isLatLong = tuple(isLatitude, isLongitude)\n\nisLatLong(45, -120) // true\nisLatLong(120, 200) // false\n```\n\nThe `isLatLong` predicate above returns `true` when you an pass an array with a length of 2 where index 0 is a latitude, and index 1 is a longitude value.\n\n# Types\n\n## Intersect\n\n```typescript\ntype User = Intersect<{ name: string } | { email: string }> // { name: string } & { email: string }\n```\n\n## Maybe\n\nUnions a type with `null` and `undefined`.\n\n```typescript\ntype MaybeString = Maybe<string> // string | null | undefined\n```\n\n## None\n\nUnion of `null` and `undefined`.\n\n```typescript\ntype X = None // null | undefined\n```\n\n## Nullable\n\nUnions a type with `null`.\n\n```typescript\ntype NullableString = Nullable<string> // string | null\n```\n\n## Optional\n\nUnions a type with `undefined`.\n\n```typescript\ntype OptionalString = Optional<string> // string | undefined\n```\n\n## Predicate\n\nDescribes a predicate function signature\n\n```typescript\ntype IsString = Predicate<string> // <U>(value: U): value is Extract<U, string>\n```\n\n## Primitive\n\nUnion of all primitive types.\n\n```typescript\ntype X = Primitive // null | undefined | boolean | number | string | symbol | bigint\n```\n\n## Serializable\n\n```typescript\ntype X = Serializable // SerializableArray | SerializableObject | SerializableObject\n```\n\n## SerializableArray\n\n```typescript\ntype X = SerializableArray // Array<Serializable> | ReadonlyArray<Serializable>\n```\n\n## SerializableObject\n\n```typescript\ntype X = SerializableObject // { [key: string]: Serializable | undefined }\n```\n\n## SerializablePrimitive\n\n```typescript\ntype X = SerializablePrimitive // null | boolean | number | string\n```\n\n## Some\n\nExcludes `null` and `undefined` from a type, type parameter is optional.\n\n```typescript\ntype X = Some // Function | boolean | bigint | number | string | symbol | object\ntype Y = Some<string | null> // string\n```\n\n## Static\n\nExtracts type parameter from Predicate type. This is useful to extract TypeScript types from (complex) predicates.\n\n```typescript\ntype X = Static<Predicate<string>>> // string\n```\n","licenseText":"Copyright © 2020 Nathan Uphoff\n\nThis work is free. You can redistribute it and/or modify it under the\nterms of the Do What The Fuck You Want To Public License, Version 2,\nas published by Sam Hocevar.\n\n  DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n                   Version 2, December 2004\n\nCopyright (C) 2004 Sam Hocevar\n 14 rue de Plaisance, 75014 Paris, France\nEveryone is permitted to copy and distribute verbatim or modified\ncopies of this license document, and changing it is allowed as long\nas the name is changed.\n\n           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. You just DO WHAT THE FUCK YOU WANT TO.","_id":"isntnt@2.0.0-beta.8","dist":{"shasum":"44042762590312fa8cea671bf3c1e9edc30e34ef","integrity":"sha512-odPYYhp+wfwT2UBgbYRjJVThF8CXKZxf1Gqy2fRhK1WvPIwXN3U6D1cYpo5L5JPduw4RB3Z2DbsuB1W+UhczDg==","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-2.0.0-beta.8.tgz","fileCount":642,"unpackedSize":300660,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvzYbCRA9TVsSAnZWagAAdx8P/36nwruqjNq20q6w7xZ3\n3E8AnogEdm/NclYxtjXev2yKlKOmAdF6+IV50iF0qfmTK+oZxwKfKFFQw1yP\no7L5wUUIlRPmpETP1aTPSxv+jO1DH2EFtEhl3r4U/nsPrlZihSwweT02fnXI\noY88EvgpfM8Nq/qXI3EpgpaNySLEBP06ZdZ3k/W1GjVtC35/JaADu4wKTJrs\n2AJl0mv7yrPWlTMr6/lRlEmyBRI3bSaMkXcfBAQXZlY2qHXZt5UFpsfKXNVf\nJS0Uwgk2UKYrM/10ulum4F7x2wUNEV0njL+OEcFf3Ev5h5xAFfqhX2ikIsvl\nyxvuqSRfRmCIfiFeS80JNxpcCJlWlyRmn9hc9dmK90tJjdWD66o/qU3uArTn\ntxWXJhVK4f9gJ+Q6rVBgBHPMF+2oh5O3dd01qTMxpGha3P8gZ5NczvhI3WqR\nyuiAAafBbY5PJf9sb1RqV0BONv6eqFnarIP4hKLPlTaApF6FrMyApaNKJeKK\nVCg60OZukj+6VZKpDg3gta+Y7bcvE4iwK6RRz6H0yDe3Fxl9KTGZ5UyYs7Jt\nw8W5PaqB8A4sSgwXhA9UnIScexQMBDg2LPSY+RbqLl/xTEsfsb7jwAheNVah\npXXkK1TNiZDgsyROnA1LJ60Ooe0SVbf8htSXMPEh9aEHBhdcRpk97gb8xHeM\nd76r\r\n=4vpY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9cE4NLnJaO9du5xDu3QyKSHwiaUMGrOYckQkYsRxPcwIhANsYRLGo/bpP0th4bDIF9kQMC3umCJ1iLJuGa8enyit/"}]},"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"maintainers":[{"name":"n0cha","email":"n0chabizniz@gmail.com"},{"name":"larsvanbraam","email":"larsvanbraam@gmail.com"},{"name":"mientjan","email":"mientjan.stelling@gmail.com"},{"name":"devmonk","email":"devmonk@mediamonks.com"},{"name":"thanarie","email":"thanarie@gmail.com"},{"name":"thi.js","email":"npm@tyz.nl"},{"name":"psimk","email":"p.simkevi@gmail.com"},{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_2.0.0-beta.8_1623143963309_0.7002047648104468"},"_hasShrinkwrap":false},"2.0.0-beta.9":{"name":"isntnt","version":"2.0.0-beta.9","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","sideEffects":false,"author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && yarn build:ts && yarn build:ts-esm","build:ts":"tsc -d --skipLibCheck","build:ts-esm":"tsc -p tsconfig.esm.json -d --skipLibCheck","test":"jest --watchAll --coverage","prepublishOnly":"yarn build"},"repository":{"type":"git","url":"https://github.com/mediamonks/isntnt.git"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^4.3.2"},"readmeFilename":"README.md","readme":"Isntnt is a collection of composable JavaScript runtime type predicates with TypeScript type guard declarations. Supports generics including union and intersection types.\n\n# Features\n\n- [Predicates](#predicates)\n- [Predicate Factories](#predicate-factories)\n- [Types](#types)\n\n# Predicates\n\nA predicate is a function that checks whether a value matches a certain type, it always returns a boolean. Well known examples of JavaScript predicates are `Array.isArray`, `isNan`, and `Number.isNaN`. With `isntnt` you add a whole slew of additional predicates to your toolbox, they are listed below.\n\n## hasLength\n\nReturns `true` when you pass an object with a length property that is a valid [`length`](#isLength).\n\n```typescript\nhasLength(new ArrayBuffer()) // true\nhasLength({}) // false\n```\n\n## isAny\n\nAlways returns `true`.\n\n```typescript\nisAny(null) // true\nisAny(12) // true\n// always true\n```\n\n## isArray\n\nReturns `true` when you pass an array.\n\n```typescript\nisArray([]) // true\nisArray('foo') // false\n```\n\n## isArrayLike\n\nReturns `true` when you pass a object that is not a function with a length property that is a valid [`length`](#isLength).\n\n```typescript\nisArrayLike({ length: 12 }) // true\nisArrayLike(new Date()) // false\n```\n\n## isBigInt\n\nReturns `true` when you pass a bigint.\n\n```typescript\nisBigInt(116n) // true\nisBigInt(12) // false\n```\n\n## isBoolean\n\nReturns `true` when you pass a boolean.\n\n```typescript\nisBoolean(true) // true\nisBoolean(null) // false\n```\n\n## isDate\n\nReturns `true` when you pass a Date object.\n\n```typescript\nisDate(new Date()) // true\nisDate(Date.now()) // false\n```\n\n## isDictionary\n\nReturns `true` when you pass an object of which each property name, and each property value are a string.\n\n```typescript\nisDictionary({ a: 'foo' })\nisDictionary({ b: 12 })\n```\n\n## isFalse\n\nReturns `true` when you pass `false`.\n\n```typescript\nisFalse(false) // true\nisFalse(true) // false\n```\n\n## isFunction\n\nReturns `true` when you pass a function.\n\n```typescript\nisFunction(isFunction) // true\nisFunction({}) // true\n```\n\n## isInt\n\nReturns `true` when you pass an integer (a whole number).\n\n```typescript\nisInt(1) // true\nisInt(1.5) // false\n```\n\n## isInt8\n\nReturns `true` when you pass an [integer](#isInt) ranging from -128 to 127.\n\n```typescript\nisInt8(127) // true\nisInt8(128) // false\n```\n\n## isInt16\n\nReturns `true` when you pass an [integer](#isInt) ranging from -32,768 to 32,767.\n\n```typescript\nisInt16(12) // true\nisInt16(-50_000) // false\n```\n\n## isInt32\n\nReturns `true` when you pass an [integer](#isInt) ranging from -2,147,483,648 to 2,147,483,647.\n\n```typescript\nisInt32(12) // true\nisInt32(Number.MAX_SAFE_INTEGER) // false\n```\n\n## isLength\n\nAlias to [`isUint32`](#isUint32).\n\n## isMap\n\nReturns `true` when you pas a Map object.\n\n```typescript\nisMap(new Map()) // true\nisMap({}) // false\n```\n\n## isNegative\n\nReturns `true` when you pas a negative number (including -0).\n\n```typescript\nisNegative(-1) // true\nisNegative(1) // false\n```\n\n## isNever\n\nAlways returns `false`.\n\n```typescript\nisNever(null) // false\nisNever(true) // false\n// always returns false\n```\n\n## isNone\n\nReturns `true` when you pass `null` or `undefined`.\n\n```typescript\nisNone(null) // true\nisNone(128) // false\n```\n\n## isNull\n\nReturns `true` when you pass `null`.\n\n```typescript\nisNull(null) // true\nisNull(undefined) // false\n```\n\n## isNumber\n\nReturns `true` when you pass a number that is not `NaN`.\n\n```typescript\nisNumber(12) // true\nisNumber(NaN) // false\n```\n\n## isObject\n\nReturns `true` when you pass an object that is not `null`.\n\n```typescript\nisObject({}) // true\nisObject(null) // false\n```\n\n## isObjectLike\n\nReturns `true` when you pass an value that is not a boolean, `null`, or `undefined`.\n\n```typescript\nisObjectLike([]) // true\nisObjectLike(true) // false\n```\n\n## isPlainObject\n\nReturns `true` when you pass an object that was constructed by `Object`.\n\n```typescript\nisPlainObject({}) // true\nisPlainObject(new Date()) // false\n```\n\n## isPositive\n\nReturns `true` when you pass a positive number.\n\n```typescript\nisPositive(1) // true\nisPositive(-1) // false\n```\n\n## isPrimitive\n\nReturns `true` when you pass `null`, `undefined`, a boolean, bigint, number, symbol, or string.\n\n```typescript\nisPrimitive(1) // true\nisPrimitive([]) // false\n```\n\n## isRegExp\n\nReturns `true` when you pass a RegExp object.\n\n```typescript\nisRegExp(/foo/) // true\nisRegExp([]) // false\n```\n\n## isSerializable\n\nReturns `true` when you pass a [serializable primitive](#isSerializablePrimitive), a [serializable array](#isSerializableArray), or [serializable object](#isSerializableObject).\n\n```typescript\nisSerializable(12) // true\nisSerializable(console.log) // false\n```\n\n## isSerializableArray\n\nReturns `true` when you pass an array where every element is [serializable](#isSerializable).\n\n```typescript\nisSerializableArray(['foo', 1]) // true\nisSerializableArray([new Date()]) // false\n```\n\n## isSerializableNumber\n\nReturns `true` when you pass a number that is not `NaN`, `Infinity`, or `-Infinity`.\n\n```typescript\nisSerializableNumber(1) // true\nisSerializableNumber(Infinity) // false\n```\n\n## isSerializableObject\n\nReturns `true` when you pass an object where every property is [serializable](#isSerializable).\n\n```typescript\nisSerializableObject({ foo: 1 }) // true\nisSerializableObject({ bar: Infinity }) // false\n```\n\n## isSerializablePrimitive\n\nReturns `true` when you pass `null`, a [serializable number](#isSerializableNumber), a boolean, bigint, symbol, or string.\n\n```typescript\nisSerializablePrimitive(null) // true\nisSerializablePrimitive(NaN) // false\n```\n\n## isSet\n\nReturns `true` when you pas a Set object.\n\n```typescript\nisSet(new Set()) // true\nisSet([]) // false\n```\n\n## isSome\n\nReturns `true` when you pas a value other than `null` or `undefined`.\n\n```typescript\nisSome('foo') // true\nisSome(null) // false\n```\n\n## isString\n\nReturns `true` when you pas a string.\n\n```typescript\nisString('bar') // true\nisString(48) // false\n```\n\n## isSymbol\n\nReturns `true` when you pas a symbol.\n\n```typescript\nisSymbol(Symbol()) // true\nisSymbol('baz') // false\n```\n\n## isTrue\n\nReturns `true` when you pas `true`.\n\n```typescript\nisTrue(true) // true\nisTrue(false) // false\n```\n\n## isUint\n\nReturns `true` when you pass a positive [integer](#isInt).\n\n```typescript\nisUint(112) // true\nisUint(-16) // false\n```\n\n## isUint8\n\nReturns `true` when you pass an [unsigned integer](#isUint) ranging from 0 to 255.\n\n```typescript\nisUint8(255) // true\nisUint8(1.2) // false\n```\n\n## isUint16\n\nReturns `true` when you pass an [unsigned integer](#isUint) ranging from 0 to 65,535.\n\n```typescript\nisUint16(2048) // true\nisUint16(-12) // false\n```\n\n## isUint32\n\nReturns `true` when you pass an [unsigned integer](#isUint) ranging from 0 to 4,294,967,295.\n\n```typescript\nisUint32(256) // true\nisUint(Number.MAX_SAFE_INTEGER) // false\n```\n\n## isUndefined\n\nReturns `true` when you pass `undefined`.\n\n```typescript\nisUndefined(undefined) // true\nisUndefined(null) // false\n```\n\n## isWeakMap\n\nReturns `true` when you pass a `WeakMap` object.\n\n```typescript\nisWeakMap(new WeakMap()) // true\nisWeakMap(new Map()) // false\n```\n\n# Predicate factories\n\nPredicate factories is where the real fun begins, they allow you to create and combine predicates of your own to create new predicates. By composing predicates you can describe objects, union types, number ranges, and so on.\n\n## above\n\nCreate a predicate based on a floor value, it checks if a [number](#isNumber) exceeds the floor value it’s given. This is an analogue to the `>` operator.\n\n```typescript\nconst isAboveZero = above(0)\n\nisAboveZero(-1) // false\nisAboveZero(12) // true\n```\n\nThe `isAboveZero` predicate above returns `true` when you pass a [number](#isNumber) that is greater than `0`.\n\n## and\n\nCreate a predicate based on several other predicates, it returns `true` if every predicate that is passed also returns `true`. This is an analogue to the `&&` operator.\n\n```typescript\nconst adultAge = 18\nconst isMinorAge = and(isUint, below(adultAge))\n\nisMinorAge(12) // true\nisMinorAge(33) // false\n```\n\nThe `isMinorAge` predicate above returns `true` when you pass an [unsigned integer](#isUint) that is below 18.\n\n```typescript\nconst isUser = shape({ name: isString })\nconst hasEmailAddress = shape({ email: isString })\n\nconst isUserWithEmail = and(isUser, hasEmailAddress)\n```\n\nThe `isUserWithEmail` predicate above returns `true` when you pass an object with a `name` and an `email` property, both of which are a string.\n\n## array\n\nCreate a predicate that checks every array element, it returns `true` when its predicate returns `true` for every element in an array.\n\n```typescript\nconst isNumberArray = array(isNumber)\n```\n\nThe `isNumberArray` predicate above returns `true` when you pass an array of which every element is a [number](#isNumber).\n\n## at\n\nCreate a predicate based on a property key and another predicate, it returns `true` when its predicate returns `true` for the value of an object at its given key.\n\n```typescript\nconst isStringAtName = at('name', isString)\n\nisStringAtName({ name: 'Jane' }) // true\nisStringAtName({ name: null }) // false\n```\n\nThe `isStringAtName` predicate above returns `true` when you pass an object of which the `name` property is a string.\n\n## below\n\nCreate a predicate based on a ceiling value, it checks if a [number](#isNumber) is below the ceiling value it’s given. This is an analogue to the `<` operator.\n\n```typescript\nconst isBelow100 = below(100)\n\nisBelow100(124) // false\nisBelow100(32) // true\n```\n\nThe `isBelow100` predicate above returns `true` when you pass a [number](#isNumber) that is less than `100`.\n\n## either\n\nCreate a predicate based on several [literal](#literal) values, it returns `true` if a value matches either of the primitive values it’s given.\n\n```typescript\nconst isAOrB = either('a', 'b')\n\nisAOrB('a') // true\nisAOrB('c') // false\n```\n\nThe `isAOrB` predicate above returns `true` when you pass either `a`, or `b`.\n\n## has\n\nCreate a predicate based on a property key, it returns `true` if an object has a property of the key it’s given.\n\n```typescript\nconst hasName = has('name')\n\nhasName({ name: null }) // true\nhasName({ age: 36 }) // false\n```\n\nThe `hasName` predicate above returns `true` when you pass an object that has a `name` property.\n\n## instance\n\nCreate a predicate based on a constructor, it returns `true` if an object is an instance of the constructor key it’s given.\n\n```typescript\nconst isInstanceofString = instance(String)\n\nisInstanceofString(new String('foo')) // true\nisInstanceofString('foo') // false\n```\n\nThe `isInstanceofString` predicate above returns `true` when you pass a String object.\n\n## literal\n\nCreate a predicate based a [primitive](#isPrimitive) value, it returns `true` if a value equals the primitive value it’s given.\n\n```typescript\nconst is42 = literal(42)\n\nis42(42) // true\nis42(43) // false\n```\n\nThe `is42` predicate above returns `true` when you pass `42`.\n\n## max\n\nCreate a predicate based on a max. value, it checks if a [number](#isNumber) is below or equal to the max. value it’s given. This is an analogue to the `<=` operator.\n\n```typescript\nconst isMax100 = max(100)\n\nisMax100(100) // true\nisMax100(101) // false\n```\n\nThe `isMax100` predicate above returns `true` when you pass a [number](#isNumber) that is below or equal to `100`.\n\n## maybe\n\nCreate a predicate based on another predicate, it checks if a value matches it’s given predicate, or equals `null` or `undefined`.\n\n```typescript\nconst isMaybeString = maybe(isString)\n\nisMaybeString(null) // true\nisMaybeString(12) // false\n```\n\nThe `isMaybeString` predicate above returns `true` when you pass a string, `null`, or `undefined`.\n\n## min\n\nCreate a predicate based on a min. value, it checks if a [number](#isNumber) is above or equal to the min. value it’s given. This is an analogue to the `>=` operator.\n\n```typescript\nconst isMin100 = min(100)\n\nisMin100(100) // true\nisMin100(99) // false\n```\n\nThe `isMin0` predicate above returns `true` when you pass a [number](#isNumber) that is above or equal to `100`.\n\n## noneable\n\nAliases [`maybe`](#maybe).\n\n## nullable\n\nCreate a predicate based on another predicate, it checks if a value matches it’s given predicate, or equals `null`.\n\n```typescript\nconst isNullableString = nullable(isString)\n\nisNullableString(null) // true\nisNullableString(12) // false\n```\n\nThe `isNullableString` predicate above returns `true` when you pass a string or `null`.\n\n## object\n\nCreate a predicate that checks every object property, it returns `true` when its predicate returns `true` for every object value.\n\n```typescript\nconst isEnumerable = object(isUint)\n```\n\nThe `isEnumerable` predicate above returns `true` when you pass an object of which every element is an [unsigned integer](#isUint).\n\n## optional\n\n`<T>(predicate: Predicate<T>) => (value: unknown) => value is T | undefined`\n\n```typescript\nconst isOptionalString = optional(isString)\n\nisOptionalString(undefined) // true\nisOptionalString(12) // false\n```\n\nThe `isOptionalString` predicate above returns `true` when you pass a string or `undefined`.\n\n## or\n\nCreate a predicate based on several other predicates, it returns `true` if some predicate that is passed also returns `true`. This is an analogue to the `||` operator.\n\n```typescript\nconst isContent = or(isString, isSerializableNumber)\n\nisContent(12) // true\nisContent(null) // false\n```\n\nThe `isContent` predicate above returns `true` when you pass a string or a [primitive number](#isPrimitiveNumber).\n\n```typescript\nconst isStringOrNumber = or(isString, isNumber)\n\nisStringOrNumber(8) // true\nisStringOrNumber([]) // false\n```\n\n## record\n\nCreate a predicate based on a key predicate and a value predicate, it returns `true` if each property key of an object returns `true` for its key predicate, and each value returns `true` for its value predicate.\n\n```typescript\nconst isValidKey = either('a', 'b')\n\nconst isKeyValueMap = record(isValidKey, isInt)\n\nisKeyValueMap({ a: 2 }) // true\nisKeyValueMap({ a: null }) // false\nisKeyValueMap({ c: 2 }) // false\n```\n\nThe `isKeyValueMap` predicate above returns `true` when you pass an object where each key is either `a` or `b`, and each property value is an [integer](#isInt).\n\n## shape\n\nCreate a predicate based on a predicate object, it returns `true` if each property value of an object returns `true` for its corresponding predicate.\n\n```typescript\nconst isPoint = shape({ x: isNumber, y: isNumber })\n\nisPoint({ x: 12, y: 36 }) // true\nisPoint({ x: 12 }) // false\n```\n\nThe `isPoint` predicate above returns `true` when you an pass an object where both `x` and `y` properties are a [number](#isNumber).\n\n## test\n\n```typescript\nconst isSlug = test(/^[A-Z0-9-]+$/i)\n\nisSlug('foo-bar') // true\nisSlug('!#$') // false\n```\n\nThe `isSlug` predicate above returns `true` when you an pass a string that matches `/^[A-Z0-9-]+$/i`.\n\n## tuple\n\nCreate a predicate based on index-based predicates, it returns `true` if the element at each index of an array with a fixed length returns `true` for its corresponding predicate.\n\n```typescript\nconst isLatitude = and(min(-90), max(90))\nconst isLongitude = and(min(-180), max(180))\n\nconst isLatLong = tuple(isLatitude, isLongitude)\n\nisLatLong(45, -120) // true\nisLatLong(120, 200) // false\n```\n\nThe `isLatLong` predicate above returns `true` when you an pass an array with a length of 2 where index 0 is a latitude, and index 1 is a longitude value.\n\n# Types\n\n## Intersect\n\n```typescript\ntype User = Intersect<{ name: string } | { email: string }> // { name: string } & { email: string }\n```\n\n## Maybe\n\nUnions a type with `null` and `undefined`.\n\n```typescript\ntype MaybeString = Maybe<string> // string | null | undefined\n```\n\n## None\n\nUnion of `null` and `undefined`.\n\n```typescript\ntype X = None // null | undefined\n```\n\n## Nullable\n\nUnions a type with `null`.\n\n```typescript\ntype NullableString = Nullable<string> // string | null\n```\n\n## Optional\n\nUnions a type with `undefined`.\n\n```typescript\ntype OptionalString = Optional<string> // string | undefined\n```\n\n## Predicate\n\nDescribes a predicate function signature\n\n```typescript\ntype IsString = Predicate<string> // <U>(value: U): value is Extract<U, string>\n```\n\n## Primitive\n\nUnion of all primitive types.\n\n```typescript\ntype X = Primitive // null | undefined | boolean | number | string | symbol | bigint\n```\n\n## Serializable\n\n```typescript\ntype X = Serializable // SerializableArray | SerializableObject | SerializableObject\n```\n\n## SerializableArray\n\n```typescript\ntype X = SerializableArray // Array<Serializable> | ReadonlyArray<Serializable>\n```\n\n## SerializableObject\n\n```typescript\ntype X = SerializableObject // { [key: string]: Serializable | undefined }\n```\n\n## SerializablePrimitive\n\n```typescript\ntype X = SerializablePrimitive // null | boolean | number | string\n```\n\n## Some\n\nExcludes `null` and `undefined` from a type, type parameter is optional.\n\n```typescript\ntype X = Some // Function | boolean | bigint | number | string | symbol | object\ntype Y = Some<string | null> // string\n```\n\n## Static\n\nExtracts type parameter from Predicate type. This is useful to extract TypeScript types from (complex) predicates.\n\n```typescript\ntype X = Static<Predicate<string>>> // string\n```\n","licenseText":"Copyright © 2020 Nathan Uphoff\n\nThis work is free. You can redistribute it and/or modify it under the\nterms of the Do What The Fuck You Want To Public License, Version 2,\nas published by Sam Hocevar.\n\n  DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n                   Version 2, December 2004\n\nCopyright (C) 2004 Sam Hocevar\n 14 rue de Plaisance, 75014 Paris, France\nEveryone is permitted to copy and distribute verbatim or modified\ncopies of this license document, and changing it is allowed as long\nas the name is changed.\n\n           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. You just DO WHAT THE FUCK YOU WANT TO.","_id":"isntnt@2.0.0-beta.9","dist":{"shasum":"9480bbffa2cc6c59152a4a8d82d879aae10783e5","integrity":"sha512-Q8cGdh9tLRI/WklGEPSYHbcNSDZ4viAfzo1b3sdkHUd+OLhga6o1dqK35VxKS7Zwqt71NRK9U46/HgCbTffdBQ==","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-2.0.0-beta.9.tgz","fileCount":663,"unpackedSize":308674,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvz7HCRA9TVsSAnZWagAAnAAQAIpaIblse2yJiOdPLdz/\nncmSmJAnnRE+e0hKABMN2iFuqENorJTgM+I4eAItHGsNTA7S65zf1LqSBKk3\n6JLLdmsl5yEaKtMaqAlnWBnw+93SmANECRGJdhQt6etwVoQlcSxvqY79pKSr\n6TmUDLIcEw1XcoEFjq2piyIcMXjuGL1ghYI03FcqgwSsNdbGWyDgixiKDjha\n4M4ch/vfYReK63iGOHlyheSApzxWY2idjc66NYLmKp0a/QG+NwFBqu8FOI6/\nyH4+SQWE9mB6M5+cy3ENDh+qoF0Fq9C7XTjmXqqf/tZ7FtiXvjpw04IQYiAW\nSMKNrMIElh3Z42Z6VA/a5wqChfnyTM0XLWUlrrRnut7CK0n8rXaMMokOyRoU\n1/g1deK8mO3N8GaGOsuqZZMwAgowcMcP6oU15Vv40PCG1M2KN9WEFNPCQMI2\njB/oAa/O+xpO970mhFRy3+qftjg8dm7EPUu/FVt1L+JHS92Twddw8NqNbPIA\n+5Ja8nKv8RHP04v77qdliT3BbjmqKBwOnbbeQtxYeUBqCVjswz0ihZRLrih1\n0z0JKST0RlRr+QXFi2MEjwPCiUfGdRSzxXH6kKg57FDjVItA8F7OR+jynLI4\nGFMxNSc++R8BXeOKyvlb7U4/AeMtEhorKUmd5gja2Ax24Sj2ACTRgh5n4yjT\ngS1j\r\n=/+NT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFT3cnZNUq+fq+NLL/ZO4SeqpD0U35ic/1gNPFlAT6ZhAiAM8c/swd/GFnDhH8jQmHNRBB3WWTa0GDvdYKM9kCsbUw=="}]},"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"maintainers":[{"name":"n0cha","email":"n0chabizniz@gmail.com"},{"name":"larsvanbraam","email":"larsvanbraam@gmail.com"},{"name":"mientjan","email":"mientjan.stelling@gmail.com"},{"name":"devmonk","email":"devmonk@mediamonks.com"},{"name":"thanarie","email":"thanarie@gmail.com"},{"name":"thi.js","email":"npm@tyz.nl"},{"name":"psimk","email":"p.simkevi@gmail.com"},{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_2.0.0-beta.9_1623146183218_0.2978889275022265"},"_hasShrinkwrap":false},"1.5.0":{"name":"isntnt","version":"1.5.0","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","sideEffects":false,"author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && yarn build:ts && yarn build:ts-esm","build:ts":"tsc -d --skipLibCheck","build:ts-esm":"tsc -p tsconfig.esm.json -d --skipLibCheck","test":"jest --watchAll --coverage","prepublishOnly":"yarn build"},"repository":{"type":"git","url":"https://github.com/mediamonks/isntnt.git"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","prettier":"^2.3.2","ts-jest":"^24.0.2","typescript":"^4.4.2"},"licenseText":"Copyright © 2020 Nathan Uphoff\n\nThis work is free. You can redistribute it and/or modify it under the\nterms of the Do What The Fuck You Want To Public License, Version 2,\nas published by Sam Hocevar.\n\n  DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n                   Version 2, December 2004\n\nCopyright (C) 2004 Sam Hocevar\n 14 rue de Plaisance, 75014 Paris, France\nEveryone is permitted to copy and distribute verbatim or modified\ncopies of this license document, and changing it is allowed as long\nas the name is changed.\n\n           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. You just DO WHAT THE FUCK YOU WANT TO.","_id":"isntnt@1.5.0","dist":{"shasum":"1177c6e22f9302306da9c413340a9e50bba80ad6","integrity":"sha512-cXjSrLguwJh3HOyyjj0Uu9hz+FCZNc6MVbwJR+uMGdFph3hEmpxj5xAmTiDi1eNQWWl7or6ApmAD37pewhl6LA==","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-1.5.0.tgz","fileCount":577,"unpackedSize":273942,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhKP7WCRA9TVsSAnZWagAA7wIP/0GnuNlvQ1eSIZfdvb7T\nvBv7GU5cSWvkIxRiJy8nSboe14OebtA76m6WN88R8/coQXAWCKp2N/HSCToz\nwMe/NZ45cW29gBOJ6zojC+tjjapJduHfEdJSzLoOcY0AZgRi+qC3/pU0XUzO\neyU47vI/8HglOrGoN5kFKf2D1sG5wfLt7ExDBLT8/Hsgo0jXiNYi+ZkaEaHz\nuvGNIEUZZXs/bQ52WUwvVPTnzDTSfQ2Y9HuXadvkiOKMNxcXlDmp36DOAH83\n5/xdbJhVzoxJ+FA8WhzzHmeCZhbwdkpWg0unI72EMf3psaRZiFhScWPtKkD6\nHYKfGRj1+X5iZzwj6isRctNA4xqtOsIH2o3cTpfnezs0gh54QaLLiIExITgR\nakmRaIO96Ig51zu5DUUB28EU2anQUG34R0auWLNsTmS3H+VeHTObPLssuf3y\n6f22SMpyBGKR/t6nkzEflt5aSAbcmltpFV189Nxq7BzgLK7nNRruHYnLsGmC\npFInciqh0pX0pSXKJEXzCnv4enLXOAkk720wY+/RdaVvcu0wvZCV3775iNyu\nbZkqkZqi0QLPbV4obIxxb1AOFGHni4+8hNjuAOenF/EFNxn70E8jzboHkO4E\nT4YyUnVhdDsYj5D6Kedf6tKmYfMhkZsQnHGo3yyHfwW6RCUP8XvQ/m6ST5Qq\nC91K\r\n=8nZe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDzw1ZlxnVFhASVFBVnFpXjaY132yfGXDu2mGBpMIi6SAIhAM+Hi5U3FnF1KfuQWm4U8BmOYM0LvDaj4ejxbcjm760Y"}]},"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"maintainers":[{"name":"mientjan","email":"mientjan.stelling@gmail.com"},{"name":"devmonk","email":"devmonk@mediamonks.com"},{"name":"thanarie","email":"thanarie@gmail.com"},{"name":"thi.js","email":"npm@tyz.nl"},{"name":"psimk","email":"p.simkevi@gmail.com"},{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},{"name":"larsvanbraam","email":"larsvanbraam@gmail.com"},{"name":"n0cha","email":"n0chabizniz@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_1.5.0_1630076630058_0.5454653745347211"},"_hasShrinkwrap":false},"1.5.1":{"name":"isntnt","version":"1.5.1","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","sideEffects":false,"author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && yarn build:ts && yarn build:ts-esm","build:ts":"tsc -d --skipLibCheck","build:ts-esm":"tsc -p tsconfig.esm.json -d --skipLibCheck","test":"jest --watchAll --coverage","prepublishOnly":"yarn build"},"repository":{"type":"git","url":"https://github.com/mediamonks/isntnt.git"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","prettier":"^2.3.2","ts-jest":"^24.0.2","typescript":"^4.4.2"},"licenseText":"Copyright © 2020 Nathan Uphoff\n\nThis work is free. You can redistribute it and/or modify it under the\nterms of the Do What The Fuck You Want To Public License, Version 2,\nas published by Sam Hocevar.\n\n  DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n                   Version 2, December 2004\n\nCopyright (C) 2004 Sam Hocevar\n 14 rue de Plaisance, 75014 Paris, France\nEveryone is permitted to copy and distribute verbatim or modified\ncopies of this license document, and changing it is allowed as long\nas the name is changed.\n\n           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. You just DO WHAT THE FUCK YOU WANT TO.","_id":"isntnt@1.5.1","dist":{"shasum":"e5255a74579bfcef19805dd96c2a83115f51ed7f","integrity":"sha512-GxAD6SK22YKUwLVvlo0KRa9CVCS5XEDmYVdvtu8/X+4FIbcG5o1BSIsery3J+X2wkuMEIF2Wg5FPxSWsput0zA==","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-1.5.1.tgz","fileCount":578,"unpackedSize":277398,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhOx+8CRA9TVsSAnZWagAA30kP/2MZjk/G6kNYzX0btv2b\nApovYoKnaxqR/UXkBHBuxlK/N55dlhVMe9fyTKCwcgTbv58sZPpgNC62ThTW\n2+CbO+iQ2BhjYQbkQzuzmI8fUB1jXAZrgmFBfB9d4aMguQjprMzCnZAIYyR1\noy2nMZsmwDrULFmcyzqGxVkb6mb9ikUok6EMdd7obMXw8X/EVDNHNZpPVCXk\nJxPLBBIMomk940ornwekoXU1n1ZDDQWQYvdHujZnilZC+lMGzE3H597JumLb\ntaQhaNCArBId0Hq6kN8kCDO9LIzaqJZd3+CChDnfZgwM5wqyz3+hP3jVQpBe\nt78CHxl/0RMVQ6aNilfGCZ1XQpOcNpTecLdKY2njqV2u9edJZhLTw/lbqNq/\najlORcLE14T+5Li27kYKrCUusPHBpmYMlemv7eGzrudY7aw6bd9ZlbAACz9b\n4vXwKWVxPyiWfJVbRMo1QbiMbc3zU1W1AYcue6q8FPhJOOSGfR0l+O018H1l\nqdfvxLwTeCWpqgFphTptBNgGwLX+0m3nkHk/qNAGp0u5hONOv9Bvs2Ywo0/X\nXAZ+nmpMrc8NUU1Oty6xUcNO4bvcEEFfG5WlnnRoWwjNAsBhktL0R7FQpYBz\nKyIphbW8/5rfbRfeUwRvMv1O1FnxMl5jva62arQkVJ9AiqydmqWskMnXB5Zw\nfKGE\r\n=NbUO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdWXcGkK1oYSBPMOQ2AXq/9+I9tQD49b/kjVJtf8Zy9AIgByG2RrWdQSEEeNQOXg0/FBwlqblWwzDQQuHCRe3Igrw="}]},"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"maintainers":[{"name":"mientjan","email":"mientjan.stelling@gmail.com"},{"name":"devmonk","email":"devmonk@mediamonks.com"},{"name":"thanarie","email":"thanarie@gmail.com"},{"name":"thi.js","email":"npm@tyz.nl"},{"name":"psimk","email":"p.simkevi@gmail.com"},{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},{"name":"larsvanbraam","email":"larsvanbraam@gmail.com"},{"name":"n0cha","email":"n0chabizniz@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_1.5.1_1631264700653_0.29976146917997193"},"_hasShrinkwrap":false},"1.4.7":{"name":"isntnt","version":"1.4.7","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","sideEffects":false,"author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && yarn build:ts && yarn build:ts-esm","build:ts":"tsc -d --skipLibCheck","build:ts-esm":"tsc -p tsconfig.esm.json -d --skipLibCheck","test":"jest --watchAll --coverage","prepublishOnly":"yarn build"},"repository":{"type":"git","url":"https://github.com/mediamonks/isntnt.git"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","ts-jest":"^24.0.2","typescript":"^3.7.2"},"licenseText":"Copyright © 2020 Nathan Uphoff\n\nThis work is free. You can redistribute it and/or modify it under the\nterms of the Do What The Fuck You Want To Public License, Version 2,\nas published by Sam Hocevar.\n\n  DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n                   Version 2, December 2004\n\nCopyright (C) 2004 Sam Hocevar\n 14 rue de Plaisance, 75014 Paris, France\nEveryone is permitted to copy and distribute verbatim or modified\ncopies of this license document, and changing it is allowed as long\nas the name is changed.\n\n           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. You just DO WHAT THE FUCK YOU WANT TO.","_id":"isntnt@1.4.7","dist":{"shasum":"e3e2a6981d57515f7b3ed823f0ce4fa9a5e5a3de","integrity":"sha512-EAbEgRJN4Qp+J37YhKcYTr/6NbHbkWFO5ME1VXWdx93ftZlw7vAgpA+FtFdVA2hbsfT5AZKyIjM6dsqCFuMZnw==","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-1.4.7.tgz","fileCount":547,"unpackedSize":230692,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhOyEACRA9TVsSAnZWagAAsW0P/j1j/b9Ij72CRqq1LN0j\ntF2liWVul6xaKeoZpXy3hOnuKeNz9XSpLcMY+nAKyDKhuAdRb9yEyADc66VI\nnrBzDiGhn8yRZ3HpcN9wpm7miVZ+Ff/P5uqFV7XEAEbuLCHXCMnuRR+LoVw8\nQb53WzA8to9sFcOP24AcNo4y3tIXe1tuqqEALk49p0ytf0F3JQ38lD71eV5H\nRcshVzbEOIJAkhY8mIx4NtDgbrBjpFX5bqpo2tb4GEIp4kfyjMG8WHb/z7VN\n5GfhjAJVDyqB16VGc8ZgCX6QvBBLE0YEMFhpTG2YuIFS55bP/cr4TNqPk7uW\nDRj+wjzY6gyZ3NtQz+YENyBkk2GLRFVGDwRrSUSF5WA6iwwm/ycJYMvAV7un\ntITZJC6eWuxrFXI70NWibiS4u7pUcBIxXsfOonuWgGX+z4/q6VrcTQD7CjDX\nVAoPLzawgBvWlFz8JFmpwBTD3EUS+uG/MElFURt/cA7bWUYb0FIM8rVlxJHe\nWRoyeatuk/eJS673t758JkBji300r72sK8629xIFAL4q3op7DYwY3E5/+dTB\nLfYePFRRtxFPQNJ0SNoE3yEGcKY0QfXyV10xCHHbaQuB2eYMR/hiElRFUYS+\nXRRQ56HaNnZPBZV+DVWxbYea7BoCUR6cbnIMBkP2PVIVU8/viukJlNgOWP2F\nwqWh\r\n=AbKl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+MO9DFQHzHi8Wj9CA/DhuPUaX6w90gjgZiitpvSrllwIgJKFPxNPHvTRRDObwCa2IyUN3nqQ58hvkfXG+aD3pVsM="}]},"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"maintainers":[{"name":"mientjan","email":"mientjan.stelling@gmail.com"},{"name":"devmonk","email":"devmonk@mediamonks.com"},{"name":"thanarie","email":"thanarie@gmail.com"},{"name":"thi.js","email":"npm@tyz.nl"},{"name":"psimk","email":"p.simkevi@gmail.com"},{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},{"name":"larsvanbraam","email":"larsvanbraam@gmail.com"},{"name":"n0cha","email":"n0chabizniz@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_1.4.7_1631265024687_0.32518567252818054"},"_hasShrinkwrap":false},"1.5.2":{"name":"isntnt","version":"1.5.2","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","sideEffects":false,"author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && yarn build:ts && yarn build:ts-esm","build:ts":"tsc -d --skipLibCheck","build:ts-esm":"tsc -p tsconfig.esm.json -d --skipLibCheck","test":"jest --watchAll --coverage","prepublishOnly":"yarn build"},"repository":{"type":"git","url":"https://github.com/mediamonks/isntnt.git"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","prettier":"^2.3.2","ts-jest":"^24.0.2","typescript":"^4.4.2"},"licenseText":"Copyright © 2020 Nathan Uphoff\n\nThis work is free. You can redistribute it and/or modify it under the\nterms of the Do What The Fuck You Want To Public License, Version 2,\nas published by Sam Hocevar.\n\n  DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n                   Version 2, December 2004\n\nCopyright (C) 2004 Sam Hocevar\n 14 rue de Plaisance, 75014 Paris, France\nEveryone is permitted to copy and distribute verbatim or modified\ncopies of this license document, and changing it is allowed as long\nas the name is changed.\n\n           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. You just DO WHAT THE FUCK YOU WANT TO.","_id":"isntnt@1.5.2","dist":{"shasum":"e6cd845585e804d42230f31621eb76b793cc15b5","integrity":"sha512-Nd6x8hn7vfkrm7yyKmZwGNDdvrxIDIahk+NGp3bLAj8DTU+Qpc+qpxK0A0+f3cKQVLbKJUaPvT2t6JAHKMd+KQ==","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-1.5.2.tgz","fileCount":578,"unpackedSize":278030,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2wHyCRA9TVsSAnZWagAA5VUP/3H/DB6s3frBW78F6xZa\n0k8c011LPe6GeK+RRW/LOstcqY8+p/W1OO5jqm3dWzCdcAta9lMG2bt7A7Vi\n/faT6hP9sFUKydhzHCo+LerEys+BTrLCIx67vArbsdvmU+sGjc64kOaEUAlI\n7CQSntyeNBMp22eeCzdiCldqlQApAr01lILO6VhGhtOGHLJDCgKtj2g1Gybh\n4lelktAc9UsOszs0rrnY/bXbWFQHU3oYQAKrf+HPz2QYBE6HoL25kkesEGzL\n6eZDkwXqI8X9VsV4c0ud86yGUi/16hwKDkWa4xr9h/34RtNLYyleyfqgk4kV\nq5A6xrXkuXetwgYXkiFotCEmoGokiT8flJ1EwcCFUzL8fzAx4V2mO6w6fTke\n/TMCV0pxFsPGROXp97ohvC2iDidxqyBUI2rfHagp38q9vl2c/6zkauysQT62\n7ANVbh7wBSogXbdkm/slQOxyYhEzqCAf9eo23LPG8xu6YccsLaoYB46J7xrk\njk+FzmFNRLnPmlH7Y1vmcBJNNAtsqXP1+5vamNOgJIChPNmRlgiEQAxrgD1L\ni4hFIF19DapMvJUhg0vxIBUhI1n+JvAcovhnNPFuKSgITU/5P4T2KSE5oZbk\nIkgwDqFGtHKsEExrQchxEwe4ozBn4id3fqiwb1RXMoglk6iKDY6wti8R+01b\ndulg\r\n=cOja\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEqf6tsq7bB+uYGmutwzwUQ1fTagLfUQjhb+7SL7HHIUAiEAiE49LL7Ac/IzUItBTyHXj7fdOCfpYuvZEef4KGqMjOw="}]},"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"maintainers":[{"name":"mientjan","email":"mientjan.stelling@gmail.com"},{"name":"devmonk","email":"devmonk@mediamonks.com"},{"name":"thanarie","email":"thanarie@gmail.com"},{"name":"thi.js","email":"npm@tyz.nl"},{"name":"psimk","email":"p.simkevi@gmail.com"},{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},{"name":"larsvanbraam","email":"larsvanbraam@gmail.com"},{"name":"n0cha","email":"n0chabizniz@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_1.5.2_1631267490648_0.04600262551460976"},"_hasShrinkwrap":false},"1.6.0":{"name":"isntnt","version":"1.6.0","description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","main":"dist/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","sideEffects":false,"author":{"name":"Nathan Uphoff"},"license":"WTFPL","scripts":{"start":"yarn && yarn watch","watch":"tsc -w -d --skipLibCheck","build":"jest -u --silent --collectCoverage && rimraf dist && yarn build:ts && yarn build:ts-esm","build:ts":"tsc -d --skipLibCheck","build:ts-esm":"tsc -p tsconfig.esm.json -d --skipLibCheck","test":"jest --watchAll --coverage","prepublishOnly":"yarn build"},"repository":{"type":"git","url":"https://github.com/mediamonks/isntnt.git"},"devDependencies":{"@types/jest":"^24.0.17","jest":"^24.9.0","prettier":"^2.3.2","ts-jest":"^24.0.2","typescript":"^4.8.2"},"licenseText":"Copyright © 2020 Nathan Uphoff\n\nThis work is free. You can redistribute it and/or modify it under the\nterms of the Do What The Fuck You Want To Public License, Version 2,\nas published by Sam Hocevar.\n\n  DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n                   Version 2, December 2004\n\nCopyright (C) 2004 Sam Hocevar\n 14 rue de Plaisance, 75014 Paris, France\nEveryone is permitted to copy and distribute verbatim or modified\ncopies of this license document, and changing it is allowed as long\nas the name is changed.\n\n           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. You just DO WHAT THE FUCK YOU WANT TO.","_id":"isntnt@1.6.0","dist":{"shasum":"3ec749270d6b30c6b3dfa42fcf6d4ecb2b4950e6","integrity":"sha512-8abL4SdAl03MxdzjGtcqAIjYUu+yw7G3dFjjCTiK03DjGc49UgK0X+sru1oBndHgOMOmmduCdlVq9zs0LSwKJQ==","tarball":"https://registry.npmjs.org/isntnt/-/isntnt-1.6.0.tgz","fileCount":578,"unpackedSize":277613,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDSwnjC10dFt1YFPZJB1SB80kwHFwxJWdBroglTH6dGMAIhAKxSJHuaIAznrRVZVkfZ2L3KQi+HfzmsCL7HU8khnws5"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjCJkcACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp0vhAAmi2J+s97Tl2N2uFVDLhPzu2POn/O8ePdqdmliDrIntC43vMA\r\n+6xGWGERUybFRR5tOnujkl6TfW0XiukfcWoexf2qiO7G4LxifNl8G3q7ueWH\r\nWer6b6M+0E3p7jd9EtCEiWFockIOrzdD8K0lmNJHNAdRB3hxuOhxlsIDYV5Z\r\n1XuWIoDvNmNlSriZhccxlsY1sOx4wkJO2boDSm1HEsVoETfeDOuTQjuOU7nl\r\nyssVMWFPjLDBEv9gCtjVUybEcpqH67SyQ2FYdN6sPQB0qfdS6sT61YW6LYCL\r\nnyH82yiYRYaSBiISeqm7Mm2Ltbr1WNCPGDAh88+gUkiocs8kGLQu/RZ3Ymr1\r\nxp1lDAyUs+R7sCddEsk2KB0BIexQ2cd9xOGoDA45AWQr26+FZlqn3gJGdC2B\r\n7bJiq/HffCdS9KZVWmBZXjpoe1RKfx1P1E3TLBK+rWWVzIFuNe7tp5RKoVEE\r\nB+5PF5eSrUU8uVpOKmJ+DI21zcex1ZE1ifwcsO0hm369gsrTQ7KqhP5K5iDk\r\nISrl9ygmwN3WfAOTIeZiTqYCyt2ija/dS0kLZyxboD1oy8ueicLHYmTIYwUp\r\naKPvX1uSwHELMBiMH+ybMjck7lCKzNfOLr97m6D3sRR5UUY9OZOkhPqi3V6a\r\nJSoQfdGPE0nE4yNrtIf9q3BJjMaZPpN4Td4=\r\n=yrWB\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},"directories":{},"maintainers":[{"name":"will-newton","email":"edwin.luijten@live.nl"},{"name":"jessel","email":"jesse.linthorst+npm@gmail.com"},{"name":"twan.braas","email":"twan.braas@mediamonks.com"},{"name":"leroykorterink","email":"lkorterink@outlook.com"},{"name":"mientjan","email":"mientjan.stelling@gmail.com"},{"name":"devmonk","email":"devmonk@mediamonks.com"},{"name":"thanarie","email":"thanarie@gmail.com"},{"name":"thi.js","email":"npm@tyz.nl"},{"name":"psimk","email":"p.simkevi@gmail.com"},{"name":"nathanuphoff","email":"nathan.uphoff@gmail.com"},{"name":"larsvanbraam","email":"larsvanbraam@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isntnt_1.6.0_1661507868653_0.15138316129525564"},"_hasShrinkwrap":false}},"time":{"created":"2019-08-30T07:58:00.215Z","1.0.0":"2019-08-30T07:58:00.390Z","modified":"2023-11-06T19:04:10.378Z","1.0.1":"2019-08-30T08:48:36.481Z","1.0.2":"2019-08-30T09:02:52.060Z","1.1.0":"2019-12-02T13:25:41.650Z","1.2.0":"2019-12-09T13:35:12.617Z","1.2.1":"2019-12-16T09:18:14.151Z","1.2.2":"2019-12-16T12:36:03.721Z","1.2.3":"2019-12-16T16:47:56.174Z","1.2.4":"2019-12-16T16:51:30.387Z","1.2.5":"2019-12-17T09:01:08.912Z","1.3.0":"2020-04-14T11:24:28.675Z","1.3.1":"2020-07-17T12:47:17.387Z","1.4.0":"2020-07-23T06:51:37.824Z","1.4.1":"2020-08-04T08:03:41.719Z","1.4.2":"2020-11-20T10:17:51.683Z","1.4.3":"2020-12-03T15:21:42.525Z","1.4.4":"2020-12-04T11:34:28.161Z","1.4.5":"2021-01-07T12:37:06.294Z","2.0.0-beta.0":"2021-03-24T16:57:42.872Z","2.0.0-beta.1":"2021-03-24T19:22:28.126Z","2.0.0-beta.2":"2021-03-25T08:23:32.834Z","2.0.0-beta.3":"2021-05-19T21:19:27.382Z","2.0.0-beta.5":"2021-05-20T12:10:39.395Z","2.0.0-beta.6":"2021-05-20T13:02:54.906Z","1.4.6":"2021-05-21T12:42:13.994Z","2.0.0-beta.7":"2021-06-08T09:11:48.271Z","2.0.0-beta.8":"2021-06-08T09:19:23.582Z","2.0.0-beta.9":"2021-06-08T09:56:23.464Z","1.5.0":"2021-08-27T15:03:50.258Z","1.5.1":"2021-09-10T09:05:00.887Z","1.4.7":"2021-09-10T09:10:24.949Z","1.5.2":"2021-09-10T09:51:30.848Z","1.6.0":"2022-08-26T09:57:48.861Z"},"maintainers":[{"email":"edwin.luijten@live.nl","name":"will-newton"},{"email":"jesse.linthorst+npm@gmail.com","name":"jessel"},{"email":"twan.braas@mediamonks.com","name":"twan.braas"},{"email":"contact@leroy.dev","name":"leroykorterink"},{"email":"mientjan.stelling@gmail.com","name":"mientjan"},{"email":"devmonk@mediamonks.com","name":"devmonk"},{"email":"thanarie@gmail.com","name":"thanarie"},{"email":"nathan.uphoff@gmail.com","name":"nathanuphoff"},{"email":"larsvanbraam@gmail.com","name":"larsvanbraam"}],"description":"A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations","author":{"name":"Nathan Uphoff"},"license":"WTFPL","readme":"Isntnt is a collection of composable JavaScript runtime type predicates with TypeScript type guard declarations. Supports generics including union and intersection types.\n\n# Generics\n\n## above\n`(floor: number) => (value: unknown) => value is number`\n\n```typescript\nconst isAboveZero = above(0)\n```\n\n## and\n`<T extends Array<Predicate<any>>>(...predicates: T) => (value: unknown) => value is Predicate<Intersect<Static<T[number]>>>`\n\n```typescript\nconst isBetween0And21 = and(above(0), below(21))\n\nconst isUser = shape({ name: isString })\nconst hasEmailAddress = at('email', isString)\n\nconst isUserWithEmail = and(isUser, hasEmailAddress) // (value: unknown) => { name: string } & { email: string }\n```\n\n## array\n`<T>(predicate: Predicate<T>) => (value: unknown) => value is Array<T>`\n\n```typescript\nconst isAnyArray = array(isAny) // (value: unknown) => value is Array<any>\n```\n\n## at\n`<T extends PropertyKey, U>(key: T, predicate: Predicate<U>) => (value: unknown) => value is { [P in T]: U }`\n\n```typescript\nconst isAnyAtFoo = at('foo', isAny) // (value: unknown) => value is { foo: any }\n```\n\n## below\n`(max: number) => (value: unknown) => value is number`\n\n```typescript\nconst isBelow21 = below(21)\n```\n\n## either\n`<T extends Array<Primitive>>(...literalValues: T) => (value: unknown) => value is T[number]`\n\n```typescript\nconst isFooOrBar = either('foo', 'bar') // (value: unknown) => value is 'foo' | 'bar'\n```\n\n## has\n`<T extends PropertyKey>(key: T) => (value: unknown) => value is { [P in T]: unknown }`\n\n```typescript\nconst hasFoo = has('foo') // (value: unknown) => value is { 'foo': unknown }\n```\n\n## instance\n`<T extends Constructor<any, any>>(constructor: T) => (value: unknown) => value is InstanceType<T>`\n\n```typescript\nconst isInstanceofString = instance(String) // (value: unknown) => value is String\n```\n\n## literal\n`<T extends Primitive>(literalValue: T) => (value: unknown) => value is T`\n\n```typescript\nconst is42 = literal(42) // (value: unknown) => value is 42\n```\n\n## max\n`<T extends number>(max: number) => (value: unknown) => value is number`\n\n```typescript\nconst isMax255 = max(255)\n```\n\n## maybe\n`<T>(predicate: Predicate<T>) => (value: unknown) => value is T | null | undefined`\n\n```typescript\nconst isMaybeString = maybe(isString) // (value: unknown) => value is string | null | undefined\n```\n\n## min\n`(min: number) => (value: unknown) => value is number`\n\n```typescript\nconst isMin18 = min(18)\n```\n\n## noneable\n\nAliases [`maybe`](#maybe)\n\n## nullable\n`<T>(predicate: Predicate<T>) => (value: unknown) => value is T | null`\n\n```typescript\nconst isNullableString = nullable(isString) // (value: unknown) => value is string | null\n```\n\n## object\n`<T>(predicate: Predicate<T>) => (value: unknown) => value is Record<any, T>`\n\n```typescript\nconst isEnum = object(isUint) // (value: unknown) => value is Record<any, number>\n```\n\n## optional\n`<T>(predicate: Predicate<T>) => (value: unknown) => value is T | undefined`\n\n```typescript\nconst isOptionalString = optional(isString) // (value: unknown) => value is string | undefined\n```\n\n## or\n`<T extends Array<Predicate<any>>>(...predicates: T) => (value: unknown) => value is Static<T[number]>`\n\n```typescript\nconst isStringOrNumber = or(isString, isNumber) // (value: unknown) => value is string | number\n```\n\n## record\n`<T extends PropertyKey, U>(keyPredicate: Predicate<T>, valuePredicate: Predicate<U>) => (value: unknown) => value is Record<T, U>`\n\n```typescript\nconst isDictionary = record(isString, isInt) // (value: unknown) => value is Record<string, number>\n```\n\n## shape\n`<T extends Record<PropertyKey, Predicate<any>>>(predicates: T) => (value: unknown) => value is { [P in keyof T]: Static<T[P]> }`\n\n> Note: Actual signature also considers optional members (`{ name?: T }`) in its `Predicate` type\n\n```typescript\nconst isCoordinate = shape({ x: isNumber, y: isNumber }) // (value: unknown) => value is { x: number, y: number }\n```\n\n## test\n`(expression: RegExp) => (value: unknown) => value is string`\n\n```typescript\nconst isSlug = test(/^[\\w-]+$/)\n```\n\n## tuple\n`<T extends Array<any>>(...predicates: { [K in keyof T]: Predicate<T[K]> }) => (value: unknown) => value is T`\n\n```typescript\nconst isPoint = tuple(isNumber, isNumber) // (value: unknown) => value is [number, number]\n```\n\n# Predicates\n\n## isAny\n`(value: unknown) => value is any`\n\nAlways returns `true`.\n\n```typescript\nisAny(value)\n```\n\n## isArray\n`(value: unknown) => value is Array<unknown>`\n\n```typescript\nisArray(value)\n```\n\n## isArrayLike\n`(value: unknown) => value is Record<number, unknown>`\n\n```typescript\nisArrayLike(value)\n```\n\n## isBigInt\n`(value: unknown) => value is bigint`\n\n```typescript\nisBigInt(value)\n```\n\n## isBoolean\n`(value: unknown) => value is boolean`\n\n```typescript\nisBoolean(value)\n```\n\n## isDate\n`(value: unknown) => value is Date`\n\n```typescript\nisDate(value)\n```\n\n## isDictionary\n`(value: unknown) => value is Record<any, string>`\n\n```typescript\nisDictionary(value)\n```\n\n## isFalse\n`(value: unknown) => value is false`\n\n```typescript\nisFalse(value)\n```\n\n## isFunction\n`(value: unknown) => value is Function`\n\n```typescript\nisFunction(value)\n```\n\n## isInt\n`(value: unknown) => value is number`\n\n```typescript\nisInt(value)\n```\n\n## isInt8\n`(value: unknown) => value is number`\n\n```typescript\nisInt8(value)\n```\n\n## isInt16\n`(value: unknown) => value is number`\n\n```typescript\nisInt16(value)\n```\n\n## isInt32\n`(value: unknown) => value is number`\n\n```typescript\nisInt32(value)\n```\n\n## isLength\n`(value: unknown) => value is number`\n\n```typescript\nisLength(value)\n```\n\n## isMap\n`(value: unknown) => value is Map<any, unknown>`\n\n```typescript\nisMap(value)\n```\n\n## isNegative\n`(value: unknown) => value is number`\n\n```typescript\nisNegative(value)\n```\n\n## isNever\n`(value: unknown) => value is never`\n\nAlways returns `false`;\n\n```typescript\nisNever(value)\n```\n\n## isNone\n`(value: unknown) => value is null | undefined`\n\n```typescript\nisNone(value)\n```\n\n## isNull\n`(value: unknown) => value is null`\n\n```typescript\nisNull(value)\n```\n\n## isNumber\n`(value: unknown) => value is number`\n\n```typescript\nisNumber(value)\n```\n\n## isObject\n`(value: unknown) => value is object`\n\n```typescript\nisObject(value)\n```\n\n## isObjectLike\n`(value: unknown) => value is ObjectLike`\n\n```typescript\nisObjectLike(value)\n```\n\n## isPlainObject\n`(value: unknown) => value is {}`\n\n```typescript\nisPlainObject(value)\n```\n\n## isPositive\n`(value: unknown) => value is number`\n\n```typescript\nisPositive(value)\n```\n\n## isPrimitive\n`(value: unknown) => value is Primitive`\n\n```typescript\nisPrimitive(value)\n```\n\n\n## isRegExp\n`(value: unknown) => value is RegExp`\n\n```typescript\nisRegExp(value)\n```\n\n## isSerializable\n`(value: unknown) => value is Serializable`\n\n```typescript\nisSerializable(value)\n```\n\n## isSerializableArray\n`(value: unknown) => value is Array<Serializable>`\n\n```typescript\nisSerializableArray(value)\n```\n\n## isSerializableNumber\n`(value: unknown) => value is number`\n\n```typescript\nisSerializableNumber(value)\n```\n\n## isSerializableObject\n`(value: unknown) => value is Record<string, Serializable>`\n\n```typescript\nisSerializableObject(value)\n```\n\n## isSerializablePrimitive\n`(value: unknown) => value is SerializablePrimitive`\n\n```typescript\nisSerializablePrimitive(value)\n```\n\n## isSet\n`(value: unknown) => value is Set<unknown>`\n\n```typescript\nisSet(value)\n```\n\n## isSome\n`(value: unknown) => value is Some`\n\n```typescript\nisSome(value)\n```\n\n## isString\n`(value: unknown) => value is string`\n\n```typescript\nisString(value)\n```\n\n## isSymbol\n`(value: unknown) => value is symbol`\n\n```typescript\nisSymbol(value)\n```\n\n## isTrue\n`(value: unknown) => value is true`\n\n```typescript\nisTrue(value)\n```\n\n## isUint\n`(value: unknown) => value is number`\n\n```typescript\nisUint(value)\n```\n\n## isUint8\n`(value: unknown) => value is number`\n\n```typescript\nisUint8(value)\n```\n\n## isUint16\n`(value: unknown) => value is number`\n\n```typescript\nisUint16(value)\n```\n\n## isUint32\n`(value: unknown) => value is number`\n\n```typescript\nisUint32(value)\n```\n\n## isUndefined\n`(value: unknown) => value is undefined`\n\n```typescript\nisUndefined(value)\n```\n\n## isWeakMap\n`(value: unknown) => value is WeakMap<any, unknown>`\n\n```typescript\nisWeakMap(value)\n```\n\n## isWithLength\n`(value: unknown) => value is { length: number }`\n\n```typescript\nisWithLength(value)\n```\n\n# Types\n\n## Intersect\n\n```typescript\nIntersect<A | B> // A & B\n```\n\n## Maybe\n\n```typescript\nMaybe<T> // T | null | undefined\n```\n\n```typescript\ntype MaybeString = Maybe<string> // string | null | undefined\n```\n\n## None\n\n```typescript\nNone // null | undefined\n```\n\n## Nullable\n\n```typescript\nNullable<T> // T | null\n```\n\n```typescript\ntype NullableString = Nullable<string> // string | null\n```\n\n## Optional\n\n```typescript\nOptional<T> // T | undefined\n```\n\n```typescript\ntype OptionalString = Optional<string> // string | undefined\n```\n\n## Predicate\n\n```typescript\nPredicate<T> // (value: unknown, ...rest: Array<unknown>) => value is T\n```\n\n## Primitive\n\n```typescript\nPrimitive // null | undefined | boolean | number | string | symbol | bigint\n```\n\n## Serializable\n\n```typescript\nSerializable // SerializableArray | SerializableObject | SerializablePrimitive\n```\n\n## SerializableArray\n\n```typescript\nSerializableArray // Array<Serializable>\n```\n\n## SerializableObject\n\n```typescript\nSerializableObject // Partial<{ [key: string]: Serializable }>\n```\n\n## SerializablePrimitive\n\n```typescript\nSerializablePrimitive // null | boolean | number | string\n```\n\n## Some\n\n```typescript\nSome // Function | boolean | bigint | number | string | symbol | object\nSome<T> // Exclude<T, undefined | null>\n```\n\n```typescript\n// Make sure `T` is not `null` or `undefined`\ntype Option<T extends Some, E extends Error> = T | E\n\n// Remove `null` or `undefined` from a type\ntype MaybeString = Optional<string> // string | null | undefined\ntype SomeString = Some<MaybeString> // string\n```\n\n## Static\n\n```typescript\nStatic<Predicate<T>> // T\n```\n\n```typescript\ntype True = Static<typeof isTrue> // true\n```\n","readmeFilename":"README.md","repository":{"type":"git","url":"https://github.com/mediamonks/isntnt.git"}}