{"_id":"mongolayer","_rev":"115-0755137d8a58ab85706a8f70b07b1996","name":"mongolayer","dist-tags":{"latest":"3.0.1"},"versions":{"0.1.0":{"name":"mongolayer","version":"0.1.0","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@0.1.0","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"2eeaaf03f7e713d14bdd95c2888dfa0359adae62","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-0.1.0.tgz","integrity":"sha512-pl7o4bzlXqU/oK5LAqcMFZ/yC8pbBVK4lEAM46nDkwURB5nZG+MOZA77q/TXXBdyTUQ8TafIHNyhokH0UeIhJA==","signatures":[{"sig":"MEQCIHLGFwBm31CISAlnLx+/1YRHU2GYRkI0RVTxOYCWcpnKAiBs+mxZ38Hh+GpIcwrD4TttAWsXxwW5ivOG1svtJAkT4A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"2eeaaf03f7e713d14bdd95c2888dfa0359adae62","engines":{"node":">=0.10.x"},"gitHead":"e526983c32269e54d618551a99acc8ba632b6c95","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"1.4.20","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*"}},"0.1.1":{"name":"mongolayer","version":"0.1.1","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@0.1.1","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"ca170fff465b0261020a4d4eae1150a023745e97","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-0.1.1.tgz","integrity":"sha512-giU6NtP5TmyK3FTFADctnLbwUkmVgAnE2tGGslL4DDjqWhNk+QMNBaVsAEWgaJVXqjwlQbkuo9kwtWr9ErwK+Q==","signatures":[{"sig":"MEUCIQC5Jvy2tVFCjlxFoeweLzknQoOSkd03irMSFvKcJufimQIgL48yBvODg2OTuxL8EfQceDTjs3RRBAOTPqbPUBuhJug=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"ca170fff465b0261020a4d4eae1150a023745e97","engines":{"node":">=0.10.x"},"gitHead":"0a782ace3584ad10784fd950e9155d94e09232fc","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"1.4.20","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*"}},"0.1.2":{"name":"mongolayer","version":"0.1.2","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@0.1.2","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"fff0c3d4dd26cb65d924da83b059de6a1266e6eb","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-0.1.2.tgz","integrity":"sha512-meJrq7v+vl4Y2Tow9qO85cL46OUu4FvqmHDBSf0eafdW3kpemj1XVEB/1Sv0g3usQOfgjygpa58aUZbvsoElZg==","signatures":[{"sig":"MEUCIErhf3e3HZe1JTF9AGn0QwpwAenN4ye24zRPbFLNGVwFAiEA7Hnx3YnVyoHQEy4q6bOxfC6avPWNtYeAlbf7ADXPtRQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"fff0c3d4dd26cb65d924da83b059de6a1266e6eb","engines":{"node":">=0.10.x"},"gitHead":"d5e6b2e3d0af26140adc57a3d339deb878744ea8","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"1.4.20","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*"}},"0.1.3":{"name":"mongolayer","version":"0.1.3","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@0.1.3","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"0d51b23d3a39f00c730c08e2be04ae53955dff80","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-0.1.3.tgz","integrity":"sha512-C1N3IrMhjul+othcBGq+OZG1k7BBaxcWOnJZX3d8pa4BW4b8fbd8DmjAQIlj1pLr9fjJR/ARr5Fk/ZSmyDgbrA==","signatures":[{"sig":"MEQCIF7gQO6ENBsajrFqlqqqUJPkrOvfnEitZcMHldAdO3/LAiAvRKZImo459AR5rBMyTBYtz/kvChtcxvqa4CBSIbDv0w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"0d51b23d3a39f00c730c08e2be04ae53955dff80","engines":{"node":">=0.10.x"},"gitHead":"ad5619e2eeeac425990c0c1c3a33bf80a2cac743","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"1.4.20","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*"}},"0.1.4":{"name":"mongolayer","version":"0.1.4","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@0.1.4","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"6562c9dab7b74d1f789885e103aac69eeeff4329","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-0.1.4.tgz","integrity":"sha512-3gY/z6FyNjxvoK4h6+f4R5SqRkCQtSIVhqGDpEIghExv7mUqBLJg9ko1YuDVlJlssc3QsSspNp/AeAwyCyDnEQ==","signatures":[{"sig":"MEUCIGPS9iflIgPs9ApGYbpsB+OMMniYJGNnuwZqNsbAiXgKAiEAwRTMLsxl8krsfJENl+Oa9BnOn2vw5GW1v/U1XZqjgWM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"6562c9dab7b74d1f789885e103aac69eeeff4329","engines":{"node":">=0.10.x"},"gitHead":"91388fc74f4f677d7f8fe9621a01e5a7cc932dff","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"1.4.20","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*"}},"0.1.5":{"name":"mongolayer","version":"0.1.5","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@0.1.5","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"dc0152097a8feeb1bd1c445d9bd17bd116d65585","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-0.1.5.tgz","integrity":"sha512-3Z38GIcsFqdczLrfHi8xwG9K49hA4hd4KfjYrxujuAFjcMVhzbkz+RRqHIxt+bAhCH7++cNMFABHe0SdWBdWKg==","signatures":[{"sig":"MEYCIQCRMg2cDEAs/DwIpFL87pu/qtvKc5GHuetkxawvAu8MqQIhAObcGHNTx64nPmjK9vIwq+hAhhrnW6LHEnIgA3Qm5NME","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"dc0152097a8feeb1bd1c445d9bd17bd116d65585","engines":{"node":">=0.10.x"},"gitHead":"9c226935c174a7fdc6aea9633e1c8c7648574c93","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"1.4.20","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*"}},"0.1.6":{"name":"mongolayer","version":"0.1.6","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@0.1.6","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"98a3a2358c0f7b4d3f0dbafd38c7a56842d2d93a","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-0.1.6.tgz","integrity":"sha512-ytxhRttWhH+IJd41FhqICP2uwt6u6LYGbhe6iw4y6HDmCKPkKEbH/lTI/X/FX1+FVND7NohVx6fBGHMnCaJAHQ==","signatures":[{"sig":"MEUCIQDQ7AyB3EL+A3E5+CWJcTQ7hT0L1vxXI68UTRfCv5RD6wIgQeoF1t0Buv1NkHJJUw3CG1FzEgUR6HjJkRbNausCUY0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"98a3a2358c0f7b4d3f0dbafd38c7a56842d2d93a","engines":{"node":">=0.10.x"},"gitHead":"7084fe4e7f1a11a2848a2b176d65871fed100d58","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"1.4.20","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*"}},"0.1.7":{"name":"mongolayer","version":"0.1.7","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@0.1.7","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"080fd0d9dd0fda7a4741358d4a6545dbaac21e62","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-0.1.7.tgz","integrity":"sha512-d+7j3Kj8PtaX97HaZFlT/YOdbGxL4f8l58QKNIlHQNCgMw5+v5AIGQ8y9fuznQCByZJ51PCe+vQVBsGLTEfxAw==","signatures":[{"sig":"MEUCIQDGC4IrAUcx+wP2vi2N87lsf+vb6GNLh71GypcZLjEohAIgZqukT7oTjraqztZQJxPY5mGQuqBI+y0YOnN4O7PGH68=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"080fd0d9dd0fda7a4741358d4a6545dbaac21e62","engines":{"node":">=0.10.x"},"gitHead":"3e0bab1f04f222a234ac65d9a722231bccc06878","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"1.4.20","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*"}},"0.1.8":{"name":"mongolayer","version":"0.1.8","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@0.1.8","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"50ae6c1e1992ca1515d3b78b105b3f1a8ec8e390","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-0.1.8.tgz","integrity":"sha512-vvw8QGTWl45sGXModlb/B5YT0Hh4VgZ5J9QBMGUXAQeUMgw3617XDG9M1kKvVNufvgPxEnKYiYrSuid9HMNjwA==","signatures":[{"sig":"MEYCIQDTyKm7PvLme8lETF3AGhfIV/doFR0XNenrFV9kGj3mIQIhAKT0aqtWjWkATimKLkZbXdzDs/qaef4vtM8bySs7CbT3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"50ae6c1e1992ca1515d3b78b105b3f1a8ec8e390","engines":{"node":">=0.10.x"},"gitHead":"0fc62888e52da243fb20568759929a8be1686f75","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"1.4.20","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*"}},"0.2.0":{"name":"mongolayer","version":"0.2.0","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@0.2.0","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"16321dbfcd9acbd922a675e394bf74b980717d5c","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-0.2.0.tgz","integrity":"sha512-NtyBlxmkZWtDzHtrNPaAWKmwwuw8Ae7nvlQE4f55Az0PEEbQdNnNcA1qUvN4gpw5EmtCivNOEecSbhbtbKhcXA==","signatures":[{"sig":"MEUCIQCqB8Hj9IN68AdDqWAEO5CW+19dW3Mg4d7ssqn78p9s4QIgG1CZ2aSpDSQTxy8LFOCsPx9LOboaSbIugcpBuehFl/Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"16321dbfcd9acbd922a675e394bf74b980717d5c","engines":{"node":">=0.10.x"},"gitHead":"7e53e0a6e27f6c22421122b2b1c0f6b2e10cf14f","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"1.4.20","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*"}},"0.2.1":{"name":"mongolayer","version":"0.2.1","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@0.2.1","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"ea2878b58bd80a19c2373409aa221fd592831f5e","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-0.2.1.tgz","integrity":"sha512-qgG6ctW1SBNN+rR0IjZcrcwSeC8RsNtrcOJsSFbQvPtoTVMyGjzUNAS+tB/CZNx5NJozBU8t4JtuaDrZcjP+Xw==","signatures":[{"sig":"MEUCIHNAVPufE9CxJPLMF1lv9Jedtwg6oetTMjcf0lNDbyCiAiEA6TakRQkp0O6uXxnNIQ2mQCP++HOCAFxgCnOzkC/HOFA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"ea2878b58bd80a19c2373409aa221fd592831f5e","engines":{"node":">=0.10.x"},"gitHead":"ad2061fdb3ff689eb4ea3773dc6b7a73aac2b812","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.1.5","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.10.30","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*"}},"0.3.1":{"name":"mongolayer","version":"0.3.1","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@0.3.1","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"ad74a69c4e4a367cbee9ad4a95af9de87c89c245","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-0.3.1.tgz","integrity":"sha512-A3H63/5Q1xoVuaNsGBQJqqHifctE3oyYe8oCSbZxieKWh2SpUt7fLSoPT1TuE0ekohObV+k2JVGzTC/CbvkxKA==","signatures":[{"sig":"MEUCIGa3dxAfv6ZR8UtsETULTGW8mi9/vcRwvFndRaZG0skmAiEAxScIBthDWym5sUg03LAwHVSK6+NpMJI45Bwov3OSbh8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"ad74a69c4e4a367cbee9ad4a95af9de87c89c245","engines":{"node":">=0.10.x"},"gitHead":"dea91866b57130aa845cdff959ba8d15227949ea","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.1.7","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.10.32","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*"}},"0.3.2":{"name":"mongolayer","version":"0.3.2","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@0.3.2","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"2fd024dde8a4003ab96662bf4d26e0d40da8899a","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-0.3.2.tgz","integrity":"sha512-QUDSIiF4ur9JhcLCoI0J1EdEEjfHPPfD2J3OVkpqPmjBMSxR+6VfUc1DB7h/ZUrAkeWCMIuAYhlR0OQ2bzt25A==","signatures":[{"sig":"MEUCIQDGln0JyDJQmeM7iXNt3XgwFHba7XqsPjaUFsLM0Bj8TAIgfR6gJe9719SaVzSOLrezAs9yfrMYMH0/G7OFFX9J7wA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"2fd024dde8a4003ab96662bf4d26e0d40da8899a","engines":{"node":">=0.10.x"},"gitHead":"6c886bc23069bec46051ad1e6e963c4185d01e27","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.1.7","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.10.32","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*"}},"0.3.3":{"name":"mongolayer","version":"0.3.3","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@0.3.3","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"c965070c1f3c3404852602b06362ddef91bdab95","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-0.3.3.tgz","integrity":"sha512-el0h+JjnQucBr9dEg8t80hT2vyQ7ybZQp7XCiQXW2sgqy88UvyzmU4wwmOGRv93nIaBdm87qpMBg2G5CmBa5tg==","signatures":[{"sig":"MEUCIQCO98EuHJ8B2C8S2P4vvCUZi9EPTt8tvt7VcDSjtWgoIwIgF+tPbvBuPXk1tRfzlPr8M/5+XbQFy/eeHGaj4zeKVgI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"c965070c1f3c3404852602b06362ddef91bdab95","engines":{"node":">=0.10.x"},"gitHead":"95dda7559ef9b2f5ae5f5a19c6b0e6d304be529c","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.1.7","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.10.32","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*"}},"0.3.4":{"name":"mongolayer","version":"0.3.4","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@0.3.4","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"3a40e475bde6656b51505d912d793c65d2c62120","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-0.3.4.tgz","integrity":"sha512-NNLR7l2xCqHsg967n/N5b+/CEN4oRqIpFnz1CJCZRZIlNLAS5dC03cXvBzGQpRdVFKsyYpQggAtvd5rPNa7WAw==","signatures":[{"sig":"MEYCIQCbW4n1pT6FpCkvOCijbIsIEMLOR9XKWWc7xhaN/f25hAIhAJPQ/dtwrrhkokJvTbcXo8WRFWLKb81cKg+ftz/uW8VO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"3a40e475bde6656b51505d912d793c65d2c62120","engines":{"node":">=0.10.x"},"gitHead":"d1b8c57284e90a2995e5a179b3c08a7d07c41ae1","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.1.10","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.10.32","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*"}},"0.3.5":{"name":"mongolayer","version":"0.3.5","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@0.3.5","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"e5c4c9f7af2b38df7211ddc91fbf311fc6c342c5","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-0.3.5.tgz","integrity":"sha512-q/8teBE/43fpTypf8b28SZGBBhocPqVlg4lJ4DVGMguF+O6lzJ/tss+lmStD2YMUXWYMmmCy04fnjZ+5ZSYi+w==","signatures":[{"sig":"MEUCIQCzoh9jdnmROa1jn5DR/vzvRCi55YQPIi9sTizgKhRI9gIgAm3oDcO/gdkopwz8CEUiHxARfa917Vb6q6WfSlv0PKQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"e5c4c9f7af2b38df7211ddc91fbf311fc6c342c5","engines":{"node":">=0.10.x"},"gitHead":"b3f7d829b157efe14e8a7a107649a92abf0dedd8","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.1.18","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.10.32","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*"}},"0.3.6":{"name":"mongolayer","version":"0.3.6","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@0.3.6","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"9779c8e316c5a9cbc156fb33421c86bdfae5dddf","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-0.3.6.tgz","integrity":"sha512-hYy7fG3Jnn7/wkeotbENpf8yKBzJBE5j99PuzTdNswNTljHO3UxxvA/5dtpTi0pO4GZHJZQCZ/LOjNSsfaUZyQ==","signatures":[{"sig":"MEYCIQCShw6zMhivW/rSTGIhK1vuvywFc9giuuNvq1+REMTwZwIhAJnNVk+B4cpsY1V/qy+bujgvutgop87vHlRCe6nqVnuO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"9779c8e316c5a9cbc156fb33421c86bdfae5dddf","engines":{"node":">=0.10.x"},"gitHead":"df6dfe33d80222dba3d76dff94d71f26a52b0c60","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.1.18","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.10.32","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*"}},"0.3.7":{"name":"mongolayer","version":"0.3.7","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@0.3.7","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"435afb54c2842cfc0dc2131b6a1f0c3a9419bf6f","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-0.3.7.tgz","integrity":"sha512-nGsJdoXSGoXD7ekydLlvYHNnH/26GWfoENHk918Mvg0BhL5HBkMkV9nbQA9VkvmX6/KmIlpAoSFPbK+qe7mVnA==","signatures":[{"sig":"MEUCIQCycYTTD7XstUVVae7RLx7FaYh4sGubl/0efcCu6R7HrAIgcP992xtU5Ps+xF6lZ6IJ6PkyVhdNeL9vDb0HtnvGUTc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"435afb54c2842cfc0dc2131b6a1f0c3a9419bf6f","engines":{"node":">=0.10.x"},"gitHead":"cefcd4d8ee3847849db57384e7a24f95c992593a","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.1.18","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.10.33","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*"}},"0.3.8":{"name":"mongolayer","version":"0.3.8","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@0.3.8","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"ec4c5acc97ebc3ed7eb933acde12e715e412b73c","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-0.3.8.tgz","integrity":"sha512-1X6PAkOYgCqco4zNARwjTSVdaevfQD4fQfHE3WR1cMsJveWmSjLi2bJgi4ItVTMnW2eIPzAlK9UYIikzDykt3w==","signatures":[{"sig":"MEUCIFOMmjm8GAAe/ki5O5QyHyNFSk/c7w64Bhi0rj9ylONeAiEApAXfl1ePPvZQwjUhCmCGi15dKmy/6cz16243VZUc9ZE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"ec4c5acc97ebc3ed7eb933acde12e715e412b73c","engines":{"node":">=0.10.x"},"gitHead":"45f997ed0981ee34de6bb7542c420e3c4cacea97","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.6.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.10.33","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*"}},"0.3.9":{"name":"mongolayer","version":"0.3.9","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@0.3.9","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"9322e235f97556777a22e1d013080a2d81ce8123","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-0.3.9.tgz","integrity":"sha512-AWHWanaRBfQ+i7yr1qxrVdpbChB7rS1t13qLkICGKgJAV4S4P2BMrVrGYJpuzvkNCnZogK8xiKQvym38zTBL7Q==","signatures":[{"sig":"MEQCIEpO+llKRdEdFuj31X2CRkbv3HOPbm1S6SgK2j5TKbp0AiASvlm48GuWLPWhnP22Y8klvP0B439atRO6MQEi7L3CFg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"9322e235f97556777a22e1d013080a2d81ce8123","engines":{"node":">=0.10.x"},"gitHead":"375db2fb5779ab4be806f9d974f04a4fc6b2f515","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.6.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.10.33","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*"}},"0.3.10":{"name":"mongolayer","version":"0.3.10","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@0.3.10","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"9ff5f5b5d24e5fed41b190e143d5744e81d1c2e6","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-0.3.10.tgz","integrity":"sha512-fwnsxd7IL6Fn7Hhe/aWo9uWUJxmGxbVRKzDxqlFEm+jHxaCw6iLCeobOiOZUF8a7/uSTOCDBQ6NqFh1iQTjOBA==","signatures":[{"sig":"MEUCIFVaEhNOF3PFCfbek9ntFniJuXtm1zs6yco6oer0KFJ3AiEAtuUw/KzsuZS2UVhW0T0gi+OEP1SH2R4VZsVnqfahIw0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"9ff5f5b5d24e5fed41b190e143d5744e81d1c2e6","engines":{"node":">=0.10.x"},"gitHead":"f8d104b5f122006a74fdbcad042081df7f532804","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.6.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.10.33","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*"}},"1.0.0":{"name":"mongolayer","version":"1.0.0","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.0.0","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"ac59198ac96031ff90cbf2e433be70c5740ff26a","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.0.0.tgz","integrity":"sha512-tBf2IBjCWQ9OFKRnoDAYAjk63t85wCraTJmz1F9wSsf9X3MH5Zy5Uipu8yQZ3JqOLvN3fkLzpFUnawXFWCNESA==","signatures":[{"sig":"MEYCIQD9NiFrpV2+RJUy28frdSGXbOgR2ta9UiIR8Bhh6G8z5QIhAIYgVClt03az/1prOvXjnpq5skTm/7K8LHPemUGfICRq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"ac59198ac96031ff90cbf2e433be70c5740ff26a","engines":{"node":">=0.10.x"},"gitHead":"406cc8247768a555b20665c5cb7fc0ed3e1a56f4","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.6.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.10.33","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*"}},"1.0.1":{"name":"mongolayer","version":"1.0.1","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.0.1","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"80f8f65c4b1010f76af254cf724fcbfbfbd292c3","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.0.1.tgz","integrity":"sha512-wKTeEdh8p741qG5Cb2RpuxbPw00NW8zQx+odHPI6c5RWuBZG+do/YGDVmFC+aDuksT1JENIlIU+p1BEd9L2vQA==","signatures":[{"sig":"MEUCIE6ieu0RxlP/GwV9G9EOLmQQc+POeN24wctJJg8rzxGmAiEA5s00fiD1PVIXQaCW8NGuyXu30091Jg0id+tGeonijSA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"80f8f65c4b1010f76af254cf724fcbfbfbd292c3","engines":{"node":">=0.10.x"},"gitHead":"680c5e4501869a85eb3101bc0b0996ffee40f474","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.6.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.10.33","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*"}},"1.0.2":{"name":"mongolayer","version":"1.0.2","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.0.2","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"4bf77450887d8b749c0c150824ad99d7bceac29d","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.0.2.tgz","integrity":"sha512-a+aDxGdxjDR3oN5g0IgB4TECGz4+bMmtkeF2hQTMFaB/a4inpp4hgS4/yMfeGGCtpt0zosuc2lAWrjBphOpYmA==","signatures":[{"sig":"MEUCIBpyWt6Pzkiwu5jfOxL9AR8CKqMkrSbPbkO/EpXdaGCLAiEA3GslpF5Ld05rhhx18gQIxonhiJscx6LkdpiuOgn1DHw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"4bf77450887d8b749c0c150824ad99d7bceac29d","engines":{"node":">=0.10.x"},"gitHead":"ebe1d66fad61f0ac3c94634bbf1c045260447e47","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.6.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.10.33","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*"}},"1.0.3":{"name":"mongolayer","version":"1.0.3","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.0.3","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"59cddb26bd08a6548d8176ff2a844f0fa6a4b578","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.0.3.tgz","integrity":"sha512-RIl40j25r13UOCUD9CHcsUA9JCVzeMk7TVSKo+4WnJxR05qxx2fa+Lrhkg8n59zqNuQXs9pMql4y/flDk6Pp0A==","signatures":[{"sig":"MEUCIQDJCRMladrRdab9Tn7k7qPNnkFYBe8Z0t/SNm/1xoof2wIgKf0BECKeanym553jzIflepun0UO9fx3gylIqHE2qiUA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"59cddb26bd08a6548d8176ff2a844f0fa6a4b578","engines":{"node":">=0.10.x"},"gitHead":"16bff73c9eb4432696460f132d32a74675e8a798","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.6.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.10.33","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*"}},"1.0.4":{"name":"mongolayer","version":"1.0.4","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.0.4","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"b0291b1546e7b82920ca1571fb02df5535a7adf4","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.0.4.tgz","integrity":"sha512-CkJjYdBCcGW9zfZd/q+dMcF9zQZEBkzHPrs+r3vSf8U5jyyHJwZ0p5wJbjzNSqJ6SWnmwJP9gYVDxuRNX5kNiQ==","signatures":[{"sig":"MEUCIF9Ya523GV9NQi4xwJJb96BuVYyf7jKzb5/krnmJHfsGAiEAn55KRAhMS4Lq5uTUEXF36cD71lz0S0daOPHNwXPXw98=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"b0291b1546e7b82920ca1571fb02df5535a7adf4","engines":{"node":">=0.10.x"},"gitHead":"a108b70a620026448c622a1ca0abfbe3adee894c","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.6.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.10.33","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*"}},"1.0.5":{"name":"mongolayer","version":"1.0.5","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.0.5","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"c63c91e3c90cae25107ffc5a6a857fd808551107","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.0.5.tgz","integrity":"sha512-cRxNL8GRt0VVde2FOM0tnzW4ZbYL7afTuz55O457mYYRM1vE5n6rDs3RbiuaS8kQmI/sbUJBeQV8vIDX7pHNkw==","signatures":[{"sig":"MEQCIF3mvQCQGPFYKchUVwdbozAUv/F0HMhUL1bWD1OyCIuOAiAD7ZwiGRayM62mLkctNJfrAivlUxykYGx44RIP42sntA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"c63c91e3c90cae25107ffc5a6a857fd808551107","engines":{"node":">=0.10.x"},"gitHead":"49c98c2786f9c456cbb2da13d1297bb8bc34e716","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.11.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.12.2","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*"}},"1.0.7":{"name":"mongolayer","version":"1.0.7","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.0.7","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"66c2f15fb9d177a5b8c71fe7b235a00975af419e","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.0.7.tgz","integrity":"sha512-ptVKsdNh6T+8QWIdN7bh89bF1tUcHNaWGyQc+r1jZuEEBigD/0QAE5yCM9gr5YLb+FkVV031TryyBEeKXzIEiA==","signatures":[{"sig":"MEUCIQDqt5J+vsHLCMXp8YGMeCQKscKZywgBdXJ2Ty9nRYmAcwIgMbtij2RFvkeA5lTfJ0JPbnPi1tO2MM/DvgKGq+mS/9Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"66c2f15fb9d177a5b8c71fe7b235a00975af419e","engines":{"node":">=0.10.x"},"gitHead":"4a3f8f093c7939bad45588fa416cd6e692e720e0","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.11.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.12.2","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*","bson-ext":"*"}},"1.0.8":{"name":"mongolayer","version":"1.0.8","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.0.8","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"0cf91694a91f37ce9cd1197633e646bcf670a07d","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.0.8.tgz","integrity":"sha512-VxKF19VgmR383wKqFIJCNkGkftM1s8wOh9MBNf41kjjEtfeYGu4iWISqL0q+BA3+H2UCD3klq8MHvBTUbjMUBw==","signatures":[{"sig":"MEYCIQDybv/aFMTS6qIIXd3wlhuLW1YOGzVeaHs2ClUVXJ4D7wIhAND56OYkjsMzSz1JXsZMnUXZq0MYeYls8Qm7YmOu8K5k","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"0cf91694a91f37ce9cd1197633e646bcf670a07d","engines":{"node":">=0.10.x"},"gitHead":"b73d6f273459dc3155c943fef489f935c7b6de47","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.11.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.12.2","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*","bson-ext":"*"}},"1.0.9":{"name":"mongolayer","version":"1.0.9","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.0.9","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"45de0e44cb74e1d61912dd07825e5684775624e2","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.0.9.tgz","integrity":"sha512-QykQYSav6PHSjFfCZtINM4cCuAeJn+RuMcpJ5/K6BsHMsp59I55VA71q2mKgPtJHx6dF6Av2ley/BPckJmDzdQ==","signatures":[{"sig":"MEUCIQCIQwtqtn4Fda8F83vX6qD0oXEkwQV5g4sqB3VPGkltXAIgUEitN+P7IS/8a7QS7X7LyOAYK2v5AZCtY8S5x0xtmgo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"45de0e44cb74e1d61912dd07825e5684775624e2","engines":{"node":">=0.10.x"},"gitHead":"44233836878b471b36d96c1c522a064c43b7a575","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.11.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.12.2","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*","bson-ext":"*"}},"1.0.10":{"name":"mongolayer","version":"1.0.10","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.0.10","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"885d5715fbabf28c66dc1a0f36530578d67a2c3a","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.0.10.tgz","integrity":"sha512-cYj7Zl63UY/ymgqMy0O3Ppd4kpR0lV+66xAEsppCNcJHzVEMKG3UWk1OPnltIMbI2Qza6pndbt/EP9sB+KrNMQ==","signatures":[{"sig":"MEUCIA0w6CMtjVRxd0xUage0IFJK7Zwbg8tLI7BQ7t6nGNjeAiEAyzeoDDcRH7qjWolJQLBiCMYFamesIz58tE161msdcMY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"885d5715fbabf28c66dc1a0f36530578d67a2c3a","engines":{"node":">=0.10.x"},"gitHead":"9757d6fb1550bff6f48821adc4e2fd5a9223e8e1","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.11.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.12.2","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*","bson-ext":"*"}},"1.0.11":{"name":"mongolayer","version":"1.0.11","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.0.11","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"c2c4194a46fde3fec4e9b49eb2234bcd7bc29721","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.0.11.tgz","integrity":"sha512-QtQ40PX8Y+dPgNghoorcxgx5NyotkcxfvV9fZR5q8SD+327jqnnHwF6H9Uo0NJpigasR4Lott1xyGDkRHU5UWg==","signatures":[{"sig":"MEUCIQCPUu6hhiFyc/jqWCtEaB/m5yriGUbo62XmLHsM0xUV2wIgSKn6wXq7wgCbklWuEXj6mqlmZU5ulFqe49t2mcOCbu0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"c2c4194a46fde3fec4e9b49eb2234bcd7bc29721","engines":{"node":">=0.10.x"},"gitHead":"a741955c45e4cda638a9921215ec57ff8f0e7cbb","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.11.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.12.2","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*","bson-ext":"*"}},"1.0.12":{"name":"mongolayer","version":"1.0.12","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.0.12","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"acb22c71420a250fc428b0ae34f411f86b3e9330","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.0.12.tgz","integrity":"sha512-dD97ITb7/DIVW3F/vS4YgWD6Z+VbVb6m99sInw5m2rWFRcOqkcTAYJkdztKRHlqgIKTjEJqaB4SfyH0DXaL9pg==","signatures":[{"sig":"MEQCIG/3SXa7PKxRMwNxPgv+pIAROAJmJwMSYKxzH2d2sOMcAiA77SoOPWdtxBRU/AIKZYDXP5eFmCMxDHldvMBfFmbnGA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"acb22c71420a250fc428b0ae34f411f86b3e9330","engines":{"node":">=0.10.x"},"gitHead":"d4d31243d1a8f452114ca7603e17580247ce142b","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.11.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.12.2","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*","bson-ext":"*"}},"1.0.13":{"name":"mongolayer","version":"1.0.13","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.0.13","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"c3f2b15cc58379505020fe3cc8fa152f75c1ff6f","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.0.13.tgz","integrity":"sha512-JLyGWh4zdwIIrjhR24Ys2enr8EEqBTMpvnaYVpZvdsLKWl/UybvBEtQ9vZLyHVq3VNoFM+91b2XA5QdEMbXESQ==","signatures":[{"sig":"MEQCIBOCaZ677mUsclKT3x05bEWaZonp9NJTrqfUg29lho+eAiBeniathMb5vbMwVMH+mYuXsCqWCITkt6tMBX/2IdV8Eg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"c3f2b15cc58379505020fe3cc8fa152f75c1ff6f","engines":{"node":">=0.10.x"},"gitHead":"6c7ddfa1556f2d03c3709a816d79ea0ab0366c30","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.11.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.12.2","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*","bson-ext":"*"}},"1.0.14":{"name":"mongolayer","version":"1.0.14","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.0.14","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"ff46eef9fc1f6982e83c11fd2d39aae5d74e5d5a","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.0.14.tgz","integrity":"sha512-cVBIFvxKgkjUvEYyrm2VpYu5idOA6Yk9k0SYDV+pZXY9bha+jx4TFMdDg4QQj4xfpVUxAHG/luxzng+NYDrnCA==","signatures":[{"sig":"MEYCIQCiyydXNb3BeQ7yesTRFHzRhMP2NJw9DAXPRs+Y4kYZ/AIhAOeZgaoOj8DpatvFDbHd15RpaIdS0c0cUGkK5QbMco+E","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"ff46eef9fc1f6982e83c11fd2d39aae5d74e5d5a","engines":{"node":">=0.10.x"},"gitHead":"1dda196a5feeb3ce1d6977d87fb710581810175d","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.11.3","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.12.7","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*","bson-ext":"*"}},"1.0.15":{"name":"mongolayer","version":"1.0.15","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.0.15","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"7e817876e7e739ba3d818ba95f9420c493399125","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.0.15.tgz","integrity":"sha512-bTZSaJ0eGBu9QRAmBzzcoLIlxbRcu01vTd9m1cccPzacH4EgAoJxVfDUUSU7WI3mOY3dPPWZXAOLs/1jA+MYlA==","signatures":[{"sig":"MEUCIAwyaUQ3LA7yYx03cHvJe2Ai74WhM/WRQ+9FFV06fEKmAiEAiiexrfGgFZShQhoYzruS0UwKWsZbeeEppMwqetdLNpA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"7e817876e7e739ba3d818ba95f9420c493399125","engines":{"node":">=0.10.x"},"gitHead":"57016b1c3f7c46b203ca4566ca8cc3fd560c3cf9","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.11.3","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.12.7","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*","bson-ext":"*"}},"1.0.16":{"name":"mongolayer","version":"1.0.16","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.0.16","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"3fdd989efbf9d88e6afbb2bc546f6d7030dc3278","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.0.16.tgz","integrity":"sha512-iu8cUrOGnYAqXEqzu+01XDjf8jgZtZYgFpLf07WXmtSIt3e9c3gkh7r990nVtEWzfl7nK0dVmGLDsjAVWPg33w==","signatures":[{"sig":"MEYCIQDhO0VQHT+4kIi2uc/eUDH5nci0Toe2Q1cr9yV737aEdAIhANDmYeHTRyqy/vLJw082hpK+P294ygsO4jNqFM7ydf1g","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"3fdd989efbf9d88e6afbb2bc546f6d7030dc3278","engines":{"node":">=0.10.x"},"gitHead":"d402a9f69706efa6b91d898be118da1bdafa996b","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.11.3","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.12.7","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*","bson-ext":"*"}},"1.1.0":{"name":"mongolayer","version":"1.1.0","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.1.0","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"5a5a0aac89a6f247f76deb9b129f185b2064f7ae","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.1.0.tgz","integrity":"sha512-Wy6O8aUB7PzMfY7lAhO9i/7kb/J6EufPC0uwsqUErSOGB1gcOg9228Wj0fmxwwgWGr/F/mxNLQOOfCVUIabktw==","signatures":[{"sig":"MEUCIQDr8HrdflprYbmxe1YFWkd0C8ltxXc6p+yNtWGm77+Y8QIgSDeM/ZHkw6si0Ldv5vSKFvmRY3LlG7gJulRF7sXuENY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"5a5a0aac89a6f247f76deb9b129f185b2064f7ae","engines":{"node":">=0.10.x"},"gitHead":"fbf777a6ff2ef67244e0a49e6b361d4ad0c8f696","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.11.3","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.12.7","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*","bson-ext":"*"}},"1.1.1":{"name":"mongolayer","version":"1.1.1","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.1.1","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"214c9251c899e9d83c06da33c0fe2ac6543dad9f","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.1.1.tgz","integrity":"sha512-BYre1PBJFsgCGcETv0arPACeDGSLY6oXVjqf45nWfUWzKWee34WjlNzSr5yDLKioYSV0Y3Sv6G+FR/jInnNMaw==","signatures":[{"sig":"MEUCIQC1oTGurDA2z8UR5oJa8U9IAnM5Yed7LKo0lAPqiiUaIAIga3pMgl+NtSloPkxKx2zYV/EHA/vTVUzI6Ww0rlZ5m4I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"214c9251c899e9d83c06da33c0fe2ac6543dad9f","engines":{"node":">=0.10.x"},"gitHead":"295952788f17f0772467fe91b0dae7ebe611d0ec","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.11.3","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.12.7","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*","bson-ext":"*"}},"1.1.2":{"name":"mongolayer","version":"1.1.2","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.1.2","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"f397d99f72af33662f947e6475b37deb97eca275","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.1.2.tgz","integrity":"sha512-m8GL2NvaHus5rwm2rnC7htb96aqNREoKkXoQfVnXX3GDWKm6R+NntaK0F4l+X5n9hLvzaTCp+y9/Vkf/sMEFvA==","signatures":[{"sig":"MEUCIHt4t2ru6rqQoOSzaGf9fHmUzdljXG4HSdHCIZUsAyTBAiEAm9C453mXvYxl/ARv10Bif7fkfrnzdHn9JqY87NsOcII=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"f397d99f72af33662f947e6475b37deb97eca275","engines":{"node":">=0.10.x"},"gitHead":"5c7110b58b95af8a673592a4a7b03d52b452dcf0","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.11.3","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.12.7","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*","bson-ext":"*"}},"1.1.3":{"name":"mongolayer","version":"1.1.3","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.1.3","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"981b83215c7a1dace8b970fa6bb5d988f2b2b61c","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.1.3.tgz","integrity":"sha512-maGh+drJcNbBqH/wf6K/Ze5oyRC/Y3AsWhM0I34XkYoPLisizi3QlFABG9cqZsxqZfmlQ05ZGUF+I3fpUBWWeg==","signatures":[{"sig":"MEQCIDCuPqRnH8VbEykt7ItYwtr+DVZ9pnXrhIWGapfEldhuAiAsy8TApi6unx99iSzWjnoGG24XoJOM48QSZpjqkc8CCg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"981b83215c7a1dace8b970fa6bb5d988f2b2b61c","engines":{"node":">=0.10.x"},"gitHead":"9d3722acc83d15881b0829192163cde87e813476","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.11.3","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.12.7","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*","bson-ext":"*"}},"1.1.4":{"name":"mongolayer","version":"1.1.4","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.1.4","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"303063cd9026f787f1b7f63612c15821a43791e6","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.1.4.tgz","integrity":"sha512-DCuYTUfNTC9Rn+nAk0DhuB9dgZIIxC0MmgxpSOlIOpCALo+wKAK14482zNlcumn97w7iAYxlYyv/ZM03zAS+Dg==","signatures":[{"sig":"MEYCIQC8leyVPEy0AZhS+Di0VUcOm6GyVH/2ngRCjms59QOYzwIhAJhG9I2/I6mKz6xJ33nfqH3jXTk9/su2U9QSq0+7S3AX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"303063cd9026f787f1b7f63612c15821a43791e6","engines":{"node":">=0.10.x"},"gitHead":"030392a6e707fab5e7a42e859d44484c40f3d4fc","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.11.3","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.12.7","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*","bson-ext":"*"}},"1.1.5":{"name":"mongolayer","version":"1.1.5","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.1.5","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"e33ed69a2c0e139272f357d6c7468769451ade6a","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.1.5.tgz","integrity":"sha512-RQRYW1bEM4/gcdVmcI1ygf4x8nQRYwFnF8781LwhFxxVl7OehNougUrQB/VfySdxDdD02WgCAfVrmCimlqvfCA==","signatures":[{"sig":"MEQCIA88IyJ0f4uoAFhQs+aRQo4ONMK9xamBgQtzGBzaMiBfAiAG3/JwiyMEWX6R60xH3FYi5m5hAuV9d7ouHUAtb7sp6w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"e33ed69a2c0e139272f357d6c7468769451ade6a","engines":{"node":">=0.10.x"},"gitHead":"632611c227931dfe6d943c4a05cf27303025006a","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.11.3","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.12.7","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*","bson-ext":"*"}},"1.1.6":{"name":"mongolayer","version":"1.1.6","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.1.6","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"b03c7f228d884a8fa57f0dc0e99260ec0a61dd9d","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.1.6.tgz","integrity":"sha512-sHRUgPFGrY2m69aH20dqFs1x6nJiwhkm6ZD8HYCJ38WF3+dWU2wmfzHfSq6Q9dIHE6h3TJ6H/UBb9wP/lw0APw==","signatures":[{"sig":"MEYCIQC7O6p0nRyYK8xmXlwBDsF4kQdmys/FvptoKYNxU+Jf/gIhAOuVWipTKDqrRc38pNDpGamTWt+IExANMJe38K3mftQH","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"b03c7f228d884a8fa57f0dc0e99260ec0a61dd9d","engines":{"node":">=0.10.x"},"gitHead":"ffad1b96b4690933823f768a6c401e498dcb0538","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.11.3","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.12.7","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*","bson-ext":"*"}},"1.1.7":{"name":"mongolayer","version":"1.1.7","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.1.7","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"e89923352135c6416bc1a1ae53085ba0d5974827","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.1.7.tgz","integrity":"sha512-jjVYfM1nKbeqibG59XQAXFeSRwJhr+/FYvvZr/zhtpVTnzIt7CgdXa5LL+WUnj+JxHBNYdSrGmfRI7FpdWx8dw==","signatures":[{"sig":"MEQCIHZbTq8Ej8GfwZVMIow3RITGzAj3Nw9vEgO8PuiRehQGAiBJ10uW7tWEHiF8dqiwwPp+6by3dFxH640smn+x+v+ZsQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"e89923352135c6416bc1a1ae53085ba0d5974827","engines":{"node":">=0.10.x"},"gitHead":"003b2dfc1b09c536f391903c61860087316d5c9b","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.11.3","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.12.7","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*"}},"1.1.8":{"name":"mongolayer","version":"1.1.8","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.1.8","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"a7825e9a340e4a7da7f838dc41b86861c435ad3a","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.1.8.tgz","integrity":"sha512-VhunxgaV2hza6jr8doxG1OtmKOqJEpOCPYOMVIq9nWB870ztDnUAlei0wtbC4ShZQ4vtuiHBxUebgIX63RAOoQ==","signatures":[{"sig":"MEUCIQDdu4LK/6BDGS85ydPVIeesbxr7SRkayG7IpYcx4Av15wIgam/ek/kJrS9puP1ck3ie7nh6xM1lyYDS7Xa48GX8mN0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"a7825e9a340e4a7da7f838dc41b86861c435ad3a","engines":{"node":">=0.10.x"},"gitHead":"0c98815e2c7cf344f25e4bced6168577570d9a25","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"3.3.5","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.12.7","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*"}},"1.1.9":{"name":"mongolayer","version":"1.1.9","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.1.9","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"c1b04f6c1870b2bc19208c0771223a740bd364a2","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.1.9.tgz","integrity":"sha512-DGopcd+2NsX2csEN2MVaFV3CJe7SlTPEoqjhFrHRkEKSc1vXzLmD8dLwO7O3Ms+YywvAmDq0tz7wg3PxonsZJw==","signatures":[{"sig":"MEUCIQCA2Y0RSC3ddDYOv9eaHfDs+pcI+y1rKol7B90lu6MZ/gIgJfTvevKyY9Om/wH34+nGM633SitbEcSQj+o/grHHubA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"c1b04f6c1870b2bc19208c0771223a740bd364a2","engines":{"node":">=0.10.x"},"gitHead":"38b64d4cd4afab73977dfa55132752d6b220638e","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"3.3.5","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.12.7","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*"}},"1.1.10":{"name":"mongolayer","version":"1.1.10","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.1.10","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"941612fd32b9b5875e6d6fee9121211fe4c408d0","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.1.10.tgz","integrity":"sha512-PzPg03PGS1dWQNVNqIjf6OZjwz5g8D7Arf3g7mT+dinoFFXUjjMLJRDXAB5pi1T6t1ft953d0xO3/Idzg3vWEQ==","signatures":[{"sig":"MEQCIBe/eILXfmtz0PaW6sq1627KF8KEj7VcS/Xu8QMnFciSAiBDbNq/6SdOf39cKaI+It8/c5QbV79aJFmQq7sSmutrCQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"941612fd32b9b5875e6d6fee9121211fe4c408d0","engines":{"node":">=0.10.x"},"gitHead":"38b64d4cd4afab73977dfa55132752d6b220638e","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"3.3.5","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.12.7","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*"}},"1.1.11":{"name":"mongolayer","version":"1.1.11","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.1.11","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"69be7634faf2c7dd9f8f61e53bea538fdb0faab6","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.1.11.tgz","integrity":"sha512-dPqEN8AFJ0Z4qFOhyJ+zKwCX++p6Lazy+ipUSbYl+dl+aFFp/InQrxtxiBp3Tb4ewM18UuKp9tFgK/d7YCiYDw==","signatures":[{"sig":"MEUCIA+GAAy7iOPaJSIWk+w1x/eGxMiJZ/ztE5xNO3KPzEPTAiEAqUmfLgFsDI+ppmjnfMuFAT+b4M4vMTMNmMuH9FhcxR0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"69be7634faf2c7dd9f8f61e53bea538fdb0faab6","engines":{"node":">=0.10.x"},"gitHead":"2ad529cc22498c94786031be570d63e01d14e5aa","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"3.3.5","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.12.7","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*"}},"1.1.12":{"name":"mongolayer","version":"1.1.12","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.1.12","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"93f37f7fe9d2ab6d381b5eb4e53cc91a824c64ea","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.1.12.tgz","integrity":"sha512-pfK/JMTKThG0tMGGld7S2QVYoUDtr86/t1n4++S4zgjrjVrjZqhagw8YfanZH8l6E1qpvA3xQLsUxkZF7S8A7g==","signatures":[{"sig":"MEQCIBvpK4rKbxtD/37dlQ3hH9PT5YLd0SGjov0epn+d3cmEAiB8lO3vtltFlemXAPZCa4E0We9HLJGmXC982gAblSGI8w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"93f37f7fe9d2ab6d381b5eb4e53cc91a824c64ea","engines":{"node":">=0.10.x"},"gitHead":"4be790cd30a1fbf2dbf27f47bdabda40675e8f1a","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.11.3","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"0.12.7","dependencies":{"async":"*","extend":"*","mongodb":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*"}},"1.1.13":{"name":"mongolayer","version":"1.1.13","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.1.13","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"c60b73ea966b6267246a341f72e7c580cf7fe9e8","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.1.13.tgz","integrity":"sha512-Mb4eIT0dnV8+31SRhBLRyVSo0XlYjwJlmL3CQ8kcEhijgI/U4viM4WyVF027FUTQHw67r6osi/fmVyGI3EMghQ==","signatures":[{"sig":"MEQCIAHB9uR/8eRIOeOVm7aiz1p3k5YOSBQv9MX/N6ov3Xs3AiBauQmNy3bHqG79VfNr2grliCcv6LV0mu1icbTET24N/w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"c60b73ea966b6267246a341f72e7c580cf7fe9e8","engines":{"node":">=0.10.x"},"gitHead":"89e823b8a4aeba34335f6ef00fddfcbf3792e0c8","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"2.14.7","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"4.2.2","dependencies":{"async":"*","extend":"*","mongodb":"*","typecaster":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*"}},"1.1.14":{"name":"mongolayer","version":"1.1.14","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.1.14","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"1fb6a43d58fcd7b32a625198ce0e4a1609744aa0","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.1.14.tgz","integrity":"sha512-0kLOTqScdWtj6rblmP++EtVoRgBzh/LXTRk1+jeDthmifONAA2bY9ivWXHXQ5HHaZbPbaSj9Owjv9R6vSJt+5g==","signatures":[{"sig":"MEYCIQC9WPOytDPuK7vp7RGXTHnj0lf0wfNTy2/6mRpn1N0FKwIhAINPUIIyQDymPEh4SaiWIKDhp83n9tDw+qzQmnNxzPNn","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"1fb6a43d58fcd7b32a625198ce0e4a1609744aa0","engines":{"node":">=0.10.x"},"gitHead":"c630447b869e77543ab6cb443edeaa9b7a9d1db5","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"3.3.12","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"5.3.0","dependencies":{"async":"*","extend":"*","mongodb":"*","typecaster":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*"}},"1.1.15":{"name":"mongolayer","version":"1.1.15","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.1.15","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"4c242a84c5bf1ac980e819dfc87b1e65367f3819","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.1.15.tgz","integrity":"sha512-6Tz4mDsKXfXPtJm1t4HQ6WtQdK0k1HpKCWsDQI7TM7mG7lxy+V0/l8TpyAPLjyLwEmAY12ltFWTddgWtRUqwLg==","signatures":[{"sig":"MEYCIQDq10WBJn5bTYQAUxxtFHQFqN1AVGuTU/NLWT+BnehQ3wIhAOUusOjCkPAYuZhBM6ref9T20io1wmFy/k/CLd2XzlBP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"4c242a84c5bf1ac980e819dfc87b1e65367f3819","engines":{"node":">=0.10.x"},"gitHead":"6e21f081e9896325ff76ad256079ead2b02a66f1","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"3.3.12","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"5.5.0","dependencies":{"async":"*","extend":"*","mongodb":"*","typecaster":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*"}},"1.2.0":{"name":"mongolayer","version":"1.2.0","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.2.0","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"3697bf074800667d38ef9aa6ffab7e84ee61f0bd","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.2.0.tgz","integrity":"sha512-dbkQrIZnd+mEbv7rlox/toiZGOZQiAppME3HgHX9XIjbrvnX8zOEsTeiwspO7nBKQPWtXPVNRUXl2V/QeNOrww==","signatures":[{"sig":"MEYCIQCJoVaSCM6wTsUCpeGepWdC6iSBEiuQQUHrVnJklF2vUgIhAMChcyIr0Hma702JZ7N8CfvkrnaHZOch+E0CTe11a39s","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"3697bf074800667d38ef9aa6ffab7e84ee61f0bd","engines":{"node":">=0.10.x"},"gitHead":"aa10bd66d7d131dce24c9675fb7eabde0a64c49b","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"3.6.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"5.6.0","dependencies":{"async":"*","extend":"*","mongodb":"*","typecaster":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer-1.2.0.tgz_1456185167961_0.5772579533513635","host":"packages-9-west.internal.npmjs.com"}},"1.2.1":{"name":"mongolayer","version":"1.2.1","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.2.1","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"b74963155fff1c6a4cd87fb3610ba75769bd8dc3","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.2.1.tgz","integrity":"sha512-RZFrUfHGIt56w/pewm9fS9c8/0GVE9pehOfp13207VmFCRG9wHv8xhnLyJZ4jVhKvHT8qU9RSNOI85olA+IF4Q==","signatures":[{"sig":"MEUCIBkb6R2rYKFo++BsOrXVHNz0L+JmjWR206sE2TLJfM05AiEA2s3aMVyXI6Lk/rxsezHhhIxVepscfjl6qK5BFaKNVN0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"b74963155fff1c6a4cd87fb3610ba75769bd8dc3","engines":{"node":">=0.10.x"},"gitHead":"b6546d06a2c81c9b2ef7341d414a9c578ad30c6a","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"3.7.3","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"5.8.0","dependencies":{"async":"*","extend":"*","mongodb":"*","typecaster":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer-1.2.1.tgz_1458258747088_0.18885099561885","host":"packages-13-west.internal.npmjs.com"}},"1.2.3":{"name":"mongolayer","version":"1.2.3","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.2.3","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"d6b4dbd236d2b567e13a80bb473d9890c1fa1aac","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.2.3.tgz","integrity":"sha512-s7BEijBS82umh176bsZBwgqM+Dw1ozhNmTksRMaoj8qGRhAStYzFatAEfopQiunmei5svvau0X/c+/8kUTnnEA==","signatures":[{"sig":"MEUCIQCCiOsG+/1YWM34g7YHok7xyIsWwKCiriklea+8mKoFXwIgT+8KkLRPbsAsN47aoiS/2vCnS7aaknTAkRITMR1KfKg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"d6b4dbd236d2b567e13a80bb473d9890c1fa1aac","engines":{"node":">=0.10.x"},"gitHead":"6139e5af100ae6a25aa97da696d7d03630b0bd73","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"3.7.3","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"5.9.0","dependencies":{"async":"*","extend":"*","mongodb":"*","typecaster":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer-1.2.3.tgz_1458774367124_0.700092307291925","host":"packages-12-west.internal.npmjs.com"}},"1.2.4":{"name":"mongolayer","version":"1.2.4","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.2.4","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"69dbeb3597ea7d793d64b9351cdc6d5a81360f93","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.2.4.tgz","integrity":"sha512-zOvmtdWNr8mNM3LvUWvG2HX41de4qhCMP+CmN+tEpkZ0Rvwg7QzRzVC1DUFHQYtiueo76NqcQmUO2nRWchTm8w==","signatures":[{"sig":"MEYCIQCikCovegetDnhSa9n/yUxVHApchm6700OomRLRUGLPrQIhAKg3mKiAhIVpvkmJtXSDros1Hrv49kSgRR0RRLphgIMU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"69dbeb3597ea7d793d64b9351cdc6d5a81360f93","engines":{"node":">=0.10.x"},"gitHead":"a430ac9d83909b6891e7db3e575e6e25267b2c3c","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"3.10.3","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"6.3.0","dependencies":{"async":"*","extend":"*","mongodb":"*","typecaster":"*","jsvalidator":"*"},"devDependencies":{"mocha":"*","request":"*"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer-1.2.4.tgz_1469058366707_0.723358501913026","host":"packages-16-east.internal.npmjs.com"}},"1.3.1":{"name":"mongolayer","version":"1.3.1","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.3.1","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"c6fb8d2eaa7e47abbb6a0748396b769152201951","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.3.1.tgz","integrity":"sha512-EkJqe7yZPplXGgbcp+8G3FPWGvJtv1PEle62v5/QTz2j0HDuAZX802M23QNij/k59EGPJn/1awbmVuQdG1/PGQ==","signatures":[{"sig":"MEQCIFfZYuSDvQUuwkV6i+A0ylsuCYjW4atXLAshYQFO94MIAiAIQD0D21KduwFgTFQxyw+0stXnM2X0ZVKeSyRB+T2jFA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"c6fb8d2eaa7e47abbb6a0748396b769152201951","engines":{"node":">=0.10.x"},"gitHead":"8d67d05cc526391aeaa9a94b5d8a77ab29c747f2","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"4.0.5","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"7.4.0","dependencies":{"async":"*","extend":"*","mongodb":"*","typecaster":"*","jsvalidator":"*","simple-domain":"*"},"devDependencies":{"mocha":"*","request":"*"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer-1.3.1.tgz_1485219278727_0.8399800572078675","host":"packages-18-east.internal.npmjs.com"}},"1.3.2":{"name":"mongolayer","version":"1.3.2","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.3.2","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"d2ac5129f97e45a125b5ad472ec84c2b30be4745","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.3.2.tgz","integrity":"sha512-X5V7xqk2m9cnfXjPXBtHO9SmX45U+b0fSETbsrIvN3XlWxUfetZB0+3Nmt5dx/tYQ30MGt8cw8Pe1yalVpMm5A==","signatures":[{"sig":"MEYCIQDGu3aGqFwOZn4AT93F8NgPUtNaz2jnMyVQS/JJahN6gAIhAPuzs8TMUGC7LaunLaJp/0F8w8qHpQZNdc5L9OVAspn3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"d2ac5129f97e45a125b5ad472ec84c2b30be4745","engines":{"node":">=0.10.x"},"gitHead":"ca280edcf3dd315133240f989af7f32c42e2f9e9","scripts":{"test":"mocha --debug $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"4.0.5","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"7.4.0","dependencies":{"async":"*","extend":"*","mongodb":"*","typecaster":"*","jsvalidator":"*","simple-domain":"*"},"devDependencies":{"mocha":"*","request":"*"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer-1.3.2.tgz_1489429395478_0.3719453550875187","host":"packages-12-west.internal.npmjs.com"}},"1.3.9":{"name":"mongolayer","version":"1.3.9","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.3.9","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"2679729092f7a0825c1cd64ad47f80fb929cbd58","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.3.9.tgz","integrity":"sha512-+2mHWCS/VGRi3dkVHyt4nsxSvE9G+DIoJNSnZN8oBKQF5vhJVmg+NerOnm+lRyXBnqHNbQ/LtzNDK4BWZdQxBw==","signatures":[{"sig":"MEYCIQDnMwjPu5ZXWDIEnGcAEiF/yhJzEV7rbcrNR2z8u94q6QIhAIAxk9rxC2Wggp+HeZ0XcvJMY29rVmyrHvpOTv0MJ4rR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"engines":{"node":">=0.10.x"},"gitHead":"d35ed2ad4784ba6f42c3ea81f90f1c7e1957d870","scripts":{"test":"mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"5.3.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"8.2.1","dependencies":{"async":"*","extend":"*","mongodb":"*","typecaster":"*","jsvalidator":"*","simple-domain":"*"},"devDependencies":{"mocha":"*","request":"*"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer-1.3.9.tgz_1500671164301_0.9594317751470953","host":"s3://npm-registry-packages"}},"1.3.10":{"name":"mongolayer","version":"1.3.10","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.3.10","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"3155dca593e47a83f3a121ab0b8060c0be46a4f4","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.3.10.tgz","integrity":"sha512-l1DHE2f0Z0SUSpkH6bOkg+lGmCvK+3akVrbCNFTRVOpAZzd3szLk33YyNL9wXvzrGV/NNS5CKHqTRkdGmsQmhw==","signatures":[{"sig":"MEYCIQDY25mtrf+h5vFIUqJrBkJsxNa7gYJz7Pmv0vtCWXa7agIhALYqpDyo6KF5ArCbiG2qp3VMZoVwLMPmf9/o6E31onlN","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"3155dca593e47a83f3a121ab0b8060c0be46a4f4","engines":{"node":">=0.10.x"},"gitHead":"1d30d90187614259a67974623c5af48ec70d07c2","scripts":{"test":"mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"4.2.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"7.10.0","dependencies":{"async":"*","extend":"*","mongodb":"*","typecaster":"*","jsvalidator":"*","simple-domain":"*"},"devDependencies":{"mocha":"*","request":"*"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer-1.3.10.tgz_1500926012451_0.041220591869205236","host":"s3://npm-registry-packages"}},"1.3.11":{"name":"mongolayer","version":"1.3.11","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.3.11","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"6fd4eaba7305f0db2f624f471b7cf41aaea07409","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.3.11.tgz","integrity":"sha512-KLeMRy98NFX+e/ogocjspzmaVpQo6GgNADoBdUWWMgKCiPZOvGGfceTlN0VJ+NsWIdFX5RoAJFCVwQbv8SUwDQ==","signatures":[{"sig":"MEUCIAwUE0x4qDwDFWc+uN5CEejvFaGoNeVVVUG0jZFHP6zrAiEA1dsKZOLDhLYymfSv6QhtcZ2BtXAfaXXumC5f46bbI7o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"6fd4eaba7305f0db2f624f471b7cf41aaea07409","engines":{"node":">=0.10.x"},"gitHead":"fd8cdeb98ed81aea3b0b01b081dc68bdd08520bc","scripts":{"test":"mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"4.2.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"7.10.0","dependencies":{"async":"*","extend":"*","mongodb":"*","typecaster":"*","jsvalidator":"*","simple-domain":"*"},"devDependencies":{"mocha":"*","request":"*"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer-1.3.11.tgz_1500946664408_0.5687489528208971","host":"s3://npm-registry-packages"}},"1.3.12":{"name":"mongolayer","version":"1.3.12","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.3.12","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"4411c1730167ed1bbbf7b5468125d0639f21d096","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.3.12.tgz","integrity":"sha512-uhUiLrfX22EydtINaEdJQG+1a4+XMeTQj+Qc+Hg6GWywwEKUFGswDpJvHM6whGE9QwbnvBwa2sOkm/SRC2SmOA==","signatures":[{"sig":"MEYCIQCD3tRVLK5WqMrhyf6yQm3rOGeaeRgShePC1iIhQPylEwIhAIlDGfgJqwmGRaukglEOLLXua0dO8dT/VCysINwfBTwi","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"4411c1730167ed1bbbf7b5468125d0639f21d096","engines":{"node":">=0.10.x"},"gitHead":"356028059fc7e0ca782648f5b5a44c5b235b9e5b","scripts":{"test":"mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"4.2.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"7.10.0","dependencies":{"async":"*","extend":"*","mongodb":"*","typecaster":"*","jsvalidator":"*","simple-domain":"*"},"devDependencies":{"mocha":"*","request":"*"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer-1.3.12.tgz_1501001227617_0.31186326988972723","host":"s3://npm-registry-packages"}},"1.3.13":{"name":"mongolayer","version":"1.3.13","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.3.13","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"fd2c4441e9f750de8284f67a318729ffcb22d449","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.3.13.tgz","integrity":"sha512-g4z8GTIX42gHsxhZ7RZn93JmajFsKqtDNZjwRmrlKUShouPC05C4zqB2EwX7WLP1l5oMLCFnH1uq2okEV662Vg==","signatures":[{"sig":"MEUCIQDOx/qpP10HUSljM60EV/k3a5Qg1zUcieOWcTnC9Pq8wgIgeTHaGZrwRy4PlV81sWQmk0+JzF/lrHISacrCfPbeVbk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"fd2c4441e9f750de8284f67a318729ffcb22d449","engines":{"node":">=0.10.x"},"gitHead":"63eef3507879a9ab8011366941f635b18e175d73","scripts":{"test":"mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"4.2.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"7.10.0","dependencies":{"async":"*","extend":"*","mongodb":"*","typecaster":"*","jsvalidator":"*","simple-domain":"*"},"devDependencies":{"mocha":"*","request":"*"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer-1.3.13.tgz_1501111951675_0.7401568964123726","host":"s3://npm-registry-packages"}},"1.4.0":{"name":"mongolayer","version":"1.4.0","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.4.0","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"f88d2b0cd7181d0594ce5877c13ef4c2771edfef","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.4.0.tgz","integrity":"sha512-IGu2ZI8OHQB1mlgDKac6tq2jwqKGQoUbZGjPcE++XihZCL7wG4KU4tqqLCZQSnMott2H/sauMIbL4DfWIkWUtA==","signatures":[{"sig":"MEUCIQCd2xCOE61y5f+ojoHVPYYNVbrGm5s2RA6NG0/JaNESNAIgaGjs3fUbvn4GH2hsUxKIZvWcW0lVWShi5hebTh6gYjE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"f88d2b0cd7181d0594ce5877c13ef4c2771edfef","engines":{"node":">=0.10.x"},"gitHead":"46aaa6c7750874247c4edae27742519a59676537","scripts":{"test":"mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"4.2.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"7.10.1","dependencies":{"async":"*","extend":"*","mongodb":"*","typecaster":"*","jsvalidator":"*","simple-domain":"*"},"devDependencies":{"mocha":"*","request":"*"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer-1.4.0.tgz_1501783657922_0.7139052865095437","host":"s3://npm-registry-packages"}},"1.4.1":{"name":"mongolayer","version":"1.4.1","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.4.1","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"f37375144768f33ced096e988d971f5dc69af7e7","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.4.1.tgz","integrity":"sha512-AG2b4tW2rpPg6BdumQzhdbPVLgidPqmAg9HBAjf1yQf6YQRrP9i82zDXghOW/magf71m6oHIgTjmQ9/9inqKTQ==","signatures":[{"sig":"MEUCIFVjNQOM9/9OReuOa1Wst4nVKugjlFGBx14mklWhx+L/AiEA1kk8JgLRAP7pYZkiECU9E937MnducHsDScj4KLKEiTQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"f37375144768f33ced096e988d971f5dc69af7e7","engines":{"node":">=0.10.x"},"gitHead":"665ceafb8154fc842c5735bff070b73ba9de30cc","scripts":{"test":"mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"4.2.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"7.10.1","dependencies":{"async":"*","extend":"*","mongodb":"*","typecaster":"*","jsvalidator":"*","simple-domain":"*"},"devDependencies":{"mocha":"*","request":"*"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer-1.4.1.tgz_1501879407694_0.1769874037709087","host":"s3://npm-registry-packages"}},"1.4.2":{"name":"mongolayer","version":"1.4.2","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.4.2","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"ad62cb07ab92964312819f92369e867072a667a5","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.4.2.tgz","integrity":"sha512-SANvyHwvPlXbd001ZhXtZ/JMwqnyVHAm0+nj5rUUkRVDBWF+SoccVQeynFDRhceIM+aXxZPyIXXx7IdgQ/6whw==","signatures":[{"sig":"MEQCIHit8Vmi9ImFMNhSHL6eCPwew+afLKqaQylmoVD7Y8lNAiBVixwTsWJXtyvEEdjEoYkGFxZUZS5WKQAKsQytT4M2Uw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"ad62cb07ab92964312819f92369e867072a667a5","engines":{"node":">=0.10.x"},"gitHead":"a988eb70224219d99c664f43acb3ba724f700fe9","scripts":{"test":"mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"4.2.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"7.10.1","dependencies":{"async":"*","extend":"*","mongodb":"*","typecaster":"*","jsvalidator":"*","simple-domain":"*"},"devDependencies":{"mocha":"*","request":"*"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer-1.4.2.tgz_1502321888337_0.05004824185743928","host":"s3://npm-registry-packages"}},"1.4.3":{"name":"mongolayer","version":"1.4.3","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.4.3","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"c64a8d747f14a025513155e7dd92bee6772040b4","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.4.3.tgz","integrity":"sha512-XoZ8Jsx8HL1YArle+wHzhg1sdRWqtQIIeC59Hz813mrUYQn2BMMpyBhr5d8wIHHge5cF655s5IStQVKXuhZJOQ==","signatures":[{"sig":"MEUCIQDcSwh/1L6sVxRpD6kyT0477TXe5U1C6/cDti46My17NAIgPYwMALTgkBP6zpt4roPyvVYN8T5LG7B+So3IhhcF2Q8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"c64a8d747f14a025513155e7dd92bee6772040b4","engines":{"node":">=0.10.x"},"gitHead":"b605d448558b1398d8586159de70a7b93e9c7129","scripts":{"test":"mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"4.2.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"7.10.1","dependencies":{"async":"*","extend":"*","mongodb":"*","typecaster":"*","jsvalidator":"*","simple-domain":"*"},"devDependencies":{"mocha":"*","request":"*"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer-1.4.3.tgz_1505427805536_0.876983824884519","host":"s3://npm-registry-packages"}},"1.4.4":{"name":"mongolayer","version":"1.4.4","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.4.4","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"bf5c29c2aaa439a75573aeeea7362d970571088c","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.4.4.tgz","integrity":"sha512-2Pave+GDfVMCGIRLspNOiHmcunHzSoG+LaatP8RCiZg3Nd1ObjvNIHX7KMA7PeRRVjlr+Pq4E8w+4kY2yG8RDA==","signatures":[{"sig":"MEYCIQCQ1POGTYJVVrynj9njYlO1vrwX7BxHPLWMYrybUvx1xgIhALZoVnDn/O8CoQRs7opSK0n2DxlaW1PeT2UXzOInEtpg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"bf5c29c2aaa439a75573aeeea7362d970571088c","engines":{"node":">=0.10.x"},"gitHead":"40df53f1941fb1e14f845e538c005906c2d2733a","scripts":{"test":"./node_modules/mocha/bin/mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"4.2.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"7.10.1","dependencies":{"async":"*","extend":"*","mongodb":"*","typecaster":"*","jsvalidator":"*","simple-domain":"*"},"devDependencies":{"mocha":"*","request":"*"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer-1.4.4.tgz_1509466707117_0.564995066029951","host":"s3://npm-registry-packages"}},"1.4.5":{"name":"mongolayer","version":"1.4.5","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.4.5","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"8ffaa52385a36ff7252398571c81c8f462ce62a6","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.4.5.tgz","integrity":"sha512-rL8aMiLS04dSzrPdWS7/OSqvISmqQYTGjffO5/aFRIFJjt6pbSaSL/kNVTEPgbQH37qUup2uskZBq1LH2Pmgdg==","signatures":[{"sig":"MEUCIFvKAlnS+j6Dsm9sQQTWw2Kdc6vCEgPiSkVrsA3F1W8jAiEArQ+/U0/RhjupHZDPqrU7WHck9mpTr8/Ti3jb96Jz+/c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"engines":{"node":">=0.10.x"},"gitHead":"b2f37c23311444638ec549d4bc55539b04a6c3dd","scripts":{"test":"./node_modules/mocha/bin/mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"5.5.1","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"8.9.0","dependencies":{"async":"*","extend":"*","mongodb":"*","typecaster":"*","jsvalidator":"*","simple-domain":"*"},"devDependencies":{"mocha":"*","request":"*"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer-1.4.5.tgz_1511290111589_0.3143074121326208","host":"s3://npm-registry-packages"}},"1.4.6":{"name":"mongolayer","version":"1.4.6","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.4.6","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"d94f7fb287ebfcad3124a8b041bcfa95840d07ab","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.4.6.tgz","fileCount":13,"integrity":"sha512-WPqEpxMKLJ1853Luj0sLppTa3QTS82ChdxcslNUu58IM3PEmC27967qXSYNhGSZJJcdd3k4dSyDIrzqYsJDKsQ==","signatures":[{"sig":"MEUCIG5LU1HJsdbWwZ53zOqIIVnEhM0tLQIRlT2ceIjpFJlGAiEAl+/LTPHqzpMfoAkrrb5H/lFVp3CmKUE5cd1eTpYpTGQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169151},"engines":{"node":">=8.10.0"},"gitHead":"089dffb5a0823837af6762dc4e35f1402a11a416","scripts":{"test":"./node_modules/mocha/bin/mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"5.6.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"8.9.4","dependencies":{"async":"*","extend":"*","mongodb":"2.2","typecaster":"*","jsvalidator":"*","simple-domain":"*"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^5.0.5","cheerio":"*","request":"*"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer_1.4.6_1522276357320_0.037520061311231645","host":"s3://npm-registry-packages"}},"1.5.0":{"name":"mongolayer","version":"1.5.0","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.5.0","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"e4c93c4ece775739f4bf4c3c6629d46ad81aa909","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.5.0.tgz","fileCount":12,"integrity":"sha512-iM54ra3Hhze49mUjJyLUmP/3qgPt+xJZk4aS9eXOMgIacRLW0aorel+eB+wGyTcvf7IXkvyi+zoyM6xWD0bgkw==","signatures":[{"sig":"MEQCIAsFLJWvA+oab5Fv8DRwkguHVa6zEdGvoeFBpIJ6SLVCAiBPNNrFZlzPsZz7qnMlzhMfoofuvVgyAf+Wh9qEcMzQVA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155538,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc2zchCRA9TVsSAnZWagAANskP/1N8KQerXAraduxwociH\nkBI3tEnoyOLBkdnZoJL/dsm8FlzRWjtsXsrGlZfZoytNq6sQm0VK14bDBSLL\nQukQJqlFbmJpEk4lBsgVJ4a1XMxk+ZnpqlqQLOPX6Zh99FYY3D2WhflER195\nhz484xWs47JEW7U27aST7CRgCDV67alciYVjl3dl1IVqPZQngH2fESOiA2GP\nC5HmqfXjAyrksOmwKuBs43b783ermBm+f6jOH0S8gNsDVVGuKoEnbb9iKTiw\nQ4HT07tGM20ucr4ktsOTZQeaUZHCiOFTi+J5VkRtm67+ru/WW7F7FBWAklet\nyuvsIxyk8708cUKQhMD68jMSCy8es9eSPjZktVTD2N0b9fJcmbl6vIOIl6ag\noXNgcV/aLM2CDccxm3qAGe1i+lR5kfWlsiQaINCwnwxlE7a8kdJCIz8cYHxA\nUzSY9wTcBGBYv0yYuYvK7ue7874+5CaiUEDk96SB3blB3Zy0aXKk7xMAENzD\nfI8NXAPgkiPg7sjj1FeOTvDPpAaSuMIpJwNaw55QhG4kNPrA0VDIMRGCZkUq\nNCfY7MwnTn1MFlik8yhDoPkHHyPQcVguFlnh1Th9/BI0hYJ7nSMW+1IS7rw1\n00k3aKfQTkCTwXyMi5/exOJerrAm06JAndID11voASoAHqHM5JEBkwvFtfvR\nAqLb\r\n=Bsyt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","engines":{"node":">=8.10.0"},"gitHead":"85ffc549b43337ca98f40975a18ab6c10916f09f","scripts":{"test":"mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise","docker":"./dev/build && ./dev/run || true","publish":"./dev/publish"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"5.6.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"8.11.3","dependencies":{"async":"^2.6.2","extend":"^3.0.2","mongodb":"3.2.4","typecaster":"^0.0.2","jsvalidator":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^6.1.4","simple-domain":"*","@simpleview/mochalib":"^1.0.1","@simpleview/assertlib":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer_1.5.0_1557870368867_0.13921722401251269","host":"s3://npm-registry-packages"}},"1.5.1":{"name":"mongolayer","version":"1.5.1","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.5.1","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"85ef478a95b2044d30801bcd2db87f09c7eb42c2","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.5.1.tgz","fileCount":12,"integrity":"sha512-u0fvfyHJbfDtOrdSEgWUlJ/l/dBV8MtbCKTqSGxE/3TMuGO0iuXa5JVbWy0wskKI/TpGwDCxefBUUQ8HVZEzIQ==","signatures":[{"sig":"MEQCIE7CRHIuI205mW6P1Gl97BFVwb9/eU5lvU+nQXMwlyqjAiAehn3nYNR6U0K8GAKx2a/yeFcfcj+mBEKlC371hfTnqQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155174,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc22K0CRA9TVsSAnZWagAAjPIQAJT+OresocFy9ZBm3Sxe\nhZ2pbluDMXnigQx6dDU05rZPIXS7d9uTL+y5MsAd5NbCE99VkLaG4ln3MCKO\nCW26OTUij4653oxGFcwocNZQHPa9IlA1RnCqD3k7GwKy0ODgtea7w31om83H\nWvlnn0nl6mdZW3SIvpzzKPOMQnzt8SmzaiqqUn8zHq4M4up5dExRKpOBdSOC\n5TVTt6RqFFBu8WSujf6vsWGqV2x2w71sxTgTotPKdP6nOGJvJS2GahbhKWhy\nIjyFudU/3OE9834Psv/3/corHreD97AVgXWSaZeNdO1IX1VHn024Ppmu1yj3\nOi2EoGXMiLF/ZVL+rALLVyM9A4jc8RY3PeImANhUUepHhI0FB0aJU/Vt5HKS\nxFoktGuhjIk/7L3y5fNvCOO5UyIkiIEBkr2jxioh78yLzE4FD9W9H9gBWdqU\n7Wm+jV/LuLcJOUrrNHubiTRR+IvpzW4SKrerWJNnilza7aiqa9zWkVWw6GU2\nt/K+6VVCWqtryqKA4B/oFWbJp6TEVu7IIjhHrQWqMs4Fc0dsboBh0cZyifFJ\nvVrCRfbH0heNVV9c854VPCB5zItJRh7vo5k/s7uKr0RXkPMKMizCeN3uMU84\nPecWinIrHAttrbAxavI14QM4g4VFRr1SeE08axC5jw8EkiFXz5ERYjYqLSV8\nAho5\r\n=QIR8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","engines":{"node":">=8.10.0"},"gitHead":"fb02613d9fcc8b86c037a4a2106453fcad7e02f1","scripts":{"test":"mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise","docker":"./dev/build && ./dev/run || true","publish":"./dev/publish"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"5.6.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"8.11.3","dependencies":{"async":"^2.6.2","extend":"^3.0.2","mongodb":"3.2.4","typecaster":"^0.0.2","jsvalidator":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^6.1.4","simple-domain":"*","@simpleview/mochalib":"^1.0.1","@simpleview/assertlib":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer_1.5.1_1557881523024_0.6484073771203172","host":"s3://npm-registry-packages"}},"1.5.2":{"name":"mongolayer","version":"1.5.2","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.5.2","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"e8e4bf7f136b1cec3c23a3b0b9a6d765e9892651","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.5.2.tgz","fileCount":12,"integrity":"sha512-vo6+ZflNj3W+Dp8AIL/6gn3PyhajdH1nU1oHSOSsTvyFElU8aPJfBVSb9ZYuITqOpXKQb/QtoG7asQI7C2lKuQ==","signatures":[{"sig":"MEYCIQCd1D/XjZK03fxAi9G0xdOzcJIKU/i8dAOSmeLN6pR1LgIhAKR1VIAPadcXbwmYO5aIyWyWL7EUqvs1/t4TZpcQVzDP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156021,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc3ccsCRA9TVsSAnZWagAA3a0P/3yyCWlskJz4mqJR0C8Q\ngVdzgSDjSn3xAR4OjDtJUZygE6Tg4SZk3tid64YADxMg2hPOnEa0UmMmfSLJ\neWlACu/kb7xhLKEw4kONexC7XNIbghfWHGLBQ1jQS06cftikpm4rCCoJNXVC\n7jM3Lk1U8BOlL5nROwAkhPZDbJfjieGF6wXYF3xXxucMpp/WI86zXTRqbVPX\nJL375dtBy0rMhJg3VDZHdu5BUHOP9kKBbHm3Rjpc7wo9ezEcd2PVDoSRsyO9\ne3/fAb8jSQE+9KUby+4KOCWDpyF7wIX2VroWNRQyy6JXH3jHQpBH/X2B8mhK\nPb7njTM3dJeKSksHy4RsHfS3pEHfLyR7P58n3RbvbrXRfbsGBlxtZi8n/aQM\nsbfe3cpc/TSQhP2cSA75f8dqdli1bsjF3EOrY5+CZwOFGfLpYaLtV2E2c+6d\nJ521YD9EtvkTCpU9Zs10w/bWHWcdHIfn+WDOFgN/Bk6fnITxEEBpLR3RjIDl\nS+7clDbQ3uDrU3Gx9CZU5fuTNFUFVjOwG/KcBfsv8kBY9n3r7kOIDBrsTm1m\n3igTzUUNgrUj7ORJBT8noxdrfLxgN8yy99rNe/IkAghKvbdZTNmSoUAXCQaZ\nujcnrUyy0WwqKMc5TJPcV/DWCFh4VGKKSxofKNfvMUZwqLQSxWSkvGjueaVz\n9jgs\r\n=srZZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","engines":{"node":">=8.10.0"},"gitHead":"1f4a536c331b218c6e6dabaf88586b2e7dfb850c","scripts":{"test":"mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise","docker":"./dev/build && ./dev/run || true","publish":"./dev/publish"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"5.6.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"8.11.3","dependencies":{"async":"^2.6.2","extend":"^3.0.2","mongodb":"3.2.4","typecaster":"^0.0.2","jsvalidator":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^6.1.4","simple-domain":"*","@simpleview/mochalib":"^1.0.1","@simpleview/assertlib":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer_1.5.2_1558038314826_0.5757696840144346","host":"s3://npm-registry-packages"}},"1.5.3":{"name":"mongolayer","version":"1.5.3","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.5.3","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"87f4e5fd30250f8bf5d777577a11b2963363843f","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.5.3.tgz","fileCount":12,"integrity":"sha512-GFXNmlHTvjQ8KWnmRvYUXXEnGffUXBdOZMYEY0N2NpUBR97OG92psOqpzEejLejrl28O3716UmyVquqfqFnl+g==","signatures":[{"sig":"MEYCIQDs8W2LIS7qwONM7jfzWx01biGVEm5ctBU6BCuuW4Of/AIhALc1vSkVQHLWbFTzYzDkWFGUxGsIBV4EYuF7QBT/GEMu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156203,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc3wMCCRA9TVsSAnZWagAANoUP/jrbmxeQvWQd1chrXY6z\nym8QH1BAtXxkh3tJt8No9ig2MCdGCk+k7tPTFZDKtPGuxWZAG+yo0+K25wQP\nivTN7hXENUKvoGivgnkx5CXsj/1iTVUcYrJ+7aJICp/pfCHidJAPFYuHmVaT\nKRfXwaRN69AQdVvmtpJ0/edM7S58s3cPSEXUxT4iOQJk44GFu2J4Hw8W4C74\nBhtmBgTMHlc29IZn/JElORr0WH1K+Txrr1jIVpKbqnMeOsRKi6U/+DTEBi2S\nrku3aBRUii+PJUTiAOAamifN3983nE42gHQzlgNdc4CRV+/sxJ7pg5QAkWEW\nQWGKU96Z5eueRe014G63bO7PywnX2ffhka0gR+4BMVbGTYoffy5LdxUk9H5v\nASvFXPV2z5TX+bJBmmKxgkMU9cOtc6adtjcy1Oj/uw3B8TVrZes5XVnxrMcy\nb8GCCxsrEK3pCJpGQiwRiVyxadr4oIUMph1v3ttZZeBBpvcwr2UdD38BzDrj\nvo3WBCmv83Ks6mWAH4qUbDbQQjBjmz184DkRrV+IsLnwb+ImM4kd65tfKcOH\n8u0vwcJEgXve5fd83HLOA5p7YAxrJevBTrrAI2oTh28GqmlscQU5ym06sHK0\nN1xbIgp59nbzYqK1AFAxGLqYHT/b13AkqQTH73Vjeof3oXl+38hVlaRss9Bc\n/FG5\r\n=HCgS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","engines":{"node":">=8.10.0"},"gitHead":"0c3c910871a4ab513605f357079deede4f5b9144","scripts":{"test":"mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise","docker":"./dev/build && ./dev/run || true","publish":"./dev/publish"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"5.6.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"8.11.3","dependencies":{"async":"^2.6.2","extend":"^3.0.2","mongodb":"3.2.4","typecaster":"^0.0.2","jsvalidator":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^6.1.4","simple-domain":"*","@simpleview/mochalib":"^1.0.1","@simpleview/assertlib":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer_1.5.3_1558119169728_0.6073673218662368","host":"s3://npm-registry-packages"}},"1.5.4":{"name":"mongolayer","version":"1.5.4","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.5.4","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"e027df01509a5f314ff94e14182681316c144008","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.5.4.tgz","fileCount":12,"integrity":"sha512-fwy3AJAcGuUDm0ytn0O8DORRZPxbeLnZMGt49SZX3nrXi5nhG6yl49j/6Xu42MG9LJ5eA2bM1eI6qGY/GP4p8w==","signatures":[{"sig":"MEQCIFknwnZLsdbllIVJv5of4pjCUNLP+WhO43ehWwtX3k4XAiB+6gMkYHYBYyt92hB2lb+NegJ6FKSNaX/qX+7mDQ/kDQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156204,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc9rgRCRA9TVsSAnZWagAANakP/2KVZotMp+VOYyp6NsQP\nrWmYdPcn93RVe5ZZAgN0UDpkS2JLD6l78bmgkOvsD2B2M6jEiiv/j7RkcLZ+\nIUaYb3xG0U+/MpDzaUPS8PmWj2XbRHANC06/HrC4afYCUbHwSBecjzfXWUgc\n6d0N/JvJPY0UtaS3GF9c/nd1NcdFcgIoqCX40TGpMzholQpHuE3UdrYQtrcm\nRxo+IDoxrUbIZJzLgRVL4wyuUU0Tvt70uAHlQ4+70UjZvN1S+T9q0qXu9/uV\nswMbEAsvIIwP4jC1nIsZzFRLSqtOJ7NiKm7maqvNFioBqljpaNoXKOGzZ3Tz\n7gMdeyaCKpjarsy5XbDfDYjsJVHNS2OuiK1j27OxnokhgQeOaCHfJv8x5Hzm\nBpEVMl/i8b8saHaP89IcDyMH9juqvOVPF3eP52Teo2NA9qtpJljhxkzJfpEf\nVSOw4mZo5U1w40F4E57JKrUVowFknRuiebs5Zr+2dGQBWN/cvOjOQKKa5Ejv\nvH4jSUOu7yBCsAgKFLE11AswtOW8Zwn2UoyaEI3PhBl5/kjE+1z9Bqcrmv7R\nCxVNV7wWi0Kl1XqNqb3qDKxYK8IYg97wwxKjHzSdYxGCg/w9x3WdPaf99UGQ\nMKlCvbpDfCNDz858abqjAnw1Nve4IBhme5pDxnIMc2gdmyT1qLdHg9zWq56n\n8F3p\r\n=XGnt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","engines":{"node":">=8.10.0"},"gitHead":"d131d7a0a32a8afa70d9b6c0e2b2bc11d3918e8c","scripts":{"test":"mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise","docker":"./dev/build && ./dev/run || true","publish":"./dev/publish"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"5.6.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"8.11.3","dependencies":{"async":"^2.6.2","extend":"^3.0.2","mongodb":"^3.2.7","typecaster":"^0.0.2","jsvalidator":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^6.1.4","simple-domain":"*","@simpleview/mochalib":"^1.0.1","@simpleview/assertlib":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer_1.5.4_1559672848867_0.6548402350594784","host":"s3://npm-registry-packages"}},"1.5.5":{"name":"mongolayer","version":"1.5.5","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.5.5","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"1ed563fd39f80e33dbc39c5d0bc8c08251d156bd","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.5.5.tgz","fileCount":12,"integrity":"sha512-kJH5vaOZR71y60jhgqOLA9qFm5XwhRZ9g2bWMe/3OTFbkjjgZnMLJkFIHS4twBuBdsdXae1HLSJmcP97rHujMQ==","signatures":[{"sig":"MEYCIQDpSW//5wZYZTqmm8C3IIDgzNTvAf9zxQrmbVVmTleZKAIhAIBVhD6GCxZodFctsSONO9wL+e8WRpE5LDrB5BwWhWX2","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156191,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc9rrsCRA9TVsSAnZWagAAzxcP/3GuuZPDPiwDDYp833fj\nHu2xuSUFB0LC95Z6nUgQQUOGtUM5O/bBIYTiFyU3/K7aUy36l0fsF61GNjhI\nMy93p1iaKsI/Q1SHTlcpenCK3+vTqVERSBHck5L3PBio2myJuH0mA4AjXaj0\nKYOOjGyTtqMdNhcyd8Rw+9JMll7CFJRfZ25/1unN12YEWop/wV6Q0AdJUd2M\nQ55svYNzsmCK5cTYXel/p1T1KQv82fIwx7rlUjREg9WbtXzo11F8q2tdPwl+\nNNB8L2IKL1U5Dg/v9qyu0y93zNHdww3TOD2jFckPBng6KhsKBXA9MaYswqq9\nCUXL5H/FzbG2I5O3rszR7L0rNXmZGh4k5vu7jD1RLclC2mDerHvWtdvTf66J\nEeEy4Wm3db+hZbWge/jiB93U2JY8cpfkKpeqzNQ7RMQp/YrBb3MB5tKAXAVX\nCmkgqL8qtOdUUXJBg1U/AsjKoQOh78AwnmpI1r6XwOufreU5Kh2hPlOrt1ef\nHLCqU4YZJX+ZG2XnuRLHUOpwLPzR2SE/bAkzadWKiqes5DZ/xdW2SJSAH+q2\nhbZxi5Z+hxmIZrb+9WZMt+16Kt4oHDqPkrN/Z5lpiT1pA2bY0so8ZZYBAqD3\nqogunkh6nMmWnbswdLovZ0CA424PW5QJznYOsv8jScw/lliTtsz2FzCaplOA\nBh4h\r\n=Gh4Y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","engines":{"node":">=10.0.0"},"gitHead":"7b1dedd30d570f2f56af5ade5f305cd4efaa0f5c","scripts":{"test":"mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise","docker":"./dev/build && ./dev/run || true","publish":"./dev/publish"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"5.6.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"8.11.3","dependencies":{"async":"^2.6.2","extend":"^3.0.2","mongodb":"^3.2.7","typecaster":"^0.0.2","jsvalidator":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^6.1.4","simple-domain":"*","@simpleview/mochalib":"^1.0.1","@simpleview/assertlib":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer_1.5.5_1559673579768_0.2961001413228399","host":"s3://npm-registry-packages"}},"1.5.6":{"name":"mongolayer","version":"1.5.6","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.5.6","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"4b53874eea13fff1b8c84f382e1eeda3b47c494c","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.5.6.tgz","fileCount":12,"integrity":"sha512-Ize5+glt5kFq53lAuV0otVkjLHSELgNYmexZUUuIzw5SguYeL5q/o7A4WAh5c3TAsIUCRKDnP7i3c8YbYI/NxQ==","signatures":[{"sig":"MEYCIQDSLOfX/OaiNOH8OpDrSz5LMrDUcdItWyQ13YN3vpS7vQIhAOykyeXxxBnMYTXWdm5U9Gk6k6DghaRbC6hHJ+Ra+C7U","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156215,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc+qtQCRA9TVsSAnZWagAAB8oQAIT4geJJq0RRsrnJB+ve\nYM0o8pzE6tCKixQvnzTPEKKNF6udK2aAGzJcQAT22IpySadv7l+dhtwYAnZw\nEUjVgerx/SouwtqyI0Kaz8QGM2/+gTvF/sPoOYSsSezNoiCJK/iYWjoR2Jze\nXRh4IjlYq8QLw4yL3EhIm49q4C2xN5vWXQZufXSMaz5/p11FlUyVMbcheW2W\n9K9lo9YUHeKEb07KdUA5HhZmgTEnc69cD0Yl1PsXSj1DiSRexMj1iF3p4nnr\nQONleM1hX9u7E9EQo/8DhF3NJsXtRfFy/kKpg0dU9s60Ag0Qqfjc8hyT2qeU\nB2YlUEu5LfWPMbMfbF5LYr0cMDbIbhxMTRCgc/bMX8Q2j6/4geLNXBtMawxm\neEISufwYpcgS01bJ2uLXdWLI0ckqfes44VJruXgOdGzpqZ+KM2FAUVQBjw7i\n3xgWCfeIqZicZiMpthvb43gHklWXYa1WYV34+NwtVb0uJ18cvLiT6MgjWuIc\nXB2p8FogorUWUMgEiBLb+5ytclopopHOkIvSabGenbl+tFpAf9XdTjlvUNuf\nEHGNVpAZgcRtpTKRDCwnF/wjeStaXu+1b9FcmSYqLGa9G/GSoexzKMAmMqZU\nsmmG7Hyn35SLX5o0nBmez0FIRE1GCZ8cDvCvj0Iw7KNaCMPPqijQ0JivPC+X\nYixF\r\n=8BnU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","engines":{"node":">=10.0.0"},"gitHead":"5533da1b953ecb99fe8f635eb324687bb7ab5ac0","scripts":{"test":"mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise","docker":"./dev/build && ./dev/run || true","publish":"./dev/publish"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"5.6.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"8.11.3","dependencies":{"async":"^2.6.2","extend":"^3.0.2","mongodb":"^3.2.7","typecaster":"^0.0.2","jsvalidator":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^6.1.4","simple-domain":"*","@simpleview/mochalib":"^1.0.1","@simpleview/assertlib":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer_1.5.6_1559931727334_0.41724522001379993","host":"s3://npm-registry-packages"}},"1.5.7":{"name":"mongolayer","version":"1.5.7","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.5.7","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"e9d892d2cd3b8f2dd10a47c301f160c9b7d805cc","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.5.7.tgz","fileCount":12,"integrity":"sha512-iBTAUBxyhtIe0zKURtfIqBmZvt8Oxc5vFD50f52AuxgbUFi/ThdbP0edipsRoqA5DT4vlY/pYIelv2vEhZUuKw==","signatures":[{"sig":"MEUCIEkHR8A4jV/1xo1VaQIWlr6kYZsODgSrQXhBwBFcaUYiAiEA/PbMqQ2yTk0AIwS6xHSzMFKX+3SQxKYGn5MjIEGUMak=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156356,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdMkLGCRA9TVsSAnZWagAAzpcP/jx4r7qaOEsnsuvxZaW3\n1wcjT3tYpAnF0A+e3S1O7nugVZ5+qdt+t0wCoS6jDuGO5zBuBZpg4Eqdi/ge\nndQWp7GE6jXOggANNWitV/bkfKbiualxDryeYjkER/AKs/9kXVuPqo9CBv9s\nQVTZKxyGHz5iC7BAsZbqGO26qLoIN26BYjPY4e7ZFUvloT6ZBcxrdBkhpxgY\nBYfrANwSGSc96JE3HIfd1QZrUgPPl4UsQSt9s3Isr4dbL9Z6jO9dHJP2470E\nXmkglVBoZ+nQl/mbaeWW0wSDySh3GjHqBvY2dJ4A4p31/LWr41lUicqZMgZP\nopEqdzaRdTvZwzfvWM7d4D0+scxxTWtFp8KYVyf3ZJShL83wTSG0Z4obdVCt\nXUJBpP7kxuYLbWuiJz+kbkfEOCBdF1Ycujl+alSG5GtEWtPx4AKovTcoomhA\nVY4Xg9RPtJ5ulpA+HzwD7lKpfl9oISyQs43EnKamjNDxmLVOCcwsuwS5alga\noDM33fqQXBLj0Q7vT31ImGom3iazmjx4Ux0YYKXdCZt3KIZQBfbf/mbeshtd\nQuenMhDM0PymQkX2fKqQO3IErY5WIZplDSOdEw3aU293JGgmZxgxoRyIFFfx\ndn2H9D/u2JyXp7jwXa+hHQkjtW7CPjqhHRLv0Trb7Ka7/846yskApiMajGw7\n5Wv5\r\n=+Evw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","engines":{"node":">=10.0.0"},"gitHead":"b0353c84e3006c0ef045b4f5e08fcb3d5430b02c","scripts":{"test":"mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise","docker":"./dev/build && ./dev/run || true","publish":"./dev/publish"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"5.6.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"8.11.3","dependencies":{"async":"^2.6.2","extend":"^3.0.2","mongodb":"^3.2.7","p-memoize":"^3.1.0","typecaster":"^0.0.2","jsvalidator":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^6.1.4","simple-domain":"*","@simpleview/mochalib":"^1.0.1","@simpleview/assertlib":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer_1.5.7_1563574981097_0.8492049246872613","host":"s3://npm-registry-packages"}},"1.5.8":{"name":"mongolayer","version":"1.5.8","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.5.8","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"7318ec15d854502c136a98da59a0affa7f0891f5","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.5.8.tgz","fileCount":12,"integrity":"sha512-7qSsllhESdk6p/epYBWtQto9hXrjsjk2pvIlLrbHFltot4keu01lBZOMGpSYtgXel49DC+1caWWoxez/BufsaA==","signatures":[{"sig":"MEQCIFL4RaJKH19QejOewm14EHuqr0rNAf06fKDM7yDXwS5oAiBm6OT3nNIIdx27QmRNmPN+C39G72E+eXGZwyfymI0AEw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156921,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdbujwCRA9TVsSAnZWagAAjA4P+wR7sH4H1awOzoRjzPzp\nd5QLN7s1fcfXnneLthKGbyE3XUaRZspXyNCVJelzyvOegI4HcVOBV0NPoywH\nIBwxEEAxsshH2m1OTEwkh0R+ylSv4Ki7P6cjyC5tElzFwwXbIcEx90DAnJWO\np+pG3TQD4/lm9kRKcX1mi0osqMZXDhyBqtplK12sq8tkswWQVoVio/7z4cZr\ntecFbSkvTlDPTHE6q5SDHBoiETuYjgRr5y7NbCbXJiVdc7rsYyA9ro5DNu2i\n1dhSfIVIhJibtUUI3NL52WUCejyB5k97u9ciwlI7GlgXd432ZusIBRMwXtcY\nOegVL60Y99kJebg2q20z2yamfdAOU0jJcxbO6sWhfxUqysMZ3CbSt7sVP6IA\nK+f2i0lBgUKEyvP/H5pqXA2swZSBYeMbS0lEz+NmspXKA2dOnEkdsEsyy09q\n2nMakOoCMKlrKr4PFmxYJIETeGSIpVTtBt4eIJYEtMQTyHgD3io96k3k/BJr\nI9amLTW7k3z8c5eHSlUgKbl7TULQTD2Y0va9dqfTqTxRxEAKKv4y2E5vi2S0\nDoEWfsU4/uDdecuL2zOKSDKX2cR0s00P8gwN4tBnawi2QP1gs2ruu57VDudI\nqOe7YCzxuFyBf/WokvKShzFMyffzMrxhBe9niO0eQ+PUKeDReLr2nEpchHqZ\npbh7\r\n=rMc0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","engines":{"node":">=10.0.0"},"gitHead":"7a73f475fa2bb1cd2b7a747a2a18774329780d7c","scripts":{"test":"mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise","docker":"./dev/build && ./dev/run || true","publish":"./dev/publish"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"5.6.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"8.11.3","dependencies":{"async":"^2.6.2","extend":"^3.0.2","mongodb":"^3.2.7","p-memoize":"^3.1.0","typecaster":"^0.0.2","jsvalidator":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^6.1.4","simple-domain":"*","@simpleview/mochalib":"^1.0.1","@simpleview/assertlib":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer_1.5.8_1567549679169_0.2426671307222239","host":"s3://npm-registry-packages"}},"1.5.9":{"name":"mongolayer","version":"1.5.9","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.5.9","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"27e0c2a9c4a51c8b7dc4c855a79eacec2326540b","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.5.9.tgz","fileCount":12,"integrity":"sha512-VJp6ZVYHSB1k31kvH6+HvNcvocJ+kdcKtv5vyDwV5mG15z6kN7TiKGtJJ9Kq6UbBhnisN1Lcp/bV2v6oOO/lvw==","signatures":[{"sig":"MEUCIDdKgAjC3VRrwyDgv1d3nNl2eozNILXUvt5oTh43Iia0AiEAyIvPzSLcdWwMeHnyqR1Tmv3/E6uLmupIkO0LXziMKnE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156921,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdbumECRA9TVsSAnZWagAAsvYP/isvKDho+FXhBcc2p7Dq\nkvQzz8oQc/8aKdmg8D/nN4G3KhWiG15VDnrzLzUyvDJf2nEM6lccvBX9z7Cm\n90QmAL4IoSgkbKXs+hRSlbd6nQKek1GZ5MHEmcorM6lOxi9Nzv6tDbPexjRP\nxW1KsLlUt+MQUpFbl+swd8VvX5lyaMXLHio1KVFpwavbEWbwR5/LF7z9an27\noZpMZmKUdMaRxuaO5dqKMk/ANoUAHrGDZuoc9AZ5If24yCT/+efI51xmZYsX\noRET55zCoBgYbwQpBLYVEk6A3nuzdtdkaoLvzDwrY0olh3czmfAg4XrmUSso\nlReiLQIBYC30IPpP9WoHnPxB4XNyY9BJYmBQzbSlSySytr87MikZtH8OpuWq\nplgp1YSkYjbHgL5aUB8Og8ssdojYGjMGu9GnMiWUO90hqsElr6h8SJDgUx2G\n/BLM+U3zz+gJqpV/9Q9Vb/+CxzW3VHE1K0qFItxZwgr3tLH+oNjmhMjlqVU4\n8LsGzV9sVXpgqiEy0sQfD4Ca1uR8x2IV5a3gd8S3Jr0qQTD/6LMZTI2Hmmi5\n61vo7hOn4VuRTDpvI62vG2cmrFJdE93K2V/g0gurvEugLvkPrn80sn+8IZdt\njF9hkg3x6jcTHOV8jITZKjcSXlCRArkvIOjbbFDMoXwONKhelo7O4hbRncnS\n+GN8\r\n=yP5L\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","engines":{"node":">=10.0.0"},"gitHead":"d11d9f4fd647ba2ded83e74ddda549f7069aa2fb","scripts":{"test":"mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise","docker":"./dev/build && ./dev/run || true","publish":"./dev/publish"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"5.6.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"8.11.3","dependencies":{"async":"^2.6.2","extend":"^3.0.2","mongodb":"^3.2.7","p-memoize":"^3.1.0","typecaster":"^0.0.2","jsvalidator":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^6.1.4","simple-domain":"*","@simpleview/mochalib":"^1.0.1","@simpleview/assertlib":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer_1.5.9_1567549827299_0.08075504237408859","host":"s3://npm-registry-packages"}},"1.5.10":{"name":"mongolayer","version":"1.5.10","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@1.5.10","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"f57af392611deb1d1563057349bd9e15c293c783","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-1.5.10.tgz","fileCount":13,"integrity":"sha512-h1yoT/+Cs3KiSITglGihc5gyLdgf/jqYLRehk+WKUoDomfx4ZeZYZtoL/utaz/FghlfZOVHr+3PBDLtW/dReCw==","signatures":[{"sig":"MEUCICY+nPgPS+gDH9v2akVxLH/PAzWpwLyomQ2+Bt0YuMfRAiEA7c2ZC69qSZGDir7rnHu5Aw7pT07K4IVm2ck4KKtXfYY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157477,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeDoOVCRA9TVsSAnZWagAAtCMP/j2ta/VemHYtwL56mVwq\n+DtouwmbEfbLedMmf6mhhLm2I2boC+NC5IXwR72dtZV4NhYNzCnB36fKqMf+\nZ7N03PDQikxhyiW0alBabYq0dGcZbywJlDhG/xsRilUn83uiSKsYZcAsk5V5\nRsMe5AYqP1DkYL2A5uZDt4ibgyO6CBfFgfuBdOSfyO5M6K7WP6pt5H0bm941\nS97NjS6WbW27tvptXMwxdmPaDJ2cVLEJbndJjKF3Pi9Cfll8ezHN5z9NQ7Kz\nvNRpP/iq8hw13cQwuc5k3XyGIs5tfQCfPJfvhI/j4IJRYAWgmHv2pf5TDlYs\n9wZBugZhlMSpV74cXFNldLY+CAZgpmdXyLZjJdwT5K+wbIrrLwju5C15zoNl\nmu7fPnNBhVRUTeKvW+zLp0yzMnoqFQKz7gu14CAV65iiHUq6h9gWNYPN9XeZ\n4yANhgLrNILa74UCT5SHjwCPXmm4/xoJ0Jmmq3IVS5fHMQlYu31yOnMdLYgO\nsP1ijnQQUbRYn+u1/vmfP2OAhazd4FdAP8X4QRMBWK6MUDR7AU/DuFgR8J6N\nnjHWs1n/s3bddlluPe3THeBl7U0cPtsRSHarsT5U9WdJJtHF2Ny5A9yG16Db\nnI5usLk2OBe2r5PsilzrCj+qgcfn1zvd/dVvb/kjxflQV9ZZNx2EcRdhmPfq\nEDcX\r\n=uifb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","engines":{"node":">=10.0.0"},"gitHead":"2fa17cd130938f9dfc40000852582f8e65f2b57e","scripts":{"test":"mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise","docker":"./dev/build && ./dev/run || true","publish":"./dev/publish"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"5.6.0","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"8.11.3","dependencies":{"async":"^2.6.2","extend":"^3.0.2","mongodb":"^3.2.7","p-memoize":"^3.1.0","typecaster":"^0.0.2","jsvalidator":"^1.2.0","@simpleview/promiselib":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^6.1.4","simple-domain":"*","@simpleview/mochalib":"^1.0.1","@simpleview/assertlib":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer_1.5.10_1578009493035_0.1845985805951298","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"mongolayer","version":"2.0.0","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@2.0.0","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"9c2930a564fcb67df298b0c891ee8ec1c31badba","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-2.0.0.tgz","fileCount":13,"integrity":"sha512-/hs0THcwgIAaKP4ISoVi4So0xGBsKywLKMZJ8Rf5Ky3YRhM1d7jQQllUFdVCG/soAwdMCqonRlEI2yBT0OXg1A==","signatures":[{"sig":"MEUCIQC6ANqZCElOug6NJLDxctF95x8eXckWRuRQu7WzqRtHygIgeGiL84uzDnwFGDH4hAYRWS0ZWaTTrxw46Pgcysd8Pxs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159705,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSoLdCRA9TVsSAnZWagAAuIYP/0xZUSzUVXB9WBKan9IW\n70e4EmiWpPdjxJ5tCdfcEqxUlO0nM11nJPcXp8DZUpspGJwOu5qrU0tMWmVO\ndxf6MHGg7Vp3xXhpvadKVDcCq2oWaogDA64gQDOR9whdNDQs6rqCDjURbqP8\nNu/TBoCA0JLAPzSGqosXe/dvH/TbrAGA5KVms/WUydKlOp7kLT8ws0IjM+2W\nrvCRbe/sv52ODiooKjNFKNQAdPSURJCtuXQjzKTrGCjcfzAUwFo0eS4NBQhF\npK87InQdsIdCrFasEeEmAwzXFaRI2+qqxodRxEz4Yxnwk3zYcbQn8EDtbsBU\nQE4LvtsGKJDmiU8G0KGoMlru/memDvWmdyhzUm418jmPSwWFnvtBCaHMVE6J\nC69ayV4hY5AdGnpfljATFPGUcHmzh1zjoLXukygJIXxysWxtA2Uowmeigri4\nznFNKTQbpgHC7TjM9vv2s4+LvXdS91XvULLIywS8MJmbTjP+mheuZd9AwDqD\npqVzmhAtkJSvtazufr5hrYpzHghTP6l2Q/XW5sUxWQU/HVaqc7mdWXOvPrZn\nX7aXyHA/NIfcOoQk99BKfiNEyTYw0WcBx+DUufvIwb7/m0hQYWUEmVEWxZvg\np2guvuzYHATAFyWsNo/3Q08tKhvPwlzDUXIk/a7HmqXZSrtfLD5TvkATn9Kn\n0fbb\r\n=cfmI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","engines":{"node":">=10.0.0"},"gitHead":"739df915dc8fe8b2cc556aae27dae2e8cc75c516","scripts":{"test":"mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise","docker":"./dev/build && ./dev/run || true","publish":"./dev/publish"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"6.13.4","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"12.14.1","dependencies":{"async":"^2.6.2","extend":"^3.0.2","mongodb":"^3.6.4","p-memoize":"^3.1.0","typecaster":"^0.0.2","jsvalidator":"^1.2.0","@simpleview/promiselib":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^6.1.4","simple-domain":"*","@simpleview/mochalib":"^1.0.1","@simpleview/assertlib":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer_2.0.0_1615495901218_0.7925697990824494","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"mongolayer","version":"2.0.1","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@2.0.1","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"17a7eed478b001728859efcea927e1d261f6e8cb","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-2.0.1.tgz","fileCount":13,"integrity":"sha512-m0g0utXeuLGUEE94jZ/k6lhNtK1TxKBGOoygbEEINalzO29YVN2sHis6IqDdhDF3uT+/tR+Jjjb2gsCS6fsFpw==","signatures":[{"sig":"MEQCIDU/3huiV/dUslKMcrfDnEtrQ/vHFGnMJMlXUHy8Iz0gAiBsW9HTUV/tVXic+GCm8w1AHm0o5z0cTsOVBv8DPw91LQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159498},"main":"src/index.js","engines":{"node":">=10.0.0"},"gitHead":"b0a6ab19c4f953c5e0c89a1edbe3743192501513","scripts":{"test":"mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise","docker":"bash ./dev/run","publish":"bash ./dev/publish"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"6.13.4","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"12.14.1","dependencies":{"async":"^2.6.2","extend":"^3.0.2","mongodb":"^3.7.4","p-memoize":"^3.1.0","typecaster":"^0.0.2","jsvalidator":"^1.2.0","@simpleview/promiselib":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^6.1.4","simple-domain":"*","@simpleview/mochalib":"^1.0.1","@simpleview/assertlib":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer_2.0.1_1701814584912_0.5232248797608272","host":"s3://npm-registry-packages"}},"2.3.0":{"name":"mongolayer","version":"2.3.0","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@2.3.0","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"ccc93102bd10f042c10db5aeda3cbf71a06ceacf","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-2.3.0.tgz","fileCount":13,"integrity":"sha512-h9Oo29Yv3FkzkURYpjyj/1EMwX1WWK4fqAa8VbxYNFoJEWMH+7wPViAMU3JGePmvpRCjWgL2B82tt3uX82iefQ==","signatures":[{"sig":"MEYCIQC/gRsKLq5WQHRIkvZNP/lwuUzCD/Mq5MSDDII5q3arMQIhAKxv2cDbwAt5mpv6azlvcBHJ1koWX8Cnk5y0AonJIp84","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159896},"main":"src/index.js","engines":{"node":">=10.0.0"},"gitHead":"55d5b2bdce02fc98395f443194f67cc533a5d451","scripts":{"test":"mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise","docker":"bash ./dev/run","publish":"bash ./dev/publish"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"8.19.4","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"16.20.2","dependencies":{"async":"^2.6.2","extend":"^3.0.2","mongodb":"^3.7.4","p-memoize":"^3.1.0","typecaster":"^0.0.2","jsvalidator":"^1.2.0","@simpleview/promiselib":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^6.1.4","simple-domain":"*","@simpleview/mochalib":"^1.0.1","@simpleview/assertlib":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer_2.3.0_1717902803793_0.6522538606160568","host":"s3://npm-registry-packages"}},"2.4.0":{"name":"mongolayer","version":"2.4.0","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@2.4.0","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"79576de0e870a70109bfee323d9af02541464f52","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-2.4.0.tgz","fileCount":13,"integrity":"sha512-CSQnDPMY31rVuhnm2uIde/4dzykCzGgbhlD9vAo97w7KY4JvEABD+baKuyv4DHUwnh0KcyUhRwYwZg0EsnkG+w==","signatures":[{"sig":"MEUCIEugZyP1i2zzc66Wqa8fOUQlecq3CvnrMNk4y4K6mq1eAiEA7Z0Fl4wvIuefzgk4DSy4PfQl/YxeqEI84WCoFO7/ubw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160328},"main":"src/index.js","engines":{"node":">=10.0.0"},"gitHead":"39e94edec3b8d8e6a8cc543acb957eadaa381ba1","scripts":{"test":"mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise","docker":"bash ./dev/run","publish":"bash ./dev/publish"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"8.19.4","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"16.20.2","dependencies":{"async":"^2.6.2","extend":"^3.0.2","mongodb":"^3.7.4","p-memoize":"^3.1.0","typecaster":"^0.0.2","jsvalidator":"^1.2.0","@simpleview/promiselib":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^6.1.4","simple-domain":"*","@simpleview/mochalib":"^1.0.1","@simpleview/assertlib":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer_2.4.0_1722467175908_0.21415667984090003","host":"s3://npm-registry-packages"}},"2.5.0":{"name":"mongolayer","version":"2.5.0","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@2.5.0","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"ee6c47fa07d9dc5c1c2d14283c6f16d3dbb17782","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-2.5.0.tgz","fileCount":13,"integrity":"sha512-9yUFLCmYoM2nxS/ufHQlJHweEpUFog+0c7mH6dJexWQx+6kNSXCFDGK8V5CiRSTlOFpbLpfFZiwAqRv6tVGrlg==","signatures":[{"sig":"MEYCIQCpe26y54col/RMLh12dIFCPK7raxBV86I2PY+KBXkOHQIhAJs6MgYQiQCKi7XaRhBeJjHjEE80xTIqCsOO/Ni0f2Qv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160511},"main":"src/index.js","engines":{"node":">=10.0.0"},"gitHead":"c7bff1bdda904679f9fb92832b14725cc35ec0a5","scripts":{"test":"mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise","docker":"bash ./dev/run","publish":"bash ./dev/publish"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"8.19.4","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"16.20.2","dependencies":{"async":"^2.6.2","extend":"^3.0.2","lodash":"^4.17.21","mongodb":"^3.7.4","p-memoize":"^3.1.0","typecaster":"^0.0.2","jsvalidator":"^1.2.0","@simpleview/promiselib":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^6.1.4","simple-domain":"*","@simpleview/mochalib":"^1.0.1","@simpleview/assertlib":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer_2.5.0_1722475166515_0.6968749024025003","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"mongolayer","version":"3.0.0","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","_id":"mongolayer@3.0.0","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"homepage":"https://github.com/simpleviewinc/mongolayer#readme","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"dist":{"shasum":"1e68f0e768d87404543cf6bbae373365d161e6b5","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-3.0.0.tgz","fileCount":14,"integrity":"sha512-225H5j3SIyzCLQNZ9IjsAF6xFONrMNepojhtsYdmYUqeErVVUK0tQt3KxKojNjqbTHYL6s9KfSwcxpHu1HHCTw==","signatures":[{"sig":"MEQCIAWZenPDvtijpGTr+ALn8nWciMJDKTRDjjNFI5FByQw0AiACwjnZ4Zy+idhGndntSFrGZ5sJwIA6HLHPacnLS8I1og==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":160520},"main":"src/index.js","engines":{"node":">=10.0.0"},"gitHead":"d1f74785e942d44856e8a99e782c330b9d74b437","scripts":{"test":"mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise","docker":"bash ./dev/run","publish":"bash ./dev/publish","install:host":"npm install -f --package-lock false"},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"repository":{"url":"git+https://github.com/simpleviewinc/mongolayer.git","type":"git"},"_npmVersion":"10.8.2","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","directories":{},"_nodeVersion":"20.18.1","dependencies":{"async":"^2.6.2","extend":"^3.0.2","lodash":"^4.17.21","mongodb":"6.15.0","p-memoize":"^3.1.0","typecaster":"^0.0.2","jsvalidator":"^1.2.0","@simpleview/promiselib":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^6.1.4","@simpleview/mochalib":"^1.0.1","@simpleview/assertlib":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/mongolayer_3.0.0_1743810367008_0.9109131171043372","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"mongolayer","description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"version":"3.0.1","devDependencies":{"@simpleview/assertlib":"^1.0.1","@simpleview/mochalib":"^1.0.1","mocha":"^6.1.4"},"dependencies":{"@simpleview/promiselib":"^1.0.1","async":"^2.6.2","extend":"^3.0.2","jsvalidator":"^1.2.0","lodash":"^4.17.21","mongodb":"6.15.0","p-memoize":"^3.1.0","typecaster":"^0.0.2"},"main":"src/index.js","engines":{"node":">=10.0.0"},"scripts":{"test":"mocha $(find testing/ -name *.test.js) -R spec --colors --check-leaks --globals Promise","docker":"bash ./dev/run","install:host":"npm install -f --package-lock false","publish":"bash ./dev/publish"},"repository":{"type":"git","url":"git+https://github.com/simpleviewinc/mongolayer.git"},"license":"MIT","_id":"mongolayer@3.0.1","gitHead":"b2ea803663289260f3aaa3132f24c4482bc6aa69","bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"homepage":"https://github.com/simpleviewinc/mongolayer#readme","_nodeVersion":"20.18.1","_npmVersion":"10.8.2","dist":{"integrity":"sha512-ygsVGr3k1qAZtJbqcIG+fO6jeSX2BTqTNVc9OlETcIFD148Zt1a5/Qt+6lEBEy1TQbHK+HEPb6bkH1+qEG/jxw==","shasum":"134543da7b7111364c83588ad50b7c282d2dd83f","tarball":"https://registry.npmjs.org/mongolayer/-/mongolayer-3.0.1.tgz","fileCount":14,"unpackedSize":160530,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBZMeflIJNe57Znl9pmwfHz4eJGPDgd/0I4IrbjniW8iAiBQNeJwCJz/QM8D7QZAj0z5qHH76NPabWSWP89unPg58g=="}]},"_npmUser":{"name":"owenallenaz","email":"owenallenaz@gmail.com"},"directories":{},"maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mongolayer_3.0.1_1756851777110_0.34312580904788303"},"_hasShrinkwrap":false}},"time":{"created":"2014-07-06T23:48:49.802Z","modified":"2025-09-02T22:22:57.515Z","0.1.0":"2014-07-06T23:48:49.802Z","0.1.1":"2014-08-08T22:10:38.362Z","0.1.2":"2014-08-13T20:53:03.089Z","0.1.3":"2014-08-28T18:10:35.511Z","0.1.4":"2014-09-16T16:36:08.372Z","0.1.5":"2014-09-17T21:33:18.002Z","0.1.6":"2014-09-19T16:38:25.843Z","0.1.7":"2014-09-19T18:47:45.192Z","0.1.8":"2014-09-19T20:51:50.780Z","0.2.0":"2014-10-10T22:15:19.819Z","0.2.1":"2014-10-25T23:17:15.777Z","0.3.1":"2014-11-13T02:53:30.303Z","0.3.2":"2014-11-13T16:31:51.127Z","0.3.3":"2014-11-14T20:40:29.091Z","0.3.4":"2014-12-18T21:21:11.455Z","0.3.5":"2015-01-29T01:23:13.987Z","0.3.6":"2015-01-29T01:51:01.789Z","0.3.7":"2015-02-20T20:41:35.667Z","0.3.8":"2015-03-02T21:11:51.406Z","0.3.9":"2015-03-03T21:15:25.799Z","0.3.10":"2015-03-03T21:32:09.397Z","1.0.0":"2015-04-06T20:28:15.337Z","1.0.1":"2015-04-06T22:14:15.293Z","1.0.2":"2015-04-06T22:29:25.228Z","1.0.3":"2015-04-13T21:12:12.429Z","1.0.4":"2015-04-14T18:23:26.331Z","1.0.5":"2015-06-04T17:01:29.602Z","1.0.7":"2015-06-09T18:49:31.938Z","1.0.8":"2015-06-23T18:23:43.526Z","1.0.9":"2015-07-09T20:18:56.323Z","1.0.10":"2015-07-09T23:10:09.318Z","1.0.11":"2015-07-10T22:41:23.690Z","1.0.12":"2015-07-15T23:57:31.015Z","1.0.13":"2015-07-16T00:30:23.868Z","1.0.14":"2015-07-22T16:32:15.722Z","1.0.15":"2015-07-24T01:52:48.082Z","1.0.16":"2015-07-28T23:56:47.432Z","1.1.0":"2015-07-29T01:02:39.276Z","1.1.1":"2015-08-07T19:06:04.381Z","1.1.2":"2015-08-18T21:31:29.917Z","1.1.3":"2015-08-25T01:00:00.802Z","1.1.4":"2015-08-25T01:14:15.079Z","1.1.5":"2015-09-29T22:20:17.429Z","1.1.6":"2015-09-29T23:46:00.399Z","1.1.7":"2015-10-05T23:38:11.276Z","1.1.8":"2015-10-08T23:09:08.970Z","1.1.9":"2015-10-08T23:28:15.974Z","1.1.10":"2015-10-08T23:28:41.971Z","1.1.11":"2015-10-27T00:59:11.597Z","1.1.12":"2015-11-05T20:25:35.059Z","1.1.13":"2015-11-24T23:27:21.517Z","1.1.14":"2016-01-22T20:34:55.744Z","1.1.15":"2016-01-28T19:08:57.804Z","1.2.0":"2016-02-22T23:52:51.209Z","1.2.1":"2016-03-17T23:52:27.461Z","1.2.3":"2016-03-23T23:06:07.701Z","1.2.4":"2016-07-20T23:46:09.481Z","1.3.1":"2017-01-24T00:54:39.599Z","1.3.2":"2017-03-13T18:23:15.718Z","1.3.9":"2017-07-21T21:06:04.441Z","1.3.10":"2017-07-24T19:53:32.533Z","1.3.11":"2017-07-25T01:37:44.550Z","1.3.12":"2017-07-25T16:47:07.976Z","1.3.13":"2017-07-26T23:32:31.765Z","1.4.0":"2017-08-03T18:07:38.030Z","1.4.1":"2017-08-04T20:43:27.828Z","1.4.2":"2017-08-09T23:38:08.436Z","1.4.3":"2017-09-14T22:23:25.674Z","1.4.4":"2017-10-31T16:18:28.200Z","1.4.5":"2017-11-21T18:48:33.219Z","1.4.6":"2018-03-28T22:32:37.380Z","1.5.0":"2019-05-14T21:46:09.062Z","1.5.1":"2019-05-15T00:52:03.202Z","1.5.2":"2019-05-16T20:25:15.032Z","1.5.3":"2019-05-17T18:52:49.898Z","1.5.4":"2019-06-04T18:27:29.031Z","1.5.5":"2019-06-04T18:39:39.925Z","1.5.6":"2019-06-07T18:22:07.460Z","1.5.7":"2019-07-19T22:23:01.283Z","1.5.8":"2019-09-03T22:27:59.338Z","1.5.9":"2019-09-03T22:30:27.404Z","1.5.10":"2020-01-02T23:58:13.231Z","2.0.0":"2021-03-11T20:51:41.339Z","2.0.1":"2023-12-05T22:16:25.233Z","2.3.0":"2024-06-09T03:13:23.967Z","2.4.0":"2024-07-31T23:06:16.108Z","2.5.0":"2024-08-01T01:19:26.777Z","3.0.0":"2025-04-04T23:46:07.243Z","3.0.1":"2025-09-02T22:22:57.311Z"},"bugs":{"url":"https://github.com/simpleviewinc/mongolayer/issues"},"author":{"name":"Owen Allen","email":"owenallenaz@gmail.com"},"license":"MIT","homepage":"https://github.com/simpleviewinc/mongolayer#readme","repository":{"type":"git","url":"git+https://github.com/simpleviewinc/mongolayer.git"},"description":"MongoDB model layer with validation and hooks, similar to Mongoose but thinner.","maintainers":[{"name":"owenallenaz","email":"owenallenaz@gmail.com"}],"readme":"# mongolayer\n\n`npm install mongolayer`\n\nMongolayer is a rich document system similar to Mongoose, but thinner, more type-strict, and with more developer flexibility.\n\nThis module is an attempt at providing the vision of `mongoose` (validation, hooks, relationships) but with less eccentricities, less magic under the hood providing developers with more consistent behaviors.\n\n# Changelog\n\n## 12/5/2023 - 2.0.1\n- Updates to `mongodb` 3.7.4\n- Test db now based on 5.0\n\n## 3/11/2020 - 2.0.0\n- Adds support for `Model` based on a mongodb view.\n- `createIndexes` parameter of `connection.add` is deprecated, please use `sync` instead.\n\n## 9/3/2019 - 1.5.8\n- Adds `options.context` for passing state to all descendent hooks. Needed for handling conditions where variables need to be available in the top level hook, and in the nested relationship hooks.\n\n## 7/19/2019 - 1.5.7\n- Adds `Connection.promises.add`, `mongolayer.promises.connect`, `mongolayer.promises.connectCached`.\n\n## 5/16/2019 - 1.5.2\n- Adds back the `promises` object to maintain consistency with the Node core strategy of exposing `promises` object. Adds support for all async methods on the `Model`.\n\n## 5/14/2019 - 1.5\n- Updates to mongodb 3.2.4\n- `find`, `findById`, `aggregate` updated so that if you execute them without passing a callback they will now return a promise, allowing them to executed via await.\n- Removes the `promises` object, it's better when we can utilize the methods without the verbosity of having to go to `promises.method`.\n\n## 7/21/2017 - 1.4\n- Virtuals have become a whole smarter. You can now specify a virtual field as having requiredFields and requiredHooks. If you reference that field in a find() fields obj, it will automatically include the requiredFields and hooks. This makes working with relationships and virtuals much simpler.\n- Relationships can now be executed simply by adding the field to your fields obj, without needing to ask for dependent keys and the hook. See Populating Relationships for more info.\n- find() `options.castDocs === false` behavior has changed. If it's specified, and a truthy fields obj is passed, it will *only* return the specified fields. This differs from native mongodb, which will continue to return _id even if it's not asked for. This makes the downstream from queries simpler to work with as you only receive what you ask for. Nested empty `{}` and `[]` will always be trimmed from the final result. See castDocs in find() for more information.\n- find() `options.castDocs === false` and passing fields is the recommended default behavior for all queries where performance matters as it forces you to specify only the fields you want.\n- BREAKING - Virtuals can no longer be referenced in hooks. This is for capability when working with `castDocs === false` and `castDocs === true`. In general if you need data created via a virtual inside a hook, you should be creating that data with a hook instead.\n- Aggregate now supports hooks, `beforeAggregate` and `afterAggregate`\n- Aggregate now supports `options.castDocs` and `options.virtuals` for utilizing virtuals when returning data via aggregate\n- Fixed potential RSS memory expansion issue due to usage of `WeakMap()`.\n- BREAKING - When specifying a fields object you will only receive those fields. Previously if you requested { \"relationship.foo\" : 1 }, you would still get all keys on the root (since foo is on a relationship). This is no longer the case. This change was made so it more closely mimics native MongoDB which only returns the fields that are requested.\n- find() `options.castDocs === false` is now recursive through relationships. When specified all relationships will also be pulled with castDocs === false. This means if you need to access virtuals on them, you should specify them via the fields obj.\n\n# Documentation\n\n* [Hooks](#hooks)\n\t* [Hook Arguments](#hook-arguments)\n\t* [Hook Examples](#hook-examples)\n\t\t* [blogPost beforeFilter](#blogpost-beforefilter)\n\t* [Calling Hooks](#calling-hooks)\n\t* [Runtime Hooks](#runtime-hooks)\n\t* [Default Hooks](#default-hooks)\n* [Relationships](#relationships)\n\t* [Setting Data](#setting-data)\n\t* [Populating Relationships](#populating-relationships)\n* [API Documentation](#api-documentation)\n\t* [mongolayer](#api-documentation)\n\t* [Connection](#connection)\n\t* [Model](#model)\n\t\t* [Querying](#querying)\n\t\t* [Properties](#model-properties)\n\n# Features\n1. Supports the basic queries: `find`, `findById`, `save`, `update`, `count`, and `remove`.\n1. Infinitely recursive field validation on `insert`, `save`, and `update`. Allowing you to validate arrays, objects, and any recursive combination of them.\n1. Enforce required fields and field defaults on `insert`, `save` and `update`.\n1. Robust hook system to run async code before and after any query. You can set default hooks, required hooks, and specify which hooks run at query time.\n1. Declare relationships between models allowing infinite recursive population of related records. Related records will be pulled with virtuals and methods.\n1. Getter and setter virtuals on the document level.\n1. Methods on the document level.\n1. Methods on the model level.\n\n# Why not just use Mongoose?\n\n`mongoose` is a powerful package to which this module owes great homage, but after using `mongoose` for a while I became frustrated with some of it's eccentricities. In attempting to contribute to the module it became clear that the codebase was quite burdened by legacy.\n\nHere are some examples of frustrations I personally came across using `mongoose`.\n\n1. If a record in the DB does not have a value in a field, it will still fill that field with a default value when you pull it out of the database. This gives the illusion a value exists in the db, when it doesn't.\n1. Unable to recursive populate recursive records (populate in a populate). You can only populate one level deep.\n1. When records are populated, they are plain objects, lacking virtuals and methods that they would have if acquired with a normal query.\n1. Unable to run post-query hooks with async code that gets flow control.\n1. Too many differences from the way that node-mongodb-native and mongodb function out of the box. In example, `mongoose` wraps `update` with `$set` causing queries that 'look' correct in mongodb shell and node-mongodb-native to perform entirelly different. Mongoose calls it `create` while node-mongodb-native and mongodb shell call it `insert`.\n1. Update method doesn't run hooks, or validation.\n1. `save` method not implemented with unless using the new doc() syntax. So `find`, `create`, all use one syntax, but `save` uses an entirely different syntax.\n1. Each document in mongoose is an instance of the Schema. That just doesn't make sense to me. The fields on my Document should only be the fields I add, nothing more, nothing less.\n\n# Getting Started\n\n`npm install mongolayer`\n\nMongolayer has three basic constructs, **Models**, **Connections** and **Documents**.\n\n* `mongolayer.Connection` - Manage the connection pool and the raw connection to MongoDB. The connection is aware of all of the Models that are attached to it.\n* `mongolayer.Model` - The bread-and-butter of mongolayer, your queries are executed on Models and they have fields, methods, and a ton of other features. These are attached to Connections.\n* `mongolayer.Document` - Base document class for all documents. \n* `model.Document` - After running a query, each row from the database is returned as an `instanceof` the `model.Document` class specific to the model.\n\nBasic application boot-up\n\n1. Create connection.\n1. Create models.\n1. Attach models to connection.\n1. Run queries, and return documents.\n\n```js\nvar mongolayer = require(\"mongolayer\");\n\n// create a model\nvar postModel = new mongolayer.Model({\n\tcollection : \"posts\",\n\tfields : [\n\t\t{ name : \"title\", validation : { type : \"string\" }, required : true },\n\t\t{ name : \"description\", validation : { type : \"string\" }, required : true }\n\t]\n});\n\n// get a mongolayer connection\nmongolayer.connectCached({ connectionString : \"mongodb://127.0.0.1:27017/mongoLayer\" }, function(err, conn) {\n\t// attach a model to a connection\n\tconn.add({ model : postModel }, function(err) {\n\t\t// once a model is attached to a connection, assuming no errors, you can then run queries on the model\n\t\t\n\t\t// you can run queries by using the model reference\n\t\tpostModel.find({}, function(err, docs) {\n\t\t\t// do something\n\t\t});\n\t\t\n\t\t// you can run queries by using the connection reference\n\t\tconn.models.posts.find({}, function(err, docs) {\n\t\t\t// do something\n\t\t});\n\t\t\n\t\t// whether you pass around the model references or the connection is totally up to your application architecture!\n\t});\n});\n```\n\n# Views\n\nCreates a view and exposes it via the model. `viewOn` and `pipeline` pass directly to https://docs.mongodb.com/manual/reference/command/create/.\n\n```js\nconst model = new mongolayer.Model({\n\tcollection : \"testing\",\n\tviewOn : \"name_of_model\",\n\tpipeline : []\n});\n```\n\nOnce a view is added to a connection you can query on it with `find`, `aggregate`, `count` and all of the various content querying methods.\n\n# Hooks\n\nHooks are the powerful underpining that makes relationship management possible, in addition they provide an entry point for developers to run async code before or after all major qureies, allowing them to maintain a coherent object model. Every major query function invokes a number of different hooks.\n\nHere are some common uses for hooks:\n\n* Specify a `beforeFilter` hook which will run prior to `count`, `remove`, `find` allowing you to transform the filter, such as casting a string to a `mongolayer.ObjectId`.\n* Specify an `afterFind` hook which would log some information to a log file based on the number of records returned.\n* Specify a `afterRemove` hook to remove related orphan records.\n* Specify an `afterFind` hook to pull in other data which is not stored in mongoDB and can't be managed through relationships such as Facebook posts, SQL data, file system data, or memcache data.\n* Specify a `beforePut` hook which will do some async data management such as encrypting a password prior to storing in the DB.\n\nQuery functions which support hooks: `find`, `findById` (runs same hooks as `find`), `count`, `remove`, `insert`, `save`, `update`.\n\nFor specific rules of which hooks are executed by which query see the API documentation for that query.\n\nImportant: Hooks do not have access to data created by virtuals! Often hooks are used to populate data needed by virtuals. If you need virtual data in a hook, the recommendation is to utilize the virtual system to declare a writable virtual which is populated via a requiredHook. If both hooks are invoked via virtuals then the dependency system is managed automatically without needing to understand it at query time.\n\n## Declaring Hooks\n\nAll hooks are specified as a function which recieves an arguments object and a callback. All hooks are expected to callback with either an error or the args they received.\n\nIt is highly recommended, but not required, that all hooks are declared before attaching it to a `mongolayer.Connection`.\n\n```js\n// add a hook to a model\nmodel.addHook({\n\tname : \"foo\",\n\ttype : \"afterFind\",\n\thandler : function(args, cb) {\n\t\t// if you want the hook to \"fail\" and prevent any further hooks or actions from running, callback an error\n\t\treturn cb(new Error(\"something something\"));\n\t\t\n\t\t// if you want the hook to succeed and continue, callback with args\n\t\treturn cb(null, args);\n\t}\n});\n\n// define a model with hooks\nvar model = new mongolayer.Model({\n\tcollection : \"foo\",\n\thooks : [\n\t\t{\n\t\t\tname : \"foo\",\n\t\t\ttype : \"afterFind\",\n\t\t\thandler : function(args, cb) {\n\t\t\t\t// if you want the hook to \"fail\" and prevent any further hooks or actions from running, callback an error\n\t\t\t\treturn cb(new Error(\"something something\"));\n\t\t\t\t\n\t\t\t\t// if you want the hook to succeed and continue, callback with args\n\t\t\t\treturn cb(null, args);\n\t\t\t}\n\t\t}\n\t]\n});\n```\n\n## Hook Arguments\n\nThe arguments a hook receives will differ based on the specific hook. The following describes which arguments each hook will receive.\n\n### beforeAggregate(args, cb)\n\n* `args.pipeline` - `array` - The aggregation pipeline\n* `args.options` - `object` - Options passed to the aggregate call\n\n### afterAggregate(args, cb)\n\n* `args.pipeline` - `array` - The aggregation pipeline\n* `args.options` - `object` - Options passed to the aggregate call\n* `args.docs` - `array` - Array of documents returned from the aggregate call\n\n### beforeFind(args, cb)\n\n* `args.filter` - `object` - The filter passed in to the query.\n* `args.options` - `object` - The options object passed in to the query.\n\n### afterFind(args, cb)\n\n* `args.filter` - `object` - The filter passed in to the query.\n* `args.options` - `object` - The options passed in to the query.\n* `args.docs` - `array` - An array of `model.Document`. Modify the contents of this array if you want to fold in or alter data in your hook.\n\n### beforeInsert(args, cb)\n\n* `args.docs` - `array` - Array of whatever was passed in to insert (could be simple JS objects, or `model.Document`). Even if a query is passing a single document, it will be an array.\n* `args.options` - `object` - The options argument of the insert statement.\n\n### afterInsert(args, cb)\n\n* `args.docs` - `array` - Array of `model.Document`. It will always be an array of documents even if a query is passing a single document.\n* `args.options` - `object` - The options argument of the insert statement.\n* `args.result` - `object` - The mongoDB writeResult.\n\n### beforeSave(args, cb)\n\n* `args.doc` - `object` or `model.Document` - Simple JS object or `model.Document`\n* `args.options` - `object` - The options argument of the save statement.\n\n### afterSave(args, cb)\n\n* `args.doc` - `model.Document` - Document that was inserted.\n* `args.options` - `object` - The options argument of the insert statement.\n* `args.result` - `object` - The MongoDB writeResult.\n\n### beforeCount(args, cb)\n\n* `args.filter` - `object` - The filter passed in to the query.\n* `args.options` - `object` - The options object passed in to the query.\n\n### afterCount(args, cb)\n\n* `args.filter` - `object` - The filter passed in to the query.\n* `args.options` - `object` - The options object passed in to the query.\n* `args.count` - `number` - The number of records found.\n\n### beforeUpdate(args, cb)\n\n* `args.filter` - `object` - The filter passed in to the query.\n* `args.delta` - `object` - The changes which will be passed to the DB.\n* `args.options` - `object` - The options object passed in to the query.\n\n### afterUpdate(args, cb)\n\n* `args.filter` - `object` - The filter passed in to the query.\n* `args.delta` - `object` - The changes which will be passed to the DB.\n* `args.options` - `object` - The options object passed in to the query.\n* `args.result` - `object` - The mongoDB writeResult.\n\n### beforeRemove(args, cb)\n\n* `args.filter` - `object` - The filter passed in to the query.\n* `args.options` - `object` - The options object passed in to the query.\n\n### afterRemove(args, cb)\n\n* `args.filter` - `object` - The filter passed in to the query.\n* `args.options` - `object` - The options object passed in to the query.\n* `args.result` - `object` - The mongoDB writeResult.\n\n### beforeFilter(args, cb)\n\n`beforeFilter` is called by `find`, `update`, `remove` and `count`. Use it for transforming the filter in a global sense.\n\n* `args.filter` - `object` - The filter passed in to the query.\n* `args.options` - `object` - The options object passed in to the query.\n\n### beforePut(args, cb)\n\n`beforePut` is called by `insert`, and `save` prior to inserting a new record or fully overwriting and existing record.\n\nDue to technical eccentricities `beforePut` cannot be called on `update`, even when using `upsert : true` in your options. If you want to fully replace a record with upsert semantics use `save`.\n\n* `args.doc` - `object` - Simple JS object or `model.Document` to be inserted or overwrite an existing record.\n* `args.options` - `object` - The options object passed in to the query.\n\n### afterPut(args, cb)\n\n`afterPut` is called on `insert`, and `save` after inserting a new record or fully overwriting an existing record. If you need to run code to create related entries this is a good hook to accomplish that task.\n\nDue to technical eccentricities `afterPut` cannot be called on `update`, even when using `upsert : true` in your options. If you want to fully replace a record with upsert semantics use `save`.\n\n* `args.doc` - `model.Document` - The document that was placed into the database.\n* `args.options` - `object` - The options object passed in to the query.\n\n## Hook Examples\n\n### blogPost beforeFilter\n\nImagine you have the following Model for a blog post.\n\n```js\nvar model = new mongolayer.Model({\n\tcollection : \"posts\",\n\tfields : [\n\t\t{ name : \"title\", validation : { type : \"string\" }, required : true },\n\t\t{ name : \"description\", validation : { type : \"string\" }, required : true },\n\t\t{ name : \"published\", validation : { type : \"boolean\" }, default : true },\n\t\t{ name : \"startdate\", validation : { type : \"date\" }, required : true, default : function() { return new Date() } },\n\t\t{ name : \"enddate\", validation : { type : \"date\" } } // note: enddate is not required\n\t]\n});\n```\n\nIn this model we have a published boolean as well as startdate and enddate. This allows the user to publish a post, but also specify the date it will show up on the site (defaulting to now), and they can specify an optional enddate where the post will no longer appear on the site. If no enddate is supplied it will always be on the site.\n\nNow, if a developer wants to get all posts which are \"active\", meaning that they are published and today's date is between their startdate and enddates (if the post has them), the developer would perform the following query.\n\n```js\nmodel.find({\n\tpublished : true,\n\tstartdate : { $lte : new Date() },\n\t$or : [{ enddate : { $gt : new Date() } }, { enddate : { $exists : false } }]\n}, function(err, docs) {\n\t// do stuff\n});\n```\n\nLet's simplify this, using the hook system we can create a beforeFilter hook which will make getting \"active\" posts much, much simpler.\n\n```js\nmodel.addHook({\n\tname : \"activeFilter\",\n\ttype : \"beforeFilter\",\n\trequired : true,\n\thandler : function(args, cb) {\n\t\tif (args.filter.active === true) {\n\t\t\t// take developers passed filter and $and it with our \"active\" abstract filter\n\t\t\tvar currentFilter = args.filter;\n\t\t\tdelete args.filter.active;\n\t\t\targs.filter = {\n\t\t\t\t$and : [\n\t\t\t\t\t{\n\t\t\t\t\t\tpublished : true,\n\t\t\t\t\t\tstartdate : { $lte : new Date() },\n\t\t\t\t\t\t$or : [{ enddate : { $gt : new Date() } }, { enddate : { $exists : false } }]\n\t\t\t\t\t},\n\t\t\t\t\tcurrentFilter\n\t\t\t\t]\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn cb(null, args);\n\t}\n});\n```\n\nNow if I want to get all active posts I simply can run.\n\n```js\nmodel.find({\n\tactive : true\n}, function(err, docs) {\n\t// do stuff\n});\n```\n\nAlso, I could query for everything which is \"active\" and has a description containing the word 'mongolayer'.\n\n```js\nmodel.find({\n\tactive : true,\n\tdescription : { $regex : \".*mongolayer.*\" }\n}, function(err, docs) {\n\t// do stuff\n})\n```\n\nIt is important to note that this same \"active\" concept applies to all queries which run the beforeFilter hook such as update(), remove(), and count().\n\n```js\nmodel.count({\n\tactive : true\n}, function(err, count) {\n\t// do stuff\n});\n```\n\nUsing this, we've abstracted the concept of \"active\" so that other developers don't have to deal with the complexity behind it. This reduces code repetition and the possibility for developer errors downstream.\n\n## Calling Hooks\n\nYou can choose to execute these hooks always, by default, or at run-time.\n\n### Required Hooks\n\nHere is an example of a required hook which will convert a id string to a mongolayer objectid. Any query which executes the beforeFilter hooks will execute this hook because it has `required : true` in it's definition.\n\n```js\nmodel.addHook({\n\tname : \"idCast\",\n\ttype : \"beforeFilter\",\n\thandler : function(args, cb) {\n\t\tif (args.filter.id !== undefined) {\n\t\t\targs.filter._id = new mongolayer.ObjectId(args.filter.id);\n\t\t\tdelete args.filter.id;\n\t\t}\n\t\t\n\t\tcb(null, args);\n\t},\n\trequired : true\n});\n```\n\n### Runtime Hooks\n\nHook sets are specified by passing an `array` of `string` or an `array` of `object` with a specific naming scheme.\n\n**Note**: Default hooks are never run when specifying a `hooks` array at run-time.\n\n```js\n// this will execute the 'beforeFilter' hook named 'idCast' in addition to any other hooks which are required\n// default hooks are never run when specifying hooks are run-time\nmodel.find({ foo : \"bar\" }, { hooks : [\"beforeFilter_idCast\"] }, function(err, docs) {\n\t\n});\n\n// this will execute the 'beforeFilter' hook named 'idCast' and the 'afterFind' hook named 'getExtraData'\nmodel.find({ foo : \"bar\" }, { hooks : [\"beforeFilter_idCast\", \"afterFind_getExtraData\"] }, function(err, docs) {\n\t\n});\n```\n\nWhen using relationships, you can also specify hooks to run on related models.  These nested hooks can be infinitely recursive.\n\nIn the event no hooks are passed to a related model, that model will still execute it's default hooks.\n\n```js\n// this will execute the 'beforeFilter' hook named 'idCast' and the 'afterFind' hook named 'authors' on our primary model\n// it will also execute the 'afterFind' hook named 'getImage' on our authors model\nmodel.find({ foo : \"bar\" }, { hooks : [\"beforeFilter_idCast\", \"afterFind_authors\", \"authors.afterFind_getImage\"] }, function(err, docs) {\n\t\n});\n```\n\nYou can also pass arguments to hooks at runtime if your hook requires it.\n\n```js\nmodel.addHook({\n\tname : \"getExtraData\",\n\ttype : \"afterFind\",\n\thandler : function(args, cb) {\n\t\t// args.hookArgs.foo === \"bar\"\n\t\t\n\t\tcb(null, args);\n\t}\n});\n\n// The 'afterFind' hook named 'getExtraData' will receive 'hookArgs' key containing the args passed here\n// using the hook declared above you can see how it receives the args\nmodel.find({ foo : \"bar\" }, { hooks : [{ name : \"afterFind_getExtraData\", args : { foo : \"bar\" } }] }, function(err, docs) {\n\n});\n```\n\n### Default Hooks\n\nDefault hooks allow you to specify an `array` of hooks to run when a query is called an no hooks are passed.\n\nThe syntax for the hook `array` is identical to what you would pass at query time outlined in the above section.\n\n**Note**: If any hooks are passed at runtime, then default hooks will not be passed. Required hooks will execute regardless of whether hooks are passed at runtime or by default.\n\n```js\n// the syntax of the array is identical to declaring them at runtime\n// the name of the defaultHook key is the same as query operation so 'find', 'update', 'count', 'remove', 'insert', and 'save'\nvar model = new mongolayer.Model({\n\tdefaultHooks : {\n\t\tfind : [\"afterFind_getExtraData\"]\n\t}\n});\n\nvar model = new mongolayer.Model({\n\tdefaultHooks : {\n\t\tupdate : [\"beforeFilter_foo\"],\n\t\tremove : [\"beforeFilter_foo\"],\n\t\tinsert : [\"beforePut_bar\", \"afterInsert_baz\"]\n\t}\n});\n```\n\n# Relationships\n\nManaging relationships is a key functionality of mongolayer. Relationships are primarily used to connect records together. Like mongoose, it provides a way to pull in related records. Unlike mongoose, it provides that capability recursively.\n\nIn example, a blog post may have an author which is managed in another table. When you query for blog posts, you may want that author record pulled in as well. That author may also have relationships of their own which you want pulled down as well.\n\nKey Points:\n\n* All relationships should always be unidirectional. If a blogPost has an author, then one side of that relationships stores the state (for example an author_id field in the blogPost model).\n\t* Cross-table based relationships are not possible to maintain atomically in native MongoDB and thus should be avoided.\n* Related records that are pulled in will be of type `model.Document` specific to that model. Meaning they will have all virtuals and methods attached. In our blogPost example, the pulled in author will be a functioning `authorModel.Document`.\n* You can specify hooks at query time which will cascade down into relationships. Using our blog example, when querying the blog, you may want specific hooks to run on authors, you can specify these at query time.\n* To populate related data, there are two methods. You can specify the hooks and the required fields, or you can simply reference the field name in the `fields` option.\n\nExample:\n\nTo provide an example we'll do a basic blog setup. Lets imagine we have blogPosts, blogAuthors, blogTags, and a images model.\n\nIn this example, blogPosts have a single blogAuthor, multiple blogTags, and multiple images. BlogAuthors have a single image. With that spec in mind, lets model it out.\n\n```js\n// the models for this relationship\nvar postModel = new mongolayer.Model({\n\tcollection : \"posts\",\n\tfields : [\n\t\t{ name : \"title\", validation : { type : \"string\" } },\n\t\t{ name : \"description\", validation : { type : \"string\" } }\n\t],\n\trelationships : [\n\t\t{ name : \"author\", type : \"single\", modelName : \"authors\", required : true },\n\t\t{ name : \"tags\", type : \"multiple\", modelName : \"tags\" },\n\t\t{ name : \"images\", type : \"multiple\", modelName : \"images\" }\n\t]\n});\n\nvar authorModel = new mongolayer.Model({\n\tcollection : \"authors\",\n\tfields : [\n\t\t{ name : \"name\", validation : { type : \"string\" } }\n\t],\n\trelationships : [\n\t\t{ name : \"image\", type : \"single\", modelName : \"images\" }\n\t]\n});\n\nvar tagModel = new mongolayer.Model({\n\tcollection : \"tags\",\n\tfields : [\n\t\t{ name : \"title\", validation : { type : \"string\" } }\n\t]\n});\n\nvar imageModel = new mongolayer.Model({\n\tcollection : \"images\",\n\tfields : [\n\t\t{ name : \"title\", validation : { type : \"string\" } },\n\t\t{ name : \"src\", validation : { type : \"string\" } },\n\t\t{ name : \"created\", validation : { type : \"date\" }, default : function() { return new Date() } }\n\t]\n});\n```\n\n## Setting Data\n\nFor the author, because the name of the relationships is \"author\" and it's type is \"single\" the key to set it's value is \"author_id\". That field expects a `mongolayer.ObjectId`.\n\nFor the tags, because the name of the relationship is \"tags\" and it's type is \"multiple\" the key to set it's value is \"tags_ids\". That field expects an array of `mongolayer.ObjectId`. Internally in MongoDB it is stored an array as well, so you can use all manner of array operators when modifying, filtering, or querying the value.\n\n```js\npostModel.insert({\n\ttitle : \"foo\",\n\tdescription : \"bar\",\n\tauthor_id : myAuthor_id,\n\ttags : [tag1_id, tag2_id]\n}, function(err, doc) {\n\t// data inserted\n});\n```\n\n## Populating Relationships\n\nEach declared relationship creates an `afterFind` hook and a virtual of the same name. Either can be used to populate that data. These hooks and virtuals can be nested down into inner relationships as well.\n\nWhen querying a model you can also pass hooks to execute on related models as well. This is the technique you would use to pull in nested relationships.\n\nIn our example, if I pass the hook 'afterFind_author' it will fill in the authors and if I pass in 'author.afterFind_image' it will run the 'afterFind_image' hook on the model which manages the 'author' key.\n\nThe merged in data will be accessed at the key for the relationship 'name'. So because I named my author relationship 'author', then I will access the author at 'author'. If I need to get/set it's id, I can use 'doc.author_id'.\n\n### Using virtuals to fold in relationships\n\nThe best practice with most queries is to specify only the fields you want. If you specify a field which is a relationship, it will automatically merge that field in.\n\nIt is highly recommended to utilize `castDocs : false` at the same time to reduce the clutter of the return and ensure optimal performance.\n\n#### Example\n\n- By specifying the 'author' key, it tells mongolayer to fold in the related data. Under the hood mongolayer utilizes requiredFields and requiredHooks to add author_id to our fields and append the hook 'afterFind_author'. Using the virtual for this behavior simplifies the developer use-case, and obfuscates that complexity.\n\n```js\npostModel.find({}, { fields : { title : 1, description : 1, author : 1 } }, function(err, docs) {\n\t// returned docs will have the structure\n\t{\n\t\ttitle : \"x\",\n\t\tdescription : \"y\",\n\t\tauthor_id : id,\n\t\tauthor : {\n\t\t\tname : \"foo\",\n\t\t\timage_id : id\n\t\t}\n\t}\n});\n```\n\n- If you want to pull in the authors image, you can do that as well. As with MongoDB native behavior, by specifying a descendent key on a nested key, you will now only returned the queried keys. This means the query below will no longer return \"author.name\", because \"author.image\" was specified in the query, thus making the author find() no longer a SELECT \\*. This the query below is no different than `{ title : 1, description : 1, \"author.image\" : 1 }`\n```js\npostModel.find({}, { fields : { title : 1, description : 1, author : 1, \"author.image\" : 1 } }, function(err, docs) {\n\t// returned docs will have the structure\n\t{\n\t\t_id : id,\n\t\ttitle : \"x\",\n\t\tdescription : \"y\",\n\t\tauthor_id : authorId, // added by the virtual system\n\t\tauthor : {\n\t\t\t_id : authorId\n\t\t\timage_id : imageId, // added by the virtual system\n\t\t\timage : {\n\t\t\t\t_id : imageId,\n\t\t\t\ttitle : \"title\",\n\t\t\t\tsrc : \"http://www.foo.com/something.jpg\"\n\t\t\t}\n\t\t}\n\t}\n});\n```\n\n```js\n// In order to speed things up and reduce the clutter of the return, you can specify castDocs : false in your options\npostModel.find({}, { fields : { title : 1, description : 1, \"author.image\" : 1 }, castDocs : false }, function(err, docs) {\n\t// returned docs will have the structure\n\t{\n\t\ttitle : \"x\",\n\t\tdescription : \"y\",\n\t\tauthor : {\n\t\t\timage : {\n\t\t\t\t_id : imageId,\n\t\t\t\ttitle : \"title\",\n\t\t\t\tsrc : \"http://www.foo.com/something.jpg\"\n\t\t\t}\n\t\t}\n\t}\n});\n\n// When querying relationships, you can specify fields for inclusion or exclusion as if you were querying that model directly. As with normal mongo syntax, you cannot mix inclusion and exclusion. (except for the _id case).\npostModel.find({}, { fields : { title : 1, \"author.image.src\" : 1 } }, function(err, docs) {\n\t// returned docs will have the structure\n\t{\n\t\ttitle : \"x\",\n\t\tauthor : {\n\t\t\timage : {\n\t\t\t\tsrc : \"x\"\n\t\t\t}\n\t\t}\n\t}\n\t\n\t// if there is no image on the author, or no src on the image the author key will be undefined\n\t{\n\t\ttitle : \"x\"\n\t}\n});\n```\n\n### Using hooks to fold in all data\n\nIn cases where you want to pull all fields, then you will need to specify the hooks to signal mongolayer which relationships to populate.\n\n```js\n// query blog posts and fold in authors and their images, tags not folded in\npostModel.find({}, { hooks : [\"afterFind_author\", \"author.afterFind_image\"] }, function(err, docs) {\n\tif (err) { return cb(err); }\n\t\n\t// docs returned will have authors populated and author images populated\n\t// docs[0].author instanceof mongolayer.Document\n\t// docs[0].author_id instanceof mongolayer.ObjectId\n\t// docs[0].author.image instanceof mongolayer.Document\n\t// docs[0].author.image_id instanceof mongolayer.ObjectId\n\t\n\tcb(null);\n});\n```\n\n```js\n// query blog posts and fold in everything\npostModel.find({}, { hooks : [\"afterFind_author\", \"author.afterFind_image\", \"afterFind_tags\", \"afterFind_images\"] }, function(err, docs) {\n\tif (err) { return cb(err); }\n\t\n\tcb(null);\n});\n```\n\nAs you can read in the hook documentation you can specify defaultHooks at the model level this way if no hooks are specified it will run a default set of hooks.\n\n```js\n// If we declared our postModel with afterFind defaultHooks it will automatically fold in all related records on a `find({})` unless we were to pass hooks at runtime.\nvar postModel = new mongolayer.Model({\n\tcollection : \"posts\",\n\tfields : [\n\t\t{ name : \"title\", validation : { type : \"string\" } },\n\t\t{ name : \"description\", validation : { type : \"string\" } }\n\t],\n\trelationships : [\n\t\t{ name : \"author\", type : \"single\", modelName : \"authors\", required : true },\n\t\t{ name : \"tags\", type : \"multiple\", modelName : \"tags\" },\n\t\t{ name : \"images\", type : \"multiple\", modelName : \"images\" }\n\t],\n\tdefaultHooks : {\n\t\tfind : [\"afterFind_author\", \"author.afterFind_image\", \"afterFind_tags\", \"afterFind_images\"]\n\t}\n});\n\n// this will still fold in author, author images, tags and images\npostModel.find({}, function(err, docs) {\n\n});\n\n// this will fold fold in nothing because we are passing a value for hooks, causing the defaultHooks to not execute\npostModel.find({}, { hooks : [] }, function(err, docs) {\n\n});\n```\n\nLastly you could use `hookRequired : true` when specifying the relationship to make sure it is always ran regardless of what hooks are specified at run time.\n\n**Note:** Be careful when doing this due to performance implications. Nearly always, somewhere down the line you will want to query without pulling in the related records. Be certain you really want this hook to run **always** and not just **most of the time**.\n\n```js\n// This module will fold in authors always, regardless of what hooks are passed at runtime\nvar postModel = new mongolayer.Model({\n\tcollection : \"posts\",\n\tfields : [\n\t\t{ name : \"title\", validation : { type : \"string\" } },\n\t\t{ name : \"description\", validation : { type : \"string\" } }\n\t],\n\trelationships : [\n\t\t{ name : \"author\", type : \"single\", modelName : \"authors\", required : true, hookRequired : true },\n\t\t{ name : \"tags\", type : \"multiple\", modelName : \"tags\" },\n\t\t{ name : \"images\", type : \"multiple\", modelName : \"images\" }\n\t]\n});\n```\n\n# API Documentation\n\n## mongolayer\n\n### mongolayer.connectCached(options, cb)\n\nConnect to a mongolayer database. If a call to `mongolayer.connectCached` is made with the same arguments as a previous call, it will re-use the underlying `node-mongodb-native` connection but still give you a new `Connection` instance with no attached models.\n\n**This is the recommended method for connecting through `mongolayer` especially if you connect in unit tests.**\n\n* `options`\n\t* `connectionString` - `string`- `required` - Official `mongodb` [connection string](https://docs.mongodb.com/manual/reference/connection-string/). You must specify a database name in your connectionString. Example: `mongodb://127.0.0.1/mongolayer\"`.\n\t* `options` - `object` - `optional` - Connection options used by `node-mongodb-native`. Example: `{ poolSize : 10 } }`\n* `callback`\n\t* `Error` or null\n\t* `mongolayer.Connection`\n\nExample:\n\n```js\nmongolayer.connectCached({ connectionString : \"mongodb://127.0.0.1/mongolayer\" }, function(err, conn) {\n\t\n});\n\n// connect with auth\nmongolayer.connectCached({\n\tconnectionString : \"mongodb://127.0.0.1/mongolayer\",\n\toptions : {\n\t\tauth : {\n\t\t\tuser : \"username\",\n\t\t\tpassword : \"password\"\n\t\t}\n\t}\n}, cb);\n\n// connect to a replSet\nmongolayer.connectCached({\n\tconnectionString : \"mongodb://repl1:27017,repl2:27017,repl3:27017/dbName\",\n}, cb);\n```\n\n### mongolayer.connect(options, callback)\n\nConnect to a mongolayer database, returns Error and an instance of `mongolayer.Connection`.\n\nThis method takes the same arguments as `mongolayer.connectCached`.\n\nExample:\n\n```js\nmongolayer.connect({ connectionString : \"mongodb://127.0.0.1/mongolayer\" }, function(err, conn) {\n\t\n});\n```\n\n### mongolayer.toPlain(data)\n\nConverts an instance of a `Document` into a simple JS object without virtuals or methods.\n\n* `data` - `mongolayer.Document` - `required` - Can be a single `Document` or an array of `Document`.\n\nExample:\n\n```js\nmodel.find({}, function(err, docs) {\n\tvar simple = mongolayer.toPlain(docs);\n});\n```\n\n### mongolayer.testId(str)\n\nCreates a ObjectId with a predictable ID specifically for use in unit-tests where you would like predictable IDs. The string will be hex encoded and appended with \"0\".\n\n* `str` - `string` - `required` - String that you want to use for the mongoId. Must be 12 characters or less in length.\n\nExample:\n\n```js\nvar id = mongolayer.testId(\"foo\");\n// id === \"666f6f000000000000000000\"\n```\n\n## Connection\n\n### constructor\n\nIt is **not** recommended you initialize your own `mongolayer.Connection` manually, instead use `mongolayer.connectCached` or `mongolayer.connect`.\n\n### connection.add(args, callback)\n\nAdds a model to a connection. At this moment is also ensures the collection has any declared indexes.\n\n* `args`\n\t* `model` - `mongolayer.Model` - `required` - A mongolayer Model to add to the connection.\n\t* `sync` - `boolean` - `optional` - Whether to sync the state of the Model to the database. This triggers the creation of indexes or the underlying view.\n* `callback`\n\t* `Error` or null\n\nExample:\n\n```js\nvar model = new mongolayer.Model({ collection : \"foo\" });\nconn.add({ model : model }, function(err) {\n\t\n});\n```\n\n### connection.remove(args, cb)\n\nRemoves a Model from a Connection. This does not remove data or remove the underlying MongoDB table in any fashion.\n\n* `args`\n\t* `model` - `mongolayer.Model` - `required` - A mongolayer Model to be removed\n* `callback`\n\t* `Error` or null\n\t\n### connection.removeAll(cb)\n\nRemoves all **Models** from a **Connection**. This does not remove data or remove the underlying MongoDB table in any fashion. Sometimes used in unit testing if you want to wipe a `mongolayer.Connection` between each test iteration. Can also use `mongolayer.connectCached` to accomplish the same task.\n\n* `callback`\n\t* `Error` or null\n\t\n### connection.dropCollection(args, cb)\n\n* `args`\n\t* `name` - `string` - `required` - The name of the collection to remove\n* `callback`\n\t* `Error` or null\n\n### connection.close(cb)\n\nCloses the underlying `node-mongodb-native` connection.\n\n* `callback`\n\t* `Error` or null\n\n## Model\n\n### constructor - new mongolayer.Model(args);\n\nCreates an instance of a `mongolayer.Model`.\n\n* `args`\n\t* `collection` - `string` - `required` - The name of the collection\n\t* `allowExtraKeys` - `boolean` - `optional` - `false` - Whether the model allows fields which aren't declared to be saved to the DB.\n\t* `deleteExtraKeys` - `boolean` - `optional` - `false` - Whether the model will delete extra keys that are attempted to be saved to the DB.\n\t* `fields` - `array` - `optional` - Array of fields to add to the Model. See model.addField for syntax.\n\t* `virtuals` - `array` - `optional` - Array of virtuals to be added to Documents returned from queries. See model.addVirtual for syntax.\n\t* `relationships` - `array` - `optional` - Array of relationships. See model.addRelationship for syntax.\n\t* `indexes` - `array` - `optional` - Array of indexes. See model.addIndex for syntax.\n\t* `name` - `string` - `optional` - The name of the model. If not passed it will use the name of the collection. This option allows you to have two models using the same underlying MongoDB collection.\n\n### model.addField(args)\n\nAdds a field to a model. This is the basic schema that each document in the collection will have.\n\nThese can also be specified by passing a `fields` array to a `mongolayer.Model` constructor.\n\n* `name` - `string` - `required` - Name of the field.\n* `validation` - `object` - `required` - Validation schema for the key, using [jsvalidator](https://github.com/simpleviewinc/jsvalidator) syntax.\n* `default` - `any` - `optional` - Default value for the field. Can be a function who's return will be the value.\n* `required` - `boolean` - `optional` - Whether the field is required before putting into the database.\n* `persist` - `boolean` - `optional` - `default true`. If false, then the value of the field is not persisted into the database.\n* `toJSON` - `boolean` - `optional` - `default true`. If false, then the value will not serialize to JSON when JSON.stringify() is called on it.\n\nExample:\n\n```js\n// add simple string field\nmodel.addField({ name : \"foo\", validation : { type : \"string\" } });\n\n// add date field with default filled at runtime\nmodel.addField({ name : \"created\", validation : { type : \"date\" }, default : function() { return new Date() } });\n\n// add non-persistent field not-saved to the database but sometimes used to store data during runtime.\nmodel.addField({ name : \"_cached\", persist : false });\n```\n\n### model.addVirtual(args)\n\nAdds a virtual to a model. These are attached with `Object.defineProperty` to each Document that is returned by queries. You can use them for getters, and/or setters.\n\nThese can also be specified by passing a `virtuals` array to a `mongolayer.Model` constructor.\n\n* `name` - `string` - `required` - Name of the key to access the virtual\n* `get` - `function` - `optional` - Function executed when the key is accessed.\n* `set` - `function` - `optional` - Function executed when the key is set.\n* `enumerable` - `boolean` - `optional` - `default true` - Whether the key is exposed as enumerable with code such as `for in` loops.\n* `cache` - `boolean` - `optional` - `default false` - If true, the virtual will only be evaluate once, subsequent calls will return the first returned value.\n* `writable` - `boolean` - `optional` - `default false` - If true, the virtuals value can be set directly, without a setter. Cannot be used with a getter.\n* `requiredFields` - `array of strings` - `optional` - An array of requiredFields this virtual depends on. In find() fields, if the virtual is specified for inclusion,\nit will automatically ensure that all requiredFields are part of the fields doc, simplifying downstream developer workflows. requiredFields can reference other virtual fields,\nallowing developers to chain multiple virtuals together.\n* `requiredHooks` - `array of strings` - `optional` - An array of hooks that this virtual depends on. In find() fields, if the virtual is specified for inclusion\nit will automatically add these hooks to run.\n\nVirtuals can be executed in `castDocs === false` if they are specified in the `fields` find() option.\n\nExample:\n\n```js\n// add a getter to convert a mongolayer ObjectId to a simple string and a setter to convert a string to a mongolayer.ObjectId\n// this is used so that in MongoDB you are storing the actual ObjectId, but in your code you can pass strings (which may make things easier)\n// this assumes the model has a field called 'user_id' which holds a `mongolayer.ObjectId`\nmodel.addVirtual({\n\tname : \"user_id_string\",\n\tget : function() {\n\t\treturn this.user_id.toString()\n\t},\n\tset : function(val) {\n\t\tthis.user_id = new mongolayer.ObjectId(val);\n\t}\n});\n\n// add a virtual to convert \\r\\n in strings into <br/> tags\n// this assumes the Model has a field called 'description' which holds a `string`\nmodel.addVirtual({\n\tname : \"description_formatted\",\n\tget : function() {\n\t\treturn this.description.replace(/(?:\\r\\n|\\r|\\n)/g, \"<br/>\");\n\t},\n\tenumerable : false\n});\n\nvar doc = new mongolayer.Document({ description : \"foo\\r\\nbar\" });\nconsole.log(doc.description_formatted);\n// \"foo<br/>bar\"\n```\n\nWorking with requiredFields\n\n```js\nmodel.addVirtual({\n\tname : \"url\",\n\tget : function() { return \"http://www.mydomain/post/\" + this.slug + \"/\"; },\n\trequiredFields : [\"slug\"]\n});\n\nmodel.addVirtual({\n\tname : \"slug\",\n\tget : function() { return encodeURI(this.title.toLowerCase().replace(/[^\\w ]/g, \"\").replace(/\\s/g, \"-\")); },\n\trequiredFields : [\"title\"]\n});\n\nvar data = {\n\ttitle : \"This is a test!\",\n\tdescription : \"My description text\"\n}\n\n// query and ask for only the url, since the url depends on title and slug both will come back\nmodel.find({}, { fields : { url : 1 } }, function(err, docs) {\n\tdocs[0] === { _id : objectId, title : \"This is a test\", slug : \"this-is-a-test\", url : \"http://www.mydomain/post/this-is-a-test/\" }\n});\n\n// query with castDocs and only the specified fields come back, even though our virtual (under the hood) needed some additional fields to operate\nmodel.find({}, { fields : { url : 1 }, castDocs : false }, function(err, docs) {\n\tdocs[0] === { url : \"http://www.mydomain/post/this-is-a-test/\" }\n});\n```\n\n**Note:** you cannot query against fields declared as virtuals, you can only query against fields actually stored in the database.\n\n### model.addRelationship(args)\n\nAdds a relationship to a model. This automatically creates an afterFind hook for you can specify to load related records.\n\nThis documents the addRelationship call, for specific use cases and examples please see the relationship section of the documentation.\n\nThese can also be specified by passing a `relationships` array to a `mongolayer.Model` constructor.\n\n* `args`\n\t* `name` - `string` - `required` - The name of key where the related record will be populated and the name given to the hook created to populate the records. If type is 'single', then the id for the record is stored at `[name]_id`. If the type is 'multipled', then an array of ids is stored at `[name]_ids`.\n\t* `type` - `string` - `required` - Possible values are 'single' and 'multiple'. If `single` then each row can only have a single related record. If `multiple` then the related records will be an array.\n\t* `modelName` - `string` - `required` - The name of the model that this relates to. If no name is passed when initializing the `mongolayer.Model` then modelName will be the name of the collection.\n\t* `required` - `boolean` - `optional` - If required then records cannot be saved unless they have an associated record(s).\n\nExample:\n\n```js\n// adds a required single relationship to a model\nmodel.addRelationship({\n\tname : \"author\",\n\ttype : \"single\",\n\tmodelName : \"authors\",\n\trequired : true\n});\n\n// adds a optional multiple relationship to a model\nmodel.addRelationship({\n\tname : \"tags\",\n\ttype : \"multiple\",\n\tmodelName : \"tags\"\n});\n```\n\n### model.addHook(args)\n\nRegisters a hook which can be specified at query-time. Hooks provide a powerful mechanism for wrapping all queries in and out of MongoDB.\n\n**Note**: All hook handlers should cb(null, args) or cb(err) (in the event of an error which you want to halt the operation).\n\nThese can also be specified by passing a `hooks` array to a `mongolayer.Model` constructor.\n\n* `args`\n\t* `name` - `string` - `required` - The name of the hook\n\t* `type` - `string` - `required` - The type of hook that you are creating. Possible options are beforeFind, afterFind, beforeInsert, afterInsert, beforeCount, afterCount, beforeSave, afterSave, beforeUpdate, afterUpdate, beforeRemove, afterRemove.\n\t* `handler` - `function(args, cb)` - `required` - The handler function which will be executed when the hook is called. The content of `args` depends on the specific hook. See the hook documentation for more information.\n\t\nExample:\n\n```js\n// adds a afterFind hook to a model to load in some facebook posts after query\nvar facebookLibrary = require(\"someFancyFacebookLibrary\");\nvar async = require(\"async\");\n\nmodel.addHook({\n\tname : \"facebookPosts\",\n\ttype : \"afterFind\",\n\thandler : function(args, cb) {\n\t\t// check to make sure we we have docs to work with\n\t\tif (args.docs.length === 0) {\n\t\t\treturn cb(null, args);\n\t\t}\n\t\t\n\t\tvar calls = [];\n\t\t\n\t\t// foreach doc imagine we are loading some data from another source, in this case facebook\n\t\targs.docs.forEach(function(val, i) {\n\t\t\tcalls.push(function(cb) {\n\t\t\t\tfacebookLibrary.getPosts(val.facebookId, function(err, temp) {\n\t\t\t\t\tif (err) { return cb(err); }\n\t\t\t\t\t\n\t\t\t\t\t// update the doc with the data from our async data source, in this case facebook\n\t\t\t\t\tval.facebookPosts = temp;\n\t\t\t\t\t\n\t\t\t\t\tcb(null);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t\t\n\t\tasync.parallel(calls, function(err) {\n\t\t\tif (err) { return cb(err, args); }\n\t\t\t\n\t\t\tcb(null, args);\n\t\t});\n\t}\n});\n```\n\n### model.addDocumentMethod(args)\n\nAdds a method to be attached to each `mongolayer.Document` retrieved from MongoDB. Methods added to documents are executed by calling `doc.methodName(myArgs)`.\n\nThis function basically takes a handler function and attaches it to the `mongolayer.Document` prototype specific to your Model.\n\nThese can also be specified by passing a `documentMethods` array to a `mongolayer.Model` constructor.\n\n* `args` - `object` - `required`\n\t* `name` - `string` - `required` - The name of the method. \n\t* `handler` - `function` - `required` - The function which will be executed when the method is called. The `this` scope will be the specific document. The handler function can take any configuration of arguments.\n\nExample:\n\n```js\nvar model = new mongolayer.Model({\n\tcollection : \"users\",\n\tfields : [\n\t\t{ name : \"name\", validation : { type : \"string\" }, required : true },\n\t\t{ name : \"permissions\", validation : { type : \"array\", schema : { type : \"string\" } }, required : true }\n\t]\n});\n\n// add a method to a document that takes two arguments\nmodel.addDocumentMethod({\n\tname : \"hasPermission\",\n\thandler : function(permName) {\n\t\treturn this.permissions.indexOf(permName) > -1;\n\t}\n});\n\nvar doc = new model.Document({\n\tname : \"New Guy\",\n\tpermissions : [\"canPost\", \"canEdit\"]\n});\n\nconsole.log(doc.hasPermission(\"canPost\"))\n// true\nconsole.log(doc.hasPermission(\"canEdit\"))\n// true\nconsole.log(doc.hasPermission(\"canRemove\"))\n// false\n```\n\n### model.addModelMethod(args)\n\nAdds a method to a model. Model methods are executed by calling `model.methods.methodName(myArgs)`.\n\nThese can also be specified by passing a `modelMethods` array to a `mongolayer.Model` constructor.\n\n* `args`\n\t* `name` - `string` - `required` - The name of the method.\n\t* `handler` - `function` - `required` - The function which will be executed when the method is called. The `this` scope will refer to the model. The handler function can take any configuration of arguments.\n\nExample:\n\n```js\nvar model = new mongolayer.Model({\n\tcollection : \"posts\",\n\tfields : [\n\t\t{ name : \"title\", validation : { type : \"string\" }, required : true },\n\t\t{ name : \"description\", validation : { type : \"string\" }, required : true },\n\t\t{ name : \"active\", validation : { type : \"boolean\" }, required : true },\n\t\t{ name : \"publish_start\", validation : { type : \"date\" }, default : function() { return new Date() } },\n\t\t{ name : \"publish_end\", validation : { type : \"date\" } } // optional publish end date\n\t]\n});\n\n// Adds model method to get all posts which are active, and who's publish_start is in the past and, if it has a publish_end, a publish_end in the future\n// This way we don't have to replicate the rather complicated filter each time we want to run this query\nmodel.addModelMethod({\n\tname : \"getActivePosts\",\n\thandler : function(cb) {\n\t\tthis.model.find({\n\t\t\tactive : true,\n\t\t\tpublish_start : { $lte : new Date() },\n\t\t\t$or : [\n\t\t\t\t{ publish_end : { $gt : new Date() },\n\t\t\t\t{ publish_end : { $exists : false } }\n\t\t\t]\n\t\t}, cb);\n\t}\n});\n\n// assumes the model has been added to a `mongolayer.Connection`\nmodel.methods.getActivePosts(function(err, docs) {\n\t// do stuff with active docs\n});\n```\n\n### model.addIndex(args)\n\nAdds an index to a collection. Indexes are created using `collection.ensureIndex(keys, options)`. Please reference the [official MongoDB ensureIndex docs](http://docs.mongodb.org/manual/reference/method/db.collection.ensureIndex/) for complete documentation on creating and using indexes.\n\n**Note**: MongoDB natively creates an index on `_id`. So there is no need to `addIndex()` for that index.\n\n* `args` - `object` - `required`\n\t* `keys` - `object` - `required` - The keys object which specifies which keys are part of the index.\n\t* `options` - `object` - `required` - The options object which specifies the index settings.\n\nExample:\n\n```js\n// creates a unique index on the slug key\nmodel.addIndex({\n\tkeys : { slug : 1 },\n\toptions : { unique : true }\n});\n```\n\n## Querying\n\n### model.aggregate(pipeline, options, cb)\n\nRuns a aggregation query on a mongoDB collection and returns an array of objects.\n\nHooks: `beforeAggregation` -> `afterAggregation`\n\nArguments\n\n* `pipeline` - `array` - `required` - MongoDB aggregation pipeline. See official docs\n* `options` - `object` - `optional`\n\t* `maxSize` - `number` - `optional` - Enforce a maxSize at query time to prevent large data sets from being inadvertently returned, returns an Error if violated.\n\t* `castDocs` - `boolean` - `default false` - *RECOMMENDED false*. If true it will convert the returned docs into instanceof model.Document, allowing access to virtuals. If false, you can utilize `options.virtuals` to execute specific virtuals, which is preferred versus castDocs.\n\t* `hooks` - `array` - `optional` - Array of hooks to run. See [hooks documentation](#runtime_hooks) for syntax.\n\t* `virtuals` - `array of strings` - `optional` - An array of virtuals to attach to the returned documents. If used it is assumed that the aggregation will return any dependent data needed to fulfill the virtual.\n\t\n```js\n// simple aggregate\nmodel.aggregate([\n\t{ $match : { foo : \"fooValue\" } }\n], function(err, docs) {\n\t\n});\n\n// with virtuals and hooks\nmodel.aggregate([\n\t{ $match : { foo : \"fooValue\" } }\n], { virtuals : [\"fooVirtual\"], hooks : [\"beforeAggregate_test\", \"afterAggregate_test2\"] }, function(err, docs) {\n\t\n});\n```\n\n### model.promises.aggregate(filter, options)\n\nReturns a promise. Same arguments as `model.aggregate`.\n\n### model.find(filter, options, cb)\n\nRuns a find query on a mongoDB collection and returns an array of `mongolayer.Document`.\n\nUsage of `castDocs : false` and passing `fields` is recommended for performance. When done so it will only return the specified fields, and will pull down less data from MongoDB.\n\nHooks: `beforeFind` -> `beforeFilter` -> `afterFind`\n\nArguments\n\n* `filter` - `object` - `required` - Standard mongoDB filter syntax.\n* `options` - `object` - `optional`\n\t* `fields` - `object` - `optional` - Which fields to include in the query. Uses [MongoDB native syntax](http://docs.mongodb.org/manual/tutorial/project-fields-from-query-results/).\n\t* `options` - `object` - `optional` - An options object which is passed on to `node-mongodb-native` which performs the query. If you need to pass options at that level, pass them here.\n\t* `sort` - `object` - `optional` - Sort criteria. Uses [MongoDB native syntax](http://docs.mongodb.org/manual/reference/method/cursor.sort/)\n\t* `collation` - `object` - `optional` - Collation spesification. Uses [MongoDB native syntax](https://docs.mongodb.com/manual/reference/collation/)\n\t* `limit` - `number` - `optional` - Number of records to retrieve.\n\t* `skip` - `number` - `optional` - Number of records to skip before retrieving records.\n\t* `maxSize` - `number` - `optional` - Enforce a maxSize at query time to prevent large data sets from being inadvertently returned, returns an Error if violated.\n\t* `castDocs` - `boolean` - `default true` - *RECOMMENDED false*. If true it will convert the returned docs into instanceof model.Document, allowing access to virtuals. If false, only virtuals mentioned in the fields object are accessible, which is the recommendataion! castDocs is also recursive, so all relationships will be pulled with castDocs === false as well. If you require virtuals on them, specify it in your fields object.\n\t* `hooks` - `array` - `optional` - Array of hooks to run. See [hooks documentation](#runtime_hooks) for syntax.\n\t* `count` - `boolean` - `default false` - If true it will return an object with `{ count : count, docs : docs }` including the full count that matches the query (not just count of returned docs).\n\t* `context` - `object` - `optional` - If passed, it will be available to all hooks in the descendent query. So this object can be accessed in the hooks and resolvers of relationships.\n* `cb` - `function` - `required`\n\t* `Error` or null\n\t* `array` of `model.Document`.\n\nExample:\n\n```js\n// simple find\nmodel.find({}, function(err, docs) {\n\t\n});\n\n// find which sorts by created, returns 10 posts, and skips the first 10 posts\nmodel.find({}, { sort : { created : 1 }, limit : 10, skip : 10 }, function(err, docs) {\n\t\n});\n\n// find which sorts by fullName with the collation locale \"fr\"\nmodel.find({}, { sort : { fullName : 1 }, collation: { locale: \"fr\" } }, function(err, docs) {\n\t\n});\n\n// castDocs === false\nmodel.find({}, { castDocs : false, fields : { _id : 1, title : 1, description : 1 } }, function(err, docs) {\n\t// returned data will only contain _id, title, description\n});\n```\n\n### model.promises.find(filter, options)\n\nReturns a promise. Same arguments as `model.find`.\n\n### model.findById(id, options, cb)\n\nA shortcut for pulling down a specific document from the database.\n\nHooks: `beforeFind` -> `beforeFilter` -> `afterFind`\n\nArguments\n\n* `id` - `string` or `mongolayer.ObjectId` - `required` - The _id for a record in string or `mongolayer.ObjectId` form.\n* `options` - The same options available to `model.find` please see the docs there.\n* `cb` - `function` - `required`\n\t* `Error` or null\n\t* `model.Document`\n\nExample:\n\n```js\nvar doc = new model.Document();\n\n// using string syntax\nmodel.findById(doc.id, function(err, doc) {\n\n});\n\n// using mongolayer.ObjectId syntax\nmodel.findByid(doc._id, function(err, doc) {\n\t\n});\n```\n\n### model.promises.findById(id, options)\n\nReturns a promise. Same arguments as `model.findById`.\n\n### model.insert(docs, options, cb)\n\nRuns an insert query on a mongoDB collection and returns an array of `mongolayer.Document`.\n\nHooks: `beforeInsert` -> `beforePut` (for each doc) -> `afterPut` (for each doc) -> `afterInsert`\n\n**Note**: When running bulk inserts, in the event a `WriteError` occurs in the middle, such as on a key conflict, the records up to that point will still be inserted. In this state, your `afterPut` and `afterInsert` hooks will not run.\n\nArguments\n\n* `docs` - `object` or `array` - `required` - Can be a single plain javascript object or array of plain javascript objects, or a single `model.Document` or an array of `model.Document`.\n* `options` - `object` - `optional`\n\t* `options` - `object` - `optional` - An options object which is passed on to `node-mongodb-native` which performs the query. If you need to pass options at that level, pass them here.\n\t* `hooks` - `array` - `optional` - Array of hooks to run. See [hooks documentation](#runtime_hooks) for syntax.\n\t* `stripEmpty` - `boolean` - `optional` - defaults to true. Removes empty strings, objects, arrays, and undefined values inside of your document.\n* `cb` - `function` - `required`\n\t* `Error` or null\n\t* If a single document is inserted, then it will return a single `model.Document`, if an array of documents was inserted it will return an array of `model.Document`.\n\t* `result` writeResult\n\nExample:\n\n```js\n// insert plain document\nmodel.insert({ foo : \"bar\" }, function(err, doc) {\n\tconsole.log(doc instanceof model.Document);\n\t// true\n});\n\n// create document first, then insert into DB\nvar doc = new model.Document({ foo : \"bar\" });\ndoc.doSomethingElse();\nmodel.insert(doc, function(err, doc) {\n\tconsole.log(doc instanceof model.Document);\n\t// true\n});\n\n// insert array of documents\nmodel.insert([{ foo : \"bar\" }, { foo : \"baz\" }], function(err, docs) {\n\tconsole.log(docs instanceof Array);\n\t// true\n\tconsole.log(docs[0] instanceof model.Document);\n\t// true\n\tconsole.log(docs[0].foo)\n\t// \"bar\"\n});\n```\n\n### model.save(doc, options, cb)\n\nRuns an save query which inserts a new object if the doc doesn't contain an `_id`. It it does it will overwrite that document if it exists, or upsert it if it doesn't.\n\n`save` is a great general purpose tool for inserting, upserting and replacing records.\n\n**Note**: `save` cannot be used for bulk operations. `save` in mongoDb shell does allow bulk operations, but that is a bug.\n\nHooks: `beforeSave` -> `beforePut` -> `afterPut` -> `afterSave`\n\nArguments\n\n* `doc` - `object` or `model.Document` - `required` - Can be a single plain javascript object or a single `model.Document`.\n* `options` - `object` - `optional`\n\t* `options` - `object` - `optional` - An options object which is passed on to `node-mongodb-native` which performs the query. If you need to pass options at that level, pass them here.\n\t* `hooks` - `array` - `optional` - Array of hooks to run. See [hooks documentation](#runtime_hooks) for syntax.\n\t* `stripEmpty` - `boolean` - `optional` - defaults to true. Removes empty strings, objects, arrays, and undefined values inside of your document.\n* `cb` - `function` - `required`\n\t* `Error` or null\n\t* `model.Document`\n\t* `result` writeResult\n\n### model.remove(filter, options, cb)\n\nRemoves records from a collection.\n\nHooks: `beforeRemove` -> `beforeFilter` -> `afterRemove`\n\nArguments\n\n* `filter` - `object` - `required` - Standard mongoDB filter syntax.\n* `options` - `object` - `optional`\n\t* `options` - `object` - `optional` - An options object which is passed on to `node-mongodb-native` which performs the query. If you need to pass options at that level, pass them here.\n\t* `hooks` - `array` - `optional` - Array of hooks to run. See [hooks documentation](#runtime_hooks) for syntax.\n* `cb` - `function` - `required`\n\t* `Error` or null\n\t* `result` writeResult\n\t\n### model.removeAll(cb)\n\nRemoves all records from a collection. This is much faster method of doing `model.remove({}, cb)`.\n\n### model.update(filter, delta, options, cb)\n\nUpdates documents in the database. This function works similarly to the native MongoDB update command. For advanced documentation on operators and options please see [the official docs](http://docs.mongodb.org/manual/reference/method/db.collection.update/).\n\nHooks: `beforeUpdate` -> `beforeFilter` -> `afterUpdate`\n\nKey Points about using `update`\n\n* Mongoose wraps all update options in $set. **Mongolayer does not**, as this is not the behavior mongoDB works natively.\n* Mongolayer cannot handle field default values and enforcing required fields when using **any** update operators such as $set or $setOnInsert.\n* When using update operators `$set` and `$setOnInsert` are still validated.\n* Mongolayer will handle default values, required fields, and validation when doing whole document update syntax `model.update(filter, { foo : \"bar\" }, cb)`\n* Do not use `update` with `upsert` semantics if you want to leverage the `beforePut` and `afterPut` hooks. Instead use `save` it provides the same functionality. This is due to eccentricities of the MongoDB atomic model.\n\nArguments\n\n* `filter` - `object` - `required` - Standard mongoDB filter syntax.\n* `delta` - `object` - `required` - Standard mongoDB change object containing either whole document syntax of update operators such as `$set`.\n* `options` - `object` - `optional`\n\t* `options` - `object` - `optional` - An options object which is passed on to `node-mongodb-native` which performs the query. If you need to pass options at that level, pass them here.\n\t* `hooks` - `array` - `optional` - Array of hooks to run. See [hooks documentation](#runtime_hooks) for syntax.\n\t* `stripEmpty` - `boolean` - `optional` - defaults to true. Removes empty strings, objects, arrays, and undefined values inside of your document.\n* `cb` - `function` - `required`\n\t* `Error` or null\n\t* `result` writeResult\n\t\n### model.count(filter, options, cb)\n\nReturns the count of documents that match a filter.\n\nHooks: `beforeCount` -> `beforeFilter` -> `afterCount`\n\nArguments\n\n* `filter` - `object` - `required` - Standard mongoDB filter syntax.\n* `options` - `object` - `optional`\n\t* `options` - `object` - `optional` - An options object which is passed on to `node-mongodb-native` which performs the query. If you need to pass options at that level, pass them here.\n\t* `hooks` - `array` - `optional` - Array of hooks to run. See [hooks documentation](#runtime_hooks) for syntax.\n* `cb` - `function` - `required`\n\t* `Error` or null\n\t* `number` of documents\n\n## model properties\n\nA list of public properties which you can access to introspect various functionality of your models.\n\nDo not alter any of the following properties at runtime, but you can safely read their values.\n\n* `model.name` - `string` - Name of the model. Do not alter at run-time.\n* `model.connected` - `boolean` - Whether the model is currently attached to a `mongolayer.Connection`.\n* `model.collection` - `mongodb.MongoClient.Db.collection` reference. Exposed in case you need functionality not handled by mongolayer.\n* `model.Document` - `mongolayer.Document` - The document class specific to this model with virtuals and methods attached to prototype. When running queries each row returns documents of this class.\n* `model.methods` - `object` - Object containing methods attached by `model.addModelMethod`. Please do not attach manually.\n* `model.ObjectId` - `object` - Shortcut reference to `mongolayer.ObjectId`. Can be used to create or cast ids.\n* `model.defaultHooks` - `object` - Object containing arrays for the defaults hooks for each query type\n\n# Development\n\n### Install the repo\n* `sudo sv install mongolayer --type=container`\n\n### Run  it locally\n* You should be running in the `sv-kubernetes` vagrant environment.\n* `cd /sv/containers/dms-core`\n* `sudo npm run docker`\n\t* `yarn test` - Run the tests.","readmeFilename":"README.md","users":{"florian.cechi":true}}