{"_id":"@mapbox/fusspot","_rev":"21-6443ba5aaf9579383464e8b856b82f27","name":"@mapbox/fusspot","dist-tags":{"latest":"0.8.1"},"versions":{"0.1.0":{"name":"@mapbox/fusspot","version":"0.1.0","description":"A tiny runtime library for type assertions","main":"lib/index.js","scripts":{"test":"jest"},"repository":{"type":"git","url":"git+https://github.com/mapbox/fusspot.git"},"keywords":["assertion","type"],"author":{"name":"Mapbox"},"contributors":[{"name":"David Clark","email":"david.dave.clark@gmail.com"},{"name":"Kushan Joshi","email":"0o3ko0@gmail.com"}],"license":"BSD 2-Clause","bugs":{"url":"https://github.com/mapbox/fusspot/issues"},"homepage":"https://github.com/mapbox/fusspot#readme","dependencies":{"is-plain-obj":"^1.1.0","xtend":"^4.0.1"},"devDependencies":{"eslint":"^4.19.1","eslint-plugin-node":"^6.0.1","jest":"^23.1.0"},"jest":{"transform":{},"clearMocks":true,"testEnvironment":"node","coverageReporters":["text","html"]},"gitHead":"a59ccefc4b3cd5a00e177e612238e84117cbf1a8","_id":"@mapbox/fusspot@0.1.0","_npmVersion":"6.1.0","_nodeVersion":"8.11.1","_npmUser":{"name":"mapbox-npm-03","email":"accounts+npmjs-03@mapbox.com"},"dist":{"integrity":"sha512-mofa001UbipSNxpH7F7kz6MjPCZCFkPT145g+GHQMWFX1Fk9ahrAsgpJEoalxF3zwd0f761h7Aq8loEfqm5T3g==","shasum":"16ba7b879d02a318d988b12dc594579c42bcbd39","tarball":"https://registry.npmjs.org/@mapbox/fusspot/-/fusspot-0.1.0.tgz","fileCount":10,"unpackedSize":46623,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbMmyxCRA9TVsSAnZWagAAxgIP/i3e7y4MBs8ZUovkLZo+\n3jOSXgLhPisbqvFdLvQwqdl2Mx5fC44D3khjPn+vpV0ZA1Lf0rSUcVpL4q0f\nucwG3dUzmeEK/ElSehgGtVZnWPQorCX9PCT/mnzOW4bPm9b9k7lFPly7jL1l\nclITEwGAYfX5GftTjMX1d/fae1crhipWCgVQjog7jYUO4t6MQ0/dMCnwO/gG\nZ9M7Lxd5JKh236Wq9wEf6OS3uAPuX/WNExZYUkaycYzH4GrZ9kulO9G4PK4l\n2M3LjYXyrAQU3YIB6LTxl5R3ZwHsnQ1atEBH3rtNG/NxSWkiA+CfH/2OKShv\n1SOpPEfZmIrfRF5ph9xqIMw9/g3ovxXAbCx8d9SKZsC3wjVHobut3xWE6MaL\n4UrvXxFfuriQPvZlGfcnjDsPGOfrgnYBlDPtC8EdHotsSN7haQ3sTFYyXoMD\nV9RF0//VJvEkDWK0YvGuzqLp6muzZGIwffQUVeKWK98kacRSSkzuptKo3dlS\nvN2sa4eKWWfsvG/8siGBzOYJqewo+mJHJVju+1LWS/ViFB4Qg47DLVNfrvVb\nYsZv9/X3Q/qSFB60eJQ4S/ojPpYIRUK4s771eehWZeQrNUtpFlQK4qmhz/Gs\ndGMekj6qO7PWesm396Q080A69jKXKqC3mYu27Z9VZ1VOrIeb39rSvvFQn7yw\nXQQG\r\n=fy68\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGWQU/SHUrQxZANLnpS2vj+ViOcXPRoSzRyNXcFj7NjGAiAlF57LS9xVnKbIA6fdSMdi5FWqhd6bw7kkCaxr8YR+gA=="}]},"maintainers":[{"name":"mapbox-admin","email":"accounts@mapbox.com"},{"name":"mapbox-npm","email":"accounts+npmjs@mapbox.com"},{"name":"mapbox-npm-01","email":"accounts+npmjs-01@mapbox.com"},{"name":"mapbox-npm-02","email":"accounts+npmjs-02@mapbox.com"},{"name":"mapbox-npm-03","email":"accounts+npmjs-03@mapbox.com"},{"name":"mapbox-npm-04","email":"accounts+npmjs-04@mapbox.com"},{"name":"mapbox-npm-05","email":"accounts+npmjs-05@mapbox.com"},{"name":"mapbox-npm-06","email":"accounts+npmjs-06@mapbox.com"},{"name":"mapbox-npm-07","email":"accounts+npmjs-07@mapbox.com"},{"name":"mapbox-npm-08","email":"accounts+npmjs-08@mapbox.com"},{"name":"mapbox-npm-09","email":"accounts+npmjs-09@mapbox.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusspot_0.1.0_1530031281232_0.1016898776861972"},"_hasShrinkwrap":false},"0.2.0":{"name":"@mapbox/fusspot","version":"0.2.0","description":"A tiny runtime library for type assertions","main":"lib/index.js","scripts":{"test":"jest"},"repository":{"type":"git","url":"git+https://github.com/mapbox/fusspot.git"},"keywords":["assertion","type"],"author":{"name":"Mapbox"},"contributors":[{"name":"David Clark","email":"david.dave.clark@gmail.com"},{"name":"Kushan Joshi","email":"0o3ko0@gmail.com"}],"license":"BSD 2-Clause","bugs":{"url":"https://github.com/mapbox/fusspot/issues"},"homepage":"https://github.com/mapbox/fusspot#readme","dependencies":{"is-plain-obj":"^1.1.0","xtend":"^4.0.1"},"devDependencies":{"eslint":"^4.19.1","eslint-plugin-node":"^6.0.1","jest":"^23.1.0"},"jest":{"transform":{},"clearMocks":true,"testEnvironment":"node","coverageReporters":["text","html"]},"gitHead":"a44adcd6ff6caeadaa7dfbfa536589120a780b0d","_id":"@mapbox/fusspot@0.2.0","_npmVersion":"6.1.0","_nodeVersion":"8.11.1","_npmUser":{"name":"mapbox-npm","email":"accounts+npmjs@mapbox.com"},"dist":{"integrity":"sha512-CLNyCi8Qeg0CrX9Fc4uklhXUVmiT2q98xy7vMWoOmTb0UAvj/kijZmY5HK6NR/mxXotg1YvHoErPTaCjNcmR0w==","shasum":"5e02dcb5fde5bb4b336d750b1aae6aadd21fd9a6","tarball":"https://registry.npmjs.org/@mapbox/fusspot/-/fusspot-0.2.0.tgz","fileCount":10,"unpackedSize":50421,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbOroFCRA9TVsSAnZWagAAKKQP/ikljcnC/NXTDUus2w56\nTDbKGWof7MLPXip8V3M/rlD57+PQ8VTgQrxjlc8sF8GESgQT/KNKslWquDza\nlTeCRQStPQWTC9p0DXvmaUdKMZN11X/3eXzCSezqeO9cTTkX1EM/e+pc5Uk9\nqtdF28FcseMN8tooJHGOiKqjTVw4+lfQKtpWULzEPTNaFqF69V/6a4fl6F9f\nu9lDQqgIl59I5Wfk6L00yrPQ20lYpwdliLHMshHKBnJuzH0VzLHU4STDIliS\nuGymP5ftaH1tVlh82LO4/TPSgx3Ie8mJX4/p/kLcFhimv5YjA75+Bh0fcyYO\nY+9rxJHEreYMkgjSCYOd8Hv9oYpHALUTljKT9hYum9cUHQ304wAeO5rORVAq\nJpNhrpq9xKoQIiYvMJNpnpwhhfN3A1FSvFyFrqAJ/uknmtfWjvv7rLduVZXB\ndGqrcBsQb+/SyetkKVE/PKRQbK7chdFT33N/2XaSoSpVaLiyYgVgG52NG5Ia\nSDvAUWa7sFMfBaFSqlYqQ+PvhOpgNHzsyZu9RJwqrzyWlv2uaXP7J8V4JvF3\nlBgsNPGB64LlpxTFzbzuPK5LHfByTYTWgmhdQE1aYsuWVJvBUCySLHrqsCBS\nzXMZqXFETJgUtO5frFFzLUn0G87IPet2uXjyk5oUPG9pDNM2j2+SzrgKPMkU\nOMAx\r\n=vTKQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC/alj3v9O1j7WWAHvO1/R2Ag6rdpdc1glNma5cCh9x8gIgPrUomkipvYw97AQYRCEqz/fc8/W9yl+P3chB/gkd3sM="}]},"maintainers":[{"email":"accounts@mapbox.com","name":"mapbox-admin"},{"email":"accounts+npmjs@mapbox.com","name":"mapbox-npm"},{"email":"accounts+npmjs-01@mapbox.com","name":"mapbox-npm-01"},{"email":"accounts+npmjs-02@mapbox.com","name":"mapbox-npm-02"},{"email":"accounts+npmjs-03@mapbox.com","name":"mapbox-npm-03"},{"email":"accounts+npmjs-04@mapbox.com","name":"mapbox-npm-04"},{"email":"accounts+npmjs-05@mapbox.com","name":"mapbox-npm-05"},{"email":"accounts+npmjs-06@mapbox.com","name":"mapbox-npm-06"},{"email":"accounts+npmjs-07@mapbox.com","name":"mapbox-npm-07"},{"email":"accounts+npmjs-08@mapbox.com","name":"mapbox-npm-08"},{"email":"accounts+npmjs-09@mapbox.com","name":"mapbox-npm-09"},{"email":"accounts+npmjs-advanced-actions@mapbox.com","name":"mapbox-npm-advanced-actions"},{"email":"accounts+npmjs-npm-ci@mapbox.com","name":"mapbox-npm-ci"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusspot_0.2.0_1530575365878_0.8825942085794394"},"_hasShrinkwrap":false},"0.2.1":{"name":"@mapbox/fusspot","version":"0.2.1","description":"A tiny runtime library for type assertions","main":"lib/index.js","scripts":{"test":"jest"},"repository":{"type":"git","url":"git+https://github.com/mapbox/fusspot.git"},"keywords":["assertion","type"],"author":{"name":"Mapbox"},"contributors":[{"name":"David Clark","email":"david.dave.clark@gmail.com"},{"name":"Kushan Joshi","email":"0o3ko0@gmail.com"}],"license":"BSD 2-Clause","bugs":{"url":"https://github.com/mapbox/fusspot/issues"},"homepage":"https://github.com/mapbox/fusspot#readme","dependencies":{"is-plain-obj":"^1.1.0","xtend":"^4.0.1"},"devDependencies":{"eslint":"^4.19.1","eslint-plugin-node":"^6.0.1","jest":"^23.1.0"},"jest":{"transform":{},"clearMocks":true,"testEnvironment":"node","coverageReporters":["text","html"]},"gitHead":"c0da66c3f8907780fc3a382561fb70a34102e78f","_id":"@mapbox/fusspot@0.2.1","_npmVersion":"6.1.0","_nodeVersion":"8.11.1","_npmUser":{"name":"mapbox-npm-01","email":"accounts+npmjs-01@mapbox.com"},"dist":{"integrity":"sha512-zhyTs/Di7z5sBUwYjHRNghGsrTzB+n4UUiG8RH2IEgXEa5OHAWSdqBayTmtVUF9U7YnFce0bwN3wHIZRa8vyEQ==","shasum":"7ec666cb3626495542f66f1715da05ee6427c1a0","tarball":"https://registry.npmjs.org/@mapbox/fusspot/-/fusspot-0.2.1.tgz","fileCount":10,"unpackedSize":50574,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbOsLjCRA9TVsSAnZWagAARf0P/RxjRgqoOF6cuZPCkYeJ\nPspSfQaTGPtn+NAo3tHwkdgCh5OCX05MHtH2xvjbizzCsJYJ5A7loBL5iM9b\nCuy7fIGEOKRqTf+Q5/xJrFNficUlK1BdYW1YMzB7G8yjtAK+Y+vwcQWCvxp8\n4mtz8PcMCfIVsQhcx8i59vnVeSvuGKZhMdLOJSzRiM3CaN1Fi0WDIfcx06oH\naPzR7jzGI7Pmnsbwfr91duoeVDCM5Fz9NMLcdwarQvqfTf2mM7UNGIk26GxF\nXB02lh41pAsmkaJJrO95OBC/easoOajy31LH+JpY5DWh2ZLTMuSh5LF680wB\nmsf2yZfDecM+kMBDGzGWzFm08QEUJ+cY9r2CrKQHjCmPYYkfxOFbUhrlX8mQ\nMWAaxH9ney7CFT7c9hOH6dd6e/bWLnykfnAsizO/xlRFqCMyh2vNFFYnjujY\niCkQ4/Zoce5z/hD8xk35vhgHWEfKNXXla/+LVBcW1C51lHWCrckzv0Nxoo/r\nWr+CnhSSu8FfrG9imdcFEpCF3+PdugkAvM+Y4x7wcq0lHOJiusuVY0mDIaRQ\naiGs/nkwCZ5c4jArVPbni+ng2SBjJ2wRrPeI4uWJIIoQGeKLEwOa4WsltVP+\n1EJnFYgjmUHrgnfvke6YHOjSwmZp7Y4j8YLDTpMgJ/JFK/KsLeqNBaqCaLMQ\nUNaO\r\n=qTsE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID9mJttq+9F5v8OvwTKASdAnYQL0bnZGltcixl5wwi2SAiASkwn4SAmnZim4F+Gmhy/BCdrjXlrJjpZHt7blv40N7A=="}]},"maintainers":[{"email":"accounts@mapbox.com","name":"mapbox-admin"},{"email":"accounts+npmjs@mapbox.com","name":"mapbox-npm"},{"email":"accounts+npmjs-01@mapbox.com","name":"mapbox-npm-01"},{"email":"accounts+npmjs-02@mapbox.com","name":"mapbox-npm-02"},{"email":"accounts+npmjs-03@mapbox.com","name":"mapbox-npm-03"},{"email":"accounts+npmjs-04@mapbox.com","name":"mapbox-npm-04"},{"email":"accounts+npmjs-05@mapbox.com","name":"mapbox-npm-05"},{"email":"accounts+npmjs-06@mapbox.com","name":"mapbox-npm-06"},{"email":"accounts+npmjs-07@mapbox.com","name":"mapbox-npm-07"},{"email":"accounts+npmjs-08@mapbox.com","name":"mapbox-npm-08"},{"email":"accounts+npmjs-09@mapbox.com","name":"mapbox-npm-09"},{"email":"accounts+npmjs-advanced-actions@mapbox.com","name":"mapbox-npm-advanced-actions"},{"email":"accounts+npmjs-npm-ci@mapbox.com","name":"mapbox-npm-ci"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusspot_0.2.1_1530577634954_0.6758831964565748"},"_hasShrinkwrap":false},"0.3.0":{"name":"@mapbox/fusspot","version":"0.3.0","description":"A tiny runtime library for type assertions","main":"lib/index.js","scripts":{"test":"jest"},"repository":{"type":"git","url":"git+https://github.com/mapbox/fusspot.git"},"keywords":["assertion","type"],"author":{"name":"Mapbox"},"contributors":[{"name":"David Clark","email":"david.dave.clark@gmail.com"},{"name":"Kushan Joshi","email":"0o3ko0@gmail.com"}],"license":"BSD 2-Clause","bugs":{"url":"https://github.com/mapbox/fusspot/issues"},"homepage":"https://github.com/mapbox/fusspot#readme","dependencies":{"is-plain-obj":"^1.1.0","xtend":"^4.0.1"},"devDependencies":{"eslint":"^4.19.1","eslint-plugin-node":"^6.0.1","jest":"^23.1.0"},"jest":{"transform":{},"clearMocks":true,"testEnvironment":"node","coverageReporters":["text","html"]},"gitHead":"52be874bc318ba52482d3ffed1fd3a917b0e1310","_id":"@mapbox/fusspot@0.3.0","_npmVersion":"6.2.0","_nodeVersion":"8.11.1","_npmUser":{"name":"mapbox-npm-08","email":"accounts+npmjs-08@mapbox.com"},"dist":{"integrity":"sha512-8I39J5Fcsdc6sd2UV6S+02PGIvn9or+Qlao5ccTleHvbNmwQrsPtW2+nsqBYr0X+SCuUINeGaYyL52OTEnp05A==","shasum":"a7047cddeee7dea87fb6cf769fc4d85c80c173c4","tarball":"https://registry.npmjs.org/@mapbox/fusspot/-/fusspot-0.3.0.tgz","fileCount":10,"unpackedSize":51580,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWIrbCRA9TVsSAnZWagAAdQUP/2ylID7cN3mAXKvKAWkp\nN25zt6TSrUYonX8eDNIRdXNvi+E6xclPk/XqFVa0plgkl4rCV1w86v84UfQR\nWFbDNHXn5S/0msRBCGQ0q4txz/7YVGU5nqR0hW4rkMVqZrEb92IBENmjKPPK\nxeHKY5QZp2vBG6+Dbnq8mH+6jCU6otStdKHU/0p6HiN3QN7/OzfRH5ynuAru\nQNlgJ3EVBbY/+Ge+w14eJYTcmYBOvdpIwkzqqWwOEAhP3Gq45sYImgHlrsNZ\nB/qm8WdQBNvzug0l3rSl8OyeJKMZvu0JIIw4n7lKTtd6SfqfZcp+vy7bLCzJ\n8AuUgXqcbnotO4M6VbYllU06ZUG6UHDinpYUs4Dau6AFRvFL5w1cWqunS+WC\nSnW/ojY1elvb/VEoJQ24uFQYvnyEr7/vJtfiyc6sDB3oSXxcnMr45QZEmUqk\nAcyrY/K/cslbM3XetzYo/4ZFwkC31ru1xu2B6vUoeD5hVqsrf2W0mKpIfTb9\nFOX24NhZUu+1qrKT0BV+c4aqndDvPvpEgQoazJNWTrPYRy5if7iP3tOYAn0j\n4zZoE2X05jf0ZKKbkA8GlxI3UFVM6e42pbmHW+jCK5OkikUyGeqqVv73+SeI\np6ALccw3QIPuSUzDOQcxlwsXBQ3cU89PGms4L+mhD3kBehDOai6JWfATDQZa\ny+s3\r\n=FCIw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCs+y6BK8TuuqT9hMFgsUGyvM3wyXTZbhHdg/ikf/RivwIhAJrEgkZk7egZ0fg1yOWjURbUmBhaj2zWKXSAkIvT3MtK"}]},"maintainers":[{"email":"accounts@mapbox.com","name":"mapbox-admin"},{"email":"accounts+npm-mapbox-machine-user@mapbox.com","name":"mapbox-machine-user"},{"email":"accounts+npmjs@mapbox.com","name":"mapbox-npm"},{"email":"accounts+npmjs-01@mapbox.com","name":"mapbox-npm-01"},{"email":"accounts+npmjs-02@mapbox.com","name":"mapbox-npm-02"},{"email":"accounts+npmjs-03@mapbox.com","name":"mapbox-npm-03"},{"email":"accounts+npmjs-04@mapbox.com","name":"mapbox-npm-04"},{"email":"accounts+npmjs-05@mapbox.com","name":"mapbox-npm-05"},{"email":"accounts+npmjs-06@mapbox.com","name":"mapbox-npm-06"},{"email":"accounts+npmjs-07@mapbox.com","name":"mapbox-npm-07"},{"email":"accounts+npmjs-08@mapbox.com","name":"mapbox-npm-08"},{"email":"accounts+npmjs-09@mapbox.com","name":"mapbox-npm-09"},{"email":"accounts+npmjs-advanced-actions@mapbox.com","name":"mapbox-npm-advanced-actions"},{"email":"accounts+npmjs-npm-ci@mapbox.com","name":"mapbox-npm-ci"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusspot_0.3.0_1532529371636_0.38664736286608803"},"_hasShrinkwrap":false},"0.4.0":{"name":"@mapbox/fusspot","version":"0.4.0","description":"A tiny runtime library for type assertions","main":"lib/index.js","scripts":{"lint":"stickler lint","format":"stickler format","precommit":"stickler precommit","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/mapbox/fusspot.git"},"keywords":["assertion","type"],"author":{"name":"Mapbox"},"contributors":[{"name":"David Clark","email":"david.dave.clark@gmail.com"},{"name":"Kushan Joshi","email":"0o3ko0@gmail.com"}],"license":"BSD 2-Clause","bugs":{"url":"https://github.com/mapbox/fusspot/issues"},"homepage":"https://github.com/mapbox/fusspot#readme","dependencies":{"is-plain-obj":"^1.1.0","xtend":"^4.0.1"},"devDependencies":{"@mapbox/stickler":"^0.2.6","jest":"^23.1.0"},"jest":{"transform":{},"clearMocks":true,"testEnvironment":"node","coverageReporters":["text","html"]},"gitHead":"5f3465a4836d4cd3919cac69f7075a2d9212a913","_id":"@mapbox/fusspot@0.4.0","_npmVersion":"6.2.0","_nodeVersion":"8.11.1","_npmUser":{"name":"mapbox-npm-02","email":"accounts+npmjs-02@mapbox.com"},"dist":{"integrity":"sha512-6sys1vUlhNCqMvJOqPEPSi0jc9tg7aJ//oG1A16H3PXoIt9whtNngD7UzBHUVTH15zunR/vRvMtGNVsogm1KzA==","shasum":"5ac625b5ed31695fda465fb0413ee0379bdf553c","tarball":"https://registry.npmjs.org/@mapbox/fusspot/-/fusspot-0.4.0.tgz","fileCount":10,"unpackedSize":53154,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbYzFCCRA9TVsSAnZWagAAJ/4P/iPS6/E15y55/Zn7hx/p\nPEroz6AT6Y+p/fVM+3rblfYY6E16WFYFqzt8XjHnkwVKbZ/pUiI9AKKxRQm2\nATQtXDBqveG1Kf87v0nnwz7f9Mq9klyTbKk6CXsuqddh80NFBBOBL7SrD5Fh\nbfaMOhgfac/1Osjc0rN9k7U2JvCIEyebH6og4mFGrCKHtStENEz7S1U3M5Ya\nBglWBexRdL2fuiQARsbLwgoPfaVi+QtKW3wSCa5yhauWyqBpTJchoklhvAOt\n5RpnZG9CfSgyeG/perhFKPyvK7qmtndMAhr/ON46qetThfI7BodP5bI1gFmO\nxCWD700hTDVeyfFUxC6kVo9kCeNchvMEZ1/wtQoOmA8N33lgLNZfnEFpIvLh\nTm2SkLwDwO/MkYLZkRRrtJu3G56tHP0gBVWGZXzxgKFxw9hQvocSfXCo8QU2\nFhWCw+bKVYydiF18JPXOga9HZSVg3yJvhiSLxgX6sYvZ6aSBUisEb59fFre+\nwdiv7erWMYe9r5pV4II/DLZf+i/Pb9SwrTElL0Nfhg0BpbNn6D4yuO0YD3cy\n6RaxSvBA58L10N3dkLot5+/pzKZncUNu8X+vp6KS2QYe/X9HVD6PBFXQj6QT\nWBtG6O5U3/kZIAqm6Q3IvJSlPGRV39zTawm+AjKXV4IGZseOKeb0CWAdV4aM\nsiKe\r\n=7mUI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHtBAL8R2OMKS+9x+/SKy6nXQuts67kkJ3FKrwBgCHXCAiEA94sT6FYVdGCbMLvuZBzox3STpWh0pE3v48Cz79valGc="}]},"maintainers":[{"email":"accounts@mapbox.com","name":"mapbox-admin"},{"email":"accounts+npm-mapbox-machine-user@mapbox.com","name":"mapbox-machine-user"},{"email":"accounts+npmjs@mapbox.com","name":"mapbox-npm"},{"email":"accounts+npmjs-01@mapbox.com","name":"mapbox-npm-01"},{"email":"accounts+npmjs-02@mapbox.com","name":"mapbox-npm-02"},{"email":"accounts+npmjs-03@mapbox.com","name":"mapbox-npm-03"},{"email":"accounts+npmjs-04@mapbox.com","name":"mapbox-npm-04"},{"email":"accounts+npmjs-05@mapbox.com","name":"mapbox-npm-05"},{"email":"accounts+npmjs-06@mapbox.com","name":"mapbox-npm-06"},{"email":"accounts+npmjs-07@mapbox.com","name":"mapbox-npm-07"},{"email":"accounts+npmjs-08@mapbox.com","name":"mapbox-npm-08"},{"email":"accounts+npmjs-09@mapbox.com","name":"mapbox-npm-09"},{"email":"accounts+npmjs-advanced-actions@mapbox.com","name":"mapbox-npm-advanced-actions"},{"email":"accounts+npmjs-npm-ci@mapbox.com","name":"mapbox-npm-ci"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusspot_0.4.0_1533227330296_0.4764512155814704"},"_hasShrinkwrap":false},"0.5.0":{"name":"@mapbox/fusspot","version":"0.5.0","description":"A tiny runtime library for type assertions","main":"lib/index.js","scripts":{"lint":"eslint .","format":"prettier --write '**/*.js'","precommit":"lint-staged","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/mapbox/fusspot.git"},"keywords":["assertion","type"],"author":{"name":"Mapbox"},"contributors":[{"name":"David Clark","email":"david.dave.clark@gmail.com"},{"name":"Kushan Joshi","email":"0o3ko0@gmail.com"}],"license":"BSD 2-Clause","bugs":{"url":"https://github.com/mapbox/fusspot/issues"},"homepage":"https://github.com/mapbox/fusspot#readme","dependencies":{"is-plain-obj":"^1.1.0","xtend":"^4.0.1"},"devDependencies":{"@mapbox/eslint-config-mapbox":"^1.2.1","eslint":"^5.6.0","eslint-config-prettier":"^3.0.1","eslint-plugin-node":"^7.0.1","husky":"^0.14.3","jest":"^23.1.0","lint-staged":"^7.3.0","prettier":"^1.14.3","remark-preset-davidtheclark":"^0.8.1"},"jest":{"transform":{},"clearMocks":true,"testEnvironment":"node","coverageReporters":["text","html"]},"gitHead":"e98f5773a6d1e20502b5c81cc251cf99516e0498","_id":"@mapbox/fusspot@0.5.0","_nodeVersion":"8.14.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-wzQm3RmM3JFCDc1/jt0D1Li+KzEWsfbVCtibDyuWodQckaYG1ZD+7uEbc8GNOLpekkMoOHxWfPTaG6YqpGtNFQ==","shasum":"cf0bcccf8f317db42f9b73c2c505f9821bcfea01","tarball":"https://registry.npmjs.org/@mapbox/fusspot/-/fusspot-0.5.0.tgz","fileCount":12,"unpackedSize":55519,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcvgAcCRA9TVsSAnZWagAAgTkP/jhtzE4uDTIsjI02P1hc\n2u6TgLDBJXmp5vxUNWRHJ9Ip6IjGiEoZk7dINXSLkJyThAlkz427+NWE6E11\n224CMroHk0WkszsgK+zrLm+Pv24gqGaPEHy7/QXSESA36fXtsNcmMHO147SV\nkpWGC+9Ho0Mlkdzdj49RQdPU2+uhTh48OPtp5rj0JFk3M1PXsFRmeLwuSGAB\nFuPDYuAFzFf/Fv3Dw1mHPd2xiFhNhYZKPH8sZLvIFPQx5ODtfD41n83HFYEJ\nh2xctaVYtQC3KGZ6LK9ZjrhbkLo795QDxQEf9NrGOGn0FbTwGyXn3RI8FhxR\nyHUHAlE0VouEULm6vwusisD42Qm1hie0mmsDBuPkIGuNl9FhQtbxJBwkF9n4\n5/beRr8D6oMwXDqC3CrjsyM0nhpmpSprvgfk8FLormAmXffDTNye5PDoIcpq\nyvnF5JNDlEnMBu5covE9rWvW1BPbNeQFwrXbphC70AAdFWuxuaNnbiXMMUgu\ntaNblhIisPUGMIVifn0dj8fVM70tREjB37/LyF0kWMSc7ITY/kxGuSgeV0tm\ncekUSf4ac6ETbCrfUrYKNW7MmFZ2Pml85kgOY4h6+4hPDpc7Jd3CpMwp3fnk\nqb/ZQKMAo7sFDWmNmIPL8s50odpckLVfiPEMiCEtLai98IIm6GgQeEtQFyy8\ncJ8+\r\n=ydcD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBLARAtpvKPT3NuDPce4YqgPoUl6pCFZO8ZT/D4OhAEZAiAYFpZ2Lbca04s4BKN6FcfF3Vo7X30fG8m4mt+4AwIl+g=="}]},"maintainers":[{"email":"accounts@mapbox.com","name":"mapbox-admin"},{"email":"accounts+npm-mapbox-machine-user@mapbox.com","name":"mapbox-machine-user"},{"email":"accounts+npmjs@mapbox.com","name":"mapbox-npm"},{"email":"accounts+npmjs-01@mapbox.com","name":"mapbox-npm-01"},{"email":"accounts+npmjs-02@mapbox.com","name":"mapbox-npm-02"},{"email":"accounts+npmjs-03@mapbox.com","name":"mapbox-npm-03"},{"email":"accounts+npmjs-04@mapbox.com","name":"mapbox-npm-04"},{"email":"accounts+npmjs-05@mapbox.com","name":"mapbox-npm-05"},{"email":"accounts+npmjs-06@mapbox.com","name":"mapbox-npm-06"},{"email":"accounts+npmjs-07@mapbox.com","name":"mapbox-npm-07"},{"email":"accounts+npmjs-08@mapbox.com","name":"mapbox-npm-08"},{"email":"accounts+npmjs-09@mapbox.com","name":"mapbox-npm-09"},{"email":"accounts+npmjs-advanced-actions@mapbox.com","name":"mapbox-npm-advanced-actions"},{"email":"accounts+npmjs-npm-ci@mapbox.com","name":"mapbox-npm-ci"}],"_npmUser":{"name":"mapbox-npm-05","email":"accounts+npmjs-05@mapbox.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusspot_0.5.0_1555955739586_0.6053720983067139"},"_hasShrinkwrap":false},"0.6.0":{"name":"@mapbox/fusspot","version":"0.6.0","description":"A tiny runtime library for type assertions","main":"lib/index.js","scripts":{"lint":"eslint .","format":"prettier --write '**/*.js'","precommit":"lint-staged","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/mapbox/fusspot.git"},"keywords":["assertion","type"],"author":{"name":"Mapbox"},"contributors":[{"name":"David Clark","email":"david.dave.clark@gmail.com"},{"name":"Kushan Joshi","email":"0o3ko0@gmail.com"}],"license":"BSD 2-Clause","bugs":{"url":"https://github.com/mapbox/fusspot/issues"},"homepage":"https://github.com/mapbox/fusspot#readme","dependencies":{"is-plain-obj":"^1.1.0","xtend":"^4.0.1"},"devDependencies":{"@mapbox/eslint-config-mapbox":"^1.2.1","eslint":"^5.6.0","eslint-config-prettier":"^3.0.1","eslint-plugin-node":"^7.0.1","husky":"^0.14.3","jest":"^23.1.0","lint-staged":"^7.3.0","prettier":"^1.14.3","remark-preset-davidtheclark":"^0.8.1"},"jest":{"transform":{},"clearMocks":true,"testEnvironment":"node","coverageReporters":["text","html"]},"gitHead":"74156a47b73ec3de87ee9d0bd09b204cd5a56526","_id":"@mapbox/fusspot@0.6.0","_nodeVersion":"10.16.3","_npmVersion":"6.12.0","dist":{"integrity":"sha512-Lxn9oH5cp+MnSfNXw0/+rwKVxHKo2APo8BvfXlDvErC86Ol97tXJwtrAPJN8kwe+foOpfSIPwyUugyZ4dYJBOw==","shasum":"139962843da2a9f270cc6c415c7252aef83c2bbb","tarball":"https://registry.npmjs.org/@mapbox/fusspot/-/fusspot-0.6.0.tgz","fileCount":12,"unpackedSize":57980,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdwa9HCRA9TVsSAnZWagAAOEYQAIQHkWt+xZmMk51JAJBL\nn89nh1p24QvG/sxWAZiXfEJc0Tu91z4ZfQHfITZXQFdu/qCcW3KRCNpahvvp\n41dNjqofMh56y6B3d97O67vKp78NXT8/rvzRlY27hAi+/klr17nkqn3kKokd\njGUY/XGNAjzbJXU9wgMC8ZnUw+A7C4ESW+CnC7kNkqFKNeRbx48URXSNhV4h\ne7hHByq6hPlo46o+y+gtz1JzOtzBKgPhc2OX3lghgnIPCRy5zYpAbvVOQOMm\njE8kbA0EY0/V9BJ5FEOYAkyBq7+6d5ZK8Qn0y2wIBIew7f5xSwegkJS9WhDJ\nlrtURRE+6hhi9uEPqx6WipcG1wzSpCyEeYjKEm784H9uGNpTlMglGR0y5lZY\nIr5E3Om5D6ROIDuoL7Ipf4Mr/3nqJDSU5IeQ+liv6GzH/hhL8LpOximpy9yV\nhAZS4Cf/hfOH9BCP8fN/gANAL+ooO/0qt6VfJ3DmVRfPDv0gLjzxNMZ+I930\nRYX31+kGRQ8UnQYuVshdvvioG9jmQt1ALbHIj5zrHsExilkO/sdOTTO8yBXA\ndFZ395rq67dSze0e+2+PWuFkO6q/IEpnoV1Ee77sGwwvxP9yOMSd93F72GM+\nJCQ0bAFR0zlbF4My1HGLo4OW5/C6SkFSz2DchNnLZnHYPxbliCvH/IbUQtRh\nDnMq\r\n=7oIQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCxVKbgX8TcXqsjGVNQoC95isNQiH3Tx3Qv/HEKIMxodgIhAM70yCMle2L8QnMXQNDfmNokitmHLwltxkEOik8nEQ3k"}]},"maintainers":[{"email":"accounts@mapbox.com","name":"mapbox-admin"},{"email":"accounts+npm-mapbox-machine-user@mapbox.com","name":"mapbox-machine-user"},{"email":"accounts+npmjs@mapbox.com","name":"mapbox-npm"},{"email":"accounts+npmjs-01@mapbox.com","name":"mapbox-npm-01"},{"email":"accounts+npmjs-02@mapbox.com","name":"mapbox-npm-02"},{"email":"accounts+npmjs-03@mapbox.com","name":"mapbox-npm-03"},{"email":"accounts+npmjs-04@mapbox.com","name":"mapbox-npm-04"},{"email":"accounts+npmjs-05@mapbox.com","name":"mapbox-npm-05"},{"email":"accounts+npmjs-06@mapbox.com","name":"mapbox-npm-06"},{"email":"accounts+npmjs-07@mapbox.com","name":"mapbox-npm-07"},{"email":"accounts+npmjs-08@mapbox.com","name":"mapbox-npm-08"},{"email":"accounts+npmjs-09@mapbox.com","name":"mapbox-npm-09"},{"email":"accounts+npmjs-advanced-actions@mapbox.com","name":"mapbox-npm-advanced-actions"},{"email":"accounts+npmjs-npm-ci@mapbox.com","name":"mapbox-npm-ci"}],"_npmUser":{"name":"mapbox-npm-03","email":"accounts+npmjs-03@mapbox.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusspot_0.6.0_1572974407000_0.5085687722844912"},"_hasShrinkwrap":false},"0.7.0":{"name":"@mapbox/fusspot","version":"0.7.0","description":"A tiny runtime library for type assertions","main":"lib/index.js","scripts":{"lint":"eslint .","format":"prettier --write '**/*.js'","precommit":"lint-staged","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/mapbox/fusspot.git"},"keywords":["assertion","type"],"author":{"name":"Mapbox"},"contributors":[{"name":"David Clark","email":"david.dave.clark@gmail.com"},{"name":"Kushan Joshi","email":"0o3ko0@gmail.com"}],"license":"BSD 2-Clause","bugs":{"url":"https://github.com/mapbox/fusspot/issues"},"homepage":"https://github.com/mapbox/fusspot#readme","dependencies":{"is-plain-obj":"^1.1.0","xtend":"^4.0.1"},"devDependencies":{"@mapbox/eslint-config-mapbox":"^1.2.1","eslint":"^5.6.0","eslint-config-prettier":"^3.0.1","eslint-plugin-node":"^7.0.1","husky":"^0.14.3","jest":"^23.1.0","lint-staged":"^7.3.0","prettier":"^1.14.3","remark-preset-davidtheclark":"^0.8.1"},"jest":{"transform":{},"clearMocks":true,"testEnvironment":"node","coverageReporters":["text","html"]},"gitHead":"c26c801e1548021527534cf8c243a7d8d8428a69","_id":"@mapbox/fusspot@0.7.0","_nodeVersion":"10.16.3","_npmVersion":"6.13.0","dist":{"integrity":"sha512-RKqJE4jVZZv6/XM7Bi7cH4VFxrGCPy07mhP4Leg9ur1ujdmV06oNuDXWc3c6woGLi2FxgIju3C1wxAnuhllKXQ==","shasum":"a1fd44d676cafeebb50bef0649c186128c09d28a","tarball":"https://registry.npmjs.org/@mapbox/fusspot/-/fusspot-0.7.0.tgz","fileCount":12,"unpackedSize":59759,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd2FxYCRA9TVsSAnZWagAAskgP/35RhVGQPggMmc/lD9v5\nSZUU6mAx2aXCuVgw4OeqaGh4HuKbpYV68PSat8vL/KeM9ts/XPtq7EZSMF3T\n2hrIElUOzsL9V61O5g9E/GAKiunWtRH024HWVJT6tzNXtRZs4iznU2e5NCYu\nYC1dZj4Oab0C8xHsnAHhGMmEx17WLENL+H46tp0CZplkomD8mhZPyISHPtvD\n6morNBqwzL2Cjyy/9SeT5eLbfnes09EjiOLFUZHjalmH3UIqdT0ExoXY78ub\nTYXO5A6or0WcmuuP+P9ATgB4tyTWO308Iy5E6lYF7lfRlhs+Go2EOY8TRJzu\nRTbROBFZj0m84+qsPEGOAHK+/tDGKeHkWO0FMEPCB0o78w1LX9qT/sOAChm+\n4nrTDvXhsDRmRUfixrATXnH6zBL53QtAfcE8j97Knw7X/4w4CFNNFYinGGnn\nLwFuOvMGYTedK/zLM7oOfAzi/hJsRUlsM/05vDVXEjPKTZX3TvxZwqcJ2QSB\nVSz3o/WUf9uHI8WEkV54H/+grVRH3bJmsDEWuTrn4Su8ZZT7g8aKiqd+VceA\ndnug30i3xegS1x+s+h9J1/xfLun9PCZ0N+fV4xa6PJx1w8hkIyIormqLetCP\nBep7kHdutf/6qU6NecJkKJCj9SpTGtUr1uI2Sto4tmaq7iiwMk+3MeWrLcTl\nAWhV\r\n=IgNM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDwltKRGhIIlrJ/gNYwDpaos/V+CsYcezDRwfljyiZWWgIgDh5LHqrO3sN5lfSjzK0zQAIAZK1jPAjeCBxcUbOYtms="}]},"maintainers":[{"email":"accounts@mapbox.com","name":"mapbox-admin"},{"email":"accounts+npm-mapbox-machine-user@mapbox.com","name":"mapbox-machine-user"},{"email":"accounts+npmjs@mapbox.com","name":"mapbox-npm"},{"email":"accounts+npmjs-01@mapbox.com","name":"mapbox-npm-01"},{"email":"accounts+npmjs-02@mapbox.com","name":"mapbox-npm-02"},{"email":"accounts+npmjs-03@mapbox.com","name":"mapbox-npm-03"},{"email":"accounts+npmjs-04@mapbox.com","name":"mapbox-npm-04"},{"email":"accounts+npmjs-05@mapbox.com","name":"mapbox-npm-05"},{"email":"accounts+npmjs-06@mapbox.com","name":"mapbox-npm-06"},{"email":"accounts+npmjs-07@mapbox.com","name":"mapbox-npm-07"},{"email":"accounts+npmjs-08@mapbox.com","name":"mapbox-npm-08"},{"email":"accounts+npmjs-09@mapbox.com","name":"mapbox-npm-09"},{"email":"accounts+npmjs-advanced-actions@mapbox.com","name":"mapbox-npm-advanced-actions"},{"email":"accounts+npmjs-npm-ci@mapbox.com","name":"mapbox-npm-ci"}],"_npmUser":{"name":"mapbox-npm-08","email":"accounts+npmjs-08@mapbox.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusspot_0.7.0_1574460504405_0.28265623089254466"},"_hasShrinkwrap":false},"0.7.1":{"name":"@mapbox/fusspot","version":"0.7.1","description":"A tiny runtime library for type assertions","main":"lib/index.js","scripts":{"lint":"eslint .","format":"prettier --write '**/*.js'","precommit":"lint-staged","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/mapbox/fusspot.git"},"keywords":["assertion","type"],"author":{"name":"Mapbox"},"contributors":[{"name":"David Clark","email":"david.dave.clark@gmail.com"},{"name":"Kushan Joshi","email":"0o3ko0@gmail.com"}],"license":"BSD 2-Clause","bugs":{"url":"https://github.com/mapbox/fusspot/issues"},"homepage":"https://github.com/mapbox/fusspot#readme","dependencies":{"is-plain-obj":"^1.1.0","xtend":"^4.0.1"},"devDependencies":{"@mapbox/eslint-config-mapbox":"^1.2.1","eslint":"^5.6.0","eslint-config-prettier":"^3.0.1","eslint-plugin-node":"^7.0.1","husky":"^0.14.3","jest":"^23.1.0","lint-staged":"^7.3.0","prettier":"^1.14.3","remark-preset-davidtheclark":"^0.8.1"},"jest":{"transform":{},"clearMocks":true,"testEnvironment":"node","coverageReporters":["text","html"]},"gitHead":"a129abb5d66a8178db3da229c80a8eb5fce42712","_id":"@mapbox/fusspot@0.7.1","_nodeVersion":"13.8.0","_npmVersion":"6.13.7","dist":{"integrity":"sha512-xFZUGmHhWbfga713cu+RhC8wIficaWhgXAHhvT9ji9uSeeXthf1mrxdBOjjaFNgDnEERWGwI9yh8vIvu31YBPA==","shasum":"12ce6f237a5fb62f0d986b498974982379b5ec12","tarball":"https://registry.npmjs.org/@mapbox/fusspot/-/fusspot-0.7.1.tgz","fileCount":12,"unpackedSize":60172,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecBWgCRA9TVsSAnZWagAAricP/RMrFAUJO7sDdHkXKFa+\nBAiMfDsAKnoiHw58aGeygauFnEnIvuiu8tUcTIirwCEDG5l798WkHyZkBrsE\nSqLIneux65WH5prsw9ANBEMDr9YBTg8tabWVoVZcTJps0Hpi2Sz33OgXw8Da\nVwS9h3l/KvzLprDxwhjcp6rXV6pD1LjfzJqXhuAmhbxww2w3wGIYwzTfAcdg\nmpy4FCo1gBQOfwWHlGFLsirrR6sBk9X2TbOVWRWqn4B5s8ztE2dhX32fwxLF\nwiBwPj9uu+KzjRia3OirOmgBQSk+E3Dy6EUU6RRP8ezDSA2KIkIJPWnNC0u5\nV63tkq7ZvWYhv91lxtS0ZO9e4eqbTQ7zxGG+MN0YAU9GYWXqYZ4p/bfmYwi/\nsZTcmo4VVSft8tem1zir1V2QcgoitP8fT3EW1Ddh3PFnLsRZOL296nyyLyGc\nxtJwtLk2JE4ALZzc5Y7bM65xTfKHdefCS5ua8TsSUKcLceZhCqUzHMbbeJD6\nhfCZBlWJOm64JfghKjdSLbDg0kp1XXX/D/D7CPlwOTwwXxUZQkWI81VcbruK\nQySvQ7ZdU9R5qTkMmuGfjyciU7259VzHXKojxTF3E3S3MgpB8q401RTE9kT4\n748SIrHI23JTStTDAMDkzObglcKOYhgzVaWmo41e8U7wP1wUbtH6AjCUQYO1\n0mp2\r\n=FVai\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCD0n+0tUi2OjbqQgrk82nBp8BKOuFGDB1gXUpPrwkbDwIgYEH1q2dVFGSJ0Wii/A686wSxRnzqrz5brJCBV8PkgC8="}]},"maintainers":[{"email":"accounts@mapbox.com","name":"mapbox-admin"},{"email":"accounts+npm-mapbox-machine-user@mapbox.com","name":"mapbox-machine-user"},{"email":"accounts+npmjs@mapbox.com","name":"mapbox-npm"},{"email":"accounts+npmjs-01@mapbox.com","name":"mapbox-npm-01"},{"email":"accounts+npmjs-02@mapbox.com","name":"mapbox-npm-02"},{"email":"accounts+npmjs-03@mapbox.com","name":"mapbox-npm-03"},{"email":"accounts+npmjs-04@mapbox.com","name":"mapbox-npm-04"},{"email":"accounts+npmjs-05@mapbox.com","name":"mapbox-npm-05"},{"email":"accounts+npmjs-06@mapbox.com","name":"mapbox-npm-06"},{"email":"accounts+npmjs-07@mapbox.com","name":"mapbox-npm-07"},{"email":"accounts+npmjs-08@mapbox.com","name":"mapbox-npm-08"},{"email":"accounts+npmjs-09@mapbox.com","name":"mapbox-npm-09"},{"email":"accounts+npmjs-advanced-actions@mapbox.com","name":"mapbox-npm-advanced-actions"},{"email":"accounts+npmjs-npm-ci@mapbox.com","name":"mapbox-npm-ci"}],"_npmUser":{"name":"mapbox-npm-06","email":"accounts+npmjs-06@mapbox.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusspot_0.7.1_1584403872184_0.5173350186181911"},"_hasShrinkwrap":false},"0.7.2":{"name":"@mapbox/fusspot","version":"0.7.2","description":"A tiny runtime library for type assertions","main":"lib/index.js","scripts":{"lint":"eslint .","format":"prettier --write '**/*.js'","precommit":"lint-staged","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/mapbox/fusspot.git"},"keywords":["assertion","type"],"author":{"name":"Mapbox"},"contributors":[{"name":"David Clark","email":"david.dave.clark@gmail.com"},{"name":"Kushan Joshi","email":"0o3ko0@gmail.com"}],"license":"BSD 2-Clause","bugs":{"url":"https://github.com/mapbox/fusspot/issues"},"homepage":"https://github.com/mapbox/fusspot#readme","dependencies":{"is-plain-obj":"^1.1.0","xtend":"^4.0.1"},"devDependencies":{"@mapbox/eslint-config-mapbox":"^1.2.1","eslint":"^5.6.0","eslint-config-prettier":"^3.0.1","eslint-plugin-node":"^7.0.1","husky":"^0.14.3","jest":"^23.1.0","lint-staged":"^7.3.0","prettier":"^1.14.3","remark-preset-davidtheclark":"^0.8.1"},"jest":{"transform":{},"clearMocks":true,"testEnvironment":"node","coverageReporters":["text","html"]},"gitHead":"f4cb322e60d2864c0f1ce6ac117c829e5ded7793","_id":"@mapbox/fusspot@0.7.2","_nodeVersion":"13.8.0","_npmVersion":"6.13.7","dist":{"integrity":"sha512-mt6h3N2FPyqCRixqFL/cfy6X8jx4eHqwJvPMzDoWZ2TbpWaE4Y0xC3zFeG40KDFgjJ3NYg13Xy9/ZJcZY32vLg==","shasum":"176412acc1b5c09352744de19c172ada8feac1d7","tarball":"https://registry.npmjs.org/@mapbox/fusspot/-/fusspot-0.7.2.tgz","fileCount":12,"unpackedSize":59855,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecT8QCRA9TVsSAnZWagAA/BAQAIkWHvNJZHoyQaKCYa9r\nbGCFJeajkHF8yR57+m771N/td7pzRHCFRUCTXwaOmYdUoH/tZdZM67NwuafW\n8qgl20wakAyvOPq8uiIFjQbdPSLtxoZsqIYrRtwqaLIC1rDg/y4fIFD5ACDG\n09d6jOrbno9VbcCWGhmobuG6Ywyeq2uAAJMWdxTipBJiT+s7LsJsJd3vPwp4\nKVi1WIwICJ4HCexRbhB9XhHLUkl8JZ3+jHG2fXH55y/ojSoFQHTm5dg6oeac\nW8uvG/OagBY5Q6DRPxqKas7N4hleYUPJzY4feYOgrcGEFjtJ0YiCVshlDn5I\ngoKpqRl9C5hX9bMUlTdihSEfvl9p7faslIczq4UhKMu/qjj0niMMgIN7wrkg\ntARTIrwEYsZoBknge3KfRLaDFTWdBUXpmG455XQCn6HiT6lKHUFDLfePwTep\nPC9Nm33nvaN628iWQ33pbu//s/LJcy24vULXkpu7/3SoI2mZ/8ZZgr3ghRGT\nK5+ddThhHzaMG6Qt1TWF+xhUK5oEcqGhO52f0HyiFVJSTIbDf6lyGesCN47f\nJ1rgJ75Gcco9pp+DZSTmBJcbA3clkZbnCjF8Fhw3anKJTuRc70tRP5iIKJbx\nQkzgQYBfAkVrnKc8UlG/ALTuBn70lGa0K6iXY+oJifTXNVFtXOoUITyKBK56\nte77\r\n=vUyJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFIhpynS22ri/rThDf3as9GexYa1+eOcdgDuFeZOfKkyAiBsE8dyDtdBzgTlNOd/pDG5ReU9UU08pxkp55QfxR/nZQ=="}]},"maintainers":[{"email":"accounts@mapbox.com","name":"mapbox-admin"},{"email":"accounts+npm-mapbox-machine-user@mapbox.com","name":"mapbox-machine-user"},{"email":"accounts+npmjs@mapbox.com","name":"mapbox-npm"},{"email":"accounts+npmjs-01@mapbox.com","name":"mapbox-npm-01"},{"email":"accounts+npmjs-02@mapbox.com","name":"mapbox-npm-02"},{"email":"accounts+npmjs-03@mapbox.com","name":"mapbox-npm-03"},{"email":"accounts+npmjs-04@mapbox.com","name":"mapbox-npm-04"},{"email":"accounts+npmjs-05@mapbox.com","name":"mapbox-npm-05"},{"email":"accounts+npmjs-06@mapbox.com","name":"mapbox-npm-06"},{"email":"accounts+npmjs-07@mapbox.com","name":"mapbox-npm-07"},{"email":"accounts+npmjs-08@mapbox.com","name":"mapbox-npm-08"},{"email":"accounts+npmjs-09@mapbox.com","name":"mapbox-npm-09"},{"email":"accounts+npmjs-advanced-actions@mapbox.com","name":"mapbox-npm-advanced-actions"},{"email":"accounts+npmjs-npm-ci@mapbox.com","name":"mapbox-npm-ci"}],"_npmUser":{"name":"mapbox-npm-05","email":"accounts+npmjs-05@mapbox.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusspot_0.7.2_1584480016045_0.4260590990706543"},"_hasShrinkwrap":false},"0.8.0":{"name":"@mapbox/fusspot","version":"0.8.0","description":"A tiny runtime library for type assertions","main":"lib/index.js","scripts":{"lint":"eslint .","format":"prettier --write '**/*.js'","precommit":"lint-staged","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/mapbox/fusspot.git"},"keywords":["assertion","type"],"author":{"name":"Mapbox"},"contributors":[{"name":"David Clark","email":"david.dave.clark@gmail.com"},{"name":"Kushan Joshi","email":"0o3ko0@gmail.com"}],"license":"BSD 2-Clause","bugs":{"url":"https://github.com/mapbox/fusspot/issues"},"homepage":"https://github.com/mapbox/fusspot#readme","dependencies":{"is-plain-obj":"^1.1.0","xtend":"^4.0.1"},"devDependencies":{"@mapbox/eslint-config-mapbox":"^1.2.1","eslint":"^5.6.0","eslint-config-prettier":"^3.0.1","eslint-plugin-node":"^7.0.1","husky":"^0.14.3","jest":"^23.1.0","lint-staged":"^7.3.0","prettier":"^1.14.3","remark-preset-davidtheclark":"^0.8.1"},"jest":{"transform":{},"clearMocks":true,"testEnvironment":"node","coverageReporters":["text","html"]},"gitHead":"95215f34bcb7d5c251853fe8ed2e23d3686dd9a0","_id":"@mapbox/fusspot@0.8.0","_nodeVersion":"14.7.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-7Wn4ZiZfI9eu7KcHSQfUuPH4wy9dOFj3eEpLZZmvKrft8hDKQexH6eWaON6ABE/q3mzwbweek8zf5WDeKkTqXQ==","shasum":"f1810271a73c71e2c99457e6413e808ffb38700f","tarball":"https://registry.npmjs.org/@mapbox/fusspot/-/fusspot-0.8.0.tgz","fileCount":12,"unpackedSize":60774,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkdKkCRA9TVsSAnZWagAAMkcP/jw7ngzkgnoek+mfmUHO\neTq80NChk8rowJy32Wll0hAPO4dafFNIWQV1cFWNTPUwR4sWDC2AeJDgXyWN\nYZdB6t5+pvHKXL+5XVtrpiSu3vwWi22yggpqwSkzEGudG/jfp/2lTnknmDNR\noqblMMvbVBdsxEyUq3Dyt5UWl77pq2u5adoj+lMbt0DPyAcEDhkN9R3AsVkb\nVTrm77uhd57FL/GDk+R5nfeSy3Lu8pwGHSGce3YkkDB+vT8Vk2/bmtDRCdWa\nUkmRoHW8tP0UY/RtbXYAPjpNAunBnUM/kEVHqZ6X5Z1/yAojcwOOmmH286zx\nECwKL18UqNp6qXOhHAHEVY6ichC2NdPiJZPBWyI3by8ZxSMEjKHPHWd75fel\n2j7vl/LVWMIx4ohohLPHk3ZEMiRu6ECDc82QiOqbuM7abdgd5gPWmoX16AFj\nVzHMh4CqQ4o1kjGL3q7kyCnWNTr5SqBq042LGhU//LAlmHdLMVj594QIC2kA\nHm5WrgEZz9QabQnu1hpkhCeO+eauhhco9HlpANjHF50FvEc7xmRF1V88kyYW\nvGdLHBIo7IV7DrOOUqpC0wvxjTzRvRSGQHcrDK4vGAPtYjz7rMCeSKGAurGq\nrTYho3xmdNZfqw955Zj90hRGdHWjTLb3Annroo2+eLRjx3YRE5O0ziBVfkkm\nNpzQ\r\n=BmlT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDre3nStTJAZPPlzEKsX8nluXZ8sS4ESbVobapAAsWS1QIhAPZDa0IDfQn8uhY1qh1htnePw/B1g7AGGaQZC0WDoovS"}]},"maintainers":[{"name":"mapbox-npm-01","email":"accounts+npmjs-01@mapbox.com"},{"name":"mapbox-npm-02","email":"accounts+npmjs-02@mapbox.com"},{"name":"mapbox-npm-07","email":"accounts+npmjs-07@mapbox.com"},{"name":"mapbox-npm-03","email":"accounts+npmjs-03@mapbox.com"},{"name":"mapbox-npm-04","email":"accounts+npmjs-04@mapbox.com"},{"name":"mapbox-npm-09","email":"accounts+npmjs-09@mapbox.com"},{"name":"mapbox-npm-05","email":"accounts+npmjs-05@mapbox.com"},{"name":"mapbox-npm-06","email":"accounts+npmjs-06@mapbox.com"},{"name":"mapbox-npm-08","email":"accounts+npmjs-08@mapbox.com"},{"name":"mapbox-npm-advanced-actions","email":"accounts+npmjs-advanced-actions@mapbox.com"},{"name":"mapbox-npm-ci","email":"accounts+npmjs-npm-ci@mapbox.com"},{"name":"mapbox-npm","email":"accounts+npmjs@mapbox.com"},{"name":"mapbox-admin","email":"accounts@mapbox.com"},{"name":"mapbox-machine-user","email":"accounts+npm-mapbox-machine-user@mapbox.com"}],"_npmUser":{"name":"mapbox-npm-01","email":"accounts+npmjs-01@mapbox.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusspot_0.8.0_1603392163977_0.6649110121317303"},"_hasShrinkwrap":false},"0.8.1":{"name":"@mapbox/fusspot","version":"0.8.1","description":"A tiny runtime library for type assertions","main":"lib/index.js","scripts":{"lint":"eslint .","format":"prettier --write '**/*.js'","precommit":"lint-staged","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/mapbox/fusspot.git"},"keywords":["assertion","type"],"author":{"name":"Mapbox"},"contributors":[{"name":"David Clark","email":"david.dave.clark@gmail.com"},{"name":"Kushan Joshi","email":"0o3ko0@gmail.com"}],"license":"BSD-2-Clause","bugs":{"url":"https://github.com/mapbox/fusspot/issues"},"homepage":"https://github.com/mapbox/fusspot#readme","dependencies":{"is-plain-obj":"^1.1.0","xtend":"^4.0.1"},"devDependencies":{"@mapbox/eslint-config-mapbox":"^1.2.1","eslint":"^5.6.0","eslint-config-prettier":"^3.0.1","eslint-plugin-node":"^7.0.1","husky":"^0.14.3","jest":"^23.1.0","lint-staged":"^7.3.0","prettier":"^1.14.3","remark-preset-davidtheclark":"^0.8.1"},"jest":{"transform":{},"clearMocks":true,"testEnvironment":"node","coverageReporters":["text","html"]},"gitHead":"9954e64b114b94311934e16c770e984f9bb34a5d","_id":"@mapbox/fusspot@0.8.1","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-RLamRCi0KXO8oqTJjYplpcTLyPrpn/IJeTo4TdMu5ag2MkaBVkRl7h6nogR0PNaqwvWMlL4/9m0HlbdE5ggDcA==","shasum":"555903d99d8d7cb50deaec2b24c19899561859b4","tarball":"https://registry.npmjs.org/@mapbox/fusspot/-/fusspot-0.8.1.tgz","fileCount":12,"unpackedSize":60803,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgktQSCRA9TVsSAnZWagAAW2wP/ifA1VIkeYs3nqUj88NJ\ntO0crGEQ6qvMvLLqV+kgzayp0PalK8RB2FrfzNaDDkdg77gIaj1wgIHkR2Ha\noJbj3OJVh6HsA8vI3jJLtgAb8AEYZcLxovUlP7K/MAYz8eJmY4K95vdqlirT\nW5gnDL91b9a4DW9iSaEnvQPio9bycAxUONd3qlEqihhSvPaPThycK7VxIq1v\nn8yFS9QNv63ObssSfwiw2zMqE9fqPd5KkY210vWRXIEMMohNvFlpK+lbrwUI\ncXRwi93EwgIVM2Qd4EcFZTlZwbg0aDAToTFy4XmWHgAAL4rccD97kYJ5PZ2o\n7zhsFtsDUXLkhi2/vSVTiGKnrBOscVbm0SPtd7hEFfOWqmU6JVnCjDXJJePb\nxG1CU5kuSpefJg0f1RlKbsT1HlszTiTEF3Ddh14FGn3NNscfoAis3CBSzMqY\ngDYRjz4mwvSCU4HpHryrkYINJJHCV3jmQ30ShteH5EVvbP++6b9j7ojt2Yk9\n+chjw2gW4gjEoglCitWlVNJpmQMDStxIbKsXNveZDKYDLgCxBEm/jgGYlVXH\nP/0m1eo2/LWTTvc/ClGXehn0nlLq6bkC52/JsSZraKq76QX2D/Unt8fMfkbi\nFBvoV4C+9yI9GMShbsHiULoUVSy0yrPDWmLp2TBsu0VHQ6l+C4dQEjq9jDhE\ng4RY\r\n=dQZe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBl8xwlZXL6TnO4lSTmDy+lyEHaVeUoU4WWWlRuGnsdCAiAIt6PuYKY1+zGqBK7Mh3YcC7FzAjc3cYKMfr7f2KFm4g=="}]},"_npmUser":{"name":"mapbox-npm-04","email":"accounts+npmjs-04@mapbox.com"},"directories":{},"maintainers":[{"name":"mapbox-npm-01","email":"accounts+npmjs-01@mapbox.com"},{"name":"mapbox-npm-02","email":"accounts+npmjs-02@mapbox.com"},{"name":"mapbox-npm-07","email":"accounts+npmjs-07@mapbox.com"},{"name":"mapbox-npm-03","email":"accounts+npmjs-03@mapbox.com"},{"name":"mapbox-npm-04","email":"accounts+npmjs-04@mapbox.com"},{"name":"mapbox-npm-09","email":"accounts+npmjs-09@mapbox.com"},{"name":"mapbox-npm-05","email":"accounts+npmjs-05@mapbox.com"},{"name":"mapbox-npm-06","email":"accounts+npmjs-06@mapbox.com"},{"name":"mapbox-npm-08","email":"accounts+npmjs-08@mapbox.com"},{"name":"mapbox-npm-advanced-actions","email":"accounts+npmjs-advanced-actions@mapbox.com"},{"name":"mapbox-npm-ci","email":"accounts+npmjs-npm-ci@mapbox.com"},{"name":"mapbox-npm","email":"accounts+npmjs@mapbox.com"},{"name":"mapbox-admin","email":"accounts@mapbox.com"},{"name":"mapbox-machine-user","email":"accounts+npm-mapbox-machine-user@mapbox.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusspot_0.8.1_1620235281214_0.7652392270224937"},"_hasShrinkwrap":false}},"time":{"created":"2018-06-26T16:41:21.137Z","0.1.0":"2018-06-26T16:41:21.328Z","modified":"2023-01-12T12:42:08.517Z","0.2.0":"2018-07-02T23:49:25.944Z","0.2.1":"2018-07-03T00:27:15.004Z","0.3.0":"2018-07-25T14:36:11.724Z","0.4.0":"2018-08-02T16:28:50.366Z","0.5.0":"2019-04-22T17:55:39.692Z","0.6.0":"2019-11-05T17:20:07.218Z","0.7.0":"2019-11-22T22:08:24.502Z","0.7.1":"2020-03-17T00:11:12.295Z","0.7.2":"2020-03-17T21:20:16.146Z","0.8.0":"2020-10-22T18:42:44.079Z","0.8.1":"2021-05-05T17:21:21.725Z"},"maintainers":[{"email":"yannick.meeus+npm+production+ci@mapbox.com","name":"mbx-npm-ci-production"},{"email":"yannick.meeus+npm+staging+ci@mapbox.com","name":"mbx-npm-ci-staging"},{"email":"yannick.meeus+npm+prod+advanced+actions@mapbox.com","name":"mbx-npm-advanced-actions-production"},{"email":"yannick.meeus+npm+staging+advanced+actions@mapbox.com","name":"mbx-npm-advanced-actions-staging"},{"email":"yannick.meeus+npm+prod+09@mapbox.com","name":"mbx-npm-09-production"},{"email":"yannick.meeus+npm+prod+08@mapbox.com","name":"mbx-npm-08-production"},{"email":"yannick.meeus+npm+prod+07@mapbox.com","name":"mbx-npm-07-production"},{"email":"yannick.meeus+npm+prod+06@mapbox.com","name":"mbx-npm-06-production"},{"email":"yannick.meeus+npm+prod+05@mapbox.com","name":"mbx-npm-05-production"},{"email":"yannick.meeus+npm+prod+04@mapbox.com","name":"mbx-npm-04-production"},{"email":"yannick.meeus+npm+prod+03@mapbox.com","name":"mbx-npm-03-production"},{"email":"yannick.meeus+npm+prod+02@mapbox.com","name":"mbx-npm-02-production"},{"email":"yannick.meeus+npm+prod+01@mapbox.com","name":"mbx-npm-01-production"},{"email":"yannick.meeus@mapbox.com","name":"mbx-npm-02-staging"},{"email":"accounts+npmjs-01@mapbox.com","name":"mapbox-npm-01"},{"email":"accounts+npmjs-02@mapbox.com","name":"mapbox-npm-02"},{"email":"accounts+npmjs-07@mapbox.com","name":"mapbox-npm-07"},{"email":"accounts+npmjs-03@mapbox.com","name":"mapbox-npm-03"},{"email":"accounts+npmjs-04@mapbox.com","name":"mapbox-npm-04"},{"email":"accounts+npmjs-09@mapbox.com","name":"mapbox-npm-09"},{"email":"accounts+npmjs-05@mapbox.com","name":"mapbox-npm-05"},{"email":"accounts+npmjs-06@mapbox.com","name":"mapbox-npm-06"},{"email":"accounts+npmjs-08@mapbox.com","name":"mapbox-npm-08"},{"email":"accounts+npmjs-advanced-actions@mapbox.com","name":"mapbox-npm-advanced-actions"},{"email":"accounts+npmjs-npm-ci@mapbox.com","name":"mapbox-npm-ci"},{"email":"accounts+npmjs@mapbox.com","name":"mapbox-npm"},{"email":"accounts@mapbox.com","name":"mapbox-admin"},{"email":"accounts+npm-mapbox-machine-user@mapbox.com","name":"mapbox-machine-user"}],"description":"A tiny runtime library for type assertions","homepage":"https://github.com/mapbox/fusspot#readme","keywords":["assertion","type"],"repository":{"type":"git","url":"git+https://github.com/mapbox/fusspot.git"},"contributors":[{"name":"David Clark","email":"david.dave.clark@gmail.com"},{"name":"Kushan Joshi","email":"0o3ko0@gmail.com"}],"author":{"name":"Mapbox"},"bugs":{"url":"https://github.com/mapbox/fusspot/issues"},"license":"BSD-2-Clause","readme":"# @mapbox/fusspot\n\n[![Build Status](https://travis-ci.com/mapbox/fusspot.svg?branch=master)](https://travis-ci.com/mapbox/fusspot)\n\nFusspot is a tiny runtime type-assertion library.\n\nIt can run in the browser as well as Node, and it's lightweight, flexible, and extensible.\n\n## Table Of Contents\n\n- [Why does this exist?](#why-does-this-exist)\n- [Installation](#installation)\n- [Usage](#usage)\n  - [Basic](#basic)\n  - [Required](#required)\n  - [Composition](#composition)\n- [Assertions](#assertions)\n  - [v.assert(rootValidator, options)](#vassertrootvalidator-options)\n- [Primitive Validators](#primitive-validators)\n  - [v.any](#vany)\n  - [v.boolean](#vboolean)\n  - [v.number](#vnumber)\n  - [v.finite](#vfinite)\n  - [v.plainArray](#vplainarray)\n  - [v.plainObject](#vplainobject)\n  - [v.func](#vfunc)\n  - [v.date](#vdate)\n  - [v.string](#vstring)\n  - [v.nonEmptyString](#vnonemptystring)\n- [Higher-Order Validators](#higher-order-validators)\n  - [v.shape(validatorObj)](#vshapevalidatorobj)\n  - [v.strictShape(validatorObj)](#vstrictshapevalidatorobj)\n  - [v.objectOf(validator)](#vobjectofvalidator)\n  - [v.arrayOf(validator)](#varrayofvalidator)\n  - [v.tuple(...validators)](#vtuplevalidators)\n  - [v.required(validator)](#vrequiredvalidator)\n  - [v.oneOfType(...validators)](#voneoftypevalidators)\n  - [v.equal(value)](#vequalvalue)\n  - [v.oneOf(...values)](#voneofvalues)\n  - [v.range(\\[valueA, valueB\\])](#vrangevaluea-valueb)\n  - [v.instanceOf(Class)](#vinstanceofclass)\n- [Custom validators](#custom-validators)\n  - [Simple](#simple)\n  - [Customizing the entire error message](#customizing-the-entire-error-message)\n\n## Why does this exist?\n\nMany existing runtime type-assertion libraries solve a special problem, like form validation or component props, or aren't great for usage in the browser, because of size or syntax. We wanted something similar to React's [prop-types](https://github.com/facebook/prop-types) but not attached to a specific use case. So we ended up creating Fusspot.\n\n## Installation\n\n```bash\nnpm install @mapbox/fusspot\n```\n\n## Usage\n\n### Basic\n\nIn the example below we have a simple validation of an object and its properties. The outermost validator [`v.shape`](#vshapevalidatorobj) checks the shape of the object and then runs the inner validator [`v.arrayOf(v.string)`](#varrayofvalidator) to validate the value of `names` property.\n\n**`@mapbox/fusspot` exports a single object for its API. In the examples below we name it `v` (for \"validator\").**\n\n```javascript\nconst v = require(\"@mapbox/fusspot\");\n\nassertObj = v.assert(\n  v.shape({\n    names: v.arrayOf(v.string)\n  })\n);\n\nassertObj({ names: [\"ram\", \"harry\"] }); // pass\nassertObj({ names: [\"john\", 987] }); // fail\nassertObj({ names: \"john\" }); // fail\n```\n\n### Required\n\nBy default `null` and `undefined` are acceptable values for all validators. To not allow `null`/`undefined` as acceptable values, you can pass your validator to [`v.required`](#vrequiredvalidator) to create a new validator which rejects `undefined`/`null`.\n\n```javascript\n// without v.required\nassertObj = v.assert(\n  v.shape({\n    name: v.string\n  })\n);\nassertObj({}); // pass\nassertObj({ name: 'ram' }); // pass\nassertObj({ name: undefined }); // pass\nassertObj({ name: null }); // pass\nassertObj({ name: 9 }); // fail\n\n// with v.required\nstrictAssertObj = v.assert(\n  v.shape({\n    name: v.required(v.string)\n  })\n);\n\nstrictAssertObj({}); // fail\nstrictAssertObj({ name: 'ram' }); // pass\nstrictAssertObj({ name: undefined }); // fail\nstrictAssertObj({ name: null }); // fail\nstrictAssertObj({ name: 9 }); // fail\n```\n\n### Composition\n\nYou can compose any of the [Higher-Order Validators](#higher-order-validators) to make complex validators.\n\n```javascript\nconst personAssert = v.assert(\n  v.shape({\n    name: v.required(v.string),\n    pets: v.arrayOf(\n      v.shape({\n        name: v.required(v.string),\n        type: v.oneOf(\"dog\", \"pig\", \"cow\", \"bird\")\n      })\n    )\n  })\n);\n\n// assertion passes\npersonAssert({\n  name: \"john\",\n  pets: [\n    {\n      name: \"susy\",\n      type: \"bird\"\n    }\n  ]\n});\n\n// assertion fails\npersonAssert({\n  name: \"harry\",\n  pets: [\n    {\n      name: \"john\",\n      type: \"mechanic\"\n    }\n  ]\n});\n// Throws an error\n//   pets.0.type must be \"dog\", \"pig\", \"cow\", or \"bird\".\n```\n\n```javascript\nconst personAssert = v.assert(\n  v.shape({\n    prop: v.shape({\n      person: v.shape({\n        name: v.oneOfType(v.arrayOf(v.string), v.string)\n      })\n    })\n  })\n);\n\n// assertion passes\npersonAssert({ prop: { person: { name: [\"j\", \"d\"] } } });\npersonAssert({ prop: { person: { name: [\"jd\"] } } });\n\n// assertion fails\npersonAssert({ prop: { person: { name: 9 } } });\n// Throws an error\n//   prop.person.name must be an array or string.\n```\n\n## Assertions\n\n### v.assert(rootValidator, options)\n\nReturns a function which accepts an input value to be validated. This function throws an error if validation fails else returns void.\n\n**Parameters**\n\n- `rootValidator`: The root validator to assert values with.\n- `options`: An options object or a string. If it is a string, it will be interpreted as `options.description`.\n- `options.description`: A string to prefix every error message with. For example, if `description` is `myFunc` and a string is invalid, the error message with be `myFunc: value must be a string`. (Formerly `options.apiName`, which works the same but is deprecated.)\n\n```javascript\nv.assert(v.equal(5))(5); // undefined\nv.assert(v.equal(5), { description: \"myFunction\" })(10); // Error: myFunction: value must be 5.\nv.assert(v.equal(5), 'Price')(10); // Error: Price: value must be 5.\n```\n\n## Primitive Validators\n\n### v.any\n\nThis is mostly useful in combination with a higher-order validator like [`v.arrayOf`](#varrayofvalidator);\n\n```javascript\nconst assert = v.assert(v.any);\nassert(false); // pass\nassert(\"str\"); // pass\nassert(8); // pass\nassert([1, 2, 3]); // pass\n```\n\n### v.boolean\n\n```javascript\nconst assert = v.assert(v.boolean);\nassert(false); // pass\nassert(\"true\"); // fail\n```\n\n### v.number\n\n```javascript\nconst assert = v.assert(v.number);\nassert(9); // pass\nassert(\"str\"); // fail\n```\n\n### v.finite\n\n```javascript\nconst assert = v.assert(v.finite);\nassert(9); // pass\nassert(\"str\"); // fail\nassert(NaN); // fail\n```\n\n### v.plainArray\n\n```javascript\nconst assert = v.assert(v.plainArray);\nassert([]); // pass\nassert({}); // fail\n```\n\n### v.plainObject\n\n```javascript\nconst assert = v.assert(v.plainObject);\nassert({}); // pass\nassert(new Map()); // fail\n```\n\n### v.func\n\n```javascript\nconst assert = v.assert(v.func);\nassert('foo'); // fail\nassert({}); // fail\nassert(() => {}); // pass\n```\n\n### v.date\n\nPasses if input is a `Date` that is valid (`input.toString() !== 'Invalid Date'`).\n\n```javascript\nconst assert = v.assert(v.date);\nassert('foo'); // fail\nassert(new Date('2019-99-99')); // fail\nassert(new Date()); // pass\nassert(new Date('2019-10-04')); // pass\n```\n\n### v.string\n\n```javascript\nconst assert = v.assert(v.string);\nassert(\"str\"); // pass\nassert(0x0); // fail\n```\n\n### v.nonEmptyString\n\n```javascript\nconst assert = v.assert(v.nonEmptyString);\nassert(\"str\"); // pass\nassert(\"\"); // fail\nassert(7); // fail\n```\n\n## Higher-Order Validators\n\nHigher-Order Validators are functions that accept another validator or a value as their parameter and return a new validator.\n\n### v.shape(validatorObj)\n\nTakes an object of validators and returns a validator that passes if the input shape matches.\n\n```javascript\nconst assert = v.assert(\n  v.shape({\n    name: v.required(v.string),\n    contact: v.number\n  })\n);\n\n// pass\nassert({\n  name: \"john\",\n  contact: 8130325777\n});\n\n// fail\nassert({\n  name: \"john\",\n  contact: \"8130325777\"\n});\n```\n\n### v.strictShape(validatorObj)\n\nThe same as [`v.shape`](#vshapevalidatorobj), but rejects the object if it contains any properties that are not defined in the schema.\n\n```javascript\nconst assert = v.assert(\n  v.strictShape({\n    name: v.required(v.string),\n    contact: v.number\n  })\n);\n\n// passes, just like v.shape\nassert({\n  name: \"john\",\n  contact: 8130325777\n});\n\n// fails, just like v.shape\nassert({\n  name: \"john\",\n  contact: \"8130325777\"\n});\n\n// fails where v.shape would pass, because birthday is not defined in the schema\nassert({\n  name: \"john\",\n  birthday: '06/06/66'\n});\n```\n\n### v.objectOf(validator)\n\nTakes a validator as an argument and returns a validator that passes if and only if every value in the input object passess the validator.\n\n```javascript\nconst assert = v.assert(\n  v.objectOf({ name: v.required(v.string) })\n);\n\n// pass\nassert({\n  a: { name: 'foo' },\n  b: { name: 'bar' }\n});\n\n// fail\nassert({\n  a: { name: 'foo' },\n  b: 77\n});\n```\n\n### v.arrayOf(validator)\n\nTakes a validator as an argument and returns a validator that passes if and only if every item of the input array passes the validator.\n\n```javascript\nconst assert = v.assert(v.arrayOf(v.number));\nassert([90, 10]); // pass\nassert([90, \"10\"]); // fail\nassert(90); // fail\n```\n\n### v.tuple(...validators)\n\nTakes multiple validators that correspond to items in the input array and returns a validator that passes if and only if every item of the input array passes the corresponding validator.\n\nA \"tuple\" is an array with a fixed number of items, each item with its own specific type. One common example of a tuple is coordinates described by a two-item array, `[longitude, latitude]`.\n\n```javascript\nconst assert = v.assert(v.tuple(v.range(-180, 180), v.range(-90, 90)));\nassert([90, 10]); // pass\nassert([90, \"10\"]); // fail\nassert([90, 200]); // fail\nassert(90); // fail\n```\n\n### v.required(validator)\n\nReturns a strict validator which rejects `null`/`undefined` along with the validator.\n\n```javascript\nconst assert = v.assert(v.arrayOf(v.required(v.number)));\nassert([90, 10]); // pass\nassert([90, 10, null]); // fail\nassert([90, 10, undefined]); // fail\n```\n\n### v.oneOfType(...validators)\n\nTakes multiple validators and returns a validator that passes if one or more of them pass.\n\n```javascript\nconst assert = v.assert(v.oneOfType(v.string, v.number));\nassert(90); // pass\nassert(\"90\"); // pass\n```\n\n### v.equal(value)\n\nReturns a validator that does a `===` comparison between `value` and `input`.\n\n```javascript\nconst assert = v.assert(v.equal(985));\nassert(985); // pass\nassert(986); // fail\n```\n\n### v.oneOf(...values)\n\nReturns a validator that passes if input matches (`===`) with any one of the `values`.\n\n```javascript\nconst assert = v.assert(v.oneOf(3.14, \"3.1415\", 3.1415));\nassert(3.14); // pass\nassert(986); // fail\n```\n\n### v.range(\\[valueA, valueB])\n\nReturns a validator that passes if input inclusively lies between `valueA` & `valueB`.\n\n```javascript\nconst assert = v.assert(v.range([-10, 10]));\nassert(4); // pass\nassert(-100); // fail\n```\n\n### v.instanceOf(Class)\n\nReturns a validator that passes if input is an instance of the provided `Class`, as determined by JavaScript's `instanceof` operator.\n\n```javascript\nclass Foo {}\nclass Bar {}\nclass Baz extends Bar {}\n\nconst assert = v.assert(v.instanceOf(Bar))\nassert(new Bar()); // pass\nassert(new Baz()); // pass\nassert(new Foo()); // fail\n```\n\n## Custom validators\n\nOne of the primary goals of Fusspot is to be customizable out of the box. There are multiple ways to which one can create a custom validator. After creating a custom validator you can simply use it just like a regular validator i.e. pass it to `v.assert()` or use it with [Higher-Order Validators](#higher-order-validators).\n\n### Simple\n\nA simple custom validator is a function which accepts the input `value` and returns a `string` if and only if the input `value` doesn't pass the test. This `string` should be a noun phrase describing the expected value type,  which would be inserted into the error message like this `value must be a(n) <returned_string>`. Below is an example of a path validator for node environment.\n\n```javascript\nconst path = require('path');\n\nfunction validateAbsolutePaths(value) {\n  if (typeof value !== 'string' || !path.isAbsolute(value)) {\n    return 'absolute path';\n  }\n}\n\nconst assert = v.assert(validateAbsolutePaths);\nassert('../Users'); // fail\n// Error: value must be an absolute path.\nassert('/Users'); // pass\n\n**For more examples look at the [src code](https://github.com/mapbox/fusspot/blob/master/lib/index.js#L238).**\n```\n\n### Customizing the entire error message\n\n If you need more control over the error message, your validator can return a function `({path}) => '<my_custom_error_message>'` for custom messages, where `path` is an array containing the path **(property name for objects and index for arrays)** needed to traverse the input object to reach the value. The example below help illustrate this feature.\n\n```javascript\nfunction validateHexColour(value) {\n  if (typeof value !== \"string\" || !/^#[0-9A-F]{6}$/i.test(value)) {\n    return ({ path }) =>\n      `The input value '${value}' at ${path.join(\".\")} is not a valid hex colour.`;\n  }\n}\n\nconst assert = v.assert(\n  v.shape({\n    colours: v.arrayOf(validateHexColour)\n  })\n);\n\nassert({ colours: [\"#dedede\", \"#eoz\"] }); // fail\n// Error: The input value '#eoz' at colours.1 is not a valid hex colour.\nassert({ colours: [\"#abcdef\"] }); // pass\n```\n","readmeFilename":"README.md"}