{"_id":"fashion-model","_rev":"31-a9a1f7b56d334acb2add70933a4de62c","name":"fashion-model","description":"JavaScript library for defining types and their properties with support for wrapping/unwrapping and serialization/deserialization.","dist-tags":{"latest":"6.2.0"},"versions":{"5.0.0":{"name":"fashion-model","description":"JavaScript library for defining types and their properties with support for wrapping/unwrapping and serialization/deserialization.","keywords":["data","models","types","data-modeling","modeling"],"homepage":"https://github.com/philidem/typed-model","repository":{"type":"git","url":"git+https://github.com/philidem/typed-model.git"},"author":{"name":"Phil Gates-Idem"},"scripts":{"test":"mocha --ui bdd --reporter spec ./test"},"main":"./index.js","devDependencies":{"chai":"^3.4.0","jayschema":"^0.3.1","mocha":"^2.3.3","z-schema":"^3.9.4"},"dependencies":{"events":"^1.0.2","raptor-util":"^1.0.9"},"version":"5.0.0","gitHead":"9ff6a6e79b713451600793b23ffc1d25278dfe84","bugs":{"url":"https://github.com/philidem/typed-model/issues"},"_id":"fashion-model@5.0.0","_shasum":"d7df75df96ec4d9722e33467e7d0f1637af70ffe","_from":".","_npmVersion":"2.14.9","_nodeVersion":"4.2.1","_npmUser":{"name":"philidem","email":"phillip.idem@gmail.com"},"maintainers":[{"name":"philidem","email":"phillip.idem@gmail.com"}],"dist":{"shasum":"d7df75df96ec4d9722e33467e7d0f1637af70ffe","tarball":"https://registry.npmjs.org/fashion-model/-/fashion-model-5.0.0.tgz","integrity":"sha512-9xHaDoVy+VrX7fxjX7gO0OhJM/V5Qkxf/tFIfT3WlNLJT5A7PKiZEDd2CWzEb06xgxiNrrQ8aQryogByCNsG6A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAiSzgO8XN5F6nFNcFEc8sEcQqJSPo7n3YT/of0umvZmAiEA4rCbE4nc/OoJwvE82flf+qdE+eLrCSZutO/uKo7IeDE="}]},"directories":{}},"5.0.1":{"name":"fashion-model","description":"JavaScript library for defining types and their properties with support for wrapping/unwrapping and serialization/deserialization.","keywords":["data","models","types","data-modeling","modeling"],"homepage":"https://github.com/philidem/fashion-model","repository":{"type":"git","url":"git+https://github.com/philidem/fashion-model.git"},"author":{"name":"Phil Gates-Idem"},"scripts":{"test":"mocha --ui bdd --reporter spec ./test"},"main":"./Model.js","devDependencies":{"chai":"^3.4.0","jayschema":"^0.3.1","mocha":"^2.3.3","z-schema":"^3.9.4"},"dependencies":{"events":"^1.0.2","raptor-util":"^1.0.9"},"version":"5.0.1","gitHead":"fbc6f0e13b8a554f979bf0d8af262f4bfb2f9b33","bugs":{"url":"https://github.com/philidem/fashion-model/issues"},"_id":"fashion-model@5.0.1","_shasum":"aab99f7fdd589d325e311bef6b1b2088df816058","_from":".","_npmVersion":"2.14.9","_nodeVersion":"4.2.1","_npmUser":{"name":"philidem","email":"phillip.idem@gmail.com"},"maintainers":[{"name":"philidem","email":"phillip.idem@gmail.com"}],"dist":{"shasum":"aab99f7fdd589d325e311bef6b1b2088df816058","tarball":"https://registry.npmjs.org/fashion-model/-/fashion-model-5.0.1.tgz","integrity":"sha512-V+P5dYBaq4NDziTLXWncXcDZlhNE/9OMg4za+EKwOA+3E1o8lb0/tX/jSATwsEFdM3AeNKQc30MBjyTlELmC4g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCuhnuHrMs92nJbIo1m+aC5hmuQ9qdBjlsvNr35xzf+oAIhANkoYfjMAbWmw5LgT5NJQJAvah90GCq8iCRbkU46IjCF"}]},"directories":{}},"5.0.2":{"name":"fashion-model","description":"JavaScript library for defining types and their properties with support for wrapping/unwrapping and serialization/deserialization.","keywords":["data","models","types","data-modeling","modeling"],"homepage":"https://github.com/philidem/fashion-model","repository":{"type":"git","url":"git+https://github.com/philidem/fashion-model.git"},"author":{"name":"Phil Gates-Idem"},"scripts":{"test":"mocha --ui bdd --reporter spec ./test"},"main":"./Model.js","devDependencies":{"chai":"^3.4.0","jayschema":"^0.3.1","mocha":"^2.3.3","z-schema":"^3.9.4"},"dependencies":{"events":"^1.0.2","raptor-util":"^1.0.9"},"version":"5.0.2","gitHead":"99b4789ac03649f744f07b3086eda2dddea7b0be","bugs":{"url":"https://github.com/philidem/fashion-model/issues"},"_id":"fashion-model@5.0.2","_shasum":"9c001e26058a77b236fa22be0068ed28f198927c","_from":".","_npmVersion":"2.14.9","_nodeVersion":"4.2.1","_npmUser":{"name":"philidem","email":"phillip.idem@gmail.com"},"maintainers":[{"name":"philidem","email":"phillip.idem@gmail.com"}],"dist":{"shasum":"9c001e26058a77b236fa22be0068ed28f198927c","tarball":"https://registry.npmjs.org/fashion-model/-/fashion-model-5.0.2.tgz","integrity":"sha512-hfg0AuhptAl0mRz/lTLzv0V6rEfotNqIJE5uHc9zGmdOugiZk3XMOSLyCuZ0deThBEVp2bg9ZtTIpR7a3H36Bw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCYWglJsBHo4pA0h/th0AJO9RYC081Yl8o1dqUEcZM3qQIhAJiy6vAW+VfKySjg2ppF88SGZEhu3yXZPttq9XvxfRs7"}]},"directories":{}},"5.0.3":{"name":"fashion-model","description":"JavaScript library for defining types and their properties with support for wrapping/unwrapping and serialization/deserialization.","keywords":["data","models","types","data-modeling","modeling"],"homepage":"https://github.com/philidem/fashion-model","repository":{"type":"git","url":"git+https://github.com/philidem/fashion-model.git"},"author":{"name":"Phil Gates-Idem"},"scripts":{"test":"mocha --ui bdd --reporter spec ./test"},"main":"./Model.js","devDependencies":{"chai":"^3.4.0","jayschema":"^0.3.1","mocha":"^2.3.3","z-schema":"^3.9.4"},"dependencies":{"events":"^1.0.2","raptor-util":"^1.0.9"},"version":"5.0.3","gitHead":"32a8984294cd1e0728e9b886d85e020035cfac85","bugs":{"url":"https://github.com/philidem/fashion-model/issues"},"_id":"fashion-model@5.0.3","_shasum":"18ed670a34a971b99a61b19876f75aeb9ee7a41d","_from":".","_npmVersion":"2.14.9","_nodeVersion":"4.2.1","_npmUser":{"name":"philidem","email":"phillip.idem@gmail.com"},"maintainers":[{"name":"philidem","email":"phillip.idem@gmail.com"}],"dist":{"shasum":"18ed670a34a971b99a61b19876f75aeb9ee7a41d","tarball":"https://registry.npmjs.org/fashion-model/-/fashion-model-5.0.3.tgz","integrity":"sha512-VIS3z/WRjyQXQakw5gsKU3GoLr+iUEHj62Qeg3BgmTCP3lsZDW2bIkNuYGYj3p5yt2CBIModhzEx9Fj/o1o4JQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnjrhWttPn6E3cfLvIokq50AhDyIZLeVVp/g9enHRSvwIgcYq3FGAa3aH27oxrqD6Jy/OBQ9mNrhbRVCWKMHMt7Wg="}]},"directories":{}},"5.0.4":{"name":"fashion-model","description":"JavaScript library for defining types and their properties with support for wrapping/unwrapping and serialization/deserialization.","keywords":["data","models","types","data-modeling","modeling"],"homepage":"https://github.com/philidem/fashion-model","repository":{"type":"git","url":"git+https://github.com/philidem/fashion-model.git"},"author":{"name":"Phil Gates-Idem"},"scripts":{"test":"mocha --ui bdd --reporter spec ./test"},"main":"./Model.js","devDependencies":{"chai":"^3.4.0","jayschema":"^0.3.1","mocha":"^2.3.3","z-schema":"^3.9.4"},"dependencies":{"events":"^1.0.2","raptor-util":"^1.0.9"},"version":"5.0.4","gitHead":"28dda0b22830274e12eccfa23cd00a3152520a7f","bugs":{"url":"https://github.com/philidem/fashion-model/issues"},"_id":"fashion-model@5.0.4","_shasum":"427844dd8522bc30eec553fbe166004ce737d0a6","_from":".","_npmVersion":"2.14.9","_nodeVersion":"4.2.1","_npmUser":{"name":"philidem","email":"phillip.idem@gmail.com"},"maintainers":[{"name":"philidem","email":"phillip.idem@gmail.com"}],"dist":{"shasum":"427844dd8522bc30eec553fbe166004ce737d0a6","tarball":"https://registry.npmjs.org/fashion-model/-/fashion-model-5.0.4.tgz","integrity":"sha512-6aJBqi1lxli3Qv1cJFQDwjQDnr0+K00fSnHqgG0lApuzPckJVQ0mbbNBW5ibwxSU0nc9NnuJjoi8L34BABjUdw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWD3zg2ynFgxHrBmvHJNtvdMMa8CFY4b1oLGrS7XkQuAIhALk01zvxGeArPDmeQHyZm1h/DHO5vDF2l+qk+eqb9/P7"}]},"directories":{}},"5.0.5":{"name":"fashion-model","description":"JavaScript library for defining types and their properties with support for wrapping/unwrapping and serialization/deserialization.","keywords":["data","models","types","data-modeling","modeling"],"homepage":"https://github.com/philidem/fashion-model","repository":{"type":"git","url":"git+https://github.com/philidem/fashion-model.git"},"author":{"name":"Phil Gates-Idem"},"scripts":{"test":"mocha --ui bdd --reporter spec ./test"},"main":"./Model.js","devDependencies":{"chai":"^3.4.0","jayschema":"^0.3.1","mocha":"^2.3.3","z-schema":"^3.9.4"},"dependencies":{"events":"^1.0.2","raptor-util":"^1.0.9"},"version":"5.0.5","gitHead":"3aa6aa531ec09bb945456680cf0d5829f32fc87f","bugs":{"url":"https://github.com/philidem/fashion-model/issues"},"_id":"fashion-model@5.0.5","_shasum":"bd2daefd744a6bb18f63e59cb29078fd597a36e2","_from":".","_npmVersion":"2.14.9","_nodeVersion":"4.2.1","_npmUser":{"name":"philidem","email":"phillip.idem@gmail.com"},"maintainers":[{"name":"philidem","email":"phillip.idem@gmail.com"}],"dist":{"shasum":"bd2daefd744a6bb18f63e59cb29078fd597a36e2","tarball":"https://registry.npmjs.org/fashion-model/-/fashion-model-5.0.5.tgz","integrity":"sha512-ttv8HtSJXMiqR+Vuwj/ysjbXSkPjEZTcoeGpToS4eU9bJMkrppfEQ81Xh48CLOFaAH5FJiNACWnsd3XlTvgvoQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDKlsh7K1pXCqtVU4aHcWwRiz389GGwJ8WJi+zRZel25AiB7MzmfdXWDYkokX6rcuoh9MacADi4hwLcqd9KnnBV2mg=="}]},"directories":{}},"5.0.6":{"name":"fashion-model","description":"JavaScript library for defining types and their properties with support for wrapping/unwrapping and serialization/deserialization.","keywords":["data","models","types","data-modeling","modeling"],"homepage":"https://github.com/philidem/fashion-model","repository":{"type":"git","url":"git+https://github.com/philidem/fashion-model.git"},"author":{"name":"Phil Gates-Idem"},"scripts":{"test":"mocha --ui bdd --reporter spec ./test"},"main":"./Model.js","devDependencies":{"chai":"^3.4.0","jayschema":"^0.3.1","mocha":"^2.3.3","z-schema":"^3.9.4"},"dependencies":{"events":"^1.0.2","raptor-util":"^1.0.9"},"version":"5.0.6","gitHead":"f918b26905fca05e932f7a8b99b58e8125ced222","bugs":{"url":"https://github.com/philidem/fashion-model/issues"},"_id":"fashion-model@5.0.6","_shasum":"65d6f8a4a7f96370b14eb05ed8e88d61e59beb9a","_from":".","_npmVersion":"2.14.9","_nodeVersion":"4.2.1","_npmUser":{"name":"philidem","email":"phillip.idem@gmail.com"},"maintainers":[{"name":"philidem","email":"phillip.idem@gmail.com"}],"dist":{"shasum":"65d6f8a4a7f96370b14eb05ed8e88d61e59beb9a","tarball":"https://registry.npmjs.org/fashion-model/-/fashion-model-5.0.6.tgz","integrity":"sha512-PUr+IpWhTdfJ6AVlTBk8udQX2tDHNAxDmHMufjHouvkVxj0Jcw6aY9oFNsvMD9UJ5g80cuXMwtn3ikHGO7cVQw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIER3tFCZS2WdxLKxrhiJwFJb+nui90l6WDKzN9HMMRWwAiA9elz4gVqYy5oHHkXY7uzMuzI0RsSNcCTgZuE0wrsUbQ=="}]},"directories":{}},"5.0.7":{"name":"fashion-model","description":"JavaScript library for defining types and their properties with support for wrapping/unwrapping and serialization/deserialization.","keywords":["data","models","types","data-modeling","modeling"],"homepage":"https://github.com/philidem/fashion-model","repository":{"type":"git","url":"git+https://github.com/philidem/fashion-model.git"},"author":{"name":"Phil Gates-Idem"},"scripts":{"test":"mocha --ui bdd --reporter spec ./test"},"main":"./Model.js","devDependencies":{"chai":"^3.4.0","jayschema":"^0.3.1","mocha":"^2.3.3","z-schema":"^3.9.4"},"dependencies":{"events":"^1.0.2","raptor-util":"^1.0.9"},"version":"5.0.7","gitHead":"8998a7ba9c2314ca3ddf14e320051e873f5e69f1","bugs":{"url":"https://github.com/philidem/fashion-model/issues"},"_id":"fashion-model@5.0.7","_shasum":"e638fcc3eedb5fda9a5a70401cb28c8b96cf1bcc","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.3","_npmUser":{"name":"philidem","email":"phillip.idem@gmail.com"},"maintainers":[{"name":"philidem","email":"phillip.idem@gmail.com"}],"dist":{"shasum":"e638fcc3eedb5fda9a5a70401cb28c8b96cf1bcc","tarball":"https://registry.npmjs.org/fashion-model/-/fashion-model-5.0.7.tgz","integrity":"sha512-hdrmJQIXtKk2uM9DfW9GGavcpJyrhy9sYkIDq5Vt+vLkxzO2d2+s5yFumg8Qek2Fmx6XmSn+AOlmdhYMJM0dfA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBzuFi2W7FonPAiT4/7VvXCDNCS/ZC73OyNARUEj7FFCAiEAjDV7ZvfD1KSnEo0OLp2ZIxo589N/h1Wzqwb0k1o0tpk="}]},"directories":{}},"5.0.8":{"name":"fashion-model","description":"JavaScript library for defining types and their properties with support for wrapping/unwrapping and serialization/deserialization.","keywords":["data","models","types","data-modeling","modeling"],"homepage":"https://github.com/philidem/fashion-model","repository":{"type":"git","url":"git+https://github.com/philidem/fashion-model.git"},"author":{"name":"Phil Gates-Idem"},"scripts":{"test":"mocha --ui bdd --reporter spec ./test"},"main":"./Model.js","devDependencies":{"chai":"^3.4.0","jayschema":"^0.3.1","mocha":"^2.3.3","z-schema":"^3.9.4"},"dependencies":{"events":"^1.0.2","raptor-util":"^1.0.9"},"version":"5.0.8","gitHead":"bac8ad9d23516d6f808ba732ba02f9368e6d48f6","bugs":{"url":"https://github.com/philidem/fashion-model/issues"},"_id":"fashion-model@5.0.8","_shasum":"fe51453eee6a55fe76f57d0a9ad5b4a60d9f7e97","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.3","_npmUser":{"name":"philidem","email":"phillip.idem@gmail.com"},"maintainers":[{"name":"philidem","email":"phillip.idem@gmail.com"}],"dist":{"shasum":"fe51453eee6a55fe76f57d0a9ad5b4a60d9f7e97","tarball":"https://registry.npmjs.org/fashion-model/-/fashion-model-5.0.8.tgz","integrity":"sha512-D449D7TK7otKHnqSEnJX9ZL57h90ZQTGigtLd1TwAA/cqcpMScFhqrVfLOx17N2A3RAU/KNqgUL6616rgwR2wA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDtgvghhZXm8barQMb+3KczJt81ssOipHqgf5zzds2qxQIhAMc+PbElG1xUddbzj6g6LvThv1YiVNigYQOJrMHmH9h1"}]},"directories":{}},"5.0.9":{"name":"fashion-model","description":"JavaScript library for defining types and their properties with support for wrapping/unwrapping and serialization/deserialization.","keywords":["data","models","types","data-modeling","modeling"],"homepage":"https://github.com/philidem/fashion-model","repository":{"type":"git","url":"git+https://github.com/philidem/fashion-model.git"},"author":{"name":"Phil Gates-Idem"},"scripts":{"test":"mocha --ui bdd --reporter spec ./test"},"main":"./Model.js","devDependencies":{"chai":"^3.4.0","jayschema":"^0.3.1","mocha":"^2.3.3","z-schema":"^3.9.4"},"dependencies":{"events":"^1.0.2","raptor-util":"^1.0.9"},"version":"5.0.9","gitHead":"9575bbb7c9662254431d52ee6b3c7bcffd45d755","bugs":{"url":"https://github.com/philidem/fashion-model/issues"},"_id":"fashion-model@5.0.9","_shasum":"0d39e27e0169a4c92dfa1bd4059664a71718964d","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.3","_npmUser":{"name":"philidem","email":"phillip.idem@gmail.com"},"maintainers":[{"name":"philidem","email":"phillip.idem@gmail.com"}],"dist":{"shasum":"0d39e27e0169a4c92dfa1bd4059664a71718964d","tarball":"https://registry.npmjs.org/fashion-model/-/fashion-model-5.0.9.tgz","integrity":"sha512-sV4Ny8CkOhsJLt24o4KA+Mj3eZorXQl4UbMrA1V1mfO/T7YQii6y08q1bUoz1Paly5y5RCFGgm50WHHvaPgqrw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF0TvkwKe/l0Lmo27xKwnWsrDoxuo2p36r7MegGn5FN2AiBt2odzRZWhQp5mCCyQ6QyZ5C7HnFtYw7VvrKMU/NvVMQ=="}]},"directories":{}},"5.0.10":{"name":"fashion-model","description":"JavaScript library for defining types and their properties with support for wrapping/unwrapping and serialization/deserialization.","keywords":["data","models","types","data-modeling","modeling"],"homepage":"https://github.com/philidem/fashion-model","repository":{"type":"git","url":"git+https://github.com/philidem/fashion-model.git"},"author":{"name":"Phil Gates-Idem"},"scripts":{"test":"mocha --ui bdd --reporter spec ./test"},"main":"./Model.js","devDependencies":{"chai":"^3.4.0","jayschema":"^0.3.1","mocha":"^2.3.3","z-schema":"^3.9.4"},"dependencies":{"events":"^1.0.2","raptor-util":"^1.0.9"},"version":"5.0.10","gitHead":"a6a74a7ff77f2137a6bf15c30766b4d39160ede9","bugs":{"url":"https://github.com/philidem/fashion-model/issues"},"_id":"fashion-model@5.0.10","_shasum":"c40f46756c8dd9cbb05b97be6ad85ab8efd00e36","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.3","_npmUser":{"name":"philidem","email":"phillip.idem@gmail.com"},"maintainers":[{"name":"philidem","email":"phillip.idem@gmail.com"}],"dist":{"shasum":"c40f46756c8dd9cbb05b97be6ad85ab8efd00e36","tarball":"https://registry.npmjs.org/fashion-model/-/fashion-model-5.0.10.tgz","integrity":"sha512-KALvfNEETvgapjNHbW6O86g51JcWV6tcz+n23nEBjJQdL3AIMZ2ph9Aj6JWahw6kxEVNQcCQEHa7KpFvCHCHGQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYI1qglfb2m9QPepszRRCPcLNO418uydFvIt0z7rTWKQIgKc2dLSLG1R43ACXNEpMZLrLRfVNCcokv2IeS/xP6/vI="}]},"directories":{}},"5.0.11":{"name":"fashion-model","description":"JavaScript library for defining types and their properties with support for wrapping/unwrapping and serialization/deserialization.","keywords":["data","models","types","data-modeling","modeling"],"homepage":"https://github.com/philidem/fashion-model","repository":{"type":"git","url":"git+https://github.com/philidem/fashion-model.git"},"author":{"name":"Phil Gates-Idem"},"scripts":{"test":"mocha --ui bdd --reporter spec ./test"},"main":"./Model.js","devDependencies":{"chai":"^3.4.0","jayschema":"^0.3.1","mocha":"^2.3.3","z-schema":"^3.9.4"},"dependencies":{"events":"^1.0.2","raptor-util":"^1.0.9"},"version":"5.0.11","gitHead":"ee632e428b14de24066e5ce25f9c62bc646d5262","bugs":{"url":"https://github.com/philidem/fashion-model/issues"},"_id":"fashion-model@5.0.11","_shasum":"c58828b3225821edb81114994134163d7901fdcf","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.3","_npmUser":{"name":"philidem","email":"phillip.idem@gmail.com"},"maintainers":[{"name":"philidem","email":"phillip.idem@gmail.com"}],"dist":{"shasum":"c58828b3225821edb81114994134163d7901fdcf","tarball":"https://registry.npmjs.org/fashion-model/-/fashion-model-5.0.11.tgz","integrity":"sha512-kWPbST1eB+zdTunoS80qx4gOGAk9tJDaRuO9y/63z0rEqTiHWzGfLFfo1qp+tUQyRr7e6/mSxaqbXXovonriCA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBQEw5+h2kqChZPQUEclXpggfaRBEyT7LRoM+68Azb9NAiBwYP32UYsPYfEoxBMmThQKGfeZSDoogPk49GPqfrz6dw=="}]},"directories":{}},"5.0.12":{"name":"fashion-model","description":"JavaScript library for defining types and their properties with support for wrapping/unwrapping and serialization/deserialization.","keywords":["data","models","types","data-modeling","modeling"],"homepage":"https://github.com/philidem/fashion-model","repository":{"type":"git","url":"git+https://github.com/philidem/fashion-model.git"},"author":{"name":"Phil Gates-Idem"},"scripts":{"test":"mocha --ui bdd --reporter spec ./test"},"main":"./Model.js","devDependencies":{"chai":"^3.4.0","jayschema":"^0.3.1","mocha":"^2.3.3","z-schema":"^3.9.4"},"dependencies":{"events":"^1.0.2","raptor-util":"^1.0.9"},"version":"5.0.12","gitHead":"ff16418f484a4b6f8d76939c73a201ab3d986b28","bugs":{"url":"https://github.com/philidem/fashion-model/issues"},"_id":"fashion-model@5.0.12","_shasum":"c4182c351ab3613b7ac4a1e009da69f1d961e1b8","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.3","_npmUser":{"name":"philidem","email":"phillip.idem@gmail.com"},"maintainers":[{"name":"philidem","email":"phillip.idem@gmail.com"}],"dist":{"shasum":"c4182c351ab3613b7ac4a1e009da69f1d961e1b8","tarball":"https://registry.npmjs.org/fashion-model/-/fashion-model-5.0.12.tgz","integrity":"sha512-m2E91pFcrr27mmlgXbcCqnjXRbt3EW5u3ZVoxz9pomIJEdfKJ+Ek22uT0fpPajwQR6gc9h4suOt2KgwzAI6oEw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHFN9ZVqEjlbJ4ORhNfTAIn1grPpgDIdD96dZ6G23uVDAiASSqsJiSTTm2mD2qJIcNm5Zb6+7x75v7ZG8qaZCdBrkw=="}]},"_npmOperationalInternal":{"host":"packages-5-east.internal.npmjs.com","tmp":"tmp/fashion-model-5.0.12.tgz_1456267381500_0.8589020189829171"},"directories":{}},"5.0.13":{"name":"fashion-model","description":"JavaScript library for defining types and their properties with support for wrapping/unwrapping and serialization/deserialization.","keywords":["data","models","types","data-modeling","modeling"],"homepage":"https://github.com/philidem/fashion-model","repository":{"type":"git","url":"git+https://github.com/philidem/fashion-model.git"},"author":{"name":"Phil Gates-Idem"},"scripts":{"test":"mocha --ui bdd --reporter spec ./test/**/*-test.js"},"main":"./Model.js","devDependencies":{"chai":"^3.4.0","jayschema":"^0.3.1","mocha":"^2.3.3","z-schema":"^3.9.4"},"dependencies":{"events":"^1.0.2","raptor-util":"^1.0.9"},"version":"5.0.13","gitHead":"2555f06224823a8a2f321ff58fccfef55ac12ce7","bugs":{"url":"https://github.com/philidem/fashion-model/issues"},"_id":"fashion-model@5.0.13","_shasum":"a06e2b27084e6899162c87467e9a0ec99a4b0f74","_from":".","_npmVersion":"2.11.2","_nodeVersion":"4.2.3","_npmUser":{"name":"philidem","email":"phillip.idem@gmail.com"},"maintainers":[{"name":"philidem","email":"phillip.idem@gmail.com"}],"dist":{"shasum":"a06e2b27084e6899162c87467e9a0ec99a4b0f74","tarball":"https://registry.npmjs.org/fashion-model/-/fashion-model-5.0.13.tgz","integrity":"sha512-BegSKIMoxZMXkH1AsZTl5sS3jbVWkjvqyolMl7o7H4EMeQG9lF8mWjiXuHzCae4y77WvSyNuV+b87yeCgs+yDQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICov2Avq0W+WeisMQSP99Qx+MCUYeqWc8yywp+dQHnBBAiEAqZ1/9CAT8/WLXopUVj9YY7yKXUUuVOocCSO2lkcCoYs="}]},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/fashion-model-5.0.13.tgz_1456869622298_0.10038955905474722"},"directories":{}},"5.0.14":{"name":"fashion-model","description":"JavaScript library for defining types and their properties with support for wrapping/unwrapping and serialization/deserialization.","keywords":["data","models","types","data-modeling","modeling"],"homepage":"https://github.com/philidem/fashion-model","repository":{"type":"git","url":"git+https://github.com/philidem/fashion-model.git"},"author":{"name":"Phil Gates-Idem"},"scripts":{"test":"mocha --ui bdd --reporter spec ./test/**/*-test.js"},"main":"./Model.js","devDependencies":{"chai":"^3.4.0","jayschema":"^0.3.1","mocha":"^2.3.3","z-schema":"^3.9.4"},"dependencies":{"events":"^1.0.2","raptor-util":"^1.0.9"},"version":"5.0.14","gitHead":"c2b323dae713c94c050ee106fb65586739da2005","bugs":{"url":"https://github.com/philidem/fashion-model/issues"},"_id":"fashion-model@5.0.14","_shasum":"4973fba0e9c103d0f46cc075c7504f9334993079","_from":".","_npmVersion":"2.11.2","_nodeVersion":"4.2.3","_npmUser":{"name":"philidem","email":"phillip.idem@gmail.com"},"maintainers":[{"name":"philidem","email":"phillip.idem@gmail.com"}],"dist":{"shasum":"4973fba0e9c103d0f46cc075c7504f9334993079","tarball":"https://registry.npmjs.org/fashion-model/-/fashion-model-5.0.14.tgz","integrity":"sha512-Fvz8ug0lScMi9S88EroCbo4ac+aiRvxhY59sX1DHHG4/x2MU2cWLrwcXgxuB7NsqpPWeOmrFFUjdulCVJqJEPw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEcHxHOA9/UVGyKJtSaFTF5JNrt8nsKLOGiUeYYXiBR5AiBOA2oc/nXTTveQW+/rjAYz+ik39u1H6qkG2U1ZNsbvYA=="}]},"_npmOperationalInternal":{"host":"packages-13-west.internal.npmjs.com","tmp":"tmp/fashion-model-5.0.14.tgz_1458657909413_0.3350244590546936"},"directories":{}},"5.0.15":{"name":"fashion-model","description":"JavaScript library for defining types and their properties with support for wrapping/unwrapping and serialization/deserialization.","keywords":["data","models","types","data-modeling","modeling"],"homepage":"https://github.com/philidem/fashion-model","repository":{"type":"git","url":"git+https://github.com/philidem/fashion-model.git"},"author":{"name":"Phil Gates-Idem"},"scripts":{"test":"mocha --ui bdd --reporter spec ./test/**/*-test.js"},"main":"./Model.js","devDependencies":{"chai":"^3.4.0","jayschema":"^0.3.1","mocha":"^2.3.3","z-schema":"^3.9.4"},"dependencies":{"events":"^1.0.2","raptor-util":"^1.0.9"},"version":"5.0.15","gitHead":"f2a1115c5e9d2b1fe6601c2c22a0715ad99fa80e","bugs":{"url":"https://github.com/philidem/fashion-model/issues"},"_id":"fashion-model@5.0.15","_shasum":"abbc3b723010f1953ae200d480036cf107eca040","_from":".","_npmVersion":"2.11.2","_nodeVersion":"4.2.3","_npmUser":{"name":"philidem","email":"phillip.idem@gmail.com"},"maintainers":[{"name":"philidem","email":"phillip.idem@gmail.com"}],"dist":{"shasum":"abbc3b723010f1953ae200d480036cf107eca040","tarball":"https://registry.npmjs.org/fashion-model/-/fashion-model-5.0.15.tgz","integrity":"sha512-Ml48nuZGgiFm3cKo1lIYa3C8Vt3SzmOO77a2PVdQ5wWr9EP/okKSphD7EzIlDi5JZ980Oj21iTZzPtulCZA63A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+7mDu3ovquprQBuqJMdlSQKMyJu0jWQ92wDpQ1E9NBAIhAMvFFwn3z09uDO2BWycl9DQcc9/4A2MPUiEl/V8LfyMv"}]},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/fashion-model-5.0.15.tgz_1459124685605_0.5919797951355577"},"directories":{}},"5.0.16":{"name":"fashion-model","description":"JavaScript library for defining types and their properties with support for wrapping/unwrapping and serialization/deserialization.","keywords":["data","models","types","data-modeling","modeling"],"homepage":"https://github.com/philidem/fashion-model","repository":{"type":"git","url":"git+https://github.com/philidem/fashion-model.git"},"author":{"name":"Phil Gates-Idem"},"scripts":{"test":"mocha --ui bdd --reporter spec ./test/**/*-test.js"},"main":"./Model.js","devDependencies":{"chai":"^3.4.0","jayschema":"^0.3.1","mocha":"^2.3.3","z-schema":"^3.9.4"},"dependencies":{"events":"^1.0.2","raptor-util":"^1.0.9"},"version":"5.0.16","gitHead":"0f1caff123da4a7a96651133c37ec097f043d4dd","bugs":{"url":"https://github.com/philidem/fashion-model/issues"},"_id":"fashion-model@5.0.16","_shasum":"17152c3176e3dd6dca7c1e7733d45156ee46a011","_from":".","_npmVersion":"2.11.2","_nodeVersion":"4.2.3","_npmUser":{"name":"philidem","email":"phillip.idem@gmail.com"},"maintainers":[{"name":"philidem","email":"phillip.idem@gmail.com"}],"dist":{"shasum":"17152c3176e3dd6dca7c1e7733d45156ee46a011","tarball":"https://registry.npmjs.org/fashion-model/-/fashion-model-5.0.16.tgz","integrity":"sha512-qKpabWr/AcQ6GevU8jtwfSQDBlE8zmpbqo6BN0aEwwI77OzagkJ4AGQX4PTJbE3865p1D0E6fCCqbZK37DERGA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG4ZkRuW+6KIYI1XP5hVYpSxfdkUHEJD2rSPxmejCHC2AiEAviAGIILFkLAP+ULFu8jE4p2oThxiP5hCp2b7Tu7tL60="}]},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/fashion-model-5.0.16.tgz_1459367407266_0.8561252758372575"},"directories":{}},"5.0.17":{"name":"fashion-model","description":"JavaScript library for defining types and their properties with support for wrapping/unwrapping and serialization/deserialization.","keywords":["data","models","types","data-modeling","modeling"],"homepage":"https://github.com/philidem/fashion-model","repository":{"type":"git","url":"git+https://github.com/philidem/fashion-model.git"},"author":{"name":"Phil Gates-Idem"},"scripts":{"test":"mocha --ui bdd --reporter spec ./test/**/*-test.js"},"main":"./Model.js","devDependencies":{"chai":"^3.4.0","jayschema":"^0.3.1","mocha":"^2.3.3","z-schema":"^3.9.4"},"dependencies":{"events":"^1.0.2","raptor-util":"^1.0.9"},"version":"5.0.17","gitHead":"cb7f30264b9ee094a4b432d91b26bb3dcf0a382e","bugs":{"url":"https://github.com/philidem/fashion-model/issues"},"_id":"fashion-model@5.0.17","_shasum":"de97c0ed1db9a70d18890e8b29e4d4917e537c00","_from":".","_npmVersion":"2.15.0","_nodeVersion":"4.4.2","_npmUser":{"name":"philidem","email":"phillip.idem@gmail.com"},"maintainers":[{"name":"philidem","email":"phillip.idem@gmail.com"}],"dist":{"shasum":"de97c0ed1db9a70d18890e8b29e4d4917e537c00","tarball":"https://registry.npmjs.org/fashion-model/-/fashion-model-5.0.17.tgz","integrity":"sha512-w7Wc9MXDbY46XjJMLz7SSPgw0pn2MrmbGK+p3FIKgLqaMai3d5D4F6zyIKgoeGA9VRHPDYT315VyhzV5hwd4eQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD1rj4iYJnrxxoYfC/0oWCL7onKgZWWREgUxAORLckoEwIhAK86q1drlkPtkQUqZg8pnvRzuQsceiQAutLPQMdO06QR"}]},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/fashion-model-5.0.17.tgz_1460172801825_0.32759231189265847"},"directories":{}},"5.0.18":{"name":"fashion-model","description":"JavaScript library for defining types and their properties with support for wrapping/unwrapping and serialization/deserialization.","keywords":["data","models","types","data-modeling","modeling"],"homepage":"https://github.com/philidem/fashion-model","repository":{"type":"git","url":"git+https://github.com/philidem/fashion-model.git"},"author":{"name":"Phil Gates-Idem"},"scripts":{"test":"mocha --ui bdd --reporter spec ./test/**/*-test.js"},"main":"./Model.js","devDependencies":{"chai":"^3.4.0","jayschema":"^0.3.1","mocha":"^2.3.3","z-schema":"^3.9.4"},"dependencies":{"events":"^1.0.2","raptor-util":"^1.0.9"},"version":"5.0.18","gitHead":"998e3e142b08d4ec2cc7c5dfdfd2a20acee77848","bugs":{"url":"https://github.com/philidem/fashion-model/issues"},"_id":"fashion-model@5.0.18","_shasum":"ca8517badbf151b7a530cec67dc7f341cc6b935c","_from":".","_npmVersion":"2.15.0","_nodeVersion":"4.4.2","_npmUser":{"name":"philidem","email":"phillip.idem@gmail.com"},"maintainers":[{"name":"philidem","email":"phillip.idem@gmail.com"}],"dist":{"shasum":"ca8517badbf151b7a530cec67dc7f341cc6b935c","tarball":"https://registry.npmjs.org/fashion-model/-/fashion-model-5.0.18.tgz","integrity":"sha512-JJtJ6nXn2Ou8lqG1QfH0PpuVERVAluRLSa5Lkpucs5V2KiaTJvSdde5KcvitAq8KzLEraQ6ystIMTyAIMgBXpA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCNPOO52hUgd62ZhLLjwNzcMMO0NANbZup1PfIkAxkPhAIgEY6qUzvL/FnF54rgPRmgdWQ9xgC3ubQsc9F6MgEW/A4="}]},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/fashion-model-5.0.18.tgz_1460493317426_0.774866693187505"},"directories":{}},"5.0.19":{"name":"fashion-model","description":"JavaScript library for defining types and their properties with support for wrapping/unwrapping and serialization/deserialization.","keywords":["data","models","types","data-modeling","modeling"],"homepage":"https://github.com/philidem/fashion-model","repository":{"type":"git","url":"git+https://github.com/philidem/fashion-model.git"},"author":{"name":"Phil Gates-Idem"},"scripts":{"test":"mocha --ui bdd --reporter spec ./test/**/*-test.js"},"main":"./Model.js","devDependencies":{"chai":"^3.4.0","jayschema":"^0.3.1","mocha":"^2.3.3","z-schema":"^3.9.4"},"dependencies":{"events":"^1.0.2","raptor-util":"^1.0.9"},"version":"5.0.19","gitHead":"00de1fa604c2284e4a9dfbdc6ec83e64ae5d772f","bugs":{"url":"https://github.com/philidem/fashion-model/issues"},"_id":"fashion-model@5.0.19","_shasum":"fd491436d18aeb00ac636b04b52a8178137d7fe0","_from":".","_npmVersion":"2.15.11","_nodeVersion":"6.9.1","_npmUser":{"name":"austinkelleher","email":"austin.kell47@gmail.com"},"dist":{"shasum":"fd491436d18aeb00ac636b04b52a8178137d7fe0","tarball":"https://registry.npmjs.org/fashion-model/-/fashion-model-5.0.19.tgz","integrity":"sha512-oWQj13hy97bellBq0LnAi3rO8Vk0Ccbtq92qICyGFRFuI0RGa/vucyYRrJunXASXKZ0SkfoDuo0lFh5Xm4MBHw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCp1xZkx3VI/p4Uk6HsjbL8wo8zZg3pplvS7QSf8gAkKwIhAKhRDAQNRqjRBbX5OKS4AdHP3XyiQjmt5ZkhKXJWf6bm"}]},"maintainers":[{"name":"austinkelleher","email":"austin.kell47@gmail.com"},{"name":"philidem","email":"phillip.idem@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/fashion-model-5.0.19.tgz_1481644346851_0.9223427025135607"},"directories":{}},"5.0.20":{"name":"fashion-model","description":"JavaScript library for defining types and their properties with support for wrapping/unwrapping and serialization/deserialization.","keywords":["data","models","types","data-modeling","modeling"],"homepage":"https://github.com/philidem/fashion-model","repository":{"type":"git","url":"git+https://github.com/philidem/fashion-model.git"},"author":{"name":"Phil Gates-Idem"},"scripts":{"test":"mocha --ui bdd --reporter spec ./test/**/*-test.js"},"main":"./Model.js","devDependencies":{"chai":"^3.5.0","eslint":"^3.19.0","eslint-config-semistandard":"^8.0.0","eslint-config-standard":"^10.2.1","eslint-plugin-import":"^2.2.0","eslint-plugin-mocha":"^4.9.0","eslint-plugin-node":"^4.2.2","eslint-plugin-promise":"^3.5.0","eslint-plugin-standard":"^3.0.1","jayschema":"^0.3.1","mocha":"^3.2.0","np":"^2.16.0","z-schema":"^3.9.4"},"dependencies":{"events":"^1.1.1","raptor-util":"^3.1.0"},"version":"5.0.20","gitHead":"f7763f47d2e79f8ec9d0b5e1c85ef5fba1507a85","bugs":{"url":"https://github.com/philidem/fashion-model/issues"},"_id":"fashion-model@5.0.20","_npmVersion":"5.4.2","_nodeVersion":"8.6.0","_npmUser":{"name":"philidem","email":"phillip.idem@gmail.com"},"dist":{"integrity":"sha512-skFfFChD0Fb5+Q0L4Vil3NVSQQ65xcgpHlCHeKyUoAdokDs7qsIigvCBijKLcNcAktFY1hjAh/xX21yMMx9g5A==","shasum":"da4ff0ea6546643feeabaea07184d4bfaf058109","tarball":"https://registry.npmjs.org/fashion-model/-/fashion-model-5.0.20.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGVk4WcrrFTDyjnvnoEp+TxaSJO6s9XWzDjIiSqjOkWkAiEAtEAos81kzxNjZ+I0MmGUQiiEIFQTzWZDqJ3T+4LTQH4="}]},"maintainers":[{"name":"austinkelleher","email":"austin.kell47@gmail.com"},{"name":"philidem","email":"phillip.idem@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fashion-model-5.0.20.tgz_1508346350484_0.8152405808214098"},"directories":{}},"5.0.21":{"name":"fashion-model","description":"JavaScript library for defining types and their properties with support for wrapping/unwrapping and serialization/deserialization.","keywords":["data","models","types","data-modeling","modeling"],"homepage":"https://github.com/philidem/fashion-model","repository":{"type":"git","url":"git+https://github.com/philidem/fashion-model.git"},"author":{"name":"Phil Gates-Idem"},"scripts":{"test":"mocha --ui bdd --reporter spec './test/**/*-test.js'"},"main":"./Model.js","devDependencies":{"chai":"^3.5.0","eslint":"^3.19.0","eslint-config-semistandard":"^8.0.0","eslint-config-standard":"^10.2.1","eslint-plugin-import":"^2.2.0","eslint-plugin-mocha":"^4.9.0","eslint-plugin-node":"^4.2.2","eslint-plugin-promise":"^3.5.0","eslint-plugin-standard":"^3.0.1","jayschema":"^0.3.1","mocha":"^3.2.0","z-schema":"^3.9.4"},"dependencies":{"events":"^1.1.1","raptor-util":"^3.1.0"},"version":"5.0.21","gitHead":"907e74f3c7929c20e2ad17baa68d034945333f92","bugs":{"url":"https://github.com/philidem/fashion-model/issues"},"_id":"fashion-model@5.0.21","_npmVersion":"5.4.2","_nodeVersion":"8.6.0","_npmUser":{"name":"philidem","email":"phillip.idem@gmail.com"},"dist":{"integrity":"sha512-YwXOHp3JMgI8y+Wo2qbzmrh3QIzkDIDH/Y9B1/xIUBY8SmWYxOgM6Q0jCWmmeqyTgcpTA1lhZnsRLTgNIkAHDg==","shasum":"0e0090e3c6acadd9d0616b527daed463d2aa0202","tarball":"https://registry.npmjs.org/fashion-model/-/fashion-model-5.0.21.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAW5nX6kBvBfUGK/IEUhBG97VwrWpX7jc0FiPn5LwNf3AiEA4ONHOlEw0+P6IEfEPk+LqM0EiVwAsjR40Y6R8sWfO+g="}]},"maintainers":[{"name":"austinkelleher","email":"austin.kell47@gmail.com"},{"name":"philidem","email":"phillip.idem@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fashion-model-5.0.21.tgz_1508346541643_0.7269671545363963"},"directories":{}},"6.0.1":{"name":"fashion-model","description":"JavaScript library for defining types and their properties with support for wrapping/unwrapping and serialization/deserialization.","keywords":["data","models","types","data-modeling","modeling"],"homepage":"https://github.com/philidem/fashion-model","repository":{"type":"git","url":"git+https://github.com/philidem/fashion-model.git"},"author":{"name":"Phil Gates-Idem"},"scripts":{"lint":"eslint .","test":"ava --verbose test/**/*.test.js"},"main":"./Model.js","devDependencies":{"ava":"^0.22.0","eslint":"^4.9.0","eslint-config-semistandard":"^11.0.0","eslint-config-standard":"^10.2.1","eslint-plugin-import":"^2.7.0","eslint-plugin-node":"^5.2.0","eslint-plugin-promise":"^3.4.1","eslint-plugin-standard":"^3.0.1","jayschema":"^0.3.1","np":"^2.16.0","z-schema":"^3.9.4"},"dependencies":{"events":"^1.1.1"},"version":"6.0.1","gitHead":"40b13a06058b14eff8f7d0d3292c2a0fa5325a0c","bugs":{"url":"https://github.com/philidem/fashion-model/issues"},"_id":"fashion-model@6.0.1","_npmVersion":"5.4.2","_nodeVersion":"8.6.0","_npmUser":{"name":"philidem","email":"phillip.idem@gmail.com"},"dist":{"integrity":"sha512-uMpyRjQs9mufuJ5lOYNxDtqd8zbcJDiCzNgIR+fRfXer4JwO47Mgqg0FYjqmRD6q1eu4a9lXG9yyw2d+zzqboQ==","shasum":"cdee48b7249ed12ef40297cddccd7168571e2e2a","tarball":"https://registry.npmjs.org/fashion-model/-/fashion-model-6.0.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDiYHUISWXVSbwtjoyDHEnSoDx5Js4B8URibtRAdNCkyAIhAID5sF/D7WD+5oHCNKToYHZOnD7FwIYI1ScS+Q+pbx5t"}]},"maintainers":[{"name":"austinkelleher","email":"austin.kell47@gmail.com"},{"name":"philidem","email":"phillip.idem@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fashion-model-6.0.1.tgz_1508351614673_0.14213461568579078"},"directories":{}},"6.0.0":{"name":"fashion-model","description":"JavaScript library for defining types and their properties with support for wrapping/unwrapping and serialization/deserialization.","keywords":["data","models","types","data-modeling","modeling"],"homepage":"https://github.com/philidem/fashion-model","repository":{"type":"git","url":"git+https://github.com/philidem/fashion-model.git"},"author":{"name":"Phil Gates-Idem"},"scripts":{"lint":"eslint .","test":"ava --verbose test/**/*.test.js"},"main":"./Model.js","devDependencies":{"ava":"^0.22.0","eslint":"^4.9.0","eslint-config-semistandard":"^11.0.0","eslint-config-standard":"^10.2.1","eslint-plugin-import":"^2.7.0","eslint-plugin-node":"^5.2.0","eslint-plugin-promise":"^3.4.1","eslint-plugin-standard":"^3.0.1","jayschema":"^0.3.1","np":"^2.16.0","z-schema":"^3.9.4"},"dependencies":{"events":"^1.1.1"},"version":"6.0.0","gitHead":"83a27b460d5dd37da31be0957c5c1274f8494f5e","bugs":{"url":"https://github.com/philidem/fashion-model/issues"},"_id":"fashion-model@6.0.0","_npmVersion":"5.4.2","_nodeVersion":"8.6.0","_npmUser":{"name":"philidem","email":"phillip.idem@gmail.com"},"dist":{"integrity":"sha512-c8Aou1lFUZ06LIebKJnM33VVeMsDWVRUWcL8gXTVNyNCdmpw4WiJF+zRCeTiyZVIjvkpmbC7FxfHwWywbBOObA==","shasum":"83d998510bda8339c760f84b232bee5cf2d1edd0","tarball":"https://registry.npmjs.org/fashion-model/-/fashion-model-6.0.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBLLGlPUqO8q/B+BGPawPe+IhBIjAKaZRtAU4tAAY1tvAiEAnk1XfYpPMJLByrraO7ZDWkvN1wfZgGK6GydI8+Ho59k="}]},"maintainers":[{"name":"austinkelleher","email":"austin.kell47@gmail.com"},{"name":"philidem","email":"phillip.idem@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fashion-model-6.0.0.tgz_1508352011013_0.11819184268824756"},"directories":{}},"6.0.2":{"name":"fashion-model","description":"JavaScript library for defining types and their properties with support for wrapping/unwrapping and serialization/deserialization.","keywords":["data","models","types","data-modeling","modeling"],"homepage":"https://github.com/philidem/fashion-model","repository":{"type":"git","url":"git+https://github.com/philidem/fashion-model.git"},"author":{"name":"Phil Gates-Idem"},"scripts":{"lint":"eslint .","test":"ava --verbose 'test/**/*.test.js'"},"main":"./Model.js","devDependencies":{"ava":"^0.22.0","eslint":"^4.9.0","eslint-config-semistandard":"^11.0.0","eslint-config-standard":"^10.2.1","eslint-plugin-import":"^2.7.0","eslint-plugin-node":"^5.2.0","eslint-plugin-promise":"^3.4.1","eslint-plugin-standard":"^3.0.1","jayschema":"^0.3.1","z-schema":"^3.9.4"},"dependencies":{"events":"^1.1.1"},"version":"6.0.2","gitHead":"25d8e0e6712f2701a5a1ba0e15d7988edbd760d1","bugs":{"url":"https://github.com/philidem/fashion-model/issues"},"_id":"fashion-model@6.0.2","_npmVersion":"5.4.2","_nodeVersion":"8.6.0","_npmUser":{"name":"philidem","email":"phillip.idem@gmail.com"},"dist":{"integrity":"sha512-ROzT0qexPMTTWd1VdGDolG1/pYw/Dl4TQuwsvHJP29gT5te5qBm225bEOD0wN+1x9+RMpsfUadMjIRxNZ340ig==","shasum":"cad55e9887a2424b7fba597fc56a93d51c6462ef","tarball":"https://registry.npmjs.org/fashion-model/-/fashion-model-6.0.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHQMwbuphVxE3X1QsEnoCP7CZsHhLifB5t98nNFRuy11AiBEXGT7eagTzd2DdEB0BH1bfGq4a1WwzQU0csgSXuOhdg=="}]},"maintainers":[{"name":"austinkelleher","email":"austin.kell47@gmail.com"},{"name":"philidem","email":"phillip.idem@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fashion-model-6.0.2.tgz_1509329137964_0.9056912462692708"},"directories":{}},"6.1.0":{"name":"fashion-model","description":"JavaScript library for defining types and their properties with support for wrapping/unwrapping and serialization/deserialization.","keywords":["data","models","types","data-modeling","modeling"],"homepage":"https://github.com/philidem/fashion-model","repository":{"type":"git","url":"git+https://github.com/philidem/fashion-model.git"},"author":{"name":"Phil Gates-Idem"},"scripts":{"lint":"eslint .","test":"ava --verbose 'test/**/*.test.js'"},"main":"./Model.js","devDependencies":{"ava":"^0.22.0","eslint":"^4.9.0","eslint-config-semistandard":"^11.0.0","eslint-config-standard":"^10.2.1","eslint-plugin-import":"^2.7.0","eslint-plugin-node":"^5.2.0","eslint-plugin-promise":"^3.4.1","eslint-plugin-standard":"^3.0.1","jayschema":"^0.3.1","z-schema":"^3.9.4"},"dependencies":{"events":"^1.1.1"},"version":"6.1.0","gitHead":"e12140e36ebb9467d28eb7ee32453545490a6887","bugs":{"url":"https://github.com/philidem/fashion-model/issues"},"_id":"fashion-model@6.1.0","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"austinkelleher","email":"austin.kell47@gmail.com"},"dist":{"integrity":"sha512-A3zTVZLsrcwWXcoNqP2ARLYLRkueWdo3gz5vqe0yGkxzy0ARbibAOaVXLlVlmYwHcKsjXq6rnMVY61+/H3u0qg==","shasum":"b1d18694c8ab090549d544ce70bf4dbcc8af7399","tarball":"https://registry.npmjs.org/fashion-model/-/fashion-model-6.1.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCG2c8nh0ZSQ/QgarLdyxt/HiBFeNkvtxdRwTGiAp5i3QIgIx6o+vEW8l7uUTa89uUW96Dh0OzMykpQ/jqG43cktzI="}]},"maintainers":[{"name":"austinkelleher","email":"austin.kell47@gmail.com"},{"name":"philidem","email":"phillip.idem@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fashion-model-6.1.0.tgz_1516114039151_0.5301903751678765"},"directories":{}},"6.2.0":{"name":"fashion-model","description":"JavaScript library for defining types and their properties with support for wrapping/unwrapping and serialization/deserialization.","keywords":["data","models","types","data-modeling","modeling"],"homepage":"https://github.com/philidem/fashion-model","repository":{"type":"git","url":"git+https://github.com/philidem/fashion-model.git"},"author":{"name":"Phil Gates-Idem"},"scripts":{"lint":"eslint .","test":"ava --verbose 'test/**/*.test.js'"},"main":"./Model.js","devDependencies":{"ava":"^0.22.0","eslint":"^4.9.0","eslint-config-semistandard":"^11.0.0","eslint-config-standard":"^10.2.1","eslint-plugin-import":"^2.7.0","eslint-plugin-node":"^5.2.0","eslint-plugin-promise":"^3.4.1","eslint-plugin-standard":"^3.0.1","jayschema":"^0.3.1","z-schema":"^3.9.4"},"dependencies":{"events":"^1.1.1"},"version":"6.2.0","gitHead":"3a90471688943e2576a3a38ae62262bf695e8d51","bugs":{"url":"https://github.com/philidem/fashion-model/issues"},"_id":"fashion-model@6.2.0","_nodeVersion":"14.17.6","_npmVersion":"6.14.15","dist":{"integrity":"sha512-am14R7dRhndhfg5zRCwvLF93VnHKC7M6UtfetTYVdHsDKXTIJeMlfNgjNxiEuwiJjH5iryM7QGKyqhgzeCZd6Q==","shasum":"987075aba5069cc37a374eebb21f22f2aa4051a8","tarball":"https://registry.npmjs.org/fashion-model/-/fashion-model-6.2.0.tgz","fileCount":35,"unpackedSize":141563,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh6hlcCRA9TVsSAnZWagAAts8P/2FDCdTECvZUjJTNeCmT\nnRTCe5lY7J2J8z1sjwnetk67RHbt1V0dMYsDXCJ49MWppMnRzD24YPaA6v+S\n/KVc2zEvg9mNmMa8r6LCk8HLm2lPi3cPvUxOD9gOVLkpYmhBGrh7qNs78tnp\nZl1TWzDVhvT4VrySAqeGHJqxBo9dA9bbjArZNkwYExJFekr2rYnplgOF2Pel\nMdefQGOhyOQgZpKnQdJo+sBmsZyoP+xWaqSoO2oBvJ57P2U7a6HKQkkPTvuF\neELfLNk7j4IlSMCJKKnsw0Fug+58lhjaRqXc7ZGpa8FqhqOdR3vluctO6Z0P\n670lSI2wAETVZkzNWQYb+6TNlhfn1xdirP+BMoXukGhYGYvVlDfmJgm31BJw\nG8Zsnm0OP7+q903pm44uhTv5j7Na+1n7BQQvTU7CJ3ySo+CV4BdIebXdKIKX\n7VaevnnKadbuc4aSjaL4/0M4hLj7NZbtSYTmW/bcCBkGY1uM37l06Z3f4PBi\nt4aI5M66W80/9y1QM0F88BcoEkK/k+VnQXBTw2C+HXbhjwXOC8ZSzWaJFSu6\nFp5olotvXmGjOduuGcSQ1hHS9uwNC4r9ZQ4oxy/EOutQxbkiN0y+uWfwveIC\nGyDVHz7oy0cUgfcFq4kT2nP+nCP0yh7c426DyQWHicb0iuDk+E39LPjSBMD+\nRzZl\r\n=/Ud9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHPrZAXltvi0sZO/2MWFnQ25PoJFsBgKjR7cEF92zYh/AiEAhfLKKN/rK56X2Z8PRsELG70HiZI1b9dzHcn/CkS/bsQ="}]},"_npmUser":{"name":"philidem","email":"phillip.idem@gmail.com"},"directories":{},"maintainers":[{"name":"philidem","email":"phillip.idem@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fashion-model_6.2.0_1642731868553_0.30889253731278576"},"_hasShrinkwrap":false}},"readme":"fashion-model\n=============\nJavaScript library for defining types and their properties with support for\nwrapping/unwrapping, serialization/deserialization, validation, and JSON schema.\n\n## Installation\n```bash\nnpm install fashion-model --save\n```\n\n## Overview\nThe `fashion-model` module provides utility code for defining data model types.\nThese data model types provide helpful accessor methods (getters and setters)\nfor the properties defined for the model type. This module is compatible\nwith both web browser and Node.js runtime environments.\n\nThese models can be thought of as a \"schema\" that provide extra safeguards\nfor working with objects. These model types are not tied to a specific\ndata storage backend so you can use these in the browser or on the\nserver-side with very little overhead. This approach to defining your\nschema is similar to [Mongoose](http://mongoosejs.com/docs/guide.html)\nschemas except that this library is not tied to MongoDB or any other\nstorage engine.\n\nIf you application is fetching data from the database for a client request and\nthere is no need to process the data, then simply serialize the data\nwithout creating `Model` instances to wrap the data. Creating `Model` instances\ncreates unnecessary overhead with no benefit (this is the default behavior\nof [Mongoose](http://mongoosejs.com/docs/guide.html)). However, if you're\naccessing or setting properties on an object then you might find it\nhelpful to wrap the raw object with a `Model` instance and use the\ngetters and setters to work with the data.\n\n## Relationship to JSON Schema\nModel definitions are similar to JSON Schema and, when possible, similar\nnaming conventions were chosen. However, this module is more tailored to runtime\nusage. If desired, you can convert your model definitions to a JSON Schema\nrepresentation fairly easily. See [JSON Schema section](#json-schema) for more\ninformation.\n\n## Usage\n\n### Requiring\n```javascript\n// Requiring the base Model type\nconst Model = require('fashion-model');\n\n// Variation on requiring the Model type\nconst Model = require('fashion-model/Model');\n\n// Requiring the Enum type factory\nconst Enum = require('fashion-model/Enum');\n\n// Create new model type\nconst NewModel = Model.extend(config);\n\n// Create new enum type\nconst NewEnum = Enum.create(config);\n```\n\n### Primitive Types\nThe following primitive types are supported:\n\n| Data Type | JavaScript Type | Alias           | Model Type                          |\n|-----------|-----------------|-----------------|-------------------------------------|\n| Any       |                 | `\"any\"`         | `require(\"fashion-model/Any\")`     |\n| Date      | Date            | `\"date\"`        | `require(\"fashion-model/Date\")`     |\n| Boolean   | Boolean         | `\"boolean\"`     | `require(\"fashion-model/Boolean\")`  |\n| Number    | Number          | `\"number\"`      | `require(\"fashion-model/Number\")`   |\n| Integer   |                 | `\"integer\"`     | `require(\"fashion-model/Integer\")`  |\n| String    | String          | `\"string\"`      | `require(\"fashion-model/String\")`   |\n| Array     | Array           | `\"array\"` / `[]`| `require(\"fashion-model/Array\")`    |\n| Function  | Function        | `\"function\"`    | `require(\"fashion-model/Function\")` |\n\n### Complex Object Type\n\n**Declare custom complex object type:**\n```javascript\nconst Address = Model.extend({\n  properties: {\n    city: String,\n    state: String,\n    primary: Boolean,\n\n    // The `{}` is equivalent to `\"any\"` data type\n    metadata: {}\n  }\n});\n```\n\n**Create instance via `new` constructor with no initial data:**\n```javascript\n// Create via constructor with no initial data\nconst address = new Address();\naddress.setCity('San Francisco');\naddress.setState('CA');\naddress.setPrimary(true);\naddress.setMetadata({a: 'b'});\n```\n\n**Create instance via `new` constructor with some initial data:**\n```javascript\n// Create via constructor with initial data\nconst address = new Address({\n  city: 'San Francisco',\n  state: 'CA',\n  primary: true,\n  metadata: {\n    a: 'b'\n  }\n});\n```\n\n**Create instance via `create` method:**\n```javascript\n// Create via \"create\" function\nconst address = Address.create();\naddress.setCity('San Francisco');\naddress.setState('CA');\naddress.setPrimary(true);\naddress.setMetadata({a: 'b'});\n```\n\n**Create instance by wrapping existing data:**\n```javascript\n// Create via \"wrap\" function.\n// If the argument to `Address.wrap(...)` function is already\n// the correct type then the original value will be returned.\naddress = Address.wrap({\n  city: 'San Francisco',\n  state: 'CA',\n  primary: true,\n  metadata: {\n    a: 'b'\n  }\n});\n```\n\n### Types that Implement EventEmitter\n\nTypes that extend `Model` will not implement the `EventEmitter` interface.\nIf your type should be an `EventEmitter` then your type should either extend\n`require('fashion-model/ObservableModel')` or add the `EventEmitter` mixin.\nTypes that implement EventEmitter will emit `change` and `change:someProperty`\nevents\n\n**Example using ObservableModel:**\n\n```javascript\nconst Something = require('fashion-model/ObservableModel').extend({\n  properties: {\n    value: String\n  }\n});\n```\n\n**Example using mixin:**\n\n```javascript\nconst Something = require('fashion-model/Model').extend({\n  properties: {\n    value: String\n  },\n  mixins: [require('fashion-model/mixins/EventEmitter')]\n});\n```\n\n\n**Listening for property value changes:**\n\n```javascript\nconst something = new Something();\n\nsomething.on('change:value', function (event) {\n  // The \"value\" property changed\n  console.log(\n    'Old value: ' + event.oldValue,\n    'New value: ' + event.newValue);\n});\n\nsomething.on('change', function (event) {\n  // Some property changed\n  console.log(\n    'Property: ' + event.propertyName,\n    'Old value: ' + event.oldValue,\n    'New value: ' + event.newValue);\n});\n```\n\n### Self-type References in Properties\n\nIn some use cases, the type of a property is the\nsame type as the complex object for which the\nproperty is declared. For exampled, to build\na linked list, each node has a pointer to the next\nnode.\n\n**Here are some examples of self-type references:**\n\n```javascript\n// Declare a linked list node type that has a pointer\n// to the next node\nconst LinkedListNode = Model.extend({\n  properties: {\n    next: 'self',\n    value: Object\n  }\n});\n\n// Here is another functionally equivalent variation of LinkedListNode\nconst LinkedListNode = Model.extend({\n  properties: {\n    next: {\n      type: 'self'\n    },\n    value: Object\n  }\n});\n\n// An example of self-type reference within an array\nconst TreeNode = Model.extend({\n  properties: {\n    children: ['self'],\n    value: Object\n  }\n});\n\n// Here is another functionally equivalent variation of TreeNode\nconst TreeNode = Model.extend({\n  properties: {\n    // Brackets at end of type name are used to denote arrays\n    children: 'self[]',\n    value: Object\n  }\n});\n```\n\n### Getters and Setters\nA getter and setter will be generated on the prototype,\nfor each property defined in the model.\n\n**For example:**\n```javascript\n// Define an Address model\nconst Address = Model.extend({\n  properties: {\n    city: String,\n    state: String\n  }\n});\n\n// Create instance of Address\nconst address = new Address();\n\n// Use the generated setter to set the city\naddress.setCity('New York');\n\n// Use the generated getter to get the city\nassert(address.getCity() === 'New York')\n```\n\n**Note:** The getter function name will be always in the form\n`get<PropertyName>`. The setter function name will be always in the form\n`set<PropertyName>`. These rules **do not** change for properties with Boolean type.\n\n### Model prototype\nThe `Model` types are created via standard prototypical inheritance.\nIf you wish to conveniently add other methods or properties to the\nprototype then use use the `prototype` property in the `Model`\nconfiguration.\n\n**For example:**\n```javascript\nconst Person = Entity.extend({\n  properties: {\n    firstName: String,\n    lastName: String\n  },\n  prototype: {\n    getDisplayName: function () {\n      return this.getFirstName() + ' ' + this.getLastName();\n    }\n  }\n});\n```\n\n### Inheritance\n\n**Define your base Entity type:**\n```javascript\nconst Entity = Model.extend({\n  properties: {\n    id: String\n  }\n});\n```\n\n**Define a type that extends Entity:**\n```javascript\nconst Person = Entity.extend({\n  properties: {\n    email: String\n  }\n});\n```\n\nThe new `Person` type will recognize `email` (defined for `Person`) and\n`id` (defined for `Entity`) as properties.\n\n```javascript\nconst person = new Person();\nperson.setId('john-doe');\nperson.setEmail('john.doe@example.com');\n```\n\nYou can also create getters for computed/derived properties.\n\n**For example:**\n```javascript\nconst Person = Entity.extend({\n  properties: {\n    firstName: String,\n    lastName: String,\n    displayName: {\n      type: String\n      get: function (property) {\n        return this.getFirstName() + ' ' + this.getLastName();\n      }\n    }\n  }\n});\n```\n\n### Non-persisted Properties\n\nIf you'd like to store computed properties in the Model instance for\nperformance reasons but you don't want them to be persisted to storage,\nthen you might want to mark an property as non-persisted.\n\n**For example, here's a Model type that will automatically\nupdate `displayName` whenever `firstName` or `lastName` is changed:**\n```javascript\nfunction _updateDisplayName (person) {\n    person.setDisplayName(person.getFirstName() + ' ' + person.getLastName());\n}\n\nconst Person = Entity.extend({\n  properties: {\n    firstName: {\n      type: String,\n      set: function (value, property) {\n        this.data[property.getKey()] = value;\n        _updateDisplayName(this);\n      }\n    },\n    lastName: {\n      type: String,\n      set: function (value, property) {\n        this.data[property.getKey()] = value;\n        _updateDisplayName(this);\n      }\n    },\n    // displayName is updated whenever firstName or lastName change\n    displayName: {\n      type: String,\n\n      // do not persist displayName when clean() is called since it is\n      // a derived value\n      persist: false\n    }\n  }\n});\n\nconst person = new Person({\n    firstName: 'John',\n    lastName: 'Doe'\n});\n\nassert(person.getDisplayName() === 'John Doe');\n\n// Remove non-persisted properties\nconst personObj = person.clean();\nassert(personObj.displayName === undefined);\n```\n\n### Wrap/Unwrap\n\n`Model.unwrap(obj)` can used to return the underlying data for a `Model`\ninstance. If the given `obj` is not a `Model` instance then `obj` is returned.\n\n`SomeType.wrap(obj)` can be used to ensure that the given obj is\nwrapped as `SomeType`. If `obj` is already `SomeType` then `obj`\nwill simply be returned.\n\n**Examples:**\n```javascript\nconst Address = Model.extend({\n  properties: {\n    city: String,\n    state: String\n  }\n});\n\nconst address = new Address({\n  city: 'San Francisco',\n  state: 'CA'\n});\n\n// Create an instance of Address\nconst addressObj = Model.unwrap(address);\nassert(addressObj.city === 'San Francisco');\n\n// Wrap the unwrapped object\nconst addressWrapped = Address.wrap(addressObj);\nassert(addressWrapped.getCity() === 'San Francisco');\n\n// The wrapped object returned by Address.wrap()\n// will be the original Model instance that we created.\nassert(addressWrapped === address);\n```\n\n### Clean\n\n`Model.clean(obj)` should be used to return a clone of an object in which\nall non-persisted properties and metadata have been removed. The clean\nfunction will always return a deep clone of the given object if the\ngiven argument is non-null and not a primitive.\n\n```javascript\nconst address = new Address({\n  city: 'San Francisco',\n  state: 'CA'\n});\n\n// When saving a model object to disk or storage, use clean to remove\n// unnecessary fields.\ndb.save(address.clean(), callback);\n```\n\nA `Model` can also control how its data is cleaned by providing a `clean`\nproperty. For example, this might be helpful for working with binary data\nby automatically encoding the binary data as a base64 string.\n\nA `Model` type that is not wrapped (that is, when `wrap: false` flag is provided),\nits value will not be cleaned unless a `function` is provided for the clean\nproperty.\n\nHere's an example how to use the `clean` function to convert a `Buffer`\nto a Base64 encoded string:\n\n```javascript\nconst Binary = Model.extend({\n  // Don't wrap binary data because we want to use the raw Buffer type\n  // provided by Node.js runtime environment\n  wrap: false,\n\n  // Provide a clean function that will be used to clean values\n  // associated with properties whose type is Binary\n  clean: function (value) {\n    // clean will convert to base64\n    return value.toString('base64');\n  },\n\n  coerce: function (value, options) {\n    if (value == null) {\n        return value;\n    }\n\n    if (value.constructor === Buffer) {\n        // no conversion needed\n        return value;\n    }\n\n    // Buffers can be of type array. We assume that if an array is provided,\n    // that it is an array of bytes.\n    if (Array.isArray(value)) {\n        return new Buffer(value);\n    }\n\n    if (value.constructor === String) {\n        // assume that a string represents base64 encoded data\n        return new Buffer(value, 'base64');\n    }\n\n    this.coercionError(value, options, 'Invalid binary data.');\n  }\n});\n\nconst Image = Model.extend({\n  properties: {\n    data: Binary\n  }\n});\n\nconst image = new Image({\n  // data can be provided as Array of bytes, base64 encoded string, or Buffer\n  // because Binary.coerce function handles each of these.\n  data: someData\n});\n\n// the data will be converted to Buffer object via Binary.coerce function\nassert(image.getData() instanceof Buffer);\n\n// Calling clean on the image model instance will cause the contained data\n// to be converted to base64 string via Binary.clean function.\nconst cleanedImage = image.clean();\n\n// the data will be converted to String via Binary.clean function\nassert(typeof cleanedImage.data.constructor === 'string');\n\n// log the Base64 encoded string\nconsole.log(cleanedImage.data);\n```\n\nImplementing a `clean` function on individual properties is also supported:\n\n```js\nconst Person = Model.extend({\n  properties: {\n    name: String,\n    ssn: {\n      type: String,\n      clean: function (value, options) {\n        // Only return the value of the ssn property if the `showSensitive`\n        // option is passed to `clean`.\n        return (options.showSensitive) ? value : undefined;\n      }\n    }\n  }\n});\n\nconst person = new Person({ name: 'John', ssn: 'abc123' });\n\nassert.deepEqual(person.clean(), { name: 'John' });\nassert.deepEqual(person.clean({ showSensitive: true }), {\n  name: 'John',\n  ssn: 'abc123'\n});\n```\n\n### Stringify\n\nModel instances have a `stringify` function that can be used to\nsafely stringify the instance.\n\n**For example:**\n```javascript\n// Stringify and do not add extra white-space\nconsole.log(model.stringify());\n\n// Stringify and include extra white-space for better readability\nconsole.log(model.stringify(true));\n```\n\n### Type Coercion\n\nAs a developer, you may choose to be lenient about how certain non-Model\ninstances are coerced into instances of a Model.\n\nFor example, consider this example of declaring `ObjectId` type that\nautomatically coerces Strings to actual instances of `require('mongodb').ObjectID`:\n```javascript\nconst MongoDbObjectID = require('mongodb').ObjectID;\n\nconst ObjectId = Model.extend({\n  // Don't wrap object ID.\n  // This means that the getters for properties of this type\n  // will return the raw MongoDB ObjectID type\n  wrap: false,\n\n  // We provide a \"coerce\" function to convert a value to the proper\n  // MongoDB ObjectID type\n  coerce: function (data) {\n    if (data == null) {\n      return data;\n    } else {\n      // Use the MongoDB ObjectID constructor to coerce our\n      // value (for example, it will handle String instances)\n      return new MongoDbObjectID(data);\n    }\n  }\n});\n\nconst Entity = Model.extend({\n  id: {\n    // ObjectId is a type that we use just to make sure that the value\n    // is automatically converted to the type that we need for storage\n    type: ObjectId,\n\n    // MongoDB data storage expects a document to store its\n    // identifier in the \"_id\" property but we still want to\n    // access it via \"getId\" and \"setId\" (and not \"get_id\" and \"set_id\")\n    key: '_id'\n  }\n})\n```\nModels that use the primitive `Date` type also benefit from type coercion.\nThe `Date` coerce function provided by `fashion-model` automatically convert\nstrings in ISO date format to `Date` instances. You will probably find this helpful because,\nby default, `JSON.stringify(obj)` will automatically convert `Date` objects\nto Strings using the standard ISO format.\n\n**For example:**\n```javascript\nconst Document = Model.extend({\n  dateCreated: Date\n});\n\nconst document = new Document();\n// A String value in ISO date format is automatically converted to a\n// real Date.\ndocument.setDateCreated('2014-12-22T21:18:45.905Z');\n```\n\n### Enum Type\n\n**Short-hand syntax for declaring an enum type:**\n\n```javascript\nconst Color = Enum.create(['red', 'green', 'blue']);\n```\n\n**Alternate syntax for declaring an enum type:**\n\n```javascript\nconst Color = Enum.create({\n  values: ['red', 'green', 'blue']\n});\n```\n\n**Enum type access patterns:**\n\nBased on the `Color` enum type declared in examples above,\nthe constant enum values will be accessible from the new\n`Color` type. Each `Color` enum value will have some helper\nfunctions as shown shown in the examples below.\n\n```javascript\n// The following assertions will be true\n// test to see\n\n// Check to see if given color is the RED enum value\nconst color = Color.RED;\nassert(color.isRed());\n\n// Get the name of the enum\nassert(Color.RED.name() === 'red');\n\n// Get the value associated with the enum\nassert(Color.RED.value() === 'red');\n\n// Clean the enum value which will return its name\nassert(Color.RED.clean() === 'red');\n\n// Get the ordinal value associated with index of the value.\nassert(Color.RED.ordinal() === 0);\n```\n\n**Object enum values:**\n```javascript\nconst Color = Enum.create({\n  values: {\n    red: {\n      hex: '#FF0000',\n      name: 'Red'\n    },\n\n    green: {\n      hex: '#00FF00',\n      name: 'Green'\n    },\n\n    blue: {\n      hex: '#0000FF',\n      name: 'Blue'\n    }\n  }\n});\n\n// The following assertions will be true:\nassert(Color.red.name() === 'red');\nassert(Color.red.value().hex === '#FF0000');\nassert(Color.red.value().name === 'Red');\nassert(Color.RED.name() === 'red');\nassert(Color.RED.value().hex === '#FF0000');\nassert(Color.RED.value().name === 'Red');\nassert(Color.RED.ordinal() === 0);\n```\n\n**Loop over values:**\n```javascript\nColor.values.forEach(function (colorValue) {\n  console.log('Color ' + colorValue.name());\n});\n```\n\n**Loop over names:**\n```javascript\nColor.names.forEach(function (colorName) {\n  console.log('Color ' + colorName);\n});\n```\n\n### Array Type\n\n**Syntax:**\n```javascript\nconst Color = Enum.create({\n  values: ['red', 'green', 'blue']\n});\n\nconst ColorPalette = Model.extend({\n  properties: {\n    colors: {\n      // colors has type array\n      type: Array,\n\n      // each item in the array is a Color\n      items: Color\n    }\n  }\n});\n```\n\n**Short-hand syntax:**\n```javascript\nconst ColorPalette = Model.extend({\n  properties: {\n    // Using an Array instance is short-hand for specifying\n    // that the property is of type array. The first item\n    // in this array indicates the type of each item.\n    colors: [Color]\n  }\n});\n```\n\n**Accessing an array property:**\n```javascript\nconst colorPalette = new ColorPalette({\n  colors: ['red', 'green', 'blue']\n});\n\n// getColors() will return an Array and we can use the \"forEach\" function.\n// Each item in the returned Array will be an instance of Color.\ncolorPalette.getColors().forEach(function (color, index) {\n  assert(color.constructor === Color);\n});\n```\n\n### Object Validation\n\n**Using array to capture errors:**\n\n```javascript\n// array that will collect errors\nconst errors = [];\n\n// collect errors while wrapping existing person data\nconst person1 = Person.wrap({\n  name: 'John',\n  age: 'bad integer'\n}, errors);\n\n// collect errors while constructing new person\nconst person2 = new Person({\n  name: 'John',\n  age: 'bad integer'\n}, errors);\n```\n\n**Using extended options:**\n\n```javascript\nconst options = {\n  // array that will collect errors\n  errors: [],\n\n  // strict mode is used by some primitive types to require\n  // that values be of the same primitive types\n  // (no automatic type coercion)\n  strict: true\n};\n\nconst person = new Person({\n  name: 'John',\n  age: 'bad integer'\n}, options);\n```\n\n### <a name=\"json-schema\"></a>JSON Schema\n\nA `Model` type can be easily converted to an equivalent JSON schema\nwith the following module:\n```javascript\nconst jsonSchema = require('fashion-model/json-schema-draft4');\nconst someModelSchema = jsonSchema.fromModel(SomeModel, options);\n```\n\n| Option | Type | Purpose |\n| ------ | ---- | ------- |\n| `toRef` | `function (Model)` | This function can be used to turn a Model definition to a reference name (return value will be used as value for `$ref` properties) |\n| `isIgnoredProperty` | `function (name, property)` | This function can be used to exclude a property from the schema definition of a complex object |\n\n\n#### Convert Model to JSON Schema\n\n**Define your models:**\n\n```javascript\nconst Model = require('fashion-model/Model');\nconst Enum = require('fashion-model/Enum');\n\nconst Entity = Model.extend({\n  typeName: 'Entity',\n  properties: {\n    id: String\n  }\n});\n\nconst Gender = Enum.create({\n  typeName: 'Gender',\n  title: 'Gender',\n  description: 'A person\\'s gender',\n  values: ['M', 'F']\n});\n\nconst Species = Enum.create({\n  typeName: 'Species',\n  title: 'Species',\n  description: 'A species',\n  values: ['dog', 'cat']\n});\n\nconst Pet = Model.extend({\n  typeName: 'Pet',\n  properties: {\n    name: String,\n    species: Species\n  }\n});\n\nconst Person = Entity.extend({\n  typeName: 'Person',\n  title: 'Person',\n  description: 'A person',\n  properties: {\n    name: String,\n    dateOfBirth: Date,\n    gender: Gender,\n    age: 'integer',\n    pets: [Pet],\n    favoriteNumbers: ['integer'],\n    anything: [],\n    blob: Object\n  }\n});\n```\n\n**Convert your model to JSON schema:**\n\n```javascript\nconst jsonSchema = require('fashion-model/json-schema-draft4');\nconst jsonSchemaOptions = {\n  toRef: function (Model) {\n    return Model.typeName;\n  }\n};\n\nconst EntitySchema = jsonSchema.fromModel(Entity, jsonSchemaOptions);\nconst GenderSchema = jsonSchema.fromModel(Gender, jsonSchemaOptions);\nconst SpeciesSchema = jsonSchema.fromModel(Species, jsonSchemaOptions);\nconst PetSchema = jsonSchema.fromModel(Pet, jsonSchemaOptions);\nconst PersonSchema = jsonSchema.fromModel(Person, jsonSchemaOptions);\n```\n\n**Entity JSON Schema:**\n\n```json\n{\n  \"id\": \"Entity\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"id\": {\n      \"type\": \"string\"\n    }\n  }\n}\n```\n\n**Gender JSON Schema:**\n\n```json\n{\n  \"id\": \"Gender\",\n  \"title\": \"Gender\",\n  \"description\": \"A person's gender\",\n  \"type\": \"string\",\n  \"enum\": [\n    \"M\",\n    \"F\"\n  ]\n}\n```\n\n**Species JSON Schema:**\n\n```json\n{\n  \"id\": \"Species\",\n  \"title\": \"Species\",\n  \"description\": \"A species\",\n  \"type\": \"string\",\n  \"enum\": [\n    \"dog\",\n    \"cat\"\n  ]\n}\n```\n\n**Pet JSON Schema:**\n\n```json\n{\n  \"id\": \"Pet\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"name\": {\n      \"type\": \"string\"\n    },\n    \"species\": {\n      \"$ref\": \"Species\"\n    }\n  }\n}\n```\n\n**Person JSON Schema:**\n\n```json\n{\n  \"id\": \"Person\",\n  \"title\": \"Person\",\n  \"description\": \"A person\",\n  \"allOf\": [\n    {\n      \"$ref\": \"Entity\"\n    }\n  ],\n  \"type\": \"object\",\n  \"properties\": {\n    \"name\": {\n      \"type\": \"string\"\n    },\n    \"dateOfBirth\": {\n      \"type\": \"string\",\n      \"format\": \"date-time\"\n    },\n    \"gender\": {\n      \"$ref\": \"Gender\"\n    },\n    \"age\": {\n      \"type\": \"integer\"\n    },\n    \"pets\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"$ref\": \"Pet\"\n      }\n    },\n    \"favoriteNumbers\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"integer\"\n      }\n    },\n    \"anything\": {\n      \"type\": \"array\"\n    },\n    \"blob\": {\n      \"type\": \"object\"\n    }\n  }\n}\n```\n","maintainers":[{"name":"philidem","email":"phillip.idem@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"}],"time":{"modified":"2022-06-17T23:34:14.143Z","created":"2015-11-06T20:41:05.858Z","5.0.0":"2015-11-06T20:41:05.858Z","5.0.1":"2015-11-06T21:18:30.373Z","5.0.2":"2015-11-10T02:21:03.119Z","5.0.3":"2015-11-10T16:41:44.163Z","5.0.4":"2015-11-10T22:00:06.829Z","5.0.5":"2015-11-13T14:19:50.138Z","5.0.6":"2015-11-21T01:13:27.110Z","5.0.7":"2015-12-22T18:55:02.892Z","5.0.8":"2015-12-22T20:21:02.664Z","5.0.9":"2016-01-05T15:12:57.170Z","5.0.10":"2016-01-08T01:09:28.079Z","5.0.11":"2016-01-23T19:54:45.580Z","5.0.12":"2016-02-23T22:43:02.505Z","5.0.13":"2016-03-01T22:00:25.716Z","5.0.14":"2016-03-22T14:45:11.835Z","5.0.15":"2016-03-28T00:24:47.955Z","5.0.16":"2016-03-30T19:50:10.005Z","5.0.17":"2016-04-09T03:33:24.257Z","5.0.18":"2016-04-12T20:35:19.019Z","5.0.19":"2016-12-13T15:52:29.083Z","5.0.20":"2017-10-18T17:05:51.630Z","5.0.21":"2017-10-18T17:09:02.757Z","6.0.1":"2017-10-18T18:33:35.950Z","6.0.0":"2017-10-18T18:40:12.262Z","6.0.2":"2017-10-30T02:05:39.206Z","6.1.0":"2018-01-16T14:47:19.272Z","6.2.0":"2022-01-21T02:24:28.757Z"},"homepage":"https://github.com/philidem/fashion-model","keywords":["data","models","types","data-modeling","modeling"],"repository":{"type":"git","url":"git+https://github.com/philidem/fashion-model.git"},"author":{"name":"Phil Gates-Idem"},"bugs":{"url":"https://github.com/philidem/fashion-model/issues"},"readmeFilename":"README.md"}