{"_id":"must","_rev":"56-dd465fffae484ae0167dbe2ec11a222f","name":"must","description":"Testing and assertion library with friendly BDD syntax — awesome.must.be.true(). Many expressive matchers and is test runner and framework agnostic. Follows RFC 2119 with its use of MUST. Good and well tested stuff.","dist-tags":{"latest":"0.13.4","beta":"0.13.0-rc1"},"versions":{"0.0.0":{"author":{"name":"Mikeal Rogers","email":"mikeal.rogers@gmail.com"},"name":"must","description":"A base promise-like object for domain specific behavior.","version":"0.0.0","main":"index.js","scripts":{"test":"node test.js"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"mikeal","email":"mikeal.rogers@gmail.com"},"_id":"must@0.0.0","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.8-pre","_defaultsLoaded":true,"dist":{"shasum":"8370bfbb8c68844e483983d20a9dbbf25e7dc2e8","tarball":"https://registry.npmjs.org/must/-/must-0.0.0.tgz","integrity":"sha512-VkbfEJjG/YQPxMvMGJzhyUWdYqsmj9CQIerEzwiGVwIVptN5MfzaKaoqvbn6h5bcmhwenXuL0D+dQSDFH/eXxw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGnCAhzmxBn6fh2bmJU7A/RZW/QqttKyxwGFwXdbUQuoAiEAoJUnOyJjpyK75SwLJ+a3QjYgti+SPTFt9cGCfDZ3HaM="}]},"maintainers":[{"name":"mikeal","email":"mikeal.rogers@gmail.com"}],"directories":{},"deprecated":"Replaced with Must.js the assertion library."},"0.1.337":{"name":"must","version":"0.1.337","description":"Assertion library with friendly BDD syntax — awesome.must.be.true(). Many expressive matchers and is test runner and framework agnostic. Follows RFC 2119 with its use of MUST. Good stuff and well tested.","keywords":["assert","assertion","bdd","test","testing","rfc2119"],"homepage":"https://github.com/moll/js-must","bugs":{"url":"https://github.com/moll/js-must/issues"},"author":{"name":"Andri Möll","email":"andri@dot.ee","url":"http://themoll.com"},"repository":{"type":"git","url":"git://github.com/moll/js-must.git"},"licenses":[{"type":"LAGPL","url":"https://github.com/moll/js-must/blob/master/LICENSE"}],"main":"index.js","scripts":{"test":"make test"},"dependencies":{"kindof":">= 1.0.0 < 2"},"devDependencies":{"mocha":">= 1.12.0 < 2"},"_id":"must@0.1.337","dist":{"shasum":"979a6e3b60072c93482d3713f3a3f5d43392b5ea","tarball":"https://registry.npmjs.org/must/-/must-0.1.337.tgz","integrity":"sha512-s2GITa4GCQBPzTONAMrKz6KP5jMcGKLSL008ryCskSpAd8CUzetCzLCMfiPm+iuilYRhXzq3pXfNZpKJHWqKYg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBEItm2E3MGLy94lR2/XC8QLqIvTM00K8nYkYz7L8dctAiBVXZlrMgj2W0NSe0mdf+pCiposUuRmwek+l7jEbTW2bg=="}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"moll","email":"andri@dot.ee"},"maintainers":[{"name":"moll","email":"andri@dot.ee"}],"directories":{}},"0.1.338":{"name":"must","version":"0.1.338","description":"Assertion library with friendly BDD syntax — awesome.must.be.true(). Many expressive matchers and is test runner and framework agnostic. Follows RFC 2119 with its use of MUST. Good stuff and well tested.","keywords":["assert","assertion","bdd","test","testing","rfc2119"],"homepage":"https://github.com/moll/js-must","bugs":{"url":"https://github.com/moll/js-must/issues"},"author":{"name":"Andri Möll","email":"andri@dot.ee","url":"http://themoll.com"},"repository":{"type":"git","url":"git://github.com/moll/js-must.git"},"licenses":[{"type":"LAGPL","url":"https://github.com/moll/js-must/blob/master/LICENSE"}],"main":"index.js","scripts":{"test":"make test"},"dependencies":{"kindof":">= 1.0.0 < 2"},"devDependencies":{"mocha":">= 1.12.0 < 2"},"_id":"must@0.1.338","dist":{"shasum":"e53bab6f7b6baec7a68572794184cf71b3282d8c","tarball":"https://registry.npmjs.org/must/-/must-0.1.338.tgz","integrity":"sha512-yKVohI3e35hAlaav4ywymgWHTH8KEJ+1Gab5qPK4iN6rNiIImG9mCR8iBMC26nigqJiyMvdSeAEuw2A2TN/+9A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG+W78F2cZnBI0MbZdyNArlsYYum8YKBbNsz4zJTYAobAiA2Go8uHrMCjaUJh/cEhcF7xCFnrt8nv9Rd/YjAusv/eg=="}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"moll","email":"andri@dot.ee"},"maintainers":[{"name":"moll","email":"andri@dot.ee"}]},"0.2.0":{"name":"must","version":"0.2.0","description":"Assertion library with friendly BDD syntax — awesome.must.be.true(). Many expressive matchers and is test runner and framework agnostic. Follows RFC 2119 with its use of MUST. Good stuff and well tested.","keywords":["assert","assertion","bdd","test","testing","rfc2119"],"homepage":"https://github.com/moll/js-must","bugs":{"url":"https://github.com/moll/js-must/issues"},"author":{"name":"Andri Möll","email":"andri@dot.ee","url":"http://themoll.com"},"repository":{"type":"git","url":"git://github.com/moll/js-must.git"},"licenses":[{"type":"LAGPL","url":"https://github.com/moll/js-must/blob/master/LICENSE"}],"main":"index.js","scripts":{"test":"make test"},"dependencies":{"kindof":">= 1.0.0 < 2"},"devDependencies":{"mocha":">= 1.12.0 < 2"},"_id":"must@0.2.0","dist":{"shasum":"20dea2986969d645fed4d6224cc0d83dc2310db1","tarball":"https://registry.npmjs.org/must/-/must-0.2.0.tgz","integrity":"sha512-aFjt17/8u9Tr/UkkpZSd3MvFlddLVNoazkUp6wPu60hYqTCex+APeQbZcCCpfMI+aCkAdVRXSx/FuCc1rJD8nw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCcgWUFJFCy0rNrpY+NoLqQ37r6Vghscy+CwuBNjiyvqwIhAPtNxKzFavPRM4UfedPHTrc8OLApvWchnvSNs0B8K3jc"}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"moll","email":"andri@dot.ee"},"maintainers":[{"name":"moll","email":"andri@dot.ee"}]},"0.3.0":{"name":"must","version":"0.3.0","description":"Assertion library with friendly BDD syntax — awesome.must.be.true(). Many expressive matchers and is test runner and framework agnostic. Follows RFC 2119 with its use of MUST. Good stuff and well tested.","keywords":["assert","assertion","bdd","test","testing","rfc2119"],"homepage":"https://github.com/moll/js-must","bugs":{"url":"https://github.com/moll/js-must/issues"},"author":{"name":"Andri Möll","email":"andri@dot.ee","url":"http://themoll.com"},"repository":{"type":"git","url":"git://github.com/moll/js-must.git"},"licenses":[{"type":"LAGPL","url":"https://github.com/moll/js-must/blob/master/LICENSE"}],"main":"index.js","scripts":{"test":"make test"},"dependencies":{"kindof":">= 1.0.0 < 2"},"devDependencies":{"mocha":">= 1.12.0 < 2"},"_id":"must@0.3.0","dist":{"shasum":"64472fa5a9f6bfbef63d020813f51040e5c54860","tarball":"https://registry.npmjs.org/must/-/must-0.3.0.tgz","integrity":"sha512-ofVHM2mpFal2IWpay5Z1UEINwljJof00VUjOy+TQktTCV+yjurBQErYomGHdqC0LebBR0bxOfo42Ac7+83q6nQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCuDjpuveUgHMjWlVjCaFZlxAOmLMVNV9+PrQZnvCBtbAIgVsMTmJT8wSUzFtH3sLGUIkmUh9VFcQcAxRHI58OGxrA="}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"moll","email":"andri@dot.ee"},"maintainers":[{"name":"moll","email":"andri@dot.ee"}]},"0.4.0":{"name":"must","version":"0.4.0","description":"Assertion library with friendly BDD syntax — awesome.must.be.true(). Many expressive matchers and is test runner and framework agnostic. Follows RFC 2119 with its use of MUST. Good stuff and well tested.","keywords":["assert","assertion","bdd","test","testing","rfc2119"],"homepage":"https://github.com/moll/js-must","bugs":{"url":"https://github.com/moll/js-must/issues"},"author":{"name":"Andri Möll","email":"andri@dot.ee","url":"http://themoll.com"},"repository":{"type":"git","url":"git://github.com/moll/js-must.git"},"licenses":[{"type":"LAGPL","url":"https://github.com/moll/js-must/blob/master/LICENSE"}],"main":"index.js","scripts":{"test":"make test"},"dependencies":{"kindof":">= 1.0.0 < 2"},"devDependencies":{"mocha":">= 1.12.0 < 2"},"_id":"must@0.4.0","dist":{"shasum":"b12c56b77919ed34e6d57b05e5722a3f915ca218","tarball":"https://registry.npmjs.org/must/-/must-0.4.0.tgz","integrity":"sha512-JPHQCXMoZwrhp42qiQC7dlImTl+BzE7FkX8L5N0PIAG9arJlpXDFAJCa4m3tmBzW6n6JVi6OHogWU+xpCQ8VGA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICQKtSfIdMTheOnC/6syHzIarNKmZEcmhTLZBFy5hLxlAiAJigZt3FwWo5vOqsgBDBNEeLjBecW4AA9eD/fD0PUaKw=="}]},"_from":".","_npmVersion":"1.3.6","_npmUser":{"name":"moll","email":"andri@dot.ee"},"maintainers":[{"name":"moll","email":"andri@dot.ee"}]},"0.5.0":{"name":"must","version":"0.5.0","description":"Assertion library with friendly BDD syntax — awesome.must.be.true(). Many expressive matchers and is test runner and framework agnostic. Follows RFC 2119 with its use of MUST. Good stuff and well tested.","keywords":["assert","assertion","bdd","test","testing","rfc2119"],"homepage":"https://github.com/moll/js-must","bugs":{"url":"https://github.com/moll/js-must/issues"},"author":{"name":"Andri Möll","email":"andri@dot.ee","url":"http://themoll.com"},"repository":{"type":"git","url":"git://github.com/moll/js-must.git"},"licenses":[{"type":"LAGPL","url":"https://github.com/moll/js-must/blob/master/LICENSE"}],"main":"index.js","scripts":{"test":"make test"},"dependencies":{"kindof":">= 1.0.0 < 2"},"devDependencies":{"mocha":">= 1.12.0 < 2"},"_id":"must@0.5.0","dist":{"shasum":"52900d2ee42d4e84fa48bf87420dbcac2fca4275","tarball":"https://registry.npmjs.org/must/-/must-0.5.0.tgz","integrity":"sha512-zaFfk5WnfZp7xefkY+4zzawsk4PYpGv3/mJJKMKogrdI5YsSx9l9bMS/PeCjM3bCe1qrRTB5sbP+fCqoEZc/7g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGA0FzGsmrBAIKdwzkul4slz/PrH7MX7udBOcXGj0mRwIgfJygpeCndGDZzuGFlzXGaDR3qf//EndtVClfp8DkIq8="}]},"_from":".","_npmVersion":"1.3.6","_npmUser":{"name":"moll","email":"andri@dot.ee"},"maintainers":[{"name":"moll","email":"andri@dot.ee"}]},"0.6.0":{"name":"must","version":"0.6.0","description":"Assertion library with friendly BDD syntax — awesome.must.be.true(). Many expressive matchers and is test runner and framework agnostic. Follows RFC 2119 with its use of MUST. Good stuff and well tested.","keywords":["assert","assertion","bdd","test","testing","rfc2119"],"homepage":"https://github.com/moll/js-must","bugs":{"url":"https://github.com/moll/js-must/issues"},"author":{"name":"Andri Möll","email":"andri@dot.ee","url":"http://themoll.com"},"repository":{"type":"git","url":"git://github.com/moll/js-must.git"},"licenses":[{"type":"LAGPL","url":"https://github.com/moll/js-must/blob/master/LICENSE"}],"main":"index.js","scripts":{"test":"make test"},"dependencies":{"kindof":">= 1.0.0 < 2"},"devDependencies":{"mocha":">= 1.12.0 < 2"},"_id":"must@0.6.0","dist":{"shasum":"9e673afbd505c7568de9d774547cecc4435eeed5","tarball":"https://registry.npmjs.org/must/-/must-0.6.0.tgz","integrity":"sha512-BaHlngFXX8ScpRxAdn56OS1tbk+lBNxZyL+yoQgFMaLS2UcU5g8UeeRAZzbvDG0y3aOGqBcOwd0YIlg+1qj3Nw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCT2C7xb4Wk5B9rrWtCb1pS2BF4iQ8+CNzTJv1FqhqVHgIgecUc3Mqv858OTZykUvoPpoCQDZMN7Zfuw9ZTGTLMtYo="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"moll","email":"andri@dot.ee"},"maintainers":[{"name":"moll","email":"andri@dot.ee"}]},"0.7.0":{"name":"must","version":"0.7.0","description":"Assertion library with friendly BDD syntax — awesome.must.be.true(). Many expressive matchers and is test runner and framework agnostic. Follows RFC 2119 with its use of MUST. Good stuff and well tested.","keywords":["assert","assertion","bdd","test","testing","rfc2119"],"homepage":"https://github.com/moll/js-must","bugs":{"url":"https://github.com/moll/js-must/issues"},"author":{"name":"Andri Möll","email":"andri@dot.ee","url":"http://themoll.com"},"repository":{"type":"git","url":"git://github.com/moll/js-must.git"},"licenses":[{"type":"LAGPL","url":"https://github.com/moll/js-must/blob/master/LICENSE"}],"main":"index.js","scripts":{"test":"make test"},"dependencies":{"kindof":">= 1.0.0 < 2"},"devDependencies":{"mocha":">= 1.12.0 < 2"},"_id":"must@0.7.0","dist":{"shasum":"0975b5c43e73c9ee8138dfd2d285099dd9ddbd62","tarball":"https://registry.npmjs.org/must/-/must-0.7.0.tgz","integrity":"sha512-Wowm3q4Iz0kh0bOChHJbSKPVCriRlN0eD3uedqkvwVTdngpKf+G1IBRydNoaX/LthIYNiuZMAtXlVJXA6GtqUQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCFnGpXBNcf1UzflhJp56R2vPtAVWZuDKv48E0hEGq0RgIhAIrAUnLyZre3OyxnUwvDi/1ibyNPKTd+2e4UeJIeoIWS"}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"moll","email":"andri@dot.ee"},"maintainers":[{"name":"moll","email":"andri@dot.ee"}]},"0.8.0":{"name":"must","version":"0.8.0","description":"Assertion library with friendly BDD syntax — awesome.must.be.true(). Many expressive matchers and is test runner and framework agnostic. Follows RFC 2119 with its use of MUST. Good stuff and well tested.","keywords":["assert","assertion","bdd","test","testing","rfc2119"],"homepage":"https://github.com/moll/js-must","bugs":{"url":"https://github.com/moll/js-must/issues"},"author":{"name":"Andri Möll","email":"andri@dot.ee","url":"http://themoll.com"},"repository":{"type":"git","url":"git://github.com/moll/js-must.git"},"licenses":[{"type":"LAGPL","url":"https://github.com/moll/js-must/blob/master/LICENSE"}],"main":"index.js","scripts":{"test":"make test"},"dependencies":{"kindof":">= 1.0.0 < 2"},"devDependencies":{"mocha":">= 1.12.0 < 2"},"_id":"must@0.8.0","dist":{"shasum":"cd3f0e88b5aab79dfcede3c0993435b52490feea","tarball":"https://registry.npmjs.org/must/-/must-0.8.0.tgz","integrity":"sha512-FMCnIDvXzkSq953FfmWGSRs2aLQMbDB1nASBF3GoUxUl+PhGKdRTcHKeFap6ahsweItDjkJXuXgm41Ws3Gug1A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEASFdY5xYyW8UxrsWM2V9sDc+jrLxLut4w6O5jogE2fAiAOQnpIDrOQweiIIOKHXcXUBDLNcihePzVCwUV4qROsbw=="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"moll","email":"andri@dot.ee"},"maintainers":[{"name":"moll","email":"andri@dot.ee"}]},"0.9.0":{"name":"must","version":"0.9.0","description":"Assertion library with friendly BDD syntax — awesome.must.be.true(). Many expressive matchers and is test runner and framework agnostic. Follows RFC 2119 with its use of MUST. Good stuff and well tested.","keywords":["assert","assertion","bdd","test","testing","rfc2119"],"homepage":"https://github.com/moll/js-must","bugs":{"url":"https://github.com/moll/js-must/issues"},"author":{"name":"Andri Möll","email":"andri@dot.ee","url":"http://themoll.com"},"repository":{"type":"git","url":"git://github.com/moll/js-must.git"},"licenses":[{"type":"LAGPL","url":"https://github.com/moll/js-must/blob/master/LICENSE"}],"main":"index.js","scripts":{"test":"make test"},"dependencies":{"kindof":">= 1.0.0 < 2"},"devDependencies":{"mocha":">= 1.12.0 < 2"},"_id":"must@0.9.0","dist":{"shasum":"c4fcc0f3e4fedd177ec7ebcabe1aa0f2e45b6b3f","tarball":"https://registry.npmjs.org/must/-/must-0.9.0.tgz","integrity":"sha512-kO/jp2lFs4eYWdRw0i1WytY7LR+lAN8119504UXoDQXNpOPRoWgqUnREQb/9WI+zdwyts+WvaujNlI5EZzWNmw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAG1LI0QwEZVvrMuLxmqtKHW/A3PWqLUCoS5WL4ESINpAiBNMOYxd/tet/bg2z8GuJi1+QbNT12ZGY2YKyjeA54PpQ=="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"moll","email":"andri@dot.ee"},"maintainers":[{"name":"moll","email":"andri@dot.ee"}]},"0.9.1":{"name":"must","version":"0.9.1","description":"Assertion library with friendly BDD syntax — awesome.must.be.true(). Many expressive matchers and is test runner and framework agnostic. Follows RFC 2119 with its use of MUST. Good stuff and well tested.","keywords":["assert","assertion","bdd","test","testing","rfc2119"],"homepage":"https://github.com/moll/js-must","bugs":{"url":"https://github.com/moll/js-must/issues"},"author":{"name":"Andri Möll","email":"andri@dot.ee","url":"http://themoll.com"},"repository":{"type":"git","url":"git://github.com/moll/js-must.git"},"licenses":[{"type":"LAGPL","url":"https://github.com/moll/js-must/blob/master/LICENSE"}],"main":"index.js","scripts":{"test":"make test"},"dependencies":{"kindof":">= 1.0.0 < 2"},"devDependencies":{"mocha":">= 1.12.0 < 2"},"_id":"must@0.9.1","dist":{"shasum":"6541efd20988fb9087a397e83acf2dfe6a70f552","tarball":"https://registry.npmjs.org/must/-/must-0.9.1.tgz","integrity":"sha512-FLe+1OMnzbMekHHwIR+XZpvm+xhpc+s0GF+wySPwKVXQAswx3zTOhxbk/+SBq2cGNcGSj68yHuJm50tXvvZEPg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE4ytoyKj5gvYtYk2ywW16xYwFZU9r7P/31eP/Z7bwKOAiEAv+PmyNM1lI8tK2k6pRO4im1QUT2A/EzAhZTPXlXwUus="}]},"_from":".","_npmVersion":"1.3.6","_npmUser":{"name":"moll","email":"andri@dot.ee"},"maintainers":[{"name":"moll","email":"andri@dot.ee"}]},"0.10.0":{"name":"must","version":"0.10.0","description":"Testing and assertion library with friendly BDD syntax — awesome.must.be.true(). Many expressive matchers and is test runner and framework agnostic. Follows RFC 2119 with its use of MUST. Good and well tested stuff.","keywords":["assert","assertion","bdd","test","testing","rfc2119"],"homepage":"https://github.com/moll/js-must","bugs":{"url":"https://github.com/moll/js-must/issues"},"author":{"name":"Andri Möll","email":"andri@dot.ee","url":"http://themoll.com"},"repository":{"type":"git","url":"git://github.com/moll/js-must.git"},"licenses":[{"type":"LAGPL","url":"https://github.com/moll/js-must/blob/master/LICENSE"}],"main":"index.js","scripts":{"test":"make test"},"dependencies":{"kindof":">= 1.0.0 < 2"},"devDependencies":{"mocha":">= 1.12.0 < 2"},"_id":"must@0.10.0","dist":{"shasum":"491834fc369cf984f08efdc484250cc586cd6a8b","tarball":"https://registry.npmjs.org/must/-/must-0.10.0.tgz","integrity":"sha512-y3Ln2I95DV1hB9hJykmWVMi9odyOpl0FJ3ob+AioXcTA7M1CSwuMol18SoCkNF//sdrwHnEUxGtUmVHI/i1Msw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDpXuvlAtTFJbJh3jekiLrzqHU7JyAVyEIiURjbn4CPMAIhAIdnM4RFXyX2yEnQqeoWxPzPI/8dAH2eFblOKXBxKumC"}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"moll","email":"andri@dot.ee"},"maintainers":[{"name":"moll","email":"andri@dot.ee"}]},"0.11.0":{"name":"must","version":"0.11.0","description":"Testing and assertion library with friendly BDD syntax — awesome.must.be.true(). Many expressive matchers and is test runner and framework agnostic. Follows RFC 2119 with its use of MUST. Good and well tested stuff.","keywords":["assert","assertion","bdd","test","testing","rfc2119"],"homepage":"https://github.com/moll/js-must","bugs":{"url":"https://github.com/moll/js-must/issues"},"author":{"name":"Andri Möll","email":"andri@dot.ee","url":"http://themoll.com"},"repository":{"type":"git","url":"git://github.com/moll/js-must.git"},"licenses":[{"type":"LAGPL","url":"https://github.com/moll/js-must/blob/master/LICENSE"}],"main":"index.js","scripts":{"test":"make test"},"dependencies":{"kindof":">= 1.0.0 < 2"},"devDependencies":{"mocha":">= 1.12.0 < 2"},"_id":"must@0.11.0","dist":{"shasum":"c0b701c9f3a4c0cedcef0b0526cd95c726f07884","tarball":"https://registry.npmjs.org/must/-/must-0.11.0.tgz","integrity":"sha512-M5o9a3TSLGz6nDnbxU9HIDTs4UDu3duWa43FzzHfTmzTzXTSyMnHn3LWE6LI6fSoug10F2FyWt1I+NpWkfHDIA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCFw36qI4ZuKV3eYz2vrmnYXlQtULFZQrZxQNCRXOwL3wIgMkuviLwCDn0Q9axgpw01J4Q9AlrLNYgFdf/R31TOvCU="}]},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"moll","email":"andri@dot.ee"},"maintainers":[{"name":"moll","email":"andri@dot.ee"}]},"0.12.0":{"name":"must","version":"0.12.0","description":"Testing and assertion library with friendly BDD syntax — awesome.must.be.true(). Many expressive matchers and is test runner and framework agnostic. Follows RFC 2119 with its use of MUST. Good and well tested stuff.","keywords":["assert","assertion","bdd","test","testing","rfc2119"],"homepage":"https://github.com/moll/js-must","bugs":{"url":"https://github.com/moll/js-must/issues"},"author":{"name":"Andri Möll","email":"andri@dot.ee","url":"http://themoll.com"},"repository":{"type":"git","url":"git://github.com/moll/js-must.git"},"licenses":[{"type":"LAGPL","url":"https://github.com/moll/js-must/blob/master/LICENSE"}],"main":"index.js","scripts":{"test":"make test"},"dependencies":{"kindof":">= 1.0.0 < 2"},"devDependencies":{"mocha":">= 1.12.0 < 2"},"_id":"must@0.12.0","_shasum":"5741e729bedbc8b0fe2bc8c5006459415383d05d","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"moll","email":"andri@dot.ee"},"maintainers":[{"name":"moll","email":"andri@dot.ee"}],"dist":{"shasum":"5741e729bedbc8b0fe2bc8c5006459415383d05d","tarball":"https://registry.npmjs.org/must/-/must-0.12.0.tgz","integrity":"sha512-rPAiyCScQtuONUA/afLdC7Hjg/qZ4fUHMllX1FFeu7vqYhGr7DK3K81UBdHMmqx5ARHbwcpcHa0Vm9swXhJruw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGNOvaI7EQujH7hEfSELQ3LmbUUhL2wff876SzZu0MF2AiBi/qNYBUjzxixI5WNEmK9POn7XNquayGb3XYMUNyCF6g=="}]}},"0.13.0-beta1":{"name":"must","version":"0.13.0-beta1","description":"Testing and assertion library with friendly BDD syntax — awesome.must.be.true(). Many expressive matchers and is test runner and framework agnostic. Follows RFC 2119 with its use of MUST. Good and well tested stuff.","keywords":["assert","assertion","bdd","test","testing","rfc2119"],"homepage":"https://github.com/moll/js-must","bugs":{"url":"https://github.com/moll/js-must/issues"},"author":{"name":"Andri Möll","email":"andri@dot.ee","url":"http://themoll.com"},"repository":{"type":"git","url":"git://github.com/moll/js-must.git"},"licenses":[{"type":"LAGPL","url":"https://github.com/moll/js-must/blob/master/LICENSE"}],"main":"register.js","scripts":{},"dependencies":{"kindof":">= 1.0.0 < 2","oolong":">= 1.11.0 < 2","lodash.wrap":">= 3 < 4"},"devDependencies":{"mocha":">= 1.12.0 < 2","promise":">= 7 < 8","lodash":">= 3 < 4"},"gitHead":"720d41a434c31541de593f16b3335e8c77f655b1","_id":"must@0.13.0-beta1","_shasum":"33c5609510582e7fbb2269b0b0ffdc73e0b94178","_from":".","_npmVersion":"2.10.1","_nodeVersion":"0.12.4","_npmUser":{"name":"moll","email":"andri@dot.ee"},"maintainers":[{"name":"moll","email":"andri@dot.ee"}],"dist":{"shasum":"33c5609510582e7fbb2269b0b0ffdc73e0b94178","tarball":"https://registry.npmjs.org/must/-/must-0.13.0-beta1.tgz","integrity":"sha512-ioUfhASAMxAj60DDn3OpM+3etZv9X5CGhlWYHbQNHLXD3ner8ZP9wtlflOyWBqIX+SHqjPRSIfYrMUWBTFr0BQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCizbRY7bQepYxMBND+5Bry7iswxxxupbMwaXEcS9fFiQIgHKZo8bOiLoSfnH3Iy0ZxT+fvAxHTcymXk6b7sra5DM4="}]}},"0.13.0-beta2":{"name":"must","version":"0.13.0-beta2","description":"Testing and assertion library with friendly BDD syntax — awesome.must.be.true(). Many expressive matchers and is test runner and framework agnostic. Follows RFC 2119 with its use of MUST. Good and well tested stuff.","keywords":["assert","assertion","bdd","test","testing","rfc2119"],"homepage":"https://github.com/moll/js-must","bugs":{"url":"https://github.com/moll/js-must/issues"},"author":{"name":"Andri Möll","email":"andri@dot.ee","url":"http://themoll.com"},"repository":{"type":"git","url":"git://github.com/moll/js-must.git"},"licenses":[{"type":"LAGPL","url":"https://github.com/moll/js-must/blob/master/LICENSE"}],"main":"register.js","scripts":{},"dependencies":{"kindof":">= 1.0.0 < 2","oolong":">= 1.11.0 < 2","lodash.wrap":">= 3 < 4"},"devDependencies":{"mocha":">= 1.12.0 < 2","promise":">= 7 < 8","lodash":">= 3 < 4"},"gitHead":"a9d843e69f5692c660070a5adc80d6c38dad7c86","_id":"must@0.13.0-beta2","_shasum":"a10f3b1c2f74442521c58e0860c7d128358b3f08","_from":".","_npmVersion":"2.10.1","_nodeVersion":"0.12.4","_npmUser":{"name":"moll","email":"andri@dot.ee"},"maintainers":[{"name":"moll","email":"andri@dot.ee"}],"dist":{"shasum":"a10f3b1c2f74442521c58e0860c7d128358b3f08","tarball":"https://registry.npmjs.org/must/-/must-0.13.0-beta2.tgz","integrity":"sha512-t6PZkOQiX77zRM/pDaxTYXHv9d/vbrgpLF7CqVPzjQpoEierKL0j/fg12M1nYdtnIG2RhoxRUx8jA3ocFZn83Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCVylimWBq4f5tO9HuFyoxeOldhV7BrMvsoXVpJwEYBAAIgEvy9sarR7k1U6/V41S78HubKeyBmkCdoWG2CHrMJRIE="}]}},"0.13.0-rc1":{"name":"must","version":"0.13.0-rc1","description":"Testing and assertion library with friendly BDD syntax — awesome.must.be.true(). Many expressive matchers and is test runner and framework agnostic. Follows RFC 2119 with its use of MUST. Good and well tested stuff.","keywords":["assert","assertion","bdd","test","testing","rfc2119"],"homepage":"https://github.com/moll/js-must","bugs":{"url":"https://github.com/moll/js-must/issues"},"author":{"name":"Andri Möll","email":"andri@dot.ee","url":"http://themoll.com"},"repository":{"type":"git","url":"git://github.com/moll/js-must.git"},"licenses":[{"type":"LAGPL","url":"https://github.com/moll/js-must/blob/master/LICENSE"}],"main":"register.js","scripts":{},"dependencies":{"kindof":">= 2.0.0 < 3","egal":">= 1.3.0 < 2","oolong":">= 1.11.0 < 2","lodash.wrap":">= 3 < 4"},"devDependencies":{"mocha":">= 1.12.0 < 2","promise":">= 7 < 8","lodash":">= 3 < 4"},"gitHead":"9bfb2cb2adf09284c177786a6997281ba52fd6dc","_id":"must@0.13.0-rc1","_shasum":"e8b41a1a4638b0fa8a1ea863af96d5e3736ad59b","_from":".","_npmVersion":"2.14.4","_nodeVersion":"0.12.7","_npmUser":{"name":"moll","email":"andri@dot.ee"},"maintainers":[{"name":"moll","email":"andri@dot.ee"}],"dist":{"shasum":"e8b41a1a4638b0fa8a1ea863af96d5e3736ad59b","tarball":"https://registry.npmjs.org/must/-/must-0.13.0-rc1.tgz","integrity":"sha512-z1YnhkwET4w8I/a1BTo2fKSEVXei5YJsnXHi35jnkx27OU33fSKKUro+1u/1CgL5MX96GeFB3PHxpo2O8pGSOA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDiq8zFPFB/g2YZ+seORlNISCl7JL/YVG05M5ivcFiIpAIgQNLalBekXXDU4Dr7lp/fsOIxnhyPhhPEwsJTJorQStA="}]}},"0.13.0":{"name":"must","version":"0.13.0","description":"Testing and assertion library with friendly BDD syntax — awesome.must.be.true(). Many expressive matchers and is test runner and framework agnostic. Follows RFC 2119 with its use of MUST. Good and well tested stuff.","keywords":["assert","assertion","bdd","test","testing","rfc2119"],"homepage":"https://github.com/moll/js-must","bugs":{"url":"https://github.com/moll/js-must/issues"},"author":{"name":"Andri Möll","email":"andri@dot.ee","url":"http://themoll.com"},"repository":{"type":"git","url":"git://github.com/moll/js-must.git"},"licenses":[{"type":"LAGPL","url":"https://github.com/moll/js-must/blob/master/LICENSE"}],"main":"register.js","scripts":{},"dependencies":{"kindof":">= 2.0.0 < 3","egal":">= 1.3.0 < 2","oolong":">= 1.11.0 < 2","lodash.wrap":">= 3 < 4"},"devDependencies":{"mocha":">= 1.12.0 < 2","promise":">= 7 < 8","lodash":">= 3 < 4"},"gitHead":"c263c654aa0ab5d4973d172b2c4cf11b007d8a8d","_id":"must@0.13.0","_shasum":"fb2fa140a7677cb4864e52b12d30fdd5c5f465a5","_from":".","_npmVersion":"2.14.4","_nodeVersion":"4.1.0","_npmUser":{"name":"moll","email":"andri@dot.ee"},"maintainers":[{"name":"moll","email":"andri@dot.ee"}],"dist":{"shasum":"fb2fa140a7677cb4864e52b12d30fdd5c5f465a5","tarball":"https://registry.npmjs.org/must/-/must-0.13.0.tgz","integrity":"sha512-8H3r5FoXSgfsS+ZEnCr+6Rzw9bcxvgqy88xG9uNoFVhlwn30daQQmP4EIcNf1DhWnJIitxgQyBMlPe9w5CFl8w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMiUFbxuBKP9kdAEgnKg261x1ffxCKwDOm81MNTXnJ3QIge1BId1OTMsTbJ5Q6PDR1ZZ3Ya3kizPXO/TbMEOT3nZs="}]}},"0.13.1":{"name":"must","version":"0.13.1","description":"Testing and assertion library with friendly BDD syntax — awesome.must.be.true(). Many expressive matchers and is test runner and framework agnostic. Follows RFC 2119 with its use of MUST. Good and well tested stuff.","keywords":["assert","assertion","bdd","test","testing","rfc2119"],"homepage":"https://github.com/moll/js-must","bugs":{"url":"https://github.com/moll/js-must/issues"},"author":{"name":"Andri Möll","email":"andri@dot.ee","url":"http://themoll.com"},"repository":{"type":"git","url":"git://github.com/moll/js-must.git"},"licenses":[{"type":"LAGPL","url":"https://github.com/moll/js-must/blob/master/LICENSE"}],"main":"register.js","scripts":{},"dependencies":{"kindof":">= 2.0.0 < 3","egal":">= 1.3.0 < 2","oolong":">= 1.11.0 < 2","lodash.wrap":">= 3 < 4"},"devDependencies":{"mocha":">= 1.12.0 < 2","promise":">= 7 < 8","lodash":">= 3 < 4"},"gitHead":"59874d8eea59d15cb1a2a774df47baa394ab15a7","_id":"must@0.13.1","_shasum":"0a9aa4d9b4fe8adee8e7f87d6207bd611af38b9e","_from":".","_npmVersion":"2.14.4","_nodeVersion":"4.1.0","_npmUser":{"name":"moll","email":"andri@dot.ee"},"maintainers":[{"name":"moll","email":"andri@dot.ee"}],"dist":{"shasum":"0a9aa4d9b4fe8adee8e7f87d6207bd611af38b9e","tarball":"https://registry.npmjs.org/must/-/must-0.13.1.tgz","integrity":"sha512-yToFubk8yGDj2hfyMwPcLlMgXzkz5IpstWZjL55fbOFTi9HGGAoaWKrx5IU/UJM2WOSe81kxpsuCUO5+5mXHxQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDceqqC4q+KDz2rDY4kUoD5k8+/Oj8W8hCY9tsRoDdZkwIhANq+6CDPb0PejbtCl3cToJ7btc9DHtConICNNulQ+6Yr"}]}},"0.13.2":{"name":"must","version":"0.13.2","description":"Testing and assertion library with friendly BDD syntax — awesome.must.be.true(). Many expressive matchers and is test runner and framework agnostic. Follows RFC 2119 with its use of MUST. Good and well tested stuff.","keywords":["assert","assertion","bdd","test","testing","rfc2119"],"homepage":"https://github.com/moll/js-must","bugs":{"url":"https://github.com/moll/js-must/issues"},"author":{"name":"Andri Möll","email":"andri@dot.ee","url":"http://themoll.com"},"repository":{"type":"git","url":"git://github.com/moll/js-must.git"},"licenses":[{"type":"LAGPL","url":"https://github.com/moll/js-must/blob/master/LICENSE"}],"main":"register.js","scripts":{},"dependencies":{"kindof":">= 2.0.0 < 3","egal":">= 1.3.0 < 2","oolong":">= 1.11.0 < 2","lodash.wrap":">= 3 < 4","json-stringify-safe":">= 5 < 6"},"devDependencies":{"mocha":">= 2 < 3","promise":">= 7 < 8","lodash":">= 3 < 4"},"gitHead":"7d2a1c244485f3844612e40332ed81abeb12dc74","_id":"must@0.13.2","_shasum":"89592e7f687ecbc77746c3e742ec24d4f32b4c35","_from":".","_npmVersion":"2.15.5","_nodeVersion":"4.3.0","_npmUser":{"name":"moll","email":"andri@dot.ee"},"maintainers":[{"name":"moll","email":"andri@dot.ee"}],"dist":{"shasum":"89592e7f687ecbc77746c3e742ec24d4f32b4c35","tarball":"https://registry.npmjs.org/must/-/must-0.13.2.tgz","integrity":"sha512-nk4yMKW+UMu7bE+C6STHyfiT1jPEwTCBLjP9XwCswrAtTOqgkAuL0gdzIuGIcHAXvjY9upuW638p9kHp51Id4Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID6JVk01WOUJVGsm/z7pXe1jQVxdTDyLzQc3Aafp4/p1AiBUwUoEFXCZLK6O8MNn9r4h2yPq2KalwRBrJ211BjD4zQ=="}]},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/must-0.13.2.tgz_1469034822703_0.11266660690307617"}},"0.13.3":{"name":"must","version":"0.13.3","description":"Testing and assertion library with friendly BDD syntax — awesome.must.be.true(). Many expressive matchers and is test runner and framework agnostic. Follows RFC 2119 with its use of MUST. Good and well tested stuff.","keywords":["assert","assertion","bdd","test","testing","rfc2119"],"homepage":"https://github.com/moll/js-must","bugs":{"url":"https://github.com/moll/js-must/issues"},"author":{"name":"Andri Möll","email":"andri@dot.ee","url":"http://themoll.com"},"typings":"./must.d.ts","repository":{"type":"git","url":"git://github.com/moll/js-must.git"},"licenses":[{"type":"LAGPL","url":"https://github.com/moll/js-must/blob/master/LICENSE"}],"main":"register.js","scripts":{},"dependencies":{"kindof":">= 2.0.0 < 3","egal":">= 1.3.0 < 2","oolong":">= 1.11.0 < 2","lodash.wrap":">= 3 < 4","json-stringify-safe":">= 5 < 6"},"devDependencies":{"mocha":">= 2 < 3","promise":">= 7 < 8","lodash":">= 3 < 4"},"gitHead":"495a46825a4a17d172e48b86c75101de1d3fea08","_id":"must@0.13.3","_shasum":"c13600994124ecb9a1e7771a5171a97265de7419","_from":".","_npmVersion":"2.15.11","_nodeVersion":"4.6.1","_npmUser":{"name":"moll","email":"andri@dot.ee"},"maintainers":[{"name":"moll","email":"andri@dot.ee"}],"dist":{"shasum":"c13600994124ecb9a1e7771a5171a97265de7419","tarball":"https://registry.npmjs.org/must/-/must-0.13.3.tgz","integrity":"sha512-2pD6HZbKM1qb9y2e4zX3fOfD2A/68t45MmkaBzu1mVg9EtKRxpZREkJAFxVLnJPA5qpr8KWNzSU0/BRiJm3yEA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC/0qKQxGYQAaIHDJD91d+GVwQmy6tz3PHWu4hTqQwXoAiAP3VA8efRjUIt3IQEyoxSjtLTTF6A64Wcgp6EEgW76gQ=="}]},"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/must-0.13.3.tgz_1484259088911_0.7032694411464036"}},"0.13.4":{"name":"must","version":"0.13.4","description":"Testing and assertion library with friendly BDD syntax — awesome.must.be.true(). Many expressive matchers and is test runner and framework agnostic. Follows RFC 2119 with its use of MUST. Good and well tested stuff.","keywords":["assert","assertion","bdd","test","testing","rfc2119"],"homepage":"https://github.com/moll/js-must","bugs":{"url":"https://github.com/moll/js-must/issues"},"author":{"name":"Andri Möll","email":"andri@dot.ee","url":"http://themoll.com"},"typings":"./must.d.ts","repository":{"type":"git","url":"git://github.com/moll/js-must.git"},"licenses":[{"type":"LAGPL","url":"https://github.com/moll/js-must/blob/master/LICENSE"}],"main":"register.js","scripts":{},"dependencies":{"kindof":">= 2.0.0 < 3","egal":">= 1.3.0 < 2","oolong":">= 1.11.0 < 2","lodash.wrap":">= 3 < 4","json-stringify-safe":">= 5 < 6"},"devDependencies":{"mocha":">= 2 < 3","promise":">= 7 < 8","lodash":">= 3 < 4"},"gitHead":"de7202b0a70fea57e87431c9c5c22a1b3318f134","_id":"must@0.13.4","_shasum":"9d1389f458e894b2aa04032bfeb7a40714f78171","_from":".","_npmVersion":"2.15.11","_nodeVersion":"4.6.1","_npmUser":{"name":"moll","email":"andri@dot.ee"},"maintainers":[{"name":"moll","email":"andri@dot.ee"}],"dist":{"shasum":"9d1389f458e894b2aa04032bfeb7a40714f78171","tarball":"https://registry.npmjs.org/must/-/must-0.13.4.tgz","integrity":"sha512-5RUPT4WINrrzxC0TuOvoBFJocOAaSnhu2r+98GYYGZRcYQla4QZInNVmAnRXtveceibc1RDSP16dwKMnMJhr4Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDzh3IDkr+fMtyFPiDXlX36n/+IoyvxWWHfLfBIgM0u/AiEA3Pvmx23e3p7zbH1Ib2FbmyeJWfAHg9cL0/FVScISgOM="}]},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/must-0.13.4.tgz_1484345731387_0.28311102418228984"}}},"readme":"Must.js\n=======\n[![NPM version][npm-badge]](https://www.npmjs.com/package/must)\n[![Build status][travis-badge]](https://travis-ci.org/moll/js-must)\n\nMust.js is a testing and assertion library for JavaScript and Node.js with\na friendly **BDD** syntax (`awesome.must.be.true()`). It ships with **many\nexpressive matchers** and is **test runner and framework agnostic**. Follows\n[RFC 2119][rfc2119] with its use of **MUST**. Good and well testsed stuff.\n\nFor those new to testing JavaScript on Node.js, you'll also need a test\nframework (also called a test-runner or a harness) to run your tests. One such\ntool is [Mocha][mocha].\n\n[npm-badge]: https://img.shields.io/npm/v/must.svg\n[travis-badge]: https://travis-ci.org/moll/js-must.png?branch=master\n[rfc2119]: https://www.ietf.org/rfc/rfc2119.txt\n[mocha]: https://mochajs.org\n\n### Tour\n- Assert with a **beautiful and fluent chain** that saves you from wrapping\n  objects manually and reads nicely, too:\n  ```javascript\n  require(\"must/register\")\n  obj.must.be.true()\n  ```\n\n- Supports the **expect flavor** of wrapping as well:\n  ```javascript\n  var demand = require(\"must\")\n  demand(obj).be.string()\n  ```\n\n- **Many expressive matchers** out of the box, including:\n  ```javascript\n  [].must.be.empty()\n  obj.must.have.nonenumerable(\"foo\")\n  (42).must.be.above(13)\n  ```\n\n- **Simple**, because **matchers always behave the same way** and don't depend\n  on any \"special flags\" in the chain. They are also **not interdependent** the\n  way `foo.should.have.property(x).with.lengthOf(5)` would be.\n\n- **Reasonable**, because it asserts only when you call the matcher\n  `[].must.be.empty()` and not when you merely get the property `empty`. See\n  below why [asserting on property access](#asserting-on-property-access) is\n  **dangerous** in other assertion libraries.\n\n- Has an **intelligent and type-safe** recursive [`eql`][Must.prototype.eql]\n  matcher that compares arrays and objects by content and supports value\n  objects.  It's fully type-safe, so instances of *different classes* aren't\n  *eql*, even if their properties are. It also supports **circular and\n  self-referential** objects.\n  ```javascript\n  primesBelowTen.must.eql([2, 3, 5, 7])\n  model.attributes.must.eql({title: \"New\", createdAt: new Date(2000, 1, 1)})\n  ```\n\n- Built-in support for **asserting on promises** with stack traces leading back\n  to _your_ assertion, not to the library's internals.\n\n  ```javascript\n  Promise.resolve(42).must.then.equal(42)\n  Promise.resolve([1, 2, 3]).must.eventually.not.include(42)\n  Promise.reject(new Error(\"Problemo\")).must.reject.with.error(/problem/i)\n  ```\n\n- **Human readable error messages** let you know if an object wasn't what you\n  expected. You can also customize or prepend to the autogenerated error\n  message for further clarification.\n\n- Honors [RFC 2119][rfc2119] by using the word **MUST** because your\n  tests assert things, they don't list wishes or prayers, right? Exactly!\n  `Foo.must.equal(42)`, not `foo.pretty.please.equal(42)`.\n\n- Works with any test runner and framework.  \n- Avoids type coercions and mismatches.\n- Well tested — over 700 cases in over 2500 lines of tests. That makes a test to\n  code ratio of 5:1.\n\n### Using Should.js or Chai.js? Switch for safety!\nAmong other things, one reason why [Should.js][should.js] and [Chai.js][chai.js]\ninspired me to write Must.js is that they have a **fundamental design mistake**\nthat makes them both **surprising in a bad way** and **dangerous to use**. [Read\nmore below](#asserting-on-property-access).\n\n### Extensible\n\nMust.js features a very simple implementation and one you can extend yourself. In Must.js, every matcher is a function on `Must.prototype` that calls `Must.prototype.assert`. For now, please see the source of Must for examples.\n\nThere are [plugins for Must.js](#plugins) by others available, too.\n\n\nInstalling\n----------\n**Note**: Must.js will follow the [semantic versioning](http://semver.org/)\nstarting from v1.0.0.\n\n### Installing on Node.js\n```\nnpm install must\n```\n\n### Installing for the browser\nMust.js doesn't yet have a build ready for the browser, but you might be able\nto use [Browserify][browserify] to have it run there till then.\n\n[browserify]: https://github.com/substack/node-browserify\n\n\nUsing\n-----\nTo use the **fluent chain**, just require Must.js's \"register\" file and it'll\nmake itself available everywhere:\n```javascript\nrequire(\"must/register\")\n```\n\nThen just access the `must` property on any object and call matchers on it.\n```javascript\nanswer.must.equal(42)\nnew Date().must.be.an.instanceof(Date)\n```\n\nIf you wish to use the **expect flavor**, assign Must to any name of your\nchoice, e.g:\n```javascript\nvar expect = require(\"must\")\nvar demand = require(\"must\")\n```\n\nAnd call it with the object you wish to assert:\n```javascript\nexpect(answer).to.equal(42)\ndemand(null).be.null()\n```\n\nFor a list of all matchers, please see the [Must.js API Documentation][api].\n\n### Negative asserting or matching the opposite\nTo assert the opposite, just add `not` between the chain:\n```javascript\ntrue.must.not.be.false()\n[].must.not.be.empty()\n```\n\nUse it multiple times to create lots of fun puzzles! :-)\n```javascript\ntrue.must.not.not.be.true()\n```\n\n### Asserting on null and undefined values\nIn almost all cases you can freely call methods on any object in JavaScript.\nExcept for `null` and `undefined`.\n\nMost of the time this won't be a problem, because if you're asserting that\n`something.must.be.true()` and `something` ends up `null`, the test will still\nfail. If, however, you do need to assert its nullness, aliasing Must to `expect`\nor `demand` and wrapping it manually works well:\n\n```javascript\nvar demand = require(\"must\")\ndemand(something).be.null()\ndemand(undefined).be.undefined()\n```\n\nIf you've got an object on which a `null` or an `undefined` property must\n_exist_ in addition to having a nully value, use the\n[`property`][Must.prototype.property] matcher:\n\n```javascript\nvar obj = {id: null, name: undefined}\nobj.must.have.property(\"id\", null)\nobj.must.have.property(\"name\", undefined)\n```\n\n### Autoloading\nIf your test runner supports an options file, you might want to require Must\nthere so you wouldn't have to remember to `require` in each test file.\n\nFor [Mocha][mocha], that file is `test/mocha.opts`:\n```\n--require must/register\n```\n\n### Full example\nInside a test runner or framework things would look something like this:\n```javascript\nrequire(\"must/register\")\nvar MySong = require(\"../my_song\")\n\ndescribe(\"MySong\", function() {\n  it(\"must be creatable\", function() {\n    new MySong().must.be.an.instanceof(MySong)\n  })\n\n  it(\"must have cowbell\", function() {\n    new MySong().cowbell.must.be.true()\n  })\n\n  it(\"must not have pop\", function() {\n    new MySong().must.not.have.property(\"pop\")\n  })\n})\n```\n\n\nAPI\n---\nFor extended documentation on all functions, please see the\n[Must.js API Documentation][api].\n\n[api]: https://github.com/moll/js-must/blob/master/doc/API.md\n\n### [Must](https://github.com/moll/js-must/blob/master/doc/API.md#Must)\n- [.prototype.a](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.a)(class)\n- [.prototype.above](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.above)(expected)\n- [.prototype.after](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.after)(expected)\n- [.prototype.an](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.an)(class)\n- [.prototype.array](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.array)()\n- [.prototype.at](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.at)\n- [.prototype.be](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.be)(expected)\n- [.prototype.before](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.before)(expected)\n- [.prototype.below](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.below)(expected)\n- [.prototype.between](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.between)(begin, end)\n- [.prototype.boolean](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.boolean)()\n- [.prototype.contain](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.contain)(expected)\n- [.prototype.date](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.date)()\n- [.prototype.empty](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.empty)()\n- [.prototype.endWith](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.endWith)(expected)\n- [.prototype.enumerable](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.enumerable)(property)\n- [.prototype.enumerableProperty](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.enumerableProperty)(property)\n- [.prototype.eql](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.eql)(expected)\n- [.prototype.equal](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.equal)(expected)\n- [.prototype.error](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.error)([constructor], [expected])\n- [.prototype.eventually](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.eventually)\n- [.prototype.exist](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.exist)()\n- [.prototype.false](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.false)()\n- [.prototype.falsy](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.falsy)()\n- [.prototype.frozen](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.frozen)()\n- [.prototype.function](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.function)()\n- [.prototype.gt](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.gt)(expected)\n- [.prototype.gte](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.gte)(expected)\n- [.prototype.have](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.have)\n- [.prototype.include](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.include)(expected)\n- [.prototype.instanceOf](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.instanceOf)(class)\n- [.prototype.instanceof](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.instanceof)(class)\n- [.prototype.is](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.is)(expected)\n- [.prototype.keys](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.keys)(keys)\n- [.prototype.least](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.least)(expected)\n- [.prototype.length](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.length)(expected)\n- [.prototype.lt](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.lt)(expected)\n- [.prototype.lte](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.lte)(expected)\n- [.prototype.match](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.match)(regexp)\n- [.prototype.most](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.most)(expected)\n- [.prototype.must](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.must)\n- [.prototype.nan](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.nan)()\n- [.prototype.nonenumerable](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.nonenumerable)(property)\n- [.prototype.nonenumerableProperty](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.nonenumerableProperty)(property)\n- [.prototype.not](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.not)\n- [.prototype.null](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.null)()\n- [.prototype.number](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.number)()\n- [.prototype.object](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.object)()\n- [.prototype.own](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.own)(property, [value])\n- [.prototype.ownKeys](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.ownKeys)(keys)\n- [.prototype.ownProperties](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.ownProperties)(properties)\n- [.prototype.ownProperty](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.ownProperty)(property, [value])\n- [.prototype.permutationOf](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.permutationOf)(expected)\n- [.prototype.properties](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.properties)(properties)\n- [.prototype.property](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.property)(property, [value])\n- [.prototype.regexp](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.regexp)()\n- [.prototype.reject](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.reject)\n- [.prototype.resolve](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.resolve)\n- [.prototype.startWith](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.startWith)(expected)\n- [.prototype.string](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.string)()\n- [.prototype.symbol](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.symbol)()\n- [.prototype.the](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.the)\n- [.prototype.then](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.then)\n- [.prototype.throw](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.throw)([constructor], [expected])\n- [.prototype.to](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.to)\n- [.prototype.true](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.true)()\n- [.prototype.truthy](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.truthy)()\n- [.prototype.undefined](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.undefined)()\n- [.prototype.with](https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.with)\n\n\nMigrating to Must.js\n--------------------\nYou're likely to be already using some testing library and have a set of tests\nin them. I'm **honored you picked** Must.js to go forward. Let's **get you up to\nspeed** on how Must.js differs from others and how to **migrate your old tests**\nover.\n\n### From Should.js\nMust.js and [Should.js][should.js] are fairly similar when it comes to matchers.\n\n- Just add parentheses after each assertion and you're almost set.\n- Must.js does not have static matchers like `should.not.exist(obj.foo)`.  \n  Convert to `demand(foo).not.to.exist()`.\n- Must.js lacks `with.lengthOf` because its matchers are all independent.  \n  Convert to `obj.must.have.length(5)`\n- Must.js lacks the `ok` matcher because unambiguous names are better.  \n  Convert to `truthy`.\n- Must.js does not support custom error descriptions.\n\nHere's a quick `sed` script to convert `obj.should.xxx` style to\n`obj.must.xxx()`:\n```\nsed -i.should -E -f /dev/stdin test/**/*.js <<-end\n  /\\.should\\.([[:alpha:].]+)([[:space:]}\\);]|$)/s/\\.should\\.([[:alpha:].]+)/.must.\\1()/g\n  s/\\.should\\.([[:alpha:].]+)/.must.\\1/g\nend\n```\n\n### From Chai.js\nMust.js and [Chai.js][chai.js] are fairly similar when it comes to matchers.\n\n- Just add parentheses after each assertion and you're almost set.  \n  That goes for both the BDD (`obj.should`) and *expect*\n  (`expect(obj).to`) flavor.\n- Must.js lacks the `include` flag because its matchers are all independent.  \n  Convert to `Object.keys(obj).must.include(\"foo\")`.\n- Must.js lacks the `deep` flag for the `equal` matcher because\n  [`eql`][Must.prototype.eql] already compares recursively and in a type-safe\n  way.  \n  Convert to `obj.must.eql({some: {deep: \"object\"}})`.\n- Must.js lacks the `deep` flag for the `property` matcher because it prefers\n  regular property access.  \n  Convert to `obj.some.nested.property.must.equal(42)`.\n- Must.js lacks the `ok` matcher because unambiguous names are better.  \n  Convert to `truthy`.\n- Must.js lacks the `respondTo` matcher because unambiguous names are better.  \n  Convert to `MyClass.prototype.must.be.a.function()`.\n\nHere's a quick `sed` script to convert `obj.should.xxx` style to\n`obj.must.xxx()`:\n```\nsed -i.should -E -f /dev/stdin test/**/*.js <<-end\n  /\\.should\\.([[:alpha:].]+)([[:space:]}\\);]|$)/s/\\.should\\.([[:alpha:].]+)/.must.\\1()/g\n  s/\\.should\\.([[:alpha:].]+)/.must.\\1/g\nend\n```\n\n### Convert test case titles to MUST\nIf you've used the `should` style before, you most likely have test cases titled\n`it(\"should do good\")`.  \nMigrate those to `it(\"must do good\")` with this `sed` script:\n```\nsed -i.should -E -e 's/it\\(\"should/it(\"must/g' test/**/*.js\n```\n\n<a name=\"asserting-on-property-access\"></a>\n### Beware of libraries that assert on property access\nAmong other things, one reason why [Should.js][should.js] and\n[Chai.js][chai.js] inspired me to write Must.js is that they have\na **fundamental design mistake** that makes them both **surprising in a bad\nway** and **dangerous to use**.\n\nIt has to do with them asserting on property access, like this:\n```javascript\ntrue.should.be.true\n[].should.be.empty\n```\n\nWhat initially may seem familiar to Ruby programmers, first of all, is out of\nplace in JavaScript. Dot-something stands for getting a property's value and\ngetters, regardless of language, **should not** have **side-effects**.\nEspecially not **control-flow changing exceptions**!\n\nSecondly, and this is where it's flat out **dangerous asserting on property\naccess**, is that accessing a non-existent property does **nothing** in\nJavaScript.  Recall that JavaScript does not have Ruby's `method_missing` or\nother hooks to catch such access. So, guess what happens when someone mistypes\nor mis-remembers a matcher? Yep, nothin' again. And that's the way it's supposed\nto be.  But what's good in JavaScript, **not so good** for your now **false\npositive test**.\n\nImagine using a plugin that adds matchers for spies or mocks. Then using it with\n`someFn.should.have.been.calledOnce`.  Someone accidentally removes the plugin\nor thinks `calledQuadrice` sounds good?  Well, those assertions will surely\ncontinue passing because they'll now just get `undefined` back.\n\nMust.js **solves both problems** with the **simplest but effective solution**\n— requires you to **always call matchers** because they're plain-old functions\n— `expect(problem).to.not.exist()`.\n\n[should.js]: https://github.com/visionmedia/should.js\n[chai.js]: http://chaijs.com\n\n\nPlugins\n-------\n- [must-sinon](https://www.npmjs.com/package/must-sinon) ([Repository](https://github.com/JohnnyEstilles/must-sinon)) — Sinon assertions.\n- [must-targaryen](https://www.npmjs.com/package/must-targaryen) ([Repository](https://github.com/jtwebman/must-targaryen)) — Firebase Targaryen assertions.\n- [must-jsx](https://www.npmjs.com/package/must-jsx) ([Repository](https://github.com/nwinch/must-jsx)] — React.js JSX assertions.\n\nIf you have a module extending Must.js one not listed above, please let me know or create a pull request.\n\n\nLicense\n-------\nMust.js is released under a *Lesser GNU Affero General Public License*, which in\nsummary means:\n\n- You **can** use this program for **no cost**.\n- You **can** use this program for **both personal and commercial reasons**.\n- You **do not have to share your own program's code** which uses this program.\n- You **have to share modifications** (e.g bug-fixes) you've made to this\n  program.\n\nFor more convoluted language, see the `LICENSE` file.\n\n\nAbout\n-----\n**[Andri Möll](http://themoll.com)** typed this and the code.  \n[Monday Calendar](https://mondayapp.com) supported the engineering work.\n\nIf you find Must.js needs improving, please don't hesitate to type to me now at\n[andri@dot.ee][email] or [create an issue online][issues].\n\n[email]: mailto:andri@dot.ee\n[issues]: https://github.com/moll/js-must/issues\n\n[Must.prototype.eql]: https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.eql\n[Must.prototype.property]: https://github.com/moll/js-must/blob/master/doc/API.md#Must.prototype.property\n","maintainers":[{"name":"moll","email":"andri@dot.ee"}],"time":{"modified":"2022-06-20T14:40:14.364Z","created":"2012-05-21T23:09:48.064Z","0.0.0":"2012-05-21T23:09:49.904Z","0.1.337":"2013-09-24T19:58:18.869Z","0.1.338":"2013-09-25T23:24:27.627Z","0.2.0":"2013-09-26T14:39:26.586Z","0.3.0":"2013-10-05T12:49:11.949Z","0.4.0":"2013-10-11T20:42:46.620Z","0.5.0":"2013-10-12T23:02:12.284Z","0.6.0":"2013-10-15T18:56:38.395Z","0.7.0":"2013-10-23T19:16:14.709Z","0.8.0":"2013-10-27T19:36:22.642Z","0.9.0":"2013-10-28T20:23:19.811Z","0.9.1":"2013-10-31T09:38:36.476Z","0.10.0":"2013-10-31T10:57:04.042Z","0.11.0":"2014-02-13T02:12:42.304Z","0.12.0":"2014-05-28T16:26:55.007Z","0.13.0-beta1":"2015-06-15T20:12:38.237Z","0.13.0-beta2":"2015-06-15T20:38:10.265Z","0.13.0-rc1":"2015-09-22T14:16:42.579Z","0.13.0":"2015-09-26T12:05:36.922Z","0.13.1":"2015-09-26T12:34:39.363Z","0.13.2":"2016-07-20T17:13:44.436Z","0.13.3":"2017-01-12T22:11:29.723Z","0.13.4":"2017-01-13T22:15:33.695Z"},"author":{"name":"Andri Möll","email":"andri@dot.ee","url":"http://themoll.com"},"repository":{"type":"git","url":"git://github.com/moll/js-must.git"},"users":{"moll":true,"ceejbot":true,"harrisiirak":true,"bajtos":true,"eins78":true,"plord":true,"rsp":true,"crazyjingling":true},"readmeFilename":"README.md","homepage":"https://github.com/moll/js-must","keywords":["assert","assertion","bdd","test","testing","rfc2119"],"bugs":{"url":"https://github.com/moll/js-must/issues"}}