{"_id":"sarcastic","_rev":"7-b7468b1449a02bb381139af10cff03e3","name":"sarcastic","dist-tags":{"latest":"1.5.0"},"versions":{"1.0.0":{"name":"sarcastic","version":"1.0.0","description":"Cast unknown values to typed values","main":"lib/index.js","repository":{"type":"git","url":"git+https://github.com/jamiebuilds/sarcastic.git"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"license":"MIT","keywords":["type","flow","cast","assert","assertions","immutable"],"files":["lib"],"scripts":{"test":"flow && ava"},"devDependencies":{"ava":"^0.25.0","flow-bin":"^0.74.0"},"gitHead":"7b6a0a889ab9005a088a0940ef37fae3690175ef","bugs":{"url":"https://github.com/jamiebuilds/sarcastic/issues"},"homepage":"https://github.com/jamiebuilds/sarcastic#readme","_id":"sarcastic@1.0.0","_npmVersion":"6.1.0","_nodeVersion":"10.4.0","_npmUser":{"name":"thejameskyle","email":"me@thejameskyle.com"},"dist":{"integrity":"sha512-mANqG/2Lnz12vZ3v6DPKGSq31qQWYCYYGFXQCv6Yvwobyc7dH6Lm7wPvxVZSHSrFU9X7I5PI3O9IxjvgDCzp0w==","shasum":"6160b6287b8c11d03441d9b961ba1ee7a207d7e4","tarball":"https://registry.npmjs.org/sarcastic/-/sarcastic-1.0.0.tgz","fileCount":3,"unpackedSize":2340,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbHYSZCRA9TVsSAnZWagAA9DIP/0riqn60XuTuykkYMvA2\neXjesPp9tjvlbqZvjwQtTYc721lE+4KlvNnWS0LiNT1RVGUtLKwXuBF8qTPW\nOxIp1sK1aVEkvPt7Sjx7h3KvGatJRpDqf38zED1trtPwe+WvAkcFHkrA2N35\nNYmPRkV8Anl63cvF9ozTVMbO2S14s5g0eJn3i8UUI6r1FKY20A0B5mm6CzrW\nkNvs/cDAVpNb9tKNX6gZ5SvhG0Da5k+7x9BOLChTITRIDWFh17H3TriyTjch\neWlvcHh46DSuBQ91AKgmd14U7J0nK8+RI1FQ2Hv/kDn7lmv5o8HO11oc6vrP\nWvlHgGMwZDfb9MgpCTID6CLJU4ckdtTiuVYOAtAR9u84pqe58JPKCyb5nwnw\nDksg2OdnOtAwXJZPKCaqT2GFkK3q7HlUhgy1r5ks02OuUZ+rnQfzBNR3icyM\nLwYHnG3TvZYWleMhCKUI7lswM3d8ej1bipd1Hb67TxxU/FZl6o7TdbpjPIk7\nnJWzuI3qlKsz3vpSb/7ESh/Oqf/jOWpTr8/dnDjNiW3F0usDtw8DIYRzfGUB\nFL8Wvqu6P6xsi3USBuN3/0ADGo5jabTC2YPzDdfP/dnNRoQHJwPaVgs39NjS\nTsTWE6K0TjPyJxVbmfYYJ+eXIYXQUXkK94EHiImrZZFT+4TueyzPnkv/PzfQ\nfDLj\r\n=MdDd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDW92/tWYjn53GkgwPFdiNoO+Gk7tmg+3LdHi1vWy3I+AiB4lh4IDsFZRGE/cFIql5eGL9losYanJsnSuxPw0uHwHw=="}]},"maintainers":[{"name":"thejameskyle","email":"me@thejameskyle.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sarcastic_1.0.0_1528661145004_0.36699503576487813"},"_hasShrinkwrap":false},"1.0.1":{"name":"sarcastic","version":"1.0.1","description":"Cast unknown values to typed values","main":"index.js","repository":{"type":"git","url":"git+https://github.com/jamiebuilds/sarcastic.git"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"license":"MIT","keywords":["type","flow","cast","assert","assertions","immutable"],"files":["index.js"],"scripts":{"test":"flow && ava"},"devDependencies":{"ava":"^0.25.0","flow-bin":"^0.74.0"},"gitHead":"302e531a887c53407ff1c5402d8e8bb5d4253000","bugs":{"url":"https://github.com/jamiebuilds/sarcastic/issues"},"homepage":"https://github.com/jamiebuilds/sarcastic#readme","_id":"sarcastic@1.0.1","_npmVersion":"6.1.0","_nodeVersion":"10.4.0","_npmUser":{"name":"thejameskyle","email":"me@thejameskyle.com"},"dist":{"integrity":"sha512-SjgJh8Im7HTCH319N2WaiiWoQG8MqsVq7ryLzPF1Gq3q6Hzf3Mbq6p2uBOIC9UzFfkT9kDw2WqJiV27P7e0qbg==","shasum":"ec0d2f62f14931a85636f33b04fc8536e7c62b43","tarball":"https://registry.npmjs.org/sarcastic/-/sarcastic-1.0.1.tgz","fileCount":4,"unpackedSize":5664,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbHYcfCRA9TVsSAnZWagAA+s0P/iRSSweJNlTdm2IxaV/G\nqurpwhLKmzdIB7zf81nnlTT5XrOq/tL1Q3ZCHRyXg73Y98wM8v9BOPPMRHVy\nE0NKH2ust0EY58HVKB4laixlxuHFNlL7oiEk8a1y9onOhYffOM0Qx9CVLZRn\nvQieRMHju46IuWfIUyyyGdwHV5EKdEBnAmfDpfdM8LJ7BxzcnIl5HMzo3svL\nxVcxwON9vfRUDevVw2CIWcm8H+COwEyenXHxtE4gBeWYrYtpfXZ7ZkiM+WMd\nstdSOF4D3CdLADCVHa8fkRGbx3gY3rRUV6xHZ0rilO1GqSulgn+hfP1rqWQC\nAf6l97ZS83J2VuF9lco6An1bldyOe097n8t4fd8IGJqd9qKX4LudLafPPn1g\nQyoJIxwbHGBVDUjUWQQtkRhX7WWn7H5WqEpKChtreMdyM1pw0+/fMITft0Mp\nIkdU8krwYipRkjRyE/apB27X+wGI3So/YIG1JVO/NqjmZQdkqWLTg6f9zbHG\nv3ObVPdRxSD+m3Nc9IIwTVXNQSEDNEkZ3cdUXQOxWKnfr43jXdy+hpOsiT/F\nyPxEkm4qViC/vzY+jXMWewHI0BCuWXTB7MajQEFQUn04HqRjQnecp3uljzzo\nKb8+ZV/N7vW3+mnPcCoGrWj6yuI9cimyqzHNrCaE9psn8WOQcWyLMtlSb5Nz\nesKn\r\n=D3w1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID61omh7kEj8tAXlfhldkBiqNzs4nFDTGeDziG5FXpNqAiEAonoq1f89FCwAbXzyMqOwgRImOapmw2ycISsyU2uB9LY="}]},"maintainers":[{"name":"thejameskyle","email":"me@thejameskyle.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sarcastic_1.0.1_1528661790557_0.08438593334573352"},"_hasShrinkwrap":false},"1.1.0":{"name":"sarcastic","version":"1.1.0","description":"Cast unknown values to typed values","main":"index.js","repository":{"type":"git","url":"git+https://github.com/jamiebuilds/sarcastic.git"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"license":"MIT","keywords":["type","flow","cast","assert","assertions","immutable"],"files":["index.js"],"scripts":{"test":"flow && ava"},"devDependencies":{"ava":"^0.25.0","flow-bin":"^0.74.0"},"gitHead":"1b12b986575a75328191aa1d2524d6db846e36d4","bugs":{"url":"https://github.com/jamiebuilds/sarcastic/issues"},"homepage":"https://github.com/jamiebuilds/sarcastic#readme","_id":"sarcastic@1.1.0","_npmVersion":"6.1.0","_nodeVersion":"8.9.4","_npmUser":{"name":"thejameskyle","email":"me@thejameskyle.com"},"dist":{"integrity":"sha512-s4UTq148DRj44A7cE6IKgjXtEAb4Mo9Ltn3K4uMy1trxaq6pnRztQrqceZKPCXx0ZL6FGV0gEE6gJ+HVWLxQkw==","shasum":"80eb23646b77445a32fd986b6e114b020f86cb91","tarball":"https://registry.npmjs.org/sarcastic/-/sarcastic-1.1.0.tgz","fileCount":4,"unpackedSize":5860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbKCqqCRA9TVsSAnZWagAATucP/i6NLbu7WmkdOa1/96jL\nTFWjGz3gHmE/1DYOs2dblnhBKps75lsec+L4UvGAOF7M9J3jfvuRwJ3OBqRY\nqBFxhPzIDasOToikJFABPKLNIGbvCerrMUqaQShPV2S444Mz/vuz4kf7fLKs\nmNF39QNRcWu0FFSbzv3UuP2oF4tJX0uli3F+Ak7jc1xURjbJE0LEyWC6SBYI\n2I4I/CcU3YjpMmw+jzFin8SifaFMaU34OS6GH5GqGQSbJEPbJo1Rjv5U/B3s\nyYWSeEGeFOsgbou25CDNxi5oWh2pK2JdkoKaZVnzSY+fgZFSmOYnO9dGSRV0\nffQZSbvFQb/Z3k9fJgxZeyRMipJ3iPByf1LEznnXJaLe5uOCQ5ouTMTP9UmN\nlRYrk8GP48F2ZqeqVgEruIQa7KlJMYkYfVQHSv5f9Sz4t0r5Cy0RzIAA/Fx3\n2DGw9hjiOLpmJzQ82sWFwSZXXosbuDtSP8Cq4cDnGGV8+lkmn3Hq5NcHc96t\nlvDyONTWXYdUkhky261/3SDdouTtjJzU51SsVck70NljI/COloTsFpkkk+ae\nRWZr0Kw3AnWPwhO5gAIb4h2HxlgzUuA1kMhyCqLRhu9kN8hta4dJMaPYHfYz\nuUIB97ylplvlXL5khQjbPEvUtH6nqeUldQbSjqJKu/wQZKUGYtSQ25lKXTMu\ncLG9\r\n=agZ/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAhYk8XSeMYZgY1ty3Y6cbl68aIAf4lMvXGloBSGCNt7AiEA2vbPNz67OH/Pcfj278q3Y288Qfw4jmB3bSmoMROh/Uc="}]},"maintainers":[{"name":"thejameskyle","email":"me@thejameskyle.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sarcastic_1.1.0_1529359017741_0.9004499312077427"},"_hasShrinkwrap":false},"1.2.0":{"name":"sarcastic","version":"1.2.0","description":"Cast unknown values to typed values","main":"index.js","repository":{"type":"git","url":"git+https://github.com/jamiebuilds/sarcastic.git"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"license":"MIT","keywords":["type","flow","cast","assert","assertions","immutable"],"files":["index.js"],"scripts":{"test":"flow && ava"},"devDependencies":{"ava":"^0.25.0","flow-bin":"^0.74.0"},"gitHead":"5f0e7a3edf899e4ae6ffb72deb3abd552cb138a2","bugs":{"url":"https://github.com/jamiebuilds/sarcastic/issues"},"homepage":"https://github.com/jamiebuilds/sarcastic#readme","_id":"sarcastic@1.2.0","_npmVersion":"6.1.0","_nodeVersion":"8.9.4","_npmUser":{"name":"thejameskyle","email":"me@thejameskyle.com"},"dist":{"integrity":"sha512-h9ldpjpGyI4Lr+CE1Vd96kapXz/qjS1lX1oX7pUiWqfNHufRfoJpl44aNCd8nLHUw5zfDS1vqQL4CfwlZOoiCQ==","shasum":"8cc36a5a2db2642a0185119b6e5e8cac34b6e8f5","tarball":"https://registry.npmjs.org/sarcastic/-/sarcastic-1.2.0.tgz","fileCount":4,"unpackedSize":5896,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbKDAmCRA9TVsSAnZWagAAO9sQAJqL7svLWxLHcEkTJ507\nRwUn7dVrWFDnMH7d6rlxhk7wGJWRQvC5keuPP+vlyro3RZrxmSKlYQexnu8z\n+QfbWS0FkawA8tVJrIwHxT88rKuqu67nO3Wr7N7yNBtWEx7xGJZwMQhSi6sP\nlnTmMhVjHSn6XIksI43prSKcC9cIAgRDwQfoJ2e26zDlbOeC5sfEfsK37OMO\nwPSUJK9hOOQQvF4TYTKdggQ4DXm0/OJlL8/cYzcXCCllUBYQosJlGbWcCaDs\nmiStYL5MEdQzoAx8Gx1k0SGn2eC/DQ04G1oNYhAjzwpX59S07FR/Xqz5/ZzL\nKDHCXZcsDhEBDxZ+c5MC6mhkrcYJivTGqiFVh/GGquMj2c/bZk2l4YXpGRyo\naicAE8+qoijT42/LXzr3l0EZcRycs23RIzxB1jo2f1xc6Zqwhvjq2lrc9Ma8\nfNJcEMShJ/JuFPC4DH/6S3T719lcK6w6WucVvr9X76eXZA+JklP8gRlWc7Dg\nHW64JWttTeThoqt2aIicLVCqGaPuQQPBYzYTN/BEdAAVsmYftAHACq1BaImj\nAbDDIz6Wum4rCR9OvTN0n0M8gaVRAHeu6sUuCs6poIyNMbcjOQObpJwVYaI8\nCUcYfUPCCcFfzpnswz7MgJJajFx/TtfVgpI+3CDF1mqIQgf/YZuRPeZkc0xA\no36t\r\n=RHTw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC91r/fgdPYOISXzSB1KrCIDC2sCSUBBZL6o8xHA4C+4AiBkoeUTT2OYncmU9aMVqDuMJ9ENiLh9ih2j99lbiBmd/Q=="}]},"maintainers":[{"name":"thejameskyle","email":"me@thejameskyle.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sarcastic_1.2.0_1529360416584_0.2170384815080657"},"_hasShrinkwrap":false},"1.3.0":{"name":"sarcastic","version":"1.3.0","description":"Cast unknown values to typed values","main":"index.js","repository":{"type":"git","url":"git+https://github.com/jamiebuilds/sarcastic.git"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"license":"MIT","keywords":["type","flow","cast","assert","assertions","immutable"],"files":["index.js"],"scripts":{"test":"flow && ava"},"devDependencies":{"ava":"^0.25.0","flow-bin":"^0.74.0"},"gitHead":"579ce3a30f79d07a679fe8ae21d1b68a6c01389e","bugs":{"url":"https://github.com/jamiebuilds/sarcastic/issues"},"homepage":"https://github.com/jamiebuilds/sarcastic#readme","_id":"sarcastic@1.3.0","_npmVersion":"6.1.0","_nodeVersion":"8.9.4","_npmUser":{"name":"thejameskyle","email":"me@thejameskyle.com"},"dist":{"integrity":"sha512-yv+ILD3MEgdk6k16VQfObk3WxocaNdS+ZHw6CL8ouuSfC0PFraEP+hCU97lwAwKQ1Kabl8oaYs/VOukKOGUwTg==","shasum":"198136e83b8fbe137c4a24341aebe17a3e9dceef","tarball":"https://registry.npmjs.org/sarcastic/-/sarcastic-1.3.0.tgz","fileCount":4,"unpackedSize":6658,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbKDctCRA9TVsSAnZWagAAD1EP/jxyxJdx9sXXYEjV7yQX\n2hnuj6Aadi7zs3VMRRtw5AODSmOiF8EOZX9KSvTOKswjYGeKiUjJplWVDik+\n5L3c16SHxlDshsIo3TbjZUTIRWDKrE7ipH+SKToXRa4/lUv7vbFLiXSYOqcE\nTvgNnIdGI71heOmjEA7MtdH7gDReeoQSjmDxspwpy5PQ5pBzGAHax4RzzoAc\nTmXkrCFhW0rmhJv6weVrIV5JjnGsQIy6EugUQI7hgeFpw4o0l+JHilNpm+k7\nF5Ia/qx2IHG/I51bPu1dO3adF3ZvA5Ye28DPX/Iu145x/cA1aTqqS/Qq7IfI\ni8DqQUmx/0WcMTEq8D/zfXxYB8eeWoR4vtiBWbDPQkZ+44UUqfAMo476eHMr\nROrz/qEv25TT9NEMWI9sUdKapY1hb3mGQyRtKwzSEoM4P+jKm0A1efrS92MR\n0BLgLmUK1benlwHv4QdVs4XRw4aMMyasiEXaet4QK+n9jtbO44HvcLERVuTK\n2ztpkF22Wt20w21Cn358xmzZPpVBD8qV6Ob+lSdNvSPebYf9jNM/nXkQtFm/\nLffd79/Nbb8NFsV5+xILwsy1/NYaN6xPdpBtoMwOOy64rksRfXfUUIyzxQU9\nC/Oxtw/8c6b7u2gYDcWb1PQ2l/b4X41xUdCalDbp/GG8Yq5wQo8ZahtHsv9Y\nOdn+\r\n=OnA0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDzI2g5WtkogUnlmzI262QSRr807X9MHaQ38p6xduf6ywIgbN2rDTirGtIaiDpKvdKsjfeVpjTBu8An+BHyVq3Jwsg="}]},"maintainers":[{"name":"thejameskyle","email":"me@thejameskyle.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sarcastic_1.3.0_1529362221032_0.7140936631202293"},"_hasShrinkwrap":false},"1.4.0":{"name":"sarcastic","version":"1.4.0","description":"Cast unknown values to typed values","main":"index.js","repository":{"type":"git","url":"git+https://github.com/jamiebuilds/sarcastic.git"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"license":"MIT","keywords":["type","flow","cast","assert","assertions","immutable"],"files":["index.js"],"scripts":{"test":"flow && ava"},"devDependencies":{"ava":"^0.25.0","flow-bin":"^0.74.0"},"gitHead":"5bcea6ecb7cfe031d83f8d42ae9dd57799fbc64e","bugs":{"url":"https://github.com/jamiebuilds/sarcastic/issues"},"homepage":"https://github.com/jamiebuilds/sarcastic#readme","_id":"sarcastic@1.4.0","_npmVersion":"6.1.0","_nodeVersion":"8.9.4","_npmUser":{"name":"thejameskyle","email":"me@thejameskyle.com"},"dist":{"integrity":"sha512-XwREALy0snAuHKIwC5H9jb7Vg4ilCth96sP4bmsCJYm5vEqEpE/nkJewgOOE/wzVVPdr7g4sQmOLIX0tKQFUKg==","shasum":"a237d5409bebbd0588120ab4fe002465692d7c26","tarball":"https://registry.npmjs.org/sarcastic/-/sarcastic-1.4.0.tgz","fileCount":4,"unpackedSize":10674,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbTmCGCRA9TVsSAnZWagAA8j4P/0w4FZuPmyYIJ/1l3YN1\noSsDF4OKnc6hmDnoEuByn8g/PYfsyzolAcLTYQrBgB46EyQcrdgpPUI7GN2A\nHNwRVZ2OQQ6XbmPLjB4W+ps+H+ZRQdNngMCq2VEWMgo5C1N9AoG7ziPFyw7H\ng+CUrYPpuW8/yQdUCe9mtXL3h12PGEiGLj84HfweR8B96V/ew+67MO5RFtXR\nd56NzApGNYScizeiqRcCV8nGrZLrmt4n3GF4ZxoGVUTzhFtQAP7svvt1Gkpy\nobrsmRBbv5NTqUDWZBxdeK5Cfb7HlMap8FpMw6F1pXhVWiLr0y0jHvXgjtzG\niDDT3CFhZ2Lkj3bfW+o8FuUB39eM82ypj3mSJ4ZZu0XxFln496TJHmYbQpMy\nVprl4SzY6K90iJsBph1qQX9336/cU1LJLYg2QZXK/yzS8gLnk+L6r4kmfAEH\n6CIiT8IeA/rxwCNbzs1LvqPv34WoA4ypIu6O1LlnoC7B1/b+9o5FDNLFGZTB\nHLH4wYMDMEo49y2D5PtCrnRR8XNWgqzq/rXNYtFjfBWBVb4KnWAz8kHqTgbU\nzw4BES9SlNSIRSDDI6sdb9Az7TMNb6SaqNrJbDRl/f0UR2h4Q7A0EuEGaoXk\n9CxWAJnQa8/XVC6RqC7M/7WIDpLpO7TDYzqcp0vjYku9vfuvBGpzMP4SeuIB\nT6u8\r\n=SDyz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDZCeYVGaWpXt04/GQjws5/m6uZJ4zQcAvxJXk4/pqfyAiEAwK/92TAB/ciYafCRreT7bIiPH50QxOYb8umvkF3NQ3Y="}]},"maintainers":[{"name":"thejameskyle","email":"me@thejameskyle.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sarcastic_1.4.0_1531863174537_0.1499060623476769"},"_hasShrinkwrap":false},"1.5.0":{"name":"sarcastic","version":"1.5.0","description":"Cast unknown values to typed values","main":"index.js","repository":{"type":"git","url":"git+https://github.com/jamiebuilds/sarcastic.git"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"license":"SEE LICENSE IN LICENSE","keywords":["type","flow","cast","assert","assertions","immutable"],"scripts":{"test":"flow && ava"},"devDependencies":{"ava":"^0.25.0","flow-bin":"^0.74.0"},"gitHead":"f76b42fe8f66c06f943db18a2f6012cb80337ef7","bugs":{"url":"https://github.com/jamiebuilds/sarcastic/issues"},"homepage":"https://github.com/jamiebuilds/sarcastic#readme","_id":"sarcastic@1.5.0","_npmVersion":"6.1.0","_nodeVersion":"8.9.4","_npmUser":{"name":"thejameskyle","email":"me@thejameskyle.com"},"dist":{"integrity":"sha512-j7zmeNbABvOGXzt11WIm7nITPJ0exX/IL0sV9GZHNSsrFEjadfK5Z3GfBEelc6/VoEp17i/JEw3UuzyJNvgZNw==","shasum":"1e87e75bb64e856d3f34d1f5a391c3abecf8c7c1","tarball":"https://registry.npmjs.org/sarcastic/-/sarcastic-1.5.0.tgz","fileCount":4,"unpackedSize":13333,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbicugCRA9TVsSAnZWagAAFrwP+wcFjrj+Wv8cGtsBwkPy\nMwQ7DrawwTPb6/nBloaY20AqH7I99XoWDtdji80pL0NyRTDDfqvgO0wZ9Moy\nckSRT0RJ42sqbElhd0H2O5urkltuGfAHqSEVOd1XD0h9+G+nWXyoJFOUEk1L\nA1kM+7YxYtDav39sR3oWOimVQlo3OLq49m0UaBdnDQruT601XgVGGcS457Yo\npFlir0qD+5dMm2D4D2+yeoZ8HMkWCOrRJ7xSUyjniPQyyehppVdCtc9kAWs5\nKCutkPBrl4SB0RE4swLUfzTSYh1XdoYcNKqMphSAGc/nRCCuPu7QTmU7Rzq0\nInOsqfj3WYK6TkqChW5eDVHL5xdSrLvZuZV2E5/LGWP6J1EuxDWSUuyUfxn3\n98Ds+9cxSdMBY6rsvcwWVJNR0I/FDJNyF3fQ6dZuvGWRa3XIIQMGvyOpBkgR\nGufhJsIaEZA6mdeUEE0Div/YOvzcGNBA5uiigmw6RUvQVkqBAr9wViR6R8uQ\n+QhqaF4g/O91phWBtbHNOFQ6z2pCJ7WC1wo6iHU5iFvLxDusQVGAtsFkrSv7\nC4U3FaG1raNLsXvhc85oPYHNhk3tD63K05Y7aC+ZmvWHMkdTRQaJC1YOgfC9\nK0ZG6RYKjlUXM+oLmZtWeBj/wtlWSGa+GRpfh/9AVaYpFE9I/tYBXFjRTEeR\nuX1l\r\n=T2E4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAojgEosCrI5mjN7KE0QOgPK0Id4cFQGzosamATvMakSAiB4507Y8w/cIU4wN2Mta6pbcW8ZTBigR1wPDLqG9dBUtQ=="}]},"maintainers":[{"name":"thejameskyle","email":"me@thejameskyle.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sarcastic_1.5.0_1535757216089_0.8441288556549682"},"_hasShrinkwrap":false}},"time":{"created":"2018-06-10T20:05:45.003Z","1.0.0":"2018-06-10T20:05:45.069Z","modified":"2022-05-17T03:24:01.362Z","1.0.1":"2018-06-10T20:16:30.653Z","1.1.0":"2018-06-18T21:56:57.790Z","1.2.0":"2018-06-18T22:20:20.523Z","1.3.0":"2018-06-18T22:50:21.079Z","1.4.0":"2018-07-17T21:32:54.597Z","1.5.0":"2018-08-31T23:13:36.224Z"},"maintainers":[{"name":"thejameskyle","email":"me@thejameskyle.com"}],"description":"Cast unknown values to typed values","homepage":"https://github.com/jamiebuilds/sarcastic#readme","keywords":["type","flow","cast","assert","assertions","immutable"],"repository":{"type":"git","url":"git+https://github.com/jamiebuilds/sarcastic.git"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"bugs":{"url":"https://github.com/jamiebuilds/sarcastic/issues"},"license":"SEE LICENSE IN LICENSE","readme":"# Sarcastic\n\n> Cast unknown values to typed values\n\n- Asserts that a value matches the defined type\n- Returns a typed value\n- Copies the value for type safety\n\n## Install\n\n```sh\nyarn add sarcastic\n```\n\n## Usage\n\n```js\nconst is = require('sarcastic');\n\nconst PKG_SHAPE = is.shape({\n  name: is.string,\n  version: is.string,\n  private: is.default(is.boolean, false),\n  scripts: is.maybe(is.objectOf(is.string)),\n  bin: is.maybe(is.either(is.string, is.arrayOf(is.string))),\n});\n\nlet pkg = is(require('./package.json'), PKG_SHAPE);\n// {\n//   name: \"sarcastic\",\n//   version: \"1.0.0\",\n//   private: false,\n//   scripts: { \"test\": \"ava\" },\n//   bin: null\n// }\n```\n\n**With strict typing:**\n\n```js\nimport is, { type AssertionType } from 'sarcastic';\n\nconst PKG_SHAPE = is.shape({\n  name: is.string,\n  version: is.string,\n  private: is.maybe(is.boolean),\n  scripts: is.maybe(is.objectOf(is.string)),\n  bin: is.maybe(is.either(is.string, is.arrayOf(is.string))),\n});\n\ntype PkgShape = AssertionType<typeof PKG_SHAPE>;\n\nfunction assertPkg(pkg: mixed): PkgShape {\n  return is(pkg, PKG_SHAPE, 'pkg');\n}\n\nlet pkg = assertPkg(require('./package.json'));\n```\n\n## API\n\n### `is(val, assertion, name?)`\n\n```js\nis(true, is.boolean);\n```\n\nYou can optionally pass a name for the value so that errors are more\ndescriptive:\n\n```js\nis(deepObj, deepShape, 'example');\n// example.pathTo.nestedKeys.withIndexesLike[14]\n```\n\nAlternatively you can pass a formatter as the name which will receive the path\nto the error as strings for keys and numbers for indexes:\n\n```js\nis(deepObj, deepShape, (...keyPath) => ['example', ...keyPath].join(' > '));\n// example > pathTo > nestedKeys > withIndexesLike > 14\n```\n\n### `is.boolean`\n\n```js\nis(true, is.boolean); // returns true\nis(false, is.boolean); // returns false\nis(42, is.boolean); // throws instanceof is.AssertionError\n```\n\n### `is.number`\n\n```js\nis(42, is.number); // returns 42\nis(NaN, is.number); // returns NaN\nis(true, is.number); // throws instanceof is.AssertionError\n```\n\n### `is.string`\n\n```js\nis(\"\", is.string); // returns \"\"\nis(\"hi\", is.string); // returns \"hi\"\nis(true, is.string); // throws instanceof is.AssertionError\n```\n\n### `is.array`\n\n```js\nis([], is.array); // returns []\nis([1, 2, 3], is.array); // returns [1, 2, 3]\nis({}, is.array); // throws instanceof is.AssertionError\n```\n\n### `is.func`\n\n```js\nis(() => {}, is.func); // returns () => {}\nis({}, is.func); // throws instanceof is.AssertionError\nis(/regex/, is.func); // throws instanceof is.AssertionError\n```\n\n### `is.object`\n\n```js\nis({}, is.object); // returns {}\nis({ foo: true }, is.object); // returns { foo: true }\nis([], is.object); // throws instanceof is.AssertionError\nis(null, is.object); // throws instanceof is.AssertionError\n```\n\n### `is.arrayOf(assertion)`\n\n```js\nis([], is.arrayOf(is.number)); // returns []\nis([1, 2, 3], is.arrayOf(is.number)); // returns [1, 2, 3]\nis({}, is.arrayOf(is.number)); // throws instanceof is.AssertionError\nis([\"hi\"], is.arrayOf(is.number)); // throws instanceof is.AssertionError\n```\n\n### `is.arrayish(assertion)`\n\n```js\nis(1, is.arrayish(is.number)); // returns [1]\nis([], is.arrayish(is.number)); // returns []\nis([1, 2, 3], is.arrayish(is.number)); // returns [1, 2, 3]\nis(\"hi\", is.arrayish(is.number)); // throws instanceof is.AssertionError\nis({}, is.arrayish(is.number)); // throws instanceof is.AssertionError\nis([\"hi\"], is.arrayish(is.number)); // throws instanceof is.AssertionError\n```\n\n### `is.objectOf(assertion)`\n\n```js\nis({}, is.objectOf(is.boolean)); // returns {}\nis({ foo: true }, is.objectOf(is.boolean)); // returns { foo: true }\nis([], is.objectOf(is.boolean)); // throws instanceof is.AssertionError\nis(null, is.objectOf(is.boolean)); // throws instanceof is.AssertionError\nis({ foo: 42 }, is.objectOf(is.boolean)); // throws instanceof is.AssertionError\n```\n\n### `is.shape({ [key: string]: assertion })`\n\n```js\nlet myShape = is.shape({ foo: is.boolean });\n\nis({ foo: true }, myShape); // returns { foo: true\nis({ foo: true, bar: false }, myShape); // returns { foo: true }\nis([], myShape); // throws instanceof is.AssertionError\nis(null, myShape); // throws instanceof is.AssertionError\nis({ foo: 42 }, myShape); // throws instanceof is.AssertionError\n```\n\n### `is.maybe(assertion)`\n\n```js\nis(undefined, is.maybe(is.boolean)); // returns null\nis(null, is.maybe(is.boolean)); // returns null\nis(true, is.maybe(is.boolean)); // returns true\nis(42, is.maybe(is.boolean)); // throws instanceof is.AssertionError\n```\n\n### `is.default(assertion, defaultValue)`\n\n```js\nis(undefined, is.default(is.number, 42)); // returns 42\nis(null, is.default(is.number, 42)); // returns 42\nis(3.14, is.default(is.number, 42)); // returns 3.14\nis(\"hi\", is.default(is.number, 42)); // throws instanceof is.AssertionError\n```\n\n### `is.either(assertionA, assertionB)`\n\n```js\nis(true, is.either(is.boolean, is.string)); // returns true\nis(\"hi\", is.either(is.boolean, is.string)); // returns \"hi\"\nis(42, is.either(is.boolean, is.string)); // throws instanceof is.AssertionError\n```\n\n### `is.AssertionError`\n\n```js\ntry {\n  is(true, is.number);\n} catch (err) {\n  if (err instanceof is.AssertionError) {\n    // an assertion error\n  } else {\n    // some other unexpected error\n  }\n}\n```\n","readmeFilename":"README.md"}