{"_id":"draft","_rev":"35-b4dd65389782aca8f996de1cfadaf5c2","name":"draft","description":"Construct Object schemas and models","dist-tags":{"latest":"0.2.3"},"versions":{"0.0.1":{"name":"draft","version":"0.0.1","description":"Construct Object schemas and models","main":"index.js","scripts":{"test":"make test"},"repository":"","keywords":["object","schema","model"],"author":{"name":"Joseph Werle","email":"joseph.werle@gmail.com"},"license":"MIT","_id":"draft@0.0.1","dist":{"shasum":"8ba96223edf5edf2742901ba899a5b67e69d2b5c","tarball":"https://registry.npmjs.org/draft/-/draft-0.0.1.tgz","integrity":"sha512-tvhX5DI8LuApA4S2fEtRo1VOlC9s9Q6aQ1SctzEa97HXHJw4T/9mFnNNFs8ycxbY+VSccm8Y9NB5lhsBYlD8MQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFcosJ5y/O6Ntkj+fI9GqiC7OQT5C404EsAPb1e+24dAAiBWJXH2LKQl0TXYYiRGqQChQt6RG/2DZrK2wfOEHVmsTQ=="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"werle","email":"joseph.werle@gmail.com"},"maintainers":[{"name":"werle","email":"joseph.werle@gmail.com"}]},"0.0.2":{"name":"draft","version":"0.0.2","description":"Construct Object schemas and models","main":"index.js","scripts":{"test":"make test"},"repository":"","keywords":["object","schema","model"],"author":{"name":"Joseph Werle","email":"joseph.werle@gmail.com"},"license":"MIT","devDependencies":{"mocha":"~1.9.0"},"_id":"draft@0.0.2","dist":{"shasum":"e095713189854017f936258958bacbfcf858782a","tarball":"https://registry.npmjs.org/draft/-/draft-0.0.2.tgz","integrity":"sha512-CsiGxHDxjA18z6i+zQkcA0ZzorsRIh1G1cpEqu7vhsbVQ1TD4nUD85Wq9QfT9xUHOZGSbYAMXhadFHIZW/fRZA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDWeH/59faLWr+EMdeE/uPC5qVXtO77+I8Z9YfoIyBzdwIgW6NguEu4big5U+yv7g2NVqnbBPRbwDXNPG2nTHj/EPY="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"werle","email":"joseph.werle@gmail.com"},"maintainers":[{"name":"werle","email":"joseph.werle@gmail.com"}]},"0.0.3":{"name":"draft","version":"0.0.3","description":"Construct Object schemas and models","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/jwerle/draft.git"},"keywords":["object","schema","model"],"author":{"name":"Joseph Werle","email":"joseph.werle@gmail.com"},"license":"MIT","devDependencies":{"mocha":"~1.9.0"},"testling":{"harness":"mocha","files":"test/*.js","browsers":{"ie":[10],"ff":[17,18,19],"chrome":[20,21,22,23,24,25]}},"_id":"draft@0.0.3","dist":{"shasum":"e68f9776f207296d33109fbf9091d1c3a84596dd","tarball":"https://registry.npmjs.org/draft/-/draft-0.0.3.tgz","integrity":"sha512-bV99eRsedJDtSeA1lzeABl37UsoYC1dIaIZ9WMlznfTNFHu1R2JI1l5OIRg69xMmuB4DOyrgC4XVnjKGMPLedg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDCn9vnSZHZWIrgNM+Q3Rt0s5VMR1dMw1Me+WJbfr60CwIhAPkQ/nw+XqfMWwlwFMqggxrHgfS+ucBgbJtW2ztQF1N2"}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"werle","email":"joseph.werle@gmail.com"},"maintainers":[{"name":"werle","email":"joseph.werle@gmail.com"}]},"0.0.4":{"name":"draft","version":"0.0.4","description":"Construct Object schemas and models","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/jwerle/draft.git"},"keywords":["object","schema","model"],"author":{"name":"Joseph Werle","email":"joseph.werle@gmail.com"},"license":"MIT","devDependencies":{"mocha":"~1.9.0"},"testling":{"harness":"mocha","files":"test/*.js","browsers":{"ie":[10],"ff":[17,18,19],"chrome":[20,21,22,23,24,25]}},"_id":"draft@0.0.4","dist":{"shasum":"7f870a4aba34cfeb33fbb0a2b9a9f94b4a746853","tarball":"https://registry.npmjs.org/draft/-/draft-0.0.4.tgz","integrity":"sha512-ZChupac5UK58XCeJ5yA9cP4or4JdMKqJHYG8+Oc69PNKOMIi4OjKyjjZNXqSRcFTUko3MzZ9RhJk6vvYWaKqzQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDT8mme+PIIyYxx5FyCWnsUoggDaPQUmE0M9qMy4HVI0gIhAKrwS4zbAe33Y9vrqdct0Y7y9T5zmLnqz771CmDDsjWa"}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"werle","email":"joseph.werle@gmail.com"},"maintainers":[{"name":"werle","email":"joseph.werle@gmail.com"}]},"0.0.5":{"name":"draft","version":"0.0.5","description":"Construct Object schemas and models","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/jwerle/draft.git"},"keywords":["object","schema","model"],"author":{"name":"Joseph Werle","email":"joseph.werle@gmail.com"},"license":"MIT","devDependencies":{"mocha":"~1.9.0"},"testling":{"harness":"mocha","files":"test/*.js","browsers":{"ie":[10],"ff":[17,18,19],"chrome":[20,21,22,23,24,25]}},"_id":"draft@0.0.5","dist":{"shasum":"b5ca4fa95a2fa7e4c20af2179e77ebc0bd93f524","tarball":"https://registry.npmjs.org/draft/-/draft-0.0.5.tgz","integrity":"sha512-KLlO3MRDfEEyuPRmcV3oPxk+xXF7ec+0zGgkFtdgrBZh2OSRZs5IdR4JQfIs6zub5sFcRZQtqshQaRSoLwL83g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGAaNj4LszzoC+ggOD1Rv7L/LYMLIZhZNwQlqebC6XzeAiAN66HT2T1WS3OMFXb3MLB0yUDM0li77G87NuzTo7O1WQ=="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"werle","email":"joseph.werle@gmail.com"},"maintainers":[{"name":"werle","email":"joseph.werle@gmail.com"}]},"0.0.6":{"name":"draft","version":"0.0.6","description":"Construct Object schemas and models","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/jwerle/draft.git"},"keywords":["object","schema","model"],"author":{"name":"Joseph Werle","email":"joseph.werle@gmail.com"},"license":"MIT","devDependencies":{"mocha":"~1.9.0"},"testling":{"harness":"mocha","files":"test/*.js","browsers":{"ie":[10],"ff":[17,18,19],"chrome":[20,21,22,23,24,25]}},"_id":"draft@0.0.6","dist":{"shasum":"def880fb8cde3771745642bba7374346b87560ac","tarball":"https://registry.npmjs.org/draft/-/draft-0.0.6.tgz","integrity":"sha512-LPC0XahtjVpkHn5xRnOnIcX1Mgx65+GTdiBkTwlH9AMkYxYBZ/FvflzTlC58xUpNraRJ3Io56/OrwQdBN1ZCWg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHHliqvF+hh8AUMmZzA7TSrfC//zLtzXFoNJmXuWFUtCAiEA2ubizmtHM2bn6bwTsdSQwfljeJJq94b6mrOMa6dSWF8="}]},"_npmVersion":"1.1.62","_npmUser":{"name":"werle","email":"joseph.werle@gmail.com"},"maintainers":[{"name":"werle","email":"joseph.werle@gmail.com"}]},"0.0.7":{"name":"draft","version":"0.0.7","description":"Construct Object schemas and models","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/jwerle/draft.git"},"keywords":["object","schema","model"],"author":{"name":"Joseph Werle","email":"joseph.werle@gmail.com"},"license":"MIT","devDependencies":{"mocha":"~1.9.0"},"testling":{"harness":"mocha","files":"test/*.js","browsers":{"ie":[10],"ff":[17,18,19],"chrome":[20,21,22,23,24,25]}},"_id":"draft@0.0.7","dist":{"shasum":"ec3bbf68acddfd2501ee8c51b2aba8a0601a6e1a","tarball":"https://registry.npmjs.org/draft/-/draft-0.0.7.tgz","integrity":"sha512-NOqjnWaSANhI6vzREqi2xgLB0zgB64fCLDjkzeCJVH5uS+00dgEQ7CTZbJZ3b/mC/v30N/+lZJ7hizL7ZtN/FQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGrcTmAMiWlWpXZ8w/WWCmKNsvFJFmzGvNWM4FiR6L+gIgUC1ZoJGhDu5jvD98dfzay/nU6N1wNj9h1bS7P3qOHq0="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"werle","email":"joseph.werle@gmail.com"},"maintainers":[{"name":"werle","email":"joseph.werle@gmail.com"}]},"0.0.8":{"name":"draft","version":"0.0.8","description":"Construct Object schemas and models","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/jwerle/draft.git"},"keywords":["object","schema","model"],"author":{"name":"Joseph Werle","email":"joseph.werle@gmail.com"},"license":"MIT","devDependencies":{"mocha":"~1.9.0"},"testling":{"harness":"mocha","files":"test/*.js","browsers":{"ie":[10],"ff":[17,18,19],"chrome":[20,21,22,23,24,25]}},"_id":"draft@0.0.8","dist":{"shasum":"7d3038eefc19295e9a13dd293e45a97ccac45078","tarball":"https://registry.npmjs.org/draft/-/draft-0.0.8.tgz","integrity":"sha512-syYThmkDBSpC3y/AeBwjqt6sgvm7li1amZnt8NvcpWOC5AVSI/+tkitsLZQgJXj6ulLRjj+Dcq+4uuMuE77HAQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCR9QI4cLme3hqjLv/FatUkUEPunyNDKkUjFoNie8AxaQIhAIw2+L9PZZSWITfDFCl6hJaoVTnXL0D24Yt1oYhxP1UD"}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"werle","email":"joseph.werle@gmail.com"},"maintainers":[{"name":"werle","email":"joseph.werle@gmail.com"}]},"0.0.9":{"name":"draft","version":"0.0.9","description":"Construct Object schemas and models","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/jwerle/draft.git"},"keywords":["object","schema","model"],"author":{"name":"Joseph Werle","email":"joseph.werle@gmail.com"},"license":"MIT","devDependencies":{"mocha":"~1.9.0"},"testling":{"harness":"mocha","files":"test/*.js","browsers":{"ie":[10],"ff":[17,18,19],"chrome":[20,21,22,23,24,25]}},"_id":"draft@0.0.9","dist":{"shasum":"ffd397521e902298d26c871ee24ebd7f86054d08","tarball":"https://registry.npmjs.org/draft/-/draft-0.0.9.tgz","integrity":"sha512-R6BIZZPSyZpbn1kGJpf++bCiWrW0fhftxMEfzLMwUpcEP1T0dqn0Xy0aHxRI8XRRtCi1FfKWYdf72U4MEXwuLA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD0w+woylry8kdlBM04AJ1IuJOeUa9RfDDIll2neNzWbAIhAO5LorBZRuPbBnJynYuqvtXkbXKAYDvoK8eFqUHgcBFe"}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"werle","email":"joseph.werle@gmail.com"},"maintainers":[{"name":"werle","email":"joseph.werle@gmail.com"}]},"0.1.0":{"name":"draft","version":"0.1.0","description":"Construct Object schemas and models","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/jwerle/draft.git"},"keywords":["object","schema","model"],"author":{"name":"Joseph Werle","email":"joseph.werle@gmail.com"},"license":"MIT","devDependencies":{"mocha":"~1.9.0"},"testling":{"harness":"mocha","files":"test/*.js","browsers":{"ie":[10],"ff":[17,18,19],"chrome":[20,21,22,23,24,25]}},"_id":"draft@0.1.0","dist":{"shasum":"b5ff060be1ca514934940c6f146dba46906de243","tarball":"https://registry.npmjs.org/draft/-/draft-0.1.0.tgz","integrity":"sha512-C3HciosgFuz6UD65HSa8BvlL4/TWl9LpIWInra9jIV6DPH7riGbH7MvTVCk7Atg1DuFES2fujB+PUTSFPR0m2g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDyGRCT3X7dL4HApagtYKIuxsBlt2B2hlUcC9BQZTYN6AIgbFSE8H4hYkOkPuWbgT2zavuT8H0LSpm61Tbb4dnUkzo="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"werle","email":"joseph.werle@gmail.com"},"maintainers":[{"name":"werle","email":"joseph.werle@gmail.com"}]},"0.1.1":{"name":"draft","version":"0.1.1","description":"Construct Object schemas and models","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/jwerle/draft.git"},"keywords":["object","schema","model"],"author":{"name":"Joseph Werle","email":"joseph.werle@gmail.com"},"license":"MIT","devDependencies":{"mocha":"~1.9.0"},"testling":{"harness":"mocha","files":"test/*.js","browsers":{"ie":[10],"ff":[17,18,19],"chrome":[20,21,22,23,24,25]}},"_id":"draft@0.1.1","dist":{"shasum":"bef1015440b638735faa02dfdc0f340193d73897","tarball":"https://registry.npmjs.org/draft/-/draft-0.1.1.tgz","integrity":"sha512-pNmfYKhw4zOOWeGfSw/G1C/JhC4H34U5T9yda8CytFqkTNJX6Emcdq7PQZZB36C7G8sNophYdx9wHG/ZkhCQ2Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE/3qFdzsr1kcC6vty0U3wjBHs9WB6Tp70IeezkiJAgSAiAjvyHioPYLV5GSyX7dJVGIgj8fLvmC69U8VfOYTH+1qg=="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"werle","email":"joseph.werle@gmail.com"},"maintainers":[{"name":"werle","email":"joseph.werle@gmail.com"}]},"0.1.2":{"name":"draft","version":"0.1.2","description":"Construct Object schemas and models","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/jwerle/draft.git"},"keywords":["object","schema","model"],"author":{"name":"Joseph Werle","email":"joseph.werle@gmail.com"},"license":"MIT","devDependencies":{"mocha":"~1.9.0"},"testling":{"harness":"mocha","files":"test/*.js","browsers":{"ie":[10],"ff":[17,18,19],"chrome":[20,21,22,23,24,25]}},"_id":"draft@0.1.2","dist":{"shasum":"31a66282f74915285391ba140a8833f26647fa61","tarball":"https://registry.npmjs.org/draft/-/draft-0.1.2.tgz","integrity":"sha512-wBSiE30txgEZxdiQgVZq5xf0+ndYhfCvZxxZGtfxYzg9gBbAkFkQClLqwFRt3K0VIjPFs2CePLZPpSgWB9/U5Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDV3p6nKLjJdM+Hm9wJC11dFy+8ixtHqRVNrIdXYbs9kQIhAPzwwbl9lJu4xPmOYdvvEWJ8A8SRUf/dTed3Bc/h1xR/"}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"werle","email":"joseph.werle@gmail.com"},"maintainers":[{"name":"werle","email":"joseph.werle@gmail.com"}]},"0.2.0":{"name":"draft","version":"0.2.0","description":"Construct Object schemas and models","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/jwerle/draft.git"},"keywords":["object","schema","model"],"author":{"name":"Joseph Werle","email":"joseph.werle@gmail.com"},"license":"MIT","devDependencies":{"mocha":"~1.9.0"},"testling":{"harness":"mocha","files":"test/*.js","browsers":{"ie":[10],"ff":[17,18,19],"chrome":[20,21,22,23,24,25]}},"_id":"draft@0.2.0","dist":{"shasum":"2d5832d58744c9744c79572415895979f7b480a7","tarball":"https://registry.npmjs.org/draft/-/draft-0.2.0.tgz","integrity":"sha512-6eohVsJhousL/P0gZyBXAm3e7IWMoCzMYi09mMZMiCOZdxx5pFPGI+geA+dS3DK90qx7nM8xYB3wKn/8QzKSNQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCLBkqBGNiryBn2MArYQG7lgHUVYu7Qu0Q1PrzGgJfI3gIhAKwr9xAP7qxzHs3K2tcmW37a3L/sXI+oEYB5kK0yQqBE"}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"werle","email":"joseph.werle@gmail.com"},"maintainers":[{"name":"werle","email":"joseph.werle@gmail.com"}]},"0.2.1":{"name":"draft","version":"0.2.1","description":"Construct Object schemas and models","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/jwerle/draft.git"},"keywords":["object","schema","model"],"author":{"name":"Joseph Werle","email":"joseph.werle@gmail.com"},"license":"MIT","devDependencies":{"mocha":"~1.9.0"},"testling":{"harness":"mocha","files":"test/*.js","browsers":{"ie":[10],"ff":[17,18,19],"chrome":[20,21,22,23,24,25]}},"_id":"draft@0.2.1","dist":{"shasum":"a8980bf904b4c0924c2801def4a625f017f00de6","tarball":"https://registry.npmjs.org/draft/-/draft-0.2.1.tgz","integrity":"sha512-2tRokcxG2Lbz/XbWMXWI+A6X6uNFWhrT59hV3UNQu3zQN1ejfjBYrQFkESP2jZQ8EIgLojd2nTNtYaSUVQtkEg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAuCMoO0QADVNfyJHsHTztMNTCDjehpOrHXQ9JClV99tAiApkD5dnIUbuVC9zOLszexEbRtOEiNldQwlq0qw5gG4+w=="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"werle","email":"joseph.werle@gmail.com"},"maintainers":[{"name":"werle","email":"joseph.werle@gmail.com"}]},"0.2.2":{"name":"draft","version":"0.2.2","description":"Construct Object schemas and models","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/jwerle/draft.git"},"keywords":["object","schema","model"],"author":{"name":"Joseph Werle","email":"joseph.werle@gmail.com"},"license":"MIT","devDependencies":{"mocha":"~1.9.0"},"testling":{"harness":"mocha","files":"test/*.js","browsers":{"ie":[10],"ff":[17,18,19],"chrome":[20,21,22,23,24,25]}},"_id":"draft@0.2.2","dist":{"shasum":"1d51ebab8232353e97fa009e6fd7b8cbb31e5e70","tarball":"https://registry.npmjs.org/draft/-/draft-0.2.2.tgz","integrity":"sha512-bwlVmMiAhYFnK/HUYCCio2+4FX2jILYgV41JxAQPbLYZXifI/bDmhKH5FLtlmwzDq0jJCOgst6W4x7TE33GOZg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFzGOX4IofyNwdK9hvWLiss3tgwx9+FQcIdltDIpWPPQAiBIA7+MikgNrLsl6pDM237HCFj/Dl9XGqFo8gU98kzjkA=="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"werle","email":"joseph.werle@gmail.com"},"maintainers":[{"name":"werle","email":"joseph.werle@gmail.com"}]},"0.2.3":{"name":"draft","version":"0.2.3","description":"Construct Object schemas and models","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/jwerle/draft.git"},"keywords":["object","schema","model"],"author":{"name":"Joseph Werle","email":"joseph.werle@gmail.com"},"license":"MIT","devDependencies":{"mocha":"~1.9.0"},"testling":{"harness":"mocha","files":"test/*.js","browsers":{"ie":[10],"ff":[17,18,19],"chrome":[20,21,22,23,24,25]}},"gitHead":"f20fefde6f3f0aa57b34c7e56bd4946ef718c787","bugs":{"url":"https://github.com/jwerle/draft/issues"},"homepage":"https://github.com/jwerle/draft","_id":"draft@0.2.3","_shasum":"f442dd86bd51d81f3bfd5b5fdce0fd99cc69cc9e","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"werle","email":"joseph.werle@gmail.com"},"maintainers":[{"name":"werle","email":"joseph.werle@gmail.com"}],"dist":{"shasum":"f442dd86bd51d81f3bfd5b5fdce0fd99cc69cc9e","tarball":"https://registry.npmjs.org/draft/-/draft-0.2.3.tgz","integrity":"sha512-tcLE8cc7gbHBKEYEy+jwy+1MXFo/JRU6zr9oIcWLNAs6usg2iKPgv3caIJFVDhbw8I3Y+bsqXpxHUuvI7jsf8g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB1hBFqJj5pDrMwV6REu9nk4YDzq3MqYrcb8cKw5XzoyAiABIX78Fd9ZThZ6HbUPL9teuBjQQzG0V4Z7jSYAr03uQA=="}]}}},"readme":"draft \n=====\n\n[![draft](http://www.inkity.com/shirtdesigner/prints/clipArt1/S6881113.png)]()\n\nGive your object and models schemas\n\n[![Build Status](https://travis-ci.org/jwerle/draft.png?branch=master)](https://travis-ci.org/jwerle/draft)\n[![browser support](https://ci.testling.com/jwerle/draft.png)](https://ci.testling.com/jwerle/draft)\n\n--\n\n## install\n\n*nodejs*\n\n```sh\n$ npm install draft --save\n```\n\n*component*\n\n```sh\n$ component install jwerle/draft\n```\n\n*bower*\n\n```sh\n$ bower install draft\n```\n\n*browser*\n\n```html\n<script type=\"text/javascript\" src=\"https://raw.github.com/jwerle/draft/master/draft.js\"></script>\n```\n\n## usage\n\nCreating a model with draft is as simple as passing it a schema descriptor\n\n```js\nvar User = draft({ name: String, email: String })\n  , Post = draft({ owner: Object, content: String })\n\nvar werle = new User({ name: 'werle', email: 'joseph@werle.io' })\n  , post  = new Post({ owner: werle, content: \"I like draft :)\"})\n```\n\n## api\n\n### draft(descriptor, options)\n\nCreates a schema form a descriptor and returns a model constructor\n\n*example*\n\n```js\nvar Post = draft({\n  owner    : User,\n  comments : [Comment],\n  content  : String,\n  created  : Date,\n  updated  : Date\n});\n```\n--\n\n### Schema(descriptor, options)\n\nSchema constructor\n\n*  `descriptor` - An object defining a descriptor for the schema instance\n*  `options` - An object of options:\n  * `strict` - Strict mode. Model from schema will be frozen from schema updates after instantiation. (Default: `true`)\n\n*example*\n\n```js\nvar schema = new draft.Schema({\n  name: String,\n  email: String\n});\n```\n\n#### .add(key, descriptor)\n\nAdds an object to the schema tree\n\n* `key` - A key used to identify the property in the schema\n* `descriptor` - An object descriptor or constructor function \n\n*example*\n\n```js\nschema.add({ age: Number });\n```\n\n#### .static(name, func)\n\nCreates a static function on the schema's model constructor\n\n* `name` - The name of the static function\n* `func` - The actual function\n\n*example*\n\n```js\nvar siteSchema = new draft.Schema({\n  name : String,\n  url  : String\n});\n\nsiteSchema.static('createSites', function createSites (map) {\n  return Object.keys(map).map(function (site) {\n    return new this({ name: site, url: map[site] });\n  }, this);\n});\n\n// create Site model\nvar Site = siteSchema.createModel();\n\nvar sites = Site.createSites({\n  'google'  : \"http://google.com\",\n  'github'  : \"https://github.com\",\n  'twitter' : \"https://twitter.com\",\n});\n\nsites[0].name; // 'google'\nsites[0].url; // 'http://google.com'\nsites[1].name; // 'github'\nsites[1].url; // 'https://github.com'\n```\n\n#### .createModel()\n\nCreates a constructor from the defined schema\n\n*example*\n\n```js\nvar schema = new draft.Schema({\n  name  : String,\n  email : String\n});\n\nvar User = schema.createModel();\nvar user = new User({ name: 'werle', email: 'joseph@werle.io' });\n```\n\n#### .new(data)\n\nAccepts an object of data and passes it to the Model constructor from the Schema instance\n\n* `data` - An object of data to pass to the schema instance model constructor\n\n*example*\n\n```js\nvar schema = new draft.Schema({\n  name   : String,\n  albums : [Album],\n  fans   : [Fan]\n});\n\nvar bob = schema.new({\n  name: 'bob',\n  albums: [new Album({ name: \"Sun Is Shining\" }), new Album({ name: \"Roots of a Legend\" }) ],\n  fans: [sally, frank, joe]\n});\n```\n\n#### using schema descriptors\n\nA schema descriptor is a key to type descriptor object. \nThe key for each property on the object represents a possible key on a model instance created from the schema instance.\n\nA simple example of a schema who defines a model which accepts an object that defines a single property `name` of the type `string`\n\n```js\nnew draft.Schema({ name : String })\n```\n\nA more advanced example would be to define the descriptor object for the property:\n\n```js\nnew draft.Schema({\n  name: { type: String }\n})\n```\n\n--\n\n### Tree(descriptor, options)\n\nTree constructor.\nCreates an object tree for a schema. This is used for aggregating types\n\n**A tree instance is intended to be used with a schema**\n\n* `descriptor` - A schema descriptor used to define the tree.\n* `options` - An object of options. If present and `array` is set to true then an array is returned who's prototype is an instance of the tree .\n\n*example*\n\n```js\nvar tree = new draft.Tree({\n  name: String\n});\n\n// tree.name is an instance of draft.Type who's constructor is a String constructor\ntree.name; // { Constructor: [Function: String] }\n```\n\n#### .add(parent, key, descriptor)\n\nAdds a key to the tree on a given parent tree. \nDefaults to 'this' as the parent if one is not provided.\n\n* `parent` - The parent tree object in which the descriptor is added to by the provided key. Defaults to the tree instance caller.\n* `key` - The key of the item in the tree to add\n* `descriptor` - The object descriptor for the key being added to the tree\n\n*example*\n\n```js\nvar tree = new draft.Tree({\n  domain: String\n});\n\ntree.add('subdomains', {});\ntree.subdomains; // {} (Tree instance)\ntree.add(tree.subdomains, 'primary', String);\ntree.subdomains.primary; // { Constructor: [Function: String] }\ntree.add(tree.subdomains, 'secondary', String);\ntree.subdomains.secondary; // { Constructor: [Function: String] }\ntree.subdomains.add('cdn', String);\ntree.subdomains.cdn; // { Constructor: [Function: String] }\ntree.add('host', String);\ntree.host; // { Constructor: [Function: String] }\n```\n--\n\n### Type(Constructor, descriptor)\n\nType constructor. Creates a Type used in a Tree instance for a Schema instance. \nIt is meant to provide methods for validation and coercion.\n\n* `Constructor` - A valid type constructor who will *NEVER* be invoked with the `new` operator\n* `descriptor` - A valid schema constructor\n\n*example*\n\n```js\nvar stringType = new draft.Type(String);\nstringType.coerce(123); // '123'\n\nvar numberType = new draft.Type(Number);\nnumberType.coerce('123'); // 123\n\nvar booleanType = new draft.Type(Boolean);\nbooleanType.coerce(1); // true\nbooleanType.coerce(0); // false\n```\n\nCreating a custom type\n\n```js\nvar customType = new draft.Type(function CustomType (value) {\n  return {\n    toString: function () {\n      return value.toString();\n    },\n\n    valueOf: function () {\n      return value;\n    },\n\n    add: function (n) {\n      return CustomType(value + n);\n    },\n\n    sub: function (n) {\n      return CustomType(value - n);\n    }\n  };\n});\n\n+customType.coerce(4).add(5); // 9\n+customType.coerce(10).sub(9); // 1\ncustomType.coerce('j').add('o').add('e').toString(); // 'joe'\n```\n\n#### .toString\n\nReturns a string representation of a Type instance\n\n*example*\n\n```js\nsomeType.toString(); // '[object Type]'\n```\n\n#### .valueOf\n\nReturns the valueOf return value from the original constructor on the Type instance\n\n```js\nvar someType.valueOf(); // some value\n```\n\n#### .get(value)\nDefault getter that coerces a value. This method that can be implemented by the descriptor. Defaults to `.coerce()`\n\n```js\nvar stringType = new draft.Type(String)\nstringType.get(12345); // '12345'\n```\n\n#### .set(value)\n\nDefault setter that coerces a value. This method that can be implemented by the descriptor. Defaults to `.coerce()`\n\n```js\nvar stringType = new draft.Type(String)\nstringType.set(12345); // '12345'\n```\n\n#### .validate(input)\n\nValidates a defined type. It performs instance of checks on values that are not primitive. Primitive inputs are validated with a 'typeof' check\n\n* `input` - Mixed input to validate against the type\n\n*example*\n\n```js\nvar numberType = new draft.Type(Number)\n\nnumberType.validate('123'); // false\nnumberType.validate(true); // false\nnumberType.validate(123); // true\n```\n\n#### .coerce(input)\n\nCoerces a given input with the set Constructor type\n\n* `input` - Input to coerce to a type\n\n*example*\n\n```js\nvar booleanType = new draft.Type(Boolean)\n\nbooleanType.coerce(1); // true\nbooleanType.coerce(123); // true\nbooleanType.coerce(0); // false\nbooleanType.coerce(null); // false\nbooleanType.coerce(); // false\n``` \n\n--\n\n### Model(data, schema)\n\nBase constructor for all created Model instances. Usually a Model constructor is created from a schema, but passing a schema to a Model constructor works too.\n\n* `data` - An object of data is validated against the schema used to create the Model\n* `schema` - An instance of a schema.\n\n*example*\n\n```js\nvar schema = new draft.Schema({\n  name: String,\n  email: String\n});\n\nvar user = new draft.Model({ name: 'werle', email: 'joseph@werle.io' }, schema);\n```\n\n#### .refresh()\n\nRefreshes the state of the model based on its schema\n\n#### .set()\n\nSets data on the model based on the schema\n\n#### .toObject()\n\nReturns a plain object representation of the model\n\n#### .toJSON()\n\nCalled with JSON.stringify\n\n#### .toString()\n\nReturns a string representation of a Model instance\n\n#### .valueOf()\n\nReturns a value representation of a Model instance\n\n--\n\n## example\n\nDefine a schema for an object with types. Strict mode default\n\n```js\nvar draft = require('draft')\nvar schema = new draft.Schema({\n  name : String,\n  profile : {\n    email : String,\n    age : Number\n  }\n});\n```\n\nCreate a model constructor from the schema defaulting to strict mode\n\n```js\nvar User = schema.createModel();\n```\n\nInstantiate the model passing in an object. In strict mode all properties on an object must be defined in the schema that was used to create it\n\n```js\nvar user = new User({\n  name: 'werle',\n  profile: { email: 'joseph@werle.io' },\n  somePropertyNotInSchema: 'someValue'\n});\n\n```\n\nOnly values in the schema were set on the object\n\n```js\nuser.name // werle\nuser.profile.email // joseph@werle.io\nuser.somePropertyNotInSchema // undefined\n```\n\n## todo\n\n* write more tests\n* document more\n\n## license\n\nMIT\n","maintainers":[{"name":"werle","email":"joseph.werle@gmail.com"}],"time":{"modified":"2022-06-15T23:30:35.664Z","created":"2013-05-06T16:23:49.221Z","0.0.1":"2013-05-06T16:23:50.609Z","0.0.2":"2013-05-06T16:44:47.158Z","0.0.3":"2013-05-06T21:07:17.042Z","0.0.4":"2013-05-07T12:16:51.681Z","0.0.5":"2013-05-08T20:37:50.537Z","0.0.6":"2013-05-09T19:47:56.848Z","0.0.7":"2013-05-10T19:56:40.639Z","0.0.8":"2013-05-13T21:03:59.884Z","0.0.9":"2013-05-14T19:03:14.349Z","0.1.0":"2013-06-17T17:56:20.858Z","0.1.1":"2013-06-25T18:54:03.951Z","0.1.2":"2013-06-25T19:04:27.144Z","0.2.0":"2013-06-25T20:26:10.598Z","0.2.1":"2013-06-25T20:26:54.440Z","0.2.2":"2013-06-25T22:31:58.265Z","0.2.3":"2014-07-09T20:47:37.509Z"},"author":{"name":"Joseph Werle","email":"joseph.werle@gmail.com"},"repository":{"type":"git","url":"git://github.com/jwerle/draft.git"},"homepage":"https://github.com/jwerle/draft","keywords":["object","schema","model"],"bugs":{"url":"https://github.com/jwerle/draft/issues"},"license":"MIT","readmeFilename":"README.md"}