{"_id":"feathers-schema","_rev":"29-346b46b046aa096ca001091a6c0208c5","name":"feathers-schema","description":"Model structure/validation for feathers.js","dist-tags":{"alpha":"0.1.0","latest":"0.3.4"},"versions":{"0.1.0":{"name":"feathers-schema","version":"0.1.0","description":"Model structure/validation for feathers.js","main":"lib","scripts":{"test":"mocha --require babel-register --require babel-polyfill 'test/**/*test.js'","test:watch":"mocha --require babel-register --watch --require babel-polyfill 'test/**/*test.js'","build":"rm -rf lib; mkdir lib; node_modules/.bin/babel src --out-dir lib","build:watch":"npm run build -- --watch"},"repository":{"type":"git","url":"git+https://github.com/BenZed/feathers-schema.git"},"keywords":["feathers","schema","model","validation","validate","sanitization","sanitize"],"author":{"name":"Ben Gaumond"},"license":"ISC","bugs":{"url":"https://github.com/BenZed/feathers-schema/issues"},"homepage":"https://github.com/BenZed/feathers-schema#readme","devDependencies":{"babel":"^6.5.2","babel-cli":"^6.18.0","babel-eslint":"^7.1.1","babel-polyfill":"^6.20.0","babel-preset-es2015":"^6.18.0","babel-preset-stage-0":"^6.16.0","babel-register":"^6.18.0","body-parser":"^1.16.0","chai":"^3.5.0","cli-clear":"^1.0.4","eslint":"^3.13.1","eslint-plugin-react":"^6.9.0","feathers":"^2.0.3","feathers-configuration":"^0.4.1","feathers-hooks":"^1.7.1","feathers-memory":"^1.0.1","feathers-rest":"^1.6.0","jsdoc-to-markdown":"^2.0.1","mocha":"^3.2.0","nodemon":"^1.11.0"},"dependencies":{"bson-objectid":"^1.1.4","buffer":"^5.0.2","feathers-errors":"^2.5.0","is-explicit":"^1.1.0"},"gitHead":"d14006263e1827e39bd6041810d361429ab0fea8","_id":"feathers-schema@0.1.0","_shasum":"aec84492b6b35dea1ed96a7d38d2b5524820a280","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.4.0","_npmUser":{"name":"benzed","email":"bengaumond@gmail.com"},"dist":{"shasum":"aec84492b6b35dea1ed96a7d38d2b5524820a280","tarball":"https://registry.npmjs.org/feathers-schema/-/feathers-schema-0.1.0.tgz","integrity":"sha512-OxNNl5SGNQ/WbqlxilzF8u8f+Z8rcU0van1Ow47t8C9jpQ4bAQ8XU6OvBcm/qCXPq5pYRI4zm4GZPildIJj3gw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDRfyqBldSJz0zq8G/Np1XG1NsfYimvsXPPG42TghKm1AIhAMX1CvHfKO2U8VG7tWZMU0EHsVoY98N3VyvONbOuMIFq"}]},"maintainers":[{"name":"benzed","email":"bengaumond@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/feathers-schema-0.1.0.tgz_1486166731101_0.196060995105654"},"directories":{}},"0.1.1":{"name":"feathers-schema","version":"0.1.1","description":"Model structure/validation for feathers.js","main":"lib","scripts":{"test":"mocha --require babel-register --require babel-polyfill 'test/**/*test.js'","test:watch":"mocha --require babel-register --watch --require babel-polyfill 'test/**/*test.js'","build":"rm -rf lib; mkdir lib; node_modules/.bin/babel src --out-dir lib","build:watch":"npm run build -- --watch"},"repository":{"type":"git","url":"git+https://github.com/BenZed/feathers-schema.git"},"keywords":["feathers","schema","model","validation","validate","sanitization","sanitize"],"author":{"name":"Ben Gaumond"},"license":"ISC","bugs":{"url":"https://github.com/BenZed/feathers-schema/issues"},"homepage":"https://github.com/BenZed/feathers-schema#readme","devDependencies":{"babel":"^6.5.2","babel-cli":"^6.18.0","babel-eslint":"^7.1.1","babel-plugin-transform-runtime":"^6.22.0","babel-polyfill":"^6.20.0","babel-preset-es2015":"^6.18.0","babel-preset-stage-0":"^6.16.0","babel-register":"^6.18.0","body-parser":"^1.16.0","chai":"^3.5.0","cli-clear":"^1.0.4","eslint":"^3.13.1","eslint-plugin-react":"^6.9.0","feathers":"^2.0.3","feathers-configuration":"^0.4.1","feathers-hooks":"^1.7.1","feathers-memory":"^1.0.1","feathers-rest":"^1.6.0","jsdoc-to-markdown":"^2.0.1","mocha":"^3.2.0","nodemon":"^1.11.0"},"dependencies":{"bson-objectid":"^1.1.4","buffer":"^5.0.2","feathers-errors":"^2.5.0","is-explicit":"^1.1.0"},"gitHead":"b29c67a923215984bde3b68e8d50a5574697ac7b","_id":"feathers-schema@0.1.1","_shasum":"f74bafb3ba23fb0d2fc5f93789abed85000ba169","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.4.0","_npmUser":{"name":"benzed","email":"bengaumond@gmail.com"},"dist":{"shasum":"f74bafb3ba23fb0d2fc5f93789abed85000ba169","tarball":"https://registry.npmjs.org/feathers-schema/-/feathers-schema-0.1.1.tgz","integrity":"sha512-IkR27PcAk3tLaC2BMNfNZtdgYp8FOx7o40SqcXCsIqNh/OI9ylvkLaGNZB3pUlFNZKCf4lekUwYFcCkM492F+A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIER+TAF+WLuJPB6NpB/sfiB3QoY5vk6V4/gb7vqWgiP6AiEA2U96Wzb08fgomG9zmmN5bAqv9MOarykKVqtGebxoFb4="}]},"maintainers":[{"name":"benzed","email":"bengaumond@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/feathers-schema-0.1.1.tgz_1486673282246_0.5203804667107761"},"directories":{}},"0.1.2":{"name":"feathers-schema","version":"0.1.2","description":"Model structure/validation for feathers.js","main":"lib","scripts":{"test":"mocha --require babel-register --require babel-polyfill 'test/**/*test.js'","test:watch":"mocha --require babel-register --watch --require babel-polyfill 'test/**/*test.js'","build":"rm -rf lib; mkdir lib; node_modules/.bin/babel src --out-dir lib","build:watch":"npm run build -- --watch"},"repository":{"type":"git","url":"git+https://github.com/BenZed/feathers-schema.git"},"keywords":["feathers","schema","model","validation","validate","sanitization","sanitize"],"author":{"name":"Ben Gaumond"},"license":"ISC","bugs":{"url":"https://github.com/BenZed/feathers-schema/issues"},"homepage":"https://github.com/BenZed/feathers-schema#readme","devDependencies":{"babel":"^6.5.2","babel-cli":"^6.18.0","babel-eslint":"^7.1.1","babel-plugin-transform-runtime":"^6.22.0","babel-polyfill":"^6.20.0","babel-preset-es2015":"^6.18.0","babel-preset-stage-0":"^6.16.0","babel-register":"^6.18.0","body-parser":"^1.16.0","chai":"^3.5.0","cli-clear":"^1.0.4","eslint":"^3.13.1","eslint-plugin-react":"^6.9.0","feathers":"^2.0.3","feathers-configuration":"^0.4.1","feathers-hooks":"^1.7.1","feathers-memory":"^1.0.1","feathers-rest":"^1.6.0","jsdoc-to-markdown":"^2.0.1","mocha":"^3.2.0","nodemon":"^1.11.0"},"dependencies":{"bson-objectid":"^1.1.4","buffer":"^5.0.2","feathers-errors":"^2.5.0","is-explicit":"^1.1.0"},"gitHead":"16b5f9ff4869bc28522b9ad73d186b004da64641","_id":"feathers-schema@0.1.2","_shasum":"07a4d8d541ee197bfdf04c3f8ec0c6cfe882bbbf","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.4.0","_npmUser":{"name":"benzed","email":"bengaumond@gmail.com"},"dist":{"shasum":"07a4d8d541ee197bfdf04c3f8ec0c6cfe882bbbf","tarball":"https://registry.npmjs.org/feathers-schema/-/feathers-schema-0.1.2.tgz","integrity":"sha512-FwIdZqAUhQnDcO6tX+L9HtM6N/XCpMlzLleeTUu6GtNflQl3QhRbLVwiwI/+mduu8S66cJT8ii/rkXN0o18/hA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDgUCG1RghfGn2ore9EAWkIiLFktz5PswZOUzj6fNIQSQIhAOK8W/JLoy7VnaBYCU0B84QgZ8LdKXVr2/o15ofVcLm8"}]},"maintainers":[{"name":"benzed","email":"bengaumond@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/feathers-schema-0.1.2.tgz_1486766257553_0.33836221671663225"},"directories":{}},"0.1.3":{"name":"feathers-schema","version":"0.1.3","description":"Model structure/validation for feathers.js","main":"lib","scripts":{"test":"mocha --require babel-register --require babel-polyfill 'test/**/*test.js'","test:watch":"mocha --require babel-register --watch --require babel-polyfill 'test/**/*test.js'","build":"rm -rf lib; mkdir lib; node_modules/.bin/babel src --out-dir lib","build:watch":"npm run build -- --watch"},"repository":{"type":"git","url":"git+https://github.com/BenZed/feathers-schema.git"},"keywords":["feathers","schema","model","validation","validate","sanitization","sanitize"],"author":{"name":"Ben Gaumond"},"license":"ISC","bugs":{"url":"https://github.com/BenZed/feathers-schema/issues"},"homepage":"https://github.com/BenZed/feathers-schema#readme","devDependencies":{"babel":"^6.5.2","babel-cli":"^6.22.2","babel-eslint":"^7.1.1","babel-plugin-transform-runtime":"^6.22.0","babel-polyfill":"^6.22.0","babel-preset-es2015":"^6.22.0","babel-preset-stage-0":"^6.22.0","babel-register":"^6.22.0","body-parser":"^1.16.0","chai":"^3.5.0","cli-clear":"^1.0.4","eslint":"^3.15.0","eslint-plugin-react":"^6.9.0","feathers":"^2.0.3","feathers-configuration":"^0.4.1","feathers-hooks":"^1.7.1","feathers-memory":"^1.1.0","feathers-rest":"^1.6.0","jsdoc-to-markdown":"^3.0.0","mocha":"^3.2.0","nodemon":"^1.11.0"},"dependencies":{"bson-objectid":"^1.1.5","buffer":"^5.0.5","feathers-errors":"^2.5.0","is-explicit":"^1.1.0"},"gitHead":"443686b21683394ea252f5178018c0b58dcc58a8","_id":"feathers-schema@0.1.3","_shasum":"568ec64f50ef1e9f74d294acab944a67b627403e","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.4.0","_npmUser":{"name":"benzed","email":"bengaumond@gmail.com"},"dist":{"shasum":"568ec64f50ef1e9f74d294acab944a67b627403e","tarball":"https://registry.npmjs.org/feathers-schema/-/feathers-schema-0.1.3.tgz","integrity":"sha512-rNTS+5UTQT7+mZJXlNZKCde7LF/xlROS9tzCUltMzeU/MZSCRSK3xmcSgmu4qGDgFYuSaOVFJMGynawHdkmQ1A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAz9PuAu+WRbn/QxUsZgztXHJX9ELBZoK0UY5b043nFVAiEAy9UfiH39ilgz94qtHwHROKn5C9e+lhahLxitOShFwCg="}]},"maintainers":[{"name":"benzed","email":"bengaumond@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/feathers-schema-0.1.3.tgz_1486772745972_0.03589603048749268"},"directories":{}},"0.1.4":{"name":"feathers-schema","version":"0.1.4","description":"Model structure/validation for feathers.js","main":"lib","scripts":{"test":"mocha --require babel-register --require babel-polyfill 'test/**/*test.js'","test:watch":"mocha --require babel-register --watch --require babel-polyfill 'test/**/*test.js'","build":"rm -rf lib; mkdir lib; node_modules/.bin/babel src --out-dir lib","build:watch":"npm run build -- --watch"},"repository":{"type":"git","url":"git+https://github.com/BenZed/feathers-schema.git"},"keywords":["feathers","schema","model","validation","validate","sanitization","sanitize"],"author":{"name":"Ben Gaumond"},"license":"ISC","bugs":{"url":"https://github.com/BenZed/feathers-schema/issues"},"homepage":"https://github.com/BenZed/feathers-schema#readme","devDependencies":{"babel":"^6.5.2","babel-cli":"^6.22.2","babel-eslint":"^7.1.1","babel-plugin-transform-runtime":"^6.22.0","babel-polyfill":"^6.22.0","babel-preset-es2015":"^6.22.0","babel-preset-stage-0":"^6.22.0","babel-register":"^6.22.0","body-parser":"^1.16.0","chai":"^3.5.0","cli-clear":"^1.0.4","eslint":"^3.15.0","eslint-plugin-react":"^6.9.0","feathers":"^2.0.3","feathers-configuration":"^0.4.1","feathers-hooks":"^1.7.1","feathers-memory":"^1.1.0","feathers-rest":"^1.6.0","jsdoc-to-markdown":"^3.0.0","mocha":"^3.2.0","nodemon":"^1.11.0"},"dependencies":{"bson-objectid":"^1.1.5","buffer":"^5.0.5","feathers-errors":"^2.5.0","is-explicit":"^1.1.0"},"gitHead":"4fbebeaadada2d2ae8a3dfec4a06ae1a0baba10c","_id":"feathers-schema@0.1.4","_shasum":"b265ab154825560f1ba638430f2d2605b5d55d49","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.4.0","_npmUser":{"name":"benzed","email":"bengaumond@gmail.com"},"dist":{"shasum":"b265ab154825560f1ba638430f2d2605b5d55d49","tarball":"https://registry.npmjs.org/feathers-schema/-/feathers-schema-0.1.4.tgz","integrity":"sha512-PnxmOMz2QidN3Dik7AheKgV0mzSe+RJm/LVmyDGXaD2b0UMbV44E/Sb6jcEK8tdkxDKFuypG47QgNSDOKxYoYA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDFfg0UmclhRfrCyWi5ZVRFmbxkA8fGMcbhrHvU6fI9WQIhAI6XseB416PHV+wXzebTwEDiRVYGd5YZP+VCKdWKt9O4"}]},"maintainers":[{"name":"benzed","email":"bengaumond@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/feathers-schema-0.1.4.tgz_1486860179903_0.33550553233362734"},"directories":{}},"0.1.5":{"name":"feathers-schema","version":"0.1.5","description":"Model structure/validation for feathers.js","main":"lib","scripts":{"test":"mocha --require babel-register --require babel-polyfill 'test/**/*test.js'","test:watch":"mocha --require babel-register --watch --require babel-polyfill 'test/**/*test.js'","build":"rm -rf lib; mkdir lib; node_modules/.bin/babel src --out-dir lib --plugins transform-runtime","build:watch":"npm run build -- --watch","prepublish":"npm run test && npm run build"},"repository":{"type":"git","url":"git+https://github.com/BenZed/feathers-schema.git"},"keywords":["feathers","schema","model","validation","validate","sanitization","sanitize"],"author":{"name":"Ben Gaumond"},"license":"ISC","bugs":{"url":"https://github.com/BenZed/feathers-schema/issues"},"homepage":"https://github.com/BenZed/feathers-schema#readme","devDependencies":{"babel":"^6.23.0","babel-cli":"^6.23.0","babel-eslint":"^7.1.1","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.23.0","babel-preset-latest":"^6.22.0","babel-preset-stage-0":"^6.22.0","babel-register":"^6.23.0","body-parser":"^1.16.1","chai":"^3.5.0","cli-clear":"^1.0.4","eslint":"^3.16.1","eslint-plugin-react":"^6.10.0","feathers":"^2.1.0","feathers-configuration":"^0.4.1","feathers-hooks":"^1.8.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.0","jsdoc-to-markdown":"^3.0.0","mocha":"^3.2.0","nodemon":"^1.11.0"},"dependencies":{"bson-objectid":"^1.1.5","buffer":"^5.0.5","feathers-errors":"^2.5.0","is-explicit":"^1.1.0"},"gitHead":"0f30882a104fa4c6a81ce4194c371781f2506262","_id":"feathers-schema@0.1.5","_shasum":"580a002721a40ab555d88acceb18c3cd134f29b2","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.4.0","_npmUser":{"name":"benzed","email":"bengaumond@gmail.com"},"dist":{"shasum":"580a002721a40ab555d88acceb18c3cd134f29b2","tarball":"https://registry.npmjs.org/feathers-schema/-/feathers-schema-0.1.5.tgz","integrity":"sha512-m0XMzKegZ+TfE7cD5QT73X/f5PD/hFB7lzprMpl0TeDTi0aag2sgHfLiCRoao7qK3MYKGIfHb03ijEQhXAD6EA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGprVbOI3q3d4LZsWejPzepdvtdkRSX8EGHHdLTMz3gwAiAhtOEfC8ssbKJ+qPHJXunjjOr3C4DZuEVBSoA8vEItMQ=="}]},"maintainers":[{"name":"benzed","email":"bengaumond@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/feathers-schema-0.1.5.tgz_1488398435228_0.1988310704473406"},"directories":{}},"0.1.6":{"name":"feathers-schema","version":"0.1.6","description":"Model structure/validation for feathers.js","main":"lib","scripts":{"test":"mocha --require babel-register --require babel-polyfill 'test/**/*test.js'","test:watch":"mocha --require babel-register --watch --require babel-polyfill 'test/**/*test.js'","build":"rm -rf lib; mkdir lib; node_modules/.bin/babel src --out-dir lib --plugins transform-runtime","build:watch":"npm run build -- --watch","prepublish":"npm run test && npm run build"},"repository":{"type":"git","url":"git+https://github.com/BenZed/feathers-schema.git"},"keywords":["feathers","schema","model","validation","validate","sanitization","sanitize"],"author":{"name":"Ben Gaumond"},"license":"ISC","bugs":{"url":"https://github.com/BenZed/feathers-schema/issues"},"homepage":"https://github.com/BenZed/feathers-schema#readme","devDependencies":{"babel":"^6.23.0","babel-cli":"^6.23.0","babel-eslint":"^7.1.1","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.23.0","babel-preset-latest":"^6.22.0","babel-preset-stage-0":"^6.22.0","babel-register":"^6.23.0","body-parser":"^1.16.1","chai":"^3.5.0","cli-clear":"^1.0.4","eslint":"^3.16.1","eslint-plugin-react":"^6.10.0","feathers":"^2.1.0","feathers-configuration":"^0.4.1","feathers-hooks":"^1.8.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.0","jsdoc-to-markdown":"^3.0.0","mocha":"^3.2.0","nodemon":"^1.11.0"},"dependencies":{"bson-objectid":"^1.1.5","buffer":"^5.0.5","feathers-errors":"^2.5.0","is-explicit":"^1.1.0"},"gitHead":"0f30882a104fa4c6a81ce4194c371781f2506262","_id":"feathers-schema@0.1.6","_shasum":"7733da9ee97c86cda22ef919d09f4ab34c8c17a3","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.4.0","_npmUser":{"name":"benzed","email":"bengaumond@gmail.com"},"dist":{"shasum":"7733da9ee97c86cda22ef919d09f4ab34c8c17a3","tarball":"https://registry.npmjs.org/feathers-schema/-/feathers-schema-0.1.6.tgz","integrity":"sha512-D9Pi4EYzryeHSNpyqnZT7YzSIgeJ3WzIW9qiZDS1POYsZFGRCIFCWFtLile24ePluhxQwnFiAeDM1GHmTyf0Ug==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHVT7tdbTzdv5q4lX5vK0uYhaJMAZ1XYr2Zuu3V7RXZRAiEA9AQjPdjfg2DxTqFB6XA09dSrLW56ye2hZ0ynab8nOb8="}]},"maintainers":[{"name":"benzed","email":"bengaumond@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/feathers-schema-0.1.6.tgz_1488406515603_0.45900609041564167"},"directories":{}},"0.1.7":{"name":"feathers-schema","version":"0.1.7","description":"Model structure/validation for feathers.js","main":"lib","scripts":{"test":"mocha --require babel-register --require babel-polyfill 'test/**/*test.js'","test:watch":"mocha --require babel-register --watch --require babel-polyfill 'test/**/*test.js'","build":"rm -rf lib; mkdir lib; node_modules/.bin/babel src --out-dir lib --plugins transform-runtime","build:watch":"npm run build -- --watch","prepublish":"npm run test && npm run build"},"repository":{"type":"git","url":"git+https://github.com/BenZed/feathers-schema.git"},"keywords":["feathers","schema","model","validation","validate","sanitization","sanitize"],"author":{"name":"Ben Gaumond"},"license":"ISC","bugs":{"url":"https://github.com/BenZed/feathers-schema/issues"},"homepage":"https://github.com/BenZed/feathers-schema#readme","devDependencies":{"babel":"^6.23.0","babel-cli":"^6.23.0","babel-eslint":"^7.1.1","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.23.0","babel-preset-latest":"^6.22.0","babel-preset-stage-0":"^6.22.0","babel-register":"^6.23.0","body-parser":"^1.16.1","chai":"^3.5.0","cli-clear":"^1.0.4","eslint":"^3.16.1","eslint-plugin-react":"^6.10.0","feathers":"^2.1.0","feathers-configuration":"^0.4.1","feathers-hooks":"^1.8.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.0","jsdoc-to-markdown":"^3.0.0","mocha":"^3.2.0","nodemon":"^1.11.0"},"dependencies":{"bson-objectid":"^1.1.5","buffer":"^5.0.5","feathers-errors":"^2.5.0","is-explicit":"^1.1.0"},"gitHead":"1dc2d92b35f45222f9a5545d48af407cb64a1174","_id":"feathers-schema@0.1.7","_shasum":"9bc30d97dec0683dfd9ba22d4dfb8409d407062d","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.4.0","_npmUser":{"name":"benzed","email":"bengaumond@gmail.com"},"dist":{"shasum":"9bc30d97dec0683dfd9ba22d4dfb8409d407062d","tarball":"https://registry.npmjs.org/feathers-schema/-/feathers-schema-0.1.7.tgz","integrity":"sha512-E54P1p/SXJxtKbTLyqcGFQyoCc7y1njTDe72SEd1e4RqhOCWZINoFUvJvNFh2zMLn0CXJxBWaIgO5inbay+Xlg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGBPcwQWw53ci3IDqvtsyDpBB3Dgur3fop6jUOaNooMwAiEA8KZfahpVwrx4fWNjpShrkeUr+CBZuWooRZaaFLuEqe4="}]},"maintainers":[{"name":"benzed","email":"bengaumond@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/feathers-schema-0.1.7.tgz_1488425056287_0.27392575121484697"},"directories":{}},"0.1.8":{"name":"feathers-schema","version":"0.1.8","description":"Model structure/validation for feathers.js","main":"lib","scripts":{"test":"mocha --require babel-register --require babel-polyfill 'test/**/*test.js'","test:watch":"mocha --require babel-register --watch --require babel-polyfill 'test/**/*test.js'","build":"rm -rf lib; mkdir lib; node_modules/.bin/babel src --out-dir lib --plugins transform-runtime","build:watch":"npm run build -- --watch","prepublish":"npm run test && npm run build"},"repository":{"type":"git","url":"git+https://github.com/BenZed/feathers-schema.git"},"keywords":["feathers","schema","model","validation","validate","sanitization","sanitize"],"author":{"name":"Ben Gaumond"},"license":"ISC","bugs":{"url":"https://github.com/BenZed/feathers-schema/issues"},"homepage":"https://github.com/BenZed/feathers-schema#readme","devDependencies":{"babel":"^6.23.0","babel-cli":"^6.23.0","babel-eslint":"^7.1.1","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.23.0","babel-preset-latest":"^6.22.0","babel-preset-stage-0":"^6.22.0","babel-register":"^6.23.0","body-parser":"^1.16.1","chai":"^3.5.0","cli-clear":"^1.0.4","eslint":"^3.16.1","eslint-plugin-react":"^6.10.0","feathers":"^2.1.0","feathers-configuration":"^0.4.1","feathers-hooks":"^1.8.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.0","jsdoc-to-markdown":"^3.0.0","mocha":"^3.2.0","nodemon":"^1.11.0"},"dependencies":{"bson-objectid":"^1.1.5","buffer":"^5.0.5","feathers-errors":"^2.5.0","is-explicit":"^1.1.0"},"gitHead":"6c4fd650dc833926636126c0aea2b2079c0db5b0","_id":"feathers-schema@0.1.8","_shasum":"08ed955e449f03bc4fe9775a520a27cf07362f11","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.4.0","_npmUser":{"name":"benzed","email":"bengaumond@gmail.com"},"dist":{"shasum":"08ed955e449f03bc4fe9775a520a27cf07362f11","tarball":"https://registry.npmjs.org/feathers-schema/-/feathers-schema-0.1.8.tgz","integrity":"sha512-qT6WUMascfvdM0l26oquO9bRc/rS+9kEMVA0BhFyjHqpR0ix4SxM6hCtHS7PGRc0zVEL7H7oi8gmtJkaeGqS4A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCV5zr6/A+VNc7AZ1kk0rtooORuB8IIZx7hpLhFQW+u3gIhAKpPtMKQi0ijr7h1kEwMAF7o3pl+OhDtyS5RiTmA4XRH"}]},"maintainers":[{"name":"benzed","email":"bengaumond@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/feathers-schema-0.1.8.tgz_1488999801075_0.3635381597559899"},"directories":{}},"0.1.9":{"name":"feathers-schema","version":"0.1.9","description":"Model structure/validation for feathers.js","main":"lib","scripts":{"test":"mocha --require babel-register --require babel-polyfill 'test/**/*test.js'","test:watch":"mocha --require babel-register --watch --require babel-polyfill 'test/**/*test.js'","build":"rm -rf lib; mkdir lib; node_modules/.bin/babel src --out-dir lib --plugins transform-runtime","build:watch":"npm run build -- --watch","prepublish":"npm run test && npm run build"},"repository":{"type":"git","url":"git+https://github.com/BenZed/feathers-schema.git"},"keywords":["feathers","schema","model","validation","validate","sanitization","sanitize"],"author":{"name":"Ben Gaumond"},"license":"ISC","bugs":{"url":"https://github.com/BenZed/feathers-schema/issues"},"homepage":"https://github.com/BenZed/feathers-schema#readme","devDependencies":{"babel":"^6.23.0","babel-cli":"^6.23.0","babel-eslint":"^7.1.1","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.23.0","babel-preset-latest":"^6.22.0","babel-preset-stage-0":"^6.22.0","babel-register":"^6.23.0","body-parser":"^1.16.1","chai":"^3.5.0","cli-clear":"^1.0.4","eslint":"^3.16.1","eslint-plugin-react":"^6.10.0","feathers":"^2.1.0","feathers-configuration":"^0.4.1","feathers-hooks":"^1.8.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.0","jsdoc-to-markdown":"^3.0.0","mocha":"^3.2.0","nodemon":"^1.11.0"},"dependencies":{"bson-objectid":"^1.1.5","buffer":"^5.0.5","feathers-errors":"^2.5.0","is-explicit":"^1.1.0"},"gitHead":"6c4fd650dc833926636126c0aea2b2079c0db5b0","_id":"feathers-schema@0.1.9","_shasum":"e1dddb87a96ce503ca58dfb58c09a9dcef63f84d","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.4.0","_npmUser":{"name":"benzed","email":"bengaumond@gmail.com"},"dist":{"shasum":"e1dddb87a96ce503ca58dfb58c09a9dcef63f84d","tarball":"https://registry.npmjs.org/feathers-schema/-/feathers-schema-0.1.9.tgz","integrity":"sha512-pKlPuV3WTeqv7+OFj5OD0PFRKAJRGpPs6c0f/efL42adocFnAOjXr0ZvW0t8PbwF8Oz4NXk7iYPHLHxKitcKoA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDiZZ8fuzg6ISCWVadvWNYmyu+lwZy2P3zSd1oPkTHkfQIgZiyXvO+1/xz/A2sbQ5QZ8wel5d4VPt5xsFbSfktCSMU="}]},"maintainers":[{"name":"benzed","email":"bengaumond@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/feathers-schema-0.1.9.tgz_1489037548146_0.5385959742125124"},"directories":{}},"0.1.10":{"name":"feathers-schema","version":"0.1.10","description":"Model structure/validation for feathers.js","main":"lib","scripts":{"test":"mocha --require babel-register --require babel-polyfill 'test/**/*test.js'","test:watch":"mocha --require babel-register --watch --require babel-polyfill 'test/**/*test.js'","build":"rm -rf lib; mkdir lib; node_modules/.bin/babel src --out-dir lib --plugins transform-runtime","build:watch":"npm run build -- --watch","prepublish":"npm run test && npm run build"},"repository":{"type":"git","url":"git+https://github.com/BenZed/feathers-schema.git"},"keywords":["feathers","schema","model","validation","validate","sanitization","sanitize"],"author":{"name":"Ben Gaumond"},"license":"ISC","bugs":{"url":"https://github.com/BenZed/feathers-schema/issues"},"homepage":"https://github.com/BenZed/feathers-schema#readme","devDependencies":{"babel":"^6.23.0","babel-cli":"^6.23.0","babel-eslint":"^7.1.1","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.23.0","babel-preset-latest":"^6.22.0","babel-preset-stage-0":"^6.22.0","babel-register":"^6.23.0","body-parser":"^1.16.1","chai":"^3.5.0","cli-clear":"^1.0.4","eslint":"^3.16.1","eslint-plugin-react":"^6.10.0","feathers":"^2.1.0","feathers-configuration":"^0.4.1","feathers-hooks":"^1.8.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.0","jsdoc-to-markdown":"^3.0.0","mocha":"^3.2.0","nodemon":"^1.11.0"},"dependencies":{"bson-objectid":"^1.1.5","buffer":"^5.0.5","feathers-errors":"^2.5.0","is-explicit":"^1.1.0"},"gitHead":"9266cc586f8450f753e10cbe04c76f9b2bf0562b","_id":"feathers-schema@0.1.10","_shasum":"fb4015d6f3d6a1cec28f70eb51dfc0e29b209379","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.4.0","_npmUser":{"name":"benzed","email":"bengaumond@gmail.com"},"dist":{"shasum":"fb4015d6f3d6a1cec28f70eb51dfc0e29b209379","tarball":"https://registry.npmjs.org/feathers-schema/-/feathers-schema-0.1.10.tgz","integrity":"sha512-hX0TIsa9Lq+ARILXgI2Vu5RI70KbKqqzaelPbKsj3oGgdA7p9Su4teEVJiZiCfpTQ99+m0x+bHDDLoiMbijODw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFZvacua5PoIO9tWLJAGouRXKezICCRqZmoD8PqOFO7MAiEArri5wfL7eNEEM8EwqrN5gPF1kgG/Li6U4Pkqd3hNW8c="}]},"maintainers":[{"name":"benzed","email":"bengaumond@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/feathers-schema-0.1.10.tgz_1489195773732_0.3946794893126935"},"directories":{}},"0.1.11":{"name":"feathers-schema","version":"0.1.11","description":"Model structure/validation for feathers.js","main":"lib","scripts":{"test":"mocha --require babel-register --require babel-polyfill 'test/**/*test.js'","test:watch":"mocha --require babel-register --watch --require babel-polyfill 'test/**/*test.js'","build":"rm -rf lib; mkdir lib; node_modules/.bin/babel src --out-dir lib --plugins transform-runtime","build:watch":"npm run build -- --watch","prepublish":"npm run test && npm run build"},"repository":{"type":"git","url":"git+https://github.com/BenZed/feathers-schema.git"},"keywords":["feathers","schema","model","validation","validate","sanitization","sanitize"],"author":{"name":"Ben Gaumond"},"license":"ISC","bugs":{"url":"https://github.com/BenZed/feathers-schema/issues"},"homepage":"https://github.com/BenZed/feathers-schema#readme","devDependencies":{"babel":"^6.23.0","babel-cli":"^6.23.0","babel-eslint":"^7.1.1","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.23.0","babel-preset-env":"^1.3.2","babel-preset-stage-0":"^6.22.0","babel-register":"^6.23.0","body-parser":"^1.16.1","chai":"^3.5.0","cli-clear":"^1.0.4","eslint":"^3.16.1","eslint-plugin-react":"^6.10.0","feathers":"^2.1.0","feathers-configuration":"^0.4.1","feathers-hooks":"^1.8.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.0","jsdoc-to-markdown":"^3.0.0","mocha":"^3.2.0","nodemon":"^1.11.0"},"dependencies":{"bson-objectid":"^1.1.5","buffer":"^5.0.5","feathers-errors":"^2.5.0","is-explicit":"^1.1.0"},"gitHead":"b0bd1618a2515c2639415ff9b67595f2e769c821","_id":"feathers-schema@0.1.11","_shasum":"6c91a50999fdeafdd4ae092914dd6a6fd80bad12","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.9.0","_npmUser":{"name":"benzed","email":"bengaumond@gmail.com"},"dist":{"shasum":"6c91a50999fdeafdd4ae092914dd6a6fd80bad12","tarball":"https://registry.npmjs.org/feathers-schema/-/feathers-schema-0.1.11.tgz","integrity":"sha512-KjyWMq1/MWGj4BxstPXllncRWdizXErh5CUAqvX7nQRjhqLHpgg+bILVQFbJSNkVNZJW/SwvyFbEHQQEwkOhqw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGZMBiO2NoN0OAlsf/MkhwkFxiZhHer9hDqnH6FOF+owAiEAi7QzvlPQCqTMlKspr4X2Ye+2dtjKkEbcD+1mb2kJaOA="}]},"maintainers":[{"name":"benzed","email":"bengaumond@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/feathers-schema-0.1.11.tgz_1493765333227_0.4716395102441311"},"directories":{}},"0.1.12":{"name":"feathers-schema","version":"0.1.12","description":"Model structure/validation for feathers.js","main":"lib","scripts":{"test":"mocha --require babel-register --require babel-polyfill 'test/**/*test.js'","test:watch":"mocha --require babel-register --watch --require babel-polyfill 'test/**/*test.js'","build":"rm -rf lib; mkdir lib; node_modules/.bin/babel src --out-dir lib --plugins transform-runtime","build:watch":"npm run build -- --watch","prepublish":"npm run test && npm run build"},"repository":{"type":"git","url":"git+https://github.com/BenZed/feathers-schema.git"},"keywords":["feathers","schema","model","validation","validate","sanitization","sanitize"],"author":{"name":"Ben Gaumond"},"license":"ISC","bugs":{"url":"https://github.com/BenZed/feathers-schema/issues"},"homepage":"https://github.com/BenZed/feathers-schema#readme","devDependencies":{"babel":"^6.23.0","babel-cli":"^6.23.0","babel-eslint":"^7.1.1","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.23.0","babel-preset-env":"^1.3.2","babel-preset-stage-0":"^6.22.0","babel-register":"^6.23.0","body-parser":"^1.16.1","chai":"^3.5.0","cli-clear":"^1.0.4","eslint":"^3.16.1","eslint-plugin-react":"^6.10.0","feathers":"^2.1.0","feathers-configuration":"^0.4.1","feathers-hooks":"^1.8.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.0","jsdoc-to-markdown":"^3.0.0","mocha":"^3.2.0","nodemon":"^1.11.0"},"dependencies":{"bson-objectid":"^1.1.5","buffer":"^5.0.5","feathers-errors":"^2.5.0","is-explicit":"^1.1.0"},"gitHead":"7271018245718394a634c82c59334c901c4595c5","_id":"feathers-schema@0.1.12","_shasum":"597e4649c356472c9e7f7b5ed7ce20e0e6b9e97b","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.9.0","_npmUser":{"name":"benzed","email":"bengaumond@gmail.com"},"dist":{"shasum":"597e4649c356472c9e7f7b5ed7ce20e0e6b9e97b","tarball":"https://registry.npmjs.org/feathers-schema/-/feathers-schema-0.1.12.tgz","integrity":"sha512-U9Y+GziXWdehiUu+IuDa+I/p+sB4s636AiQkdiyy+DB9nmJCssPUDo57X9WvefDSy6WXgA6cJEvmM/2wM19Qsw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICuo6X0Olz0d1IHYzaTe2MxVfPkL+ZKB2pA2J+ciFGOvAiEAksFX0f/mirg67zXjoMjnFKjmjSWZNrZnwNXEy0rdzr0="}]},"maintainers":[{"name":"benzed","email":"bengaumond@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/feathers-schema-0.1.12.tgz_1494289666873_0.3371109887957573"},"directories":{}},"0.1.13":{"name":"feathers-schema","version":"0.1.13","description":"Model structure/validation for feathers.js","main":"lib","scripts":{"test":"mocha --require babel-register --require babel-polyfill 'test/**/*test.js'","test:watch":"mocha --require babel-register --watch --require babel-polyfill 'test/**/*test.js'","build":"rm -rf lib; mkdir lib; node_modules/.bin/babel src --out-dir lib --plugins transform-runtime","build:watch":"npm run build -- --watch","prepublish":"npm run test && npm run build"},"repository":{"type":"git","url":"git+https://github.com/BenZed/feathers-schema.git"},"keywords":["feathers","schema","model","validation","validate","sanitization","sanitize"],"author":{"name":"Ben Gaumond"},"license":"ISC","bugs":{"url":"https://github.com/BenZed/feathers-schema/issues"},"homepage":"https://github.com/BenZed/feathers-schema#readme","devDependencies":{"babel":"^6.23.0","babel-cli":"^6.23.0","babel-eslint":"^7.1.1","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.23.0","babel-preset-env":"^1.3.2","babel-preset-stage-0":"^6.22.0","babel-register":"^6.23.0","body-parser":"^1.16.1","chai":"^3.5.0","cli-clear":"^1.0.4","eslint":"^3.16.1","eslint-plugin-react":"^6.10.0","feathers":"^2.1.0","feathers-configuration":"^0.4.1","feathers-hooks":"^1.8.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.0","jsdoc-to-markdown":"^3.0.0","mocha":"^3.2.0","nodemon":"^1.11.0"},"dependencies":{"bson-objectid":"^1.1.5","buffer":"^5.0.5","feathers-errors":"^2.5.0","is-explicit":"^1.1.0"},"gitHead":"f8de1724bfa9ef2b6fd8739b8bb8dab5c882e63a","_id":"feathers-schema@0.1.13","_shasum":"8e0ce29e212161f810ad44d80303cb80c5d9413a","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.9.0","_npmUser":{"name":"benzed","email":"bengaumond@gmail.com"},"dist":{"shasum":"8e0ce29e212161f810ad44d80303cb80c5d9413a","tarball":"https://registry.npmjs.org/feathers-schema/-/feathers-schema-0.1.13.tgz","integrity":"sha512-vEn2hjmpnTIEBiPQQvo0GGjKSmnOJUPyJHumgickgpR0cgMQmIsGlSCLVhWv4xo0UpjgMstnsZ5eJpqqFQBycg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFK7PCXYTPxDQQizmtJsKTu/ZwdpkBl93RNLAQ9Tg1mcAiBB0IQh9dy2emBYTKTY96y0veXUc70ttxC+C8/6NmhHvw=="}]},"maintainers":[{"name":"benzed","email":"bengaumond@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/feathers-schema-0.1.13.tgz_1494293294425_0.6307165219914168"},"directories":{}},"0.1.14":{"name":"feathers-schema","version":"0.1.14","description":"Model structure/validation for feathers.js","main":"lib","scripts":{"test":"mocha --require babel-register --require babel-polyfill 'test/**/*test.js'","test:watch":"mocha --require babel-register --watch --require babel-polyfill 'test/**/*test.js'","build":"rm -rf lib; mkdir lib; node_modules/.bin/babel src --out-dir lib --plugins transform-runtime","build:watch":"npm run build -- --watch","prepublish":"npm run test && npm run build"},"repository":{"type":"git","url":"git+https://github.com/BenZed/feathers-schema.git"},"keywords":["feathers","schema","model","validation","validate","sanitization","sanitize"],"author":{"name":"Ben Gaumond"},"license":"ISC","bugs":{"url":"https://github.com/BenZed/feathers-schema/issues"},"homepage":"https://github.com/BenZed/feathers-schema#readme","devDependencies":{"babel":"^6.23.0","babel-cli":"^6.23.0","babel-eslint":"^7.1.1","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.23.0","babel-preset-env":"^1.3.2","babel-preset-stage-0":"^6.22.0","babel-register":"^6.23.0","body-parser":"^1.16.1","chai":"^3.5.0","cli-clear":"^1.0.4","eslint":"^3.16.1","eslint-plugin-react":"^6.10.0","feathers":"^2.1.0","feathers-configuration":"^0.4.1","feathers-hooks":"^1.8.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.0","jsdoc-to-markdown":"^3.0.0","mocha":"^3.2.0","nodemon":"^1.11.0"},"dependencies":{"bson-objectid":"^1.1.5","buffer":"^5.0.5","feathers-errors":"^2.5.0","is-explicit":"^1.1.0"},"gitHead":"33671236a56cc7960da1e5e91a9b9617d8ead458","_id":"feathers-schema@0.1.14","_shasum":"1f1d5ad0706942cd7612371e28af230725e212f3","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.9.0","_npmUser":{"name":"benzed","email":"bengaumond@gmail.com"},"dist":{"shasum":"1f1d5ad0706942cd7612371e28af230725e212f3","tarball":"https://registry.npmjs.org/feathers-schema/-/feathers-schema-0.1.14.tgz","integrity":"sha512-9xknrplUmvMkA51kSLroQiTjAblqqB1yebnoH3RGa4RR/0E2dyOcOUTr6oN1ay02fzokedCczxtftycRE8Uwjg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIESB2IJvay/rKWeDtV8JD14iGhTJdJw93fInfigvzi/6AiAQTQLfrIXYG0qKMQHMXebWYCcR3XMHY3zOGoeVxRj8UQ=="}]},"maintainers":[{"name":"benzed","email":"bengaumond@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/feathers-schema-0.1.14.tgz_1494437558434_0.3145916454959661"},"directories":{}},"0.1.15":{"name":"feathers-schema","version":"0.1.15","description":"Model structure/validation for feathers.js","main":"lib","scripts":{"test":"mocha --require babel-register --require babel-polyfill 'test/**/*test.js'","test:watch":"mocha --require babel-register --watch --require babel-polyfill 'test/**/*test.js'","build":"rm -rf lib; mkdir lib; node_modules/.bin/babel src --out-dir lib --plugins transform-runtime","build:watch":"npm run build -- --watch","prepublish":"npm run test && npm run build"},"repository":{"type":"git","url":"git+https://github.com/BenZed/feathers-schema.git"},"keywords":["feathers","schema","model","validation","validate","sanitization","sanitize"],"author":{"name":"Ben Gaumond"},"license":"ISC","bugs":{"url":"https://github.com/BenZed/feathers-schema/issues"},"homepage":"https://github.com/BenZed/feathers-schema#readme","devDependencies":{"babel-cli":"^6.24.1","babel-eslint":"^7.2.3","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.23.0","babel-preset-env":"^1.5.2","babel-preset-stage-0":"^6.24.1","babel-register":"^6.24.1","body-parser":"^1.17.2","chai":"^4.0.2","cli-clear":"^1.0.4","eslint":"^4.0.0","eslint-plugin-react":"^7.1.0","feathers":"^2.1.3","feathers-configuration":"^0.4.1","feathers-hooks":"^2.0.1","feathers-memory":"^1.1.0","feathers-rest":"^1.7.3","mocha":"^3.4.2","nodemon":"^1.11.0"},"dependencies":{"bson-objectid":"^1.1.5","buffer":"^5.0.6","feathers-errors":"^2.8.1","has-flag":"^2.0.0","is-explicit":"^1.2.1"},"gitHead":"7846db8e16d8bd294cbd1388b3bcd3a71940fda1","_id":"feathers-schema@0.1.15","_npmVersion":"5.0.3","_nodeVersion":"8.0.0","_npmUser":{"name":"benzed","email":"bengaumond@gmail.com"},"dist":{"integrity":"sha512-wALUXKrEVs4VeAY4RLlZM0S/knpKVes5mitMtfdP0HN7dNXQ0WTSwHdbQhLNld+hnDdQ6PmGRvk4ZLlwUvnSZQ==","shasum":"9d384f4f72eab61b300396ca98116b719b4fc70e","tarball":"https://registry.npmjs.org/feathers-schema/-/feathers-schema-0.1.15.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB86hynJAWX+9ZYXvUQ1NfzrLnXZzdyDIE2U/uqvOQJyAiAYK/Lp/L+5G1RR60PrfQsiWz7Gw8vmnZc8v1Q+Rp/wOw=="}]},"maintainers":[{"name":"benzed","email":"bengaumond@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-schema-0.1.15.tgz_1498092438067_0.1378944437019527"},"directories":{}},"0.1.16":{"name":"feathers-schema","version":"0.1.16","description":"Model structure/validation for feathers.js","main":"lib","scripts":{"test":"mocha --require babel-register --require babel-polyfill 'test/**/*test.js'","test:watch":"mocha --require babel-register --watch --require babel-polyfill 'test/**/*test.js'","build":"rm -rf lib; mkdir lib; node_modules/.bin/babel src --out-dir lib --plugins transform-runtime","build:watch":"npm run build -- --watch","prepublish":"npm run test && npm run build"},"repository":{"type":"git","url":"git+https://github.com/BenZed/feathers-schema.git"},"keywords":["feathers","schema","model","validation","validate","sanitization","sanitize"],"author":{"name":"Ben Gaumond"},"license":"ISC","bugs":{"url":"https://github.com/BenZed/feathers-schema/issues"},"homepage":"https://github.com/BenZed/feathers-schema#readme","devDependencies":{"babel-cli":"^6.24.1","babel-eslint":"^7.2.3","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.23.0","babel-preset-env":"^1.5.2","babel-preset-stage-0":"^6.24.1","babel-register":"^6.24.1","body-parser":"^1.17.2","chai":"^4.0.2","cli-clear":"^1.0.4","eslint":"^4.0.0","eslint-plugin-react":"^7.1.0","eslint-config-standard":"^10.2.1","eslint-plugin-import":"^2.6.0","eslint-plugin-node":"^5.1.0","eslint-plugin-promise":"^3.5.0","eslint-plugin-standard":"^3.0.1","feathers":"^2.1.3","feathers-configuration":"^0.4.1","feathers-hooks":"^2.0.1","feathers-memory":"^1.1.0","feathers-rest":"^1.7.3","mocha":"^3.4.2","nodemon":"^1.11.0"},"dependencies":{"bson-objectid":"^1.1.5","buffer":"^5.0.6","feathers-errors":"^2.8.1","has-flag":"^2.0.0","is-explicit":"^1.3.0"},"gitHead":"f71a895a25554b6f257bc648217c945faf335d2d","_id":"feathers-schema@0.1.16","_npmVersion":"5.3.0","_nodeVersion":"8.1.2","_npmUser":{"name":"benzed","email":"bengaumond@gmail.com"},"dist":{"integrity":"sha512-0X871saKjHDObRvocG55MfCn/5epXoUmQXDPTz2OgvqJzYcP3q3aAuqOm894aQOTBJt8maig5QZKqcl+FE9ekg==","shasum":"4b46ad3756ebfc2cb2cebd5ef78fdd1d2321fca6","tarball":"https://registry.npmjs.org/feathers-schema/-/feathers-schema-0.1.16.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFRtvJuauvD1kgwZDF4TE2jaOeTrbRzjpWSgxyu096CvAiB+qR2efH5dkeH3Y53VpQ8yDUnI2uRuZ07tA92I4qOAlA=="}]},"maintainers":[{"name":"benzed","email":"bengaumond@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-schema-0.1.16.tgz_1501281477493_0.11744267935864627"},"directories":{}},"0.1.17":{"name":"feathers-schema","version":"0.1.17","description":"Model structure/validation for feathers.js","main":"lib","scripts":{"test":"mocha --require babel-register --require babel-polyfill 'test/**/*test.js'","test:watch":"mocha --require babel-register --watch --require babel-polyfill 'test/**/*test.js'","build":"rm -rf lib; mkdir lib; node_modules/.bin/babel src --out-dir lib --plugins transform-runtime","build:watch":"npm run build -- --watch","prepublishOnly":"npm run test && npm run build"},"repository":{"type":"git","url":"git+https://github.com/BenZed/feathers-schema.git"},"keywords":["feathers","schema","model","validation","validate","sanitization","sanitize"],"author":{"name":"Ben Gaumond"},"license":"ISC","bugs":{"url":"https://github.com/BenZed/feathers-schema/issues"},"homepage":"https://github.com/BenZed/feathers-schema#readme","devDependencies":{"babel-cli":"^6.24.1","babel-eslint":"^7.2.3","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.23.0","babel-preset-env":"^1.5.2","babel-preset-stage-0":"^6.24.1","babel-register":"^6.24.1","body-parser":"^1.17.2","chai":"^4.0.2","cli-clear":"^1.0.4","eslint":"^4.0.0","eslint-plugin-react":"^7.1.0","eslint-config-standard":"^10.2.1","eslint-plugin-import":"^2.6.0","eslint-plugin-node":"^5.1.0","eslint-plugin-promise":"^3.5.0","eslint-plugin-standard":"^3.0.1","feathers":"^2.1.3","feathers-configuration":"^0.4.1","feathers-hooks":"^2.0.1","feathers-memory":"^1.1.0","feathers-rest":"^1.7.3","mocha":"^3.4.2","nodemon":"^1.11.0"},"dependencies":{"bson-objectid":"^1.1.5","buffer":"^5.0.6","feathers-errors":"^2.8.1","has-flag":"^2.0.0","is-explicit":"^1.3.0"},"gitHead":"aa177dab5c5331667f0083430dbc983ed2c2c39a","_id":"feathers-schema@0.1.17","_npmVersion":"5.3.0","_nodeVersion":"8.1.2","_npmUser":{"name":"benzed","email":"bengaumond@gmail.com"},"dist":{"integrity":"sha512-DVCB/Q9EZWbzigf9Em0fJjGVQVK0hY0IEllyXLPsrQUG3uNXhp6uLul3rrCm0Aw6SeMD4/ZRKQY8/uccT7gwbA==","shasum":"91e1c6dc390b6762b2d6723ab2ad9dbd65ec0271","tarball":"https://registry.npmjs.org/feathers-schema/-/feathers-schema-0.1.17.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB8y4/Pmat5F77uxgzV/wedMgmr86QN7MeLqG3ECCzJgAiEAxfmBQD62rDA8bshvXbw1Xz67z8tRTKQ298kdE3Y4yEw="}]},"maintainers":[{"name":"benzed","email":"bengaumond@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-schema-0.1.17.tgz_1501282422909_0.12331663677468896"},"directories":{}},"0.2.0":{"name":"feathers-schema","version":"0.2.0","description":"Model structure/validation for feathers.js","main":"lib","scripts":{"test":"mocha --require babel-register --require babel-polyfill 'test/**/*test.js'","test:watch":"mocha --require babel-register --watch --require babel-polyfill 'test/**/*test.js'","build":"rm -rf lib; mkdir lib; node_modules/.bin/babel src --out-dir lib --plugins transform-runtime","build:watch":"npm run build -- --watch","prepublishOnly":"npm run test && npm run build"},"repository":{"type":"git","url":"git+https://github.com/BenZed/feathers-schema.git"},"keywords":["feathers","schema","model","validation","validate","sanitization","sanitize"],"author":{"name":"Ben Gaumond"},"license":"ISC","bugs":{"url":"https://github.com/BenZed/feathers-schema/issues"},"homepage":"https://github.com/BenZed/feathers-schema#readme","devDependencies":{"babel-cli":"^6.24.1","babel-eslint":"^7.2.3","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.23.0","babel-preset-env":"^1.5.2","babel-preset-stage-0":"^6.24.1","babel-register":"^6.24.1","body-parser":"^1.17.2","chai":"^4.0.2","cli-clear":"^1.0.4","eslint":"^4.0.0","eslint-config-standard":"^10.2.1","eslint-plugin-import":"^2.6.0","eslint-plugin-node":"^5.1.0","eslint-plugin-promise":"^3.5.0","eslint-plugin-react":"^7.1.0","eslint-plugin-standard":"^3.0.1","feathers":"^2.1.3","feathers-configuration":"^0.4.1","feathers-hooks":"^2.0.1","feathers-memory":"^1.1.0","feathers-rest":"^1.7.3","mocha":"^3.4.2","mongodb":"^2.2.31","nodemon":"^1.11.0"},"dependencies":{"feathers-errors":"^2.8.1","feathers-hooks-common":"^3.7.2","is-explicit":"^1.3.0"},"gitHead":"0e2b3408c4e48bbca317fa36bdfa36c5bfb2648e","_id":"feathers-schema@0.2.0","_npmVersion":"5.4.1","_nodeVersion":"8.4.0","_npmUser":{"name":"benzed","email":"bengaumond@gmail.com"},"dist":{"integrity":"sha512-0TFh10LG4nwhjbnOhbDsw7L6ez40RGx+mziSiQAxXYHgR/DqYf08Jp2RugcZNVv4wJdO0rFoGqZpvQoNv4xGhg==","shasum":"b071632fb298ecd080199225e37feb9438725264","tarball":"https://registry.npmjs.org/feathers-schema/-/feathers-schema-0.2.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDh2rQWgPXXpS65IWiem//SUPgCY0ipb6ac0ojLFQjfAAIhAKeim/6N59gJIdodRAKHRsWZrCOD1Wev1Iz3Xwa2q79G"}]},"maintainers":[{"name":"benzed","email":"bengaumond@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-schema-0.2.0.tgz_1504920539100_0.2599773632828146"},"directories":{}},"0.2.1":{"name":"feathers-schema","version":"0.2.1","description":"Model structure/validation for feathers.js","main":"lib","scripts":{"test":"mocha --require babel-register --require babel-polyfill 'test/**/*test.js'","test:watch":"mocha --require babel-register --watch --require babel-polyfill 'test/**/*test.js'","build":"rm -rf lib; mkdir lib; node_modules/.bin/babel src --out-dir lib --plugins transform-runtime","build:watch":"npm run build -- --watch","prepublishOnly":"npm run test && npm run build"},"repository":{"type":"git","url":"git+https://github.com/BenZed/feathers-schema.git"},"keywords":["feathers","schema","model","validation","validate","sanitization","sanitize"],"author":{"name":"Ben Gaumond"},"license":"ISC","bugs":{"url":"https://github.com/BenZed/feathers-schema/issues"},"homepage":"https://github.com/BenZed/feathers-schema#readme","devDependencies":{"babel-cli":"^6.24.1","babel-eslint":"^7.2.3","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.23.0","babel-preset-env":"^1.5.2","babel-preset-stage-0":"^6.24.1","babel-register":"^6.24.1","body-parser":"^1.17.2","chai":"^4.0.2","chai-as-promised":"^7.1.1","cli-clear":"^1.0.4","eslint":"^4.0.0","eslint-config-standard":"^10.2.1","eslint-plugin-import":"^2.6.0","eslint-plugin-node":"^5.1.0","eslint-plugin-promise":"^3.5.0","eslint-plugin-react":"^7.1.0","eslint-plugin-standard":"^3.0.1","feathers":"^2.1.3","feathers-configuration":"^0.4.1","feathers-hooks":"^2.0.1","feathers-memory":"^1.1.0","feathers-rest":"^1.7.3","mocha":"^3.4.2","mongodb":"^2.2.31","nodemon":"^1.11.0"},"dependencies":{"feathers-errors":"^2.8.1","feathers-hooks-common":"^3.7.2","is-explicit":"^1.3.0"},"gitHead":"be94c7cc53adf7709d8dfefcc0f1b249908e3c6a","_id":"feathers-schema@0.2.1","_npmVersion":"5.4.1","_nodeVersion":"8.4.0","_npmUser":{"name":"benzed","email":"bengaumond@gmail.com"},"dist":{"integrity":"sha512-S1GjQOm+bVa0WGrNno44K2j5u7xAelKelL175s0sZ3hUCFyaqu9iP+SQ6tgpsoySJOUNwqwNw3aYhIkYgJa2Rw==","shasum":"3ced3fb54cd4c6ec067b58d9e19ccab16bd72897","tarball":"https://registry.npmjs.org/feathers-schema/-/feathers-schema-0.2.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICYjZlulN7Dcz/+B9fyj9AI+4Nmz8Fft/rnleEV0yRpyAiEA7eM5JRs/I95StUMJ9TBhh7xPArWSHlieuQgFscCycnc="}]},"maintainers":[{"name":"benzed","email":"bengaumond@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-schema-0.2.1.tgz_1505344862518_0.3347887215204537"},"directories":{}},"0.2.2":{"name":"feathers-schema","version":"0.2.2","description":"Model structure/validation for feathers.js","main":"lib","scripts":{"test":"mocha --require babel-register --require babel-polyfill 'test/**/*test.js'","test:watch":"mocha --require babel-register --watch --require babel-polyfill 'test/**/*test.js'","build":"rm -rf lib; mkdir lib; node_modules/.bin/babel src --out-dir lib --plugins transform-runtime","build:watch":"npm run build -- --watch","prepublishOnly":"npm run test && npm run build"},"repository":{"type":"git","url":"git+https://github.com/BenZed/feathers-schema.git"},"keywords":["feathers","schema","model","validation","validate","sanitization","sanitize"],"author":{"name":"Ben Gaumond"},"license":"ISC","bugs":{"url":"https://github.com/BenZed/feathers-schema/issues"},"homepage":"https://github.com/BenZed/feathers-schema#readme","devDependencies":{"babel-cli":"^6.24.1","babel-eslint":"^7.2.3","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.23.0","babel-preset-env":"^1.5.2","babel-preset-stage-0":"^6.24.1","babel-register":"^6.24.1","body-parser":"^1.17.2","chai":"^4.0.2","chai-as-promised":"^7.1.1","cli-clear":"^1.0.4","eslint":"^4.0.0","eslint-config-standard":"^10.2.1","eslint-plugin-import":"^2.6.0","eslint-plugin-node":"^5.1.0","eslint-plugin-promise":"^3.5.0","eslint-plugin-react":"^7.1.0","eslint-plugin-standard":"^3.0.1","feathers":"^2.1.3","feathers-configuration":"^0.4.1","feathers-hooks":"^2.0.1","feathers-memory":"^1.1.0","feathers-rest":"^1.7.3","mocha":"^3.4.2","mongodb":"^2.2.31","nodemon":"^1.11.0"},"dependencies":{"feathers-errors":"^2.8.1","feathers-hooks-common":"^3.7.2","is-explicit":"^1.3.0"},"gitHead":"e32c8bf0a14bd3bcc493bf682e9febeb6d1df3c8","_id":"feathers-schema@0.2.2","_npmVersion":"5.4.1","_nodeVersion":"8.4.0","_npmUser":{"name":"benzed","email":"bengaumond@gmail.com"},"dist":{"integrity":"sha512-YhTHNw5LKvRnmhUf9w1h3DYkxZeCUxmhKYOY3zZ4m/CLGvWgPpeGqi0Rgrit9eZ8YjbNBmaMijEnMwyDhmf9Nw==","shasum":"ce57c504077c59d158bb0ca337882057ba9ae111","tarball":"https://registry.npmjs.org/feathers-schema/-/feathers-schema-0.2.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF0TB47zUJsQ+xiMDbEZ0ZhzcQRPD6yGftr7a8gkmrI5AiEAmPWFz/vyD00/yMOyQCXG+7pQiQUsCU0l/W8r/h+quUw="}]},"maintainers":[{"name":"benzed","email":"bengaumond@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-schema-0.2.2.tgz_1505422517453_0.49936114461161196"},"directories":{}},"0.2.3":{"name":"feathers-schema","version":"0.2.3","description":"Model structure/validation for feathers.js","main":"lib","scripts":{"test":"mocha --require babel-register --require babel-polyfill 'test/**/*test.js'","test:watch":"mocha --require babel-register --watch --require babel-polyfill 'test/**/*test.js'","build":"rm -rf lib; mkdir lib; node_modules/.bin/babel src --out-dir lib --plugins transform-runtime","build:watch":"npm run build -- --watch","prepublishOnly":"npm run test && npm run build"},"repository":{"type":"git","url":"git+https://github.com/BenZed/feathers-schema.git"},"keywords":["feathers","schema","model","validation","validate","sanitization","sanitize"],"author":{"name":"Ben Gaumond"},"license":"ISC","bugs":{"url":"https://github.com/BenZed/feathers-schema/issues"},"homepage":"https://github.com/BenZed/feathers-schema#readme","devDependencies":{"babel-cli":"^6.24.1","babel-eslint":"^7.2.3","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.23.0","babel-preset-env":"^1.5.2","babel-preset-stage-0":"^6.24.1","babel-register":"^6.24.1","body-parser":"^1.17.2","chai":"^4.0.2","chai-as-promised":"^7.1.1","cli-clear":"^1.0.4","eslint":"^4.0.0","eslint-config-standard":"^10.2.1","eslint-plugin-import":"^2.6.0","eslint-plugin-node":"^5.1.0","eslint-plugin-promise":"^3.5.0","eslint-plugin-react":"^7.1.0","eslint-plugin-standard":"^3.0.1","feathers":"^2.1.3","feathers-configuration":"^0.4.1","feathers-hooks":"^2.0.1","feathers-memory":"^1.1.0","feathers-rest":"^1.7.3","mocha":"^3.4.2","mongodb":"^2.2.31","nodemon":"^1.11.0"},"dependencies":{"feathers-errors":"^2.8.1","feathers-hooks-common":"^3.7.2","is-explicit":"^1.3.0"},"gitHead":"9588aebd591c0333a21078aadc3a6ae432c4042e","_id":"feathers-schema@0.2.3","_npmVersion":"5.4.2","_nodeVersion":"8.2.1","_npmUser":{"name":"benzed","email":"bengaumond@gmail.com"},"dist":{"integrity":"sha512-aEFWziCjvAKHpJk832U6OKzD51gzBe1fROFpyY5cww+8HRbEkRrIQXZAFJV+W3k6WEHZJsT7dxXlI9GfhrMx7Q==","shasum":"40e14cc87ae7605f38a7a8e6252dbab4a994ddcc","tarball":"https://registry.npmjs.org/feathers-schema/-/feathers-schema-0.2.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCSivDIyjDx5kNQTkzq12wmZXFBa8AkeywdSD96DQ+Y7gIgfks5Uf09R4TsELZ7YP1MmuRYPoyjWcbAkiPOxb0K1tk="}]},"maintainers":[{"name":"benzed","email":"bengaumond@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-schema-0.2.3.tgz_1505506664891_0.625924892956391"},"directories":{}},"0.2.4":{"name":"feathers-schema","version":"0.2.4","description":"Model structure/validation for feathers.js","main":"lib","scripts":{"test":"mocha --require babel-register --require babel-polyfill 'test/**/*test.js'","test:watch":"mocha --require babel-register --watch --require babel-polyfill 'test/**/*test.js'","build":"rm -rf lib; mkdir lib; babel src --out-dir lib --plugins transform-runtime","build:watch":"npm run build -- --watch","prepublishOnly":"npm run test && npm run build"},"repository":{"type":"git","url":"git+https://github.com/BenZed/feathers-schema.git"},"keywords":["feathers","schema","model","validation","validate","sanitization","sanitize"],"author":{"name":"Ben Gaumond"},"license":"ISC","bugs":{"url":"https://github.com/BenZed/feathers-schema/issues"},"homepage":"https://github.com/BenZed/feathers-schema#readme","devDependencies":{"babel-cli":"^6.24.1","babel-eslint":"^7.2.3","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.23.0","babel-preset-env":"^1.5.2","babel-preset-stage-0":"^6.24.1","babel-register":"^6.24.1","body-parser":"^1.17.2","chai":"^4.0.2","chai-as-promised":"^7.1.1","cli-clear":"^1.0.4","eslint":"^4.0.0","eslint-config-standard":"^10.2.1","eslint-plugin-import":"^2.6.0","eslint-plugin-node":"^5.1.0","eslint-plugin-promise":"^3.5.0","eslint-plugin-react":"^7.1.0","eslint-plugin-standard":"^3.0.1","feathers":"^2.1.3","feathers-configuration":"^0.4.1","feathers-hooks":"^2.0.1","feathers-memory":"^1.1.0","feathers-rest":"^1.7.3","mocha":"^3.4.2","mongodb":"^2.2.31","nodemon":"^1.11.0"},"dependencies":{"feathers-errors":"^2.8.1","feathers-hooks-common":"^3.7.2","is-explicit":"^1.3.0"},"gitHead":"d7516970555b6fe012c8a6d099e4cb3745f04758","_id":"feathers-schema@0.2.4","_npmVersion":"5.4.2","_nodeVersion":"8.4.0","_npmUser":{"name":"benzed","email":"bengaumond@gmail.com"},"dist":{"integrity":"sha512-WuxN2SaANIqx75WyXvypjvO9jdW5qJbFT0z6IV+Iq7E6wIqfV3dXUwWT/oziH5mqX2x9GdX+TVCs5jLFYnlF4w==","shasum":"172282d005a5d955e2ceb6c37a57e2364b357717","tarball":"https://registry.npmjs.org/feathers-schema/-/feathers-schema-0.2.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAq8jcugWjdzysfdX03X1KRPOmTiCVk+gLdkd+4L98xKAiEAlg3SU6HUs3BIxFtPp9ts7e3ui2tSkp4v6XFfa62TS7w="}]},"maintainers":[{"name":"benzed","email":"bengaumond@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-schema-0.2.4.tgz_1506382534648_0.10168082709424198"},"directories":{}},"0.2.5":{"name":"feathers-schema","version":"0.2.5","description":"Model structure/validation for feathers.js","main":"lib","scripts":{"test":"mocha --require babel-register --require babel-polyfill 'test/**/*test.js'","test:watch":"mocha --require babel-register --watch --require babel-polyfill 'test/**/*test.js'","build":"rm -rf lib; mkdir lib; babel src --out-dir lib --plugins transform-runtime","build:watch":"npm run build -- --watch","prepublishOnly":"npm run test && npm run build"},"repository":{"type":"git","url":"git+https://github.com/BenZed/feathers-schema.git"},"keywords":["feathers","schema","model","validation","validate","sanitization","sanitize"],"author":{"name":"Ben Gaumond"},"license":"ISC","bugs":{"url":"https://github.com/BenZed/feathers-schema/issues"},"homepage":"https://github.com/BenZed/feathers-schema#readme","devDependencies":{"babel-cli":"^6.24.1","babel-eslint":"^7.2.3","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.23.0","babel-preset-env":"^1.5.2","babel-preset-stage-0":"^6.24.1","babel-register":"^6.24.1","body-parser":"^1.17.2","chai":"^4.0.2","chai-as-promised":"^7.1.1","cli-clear":"^1.0.4","eslint":"^4.0.0","eslint-config-standard":"^10.2.1","eslint-plugin-import":"^2.6.0","eslint-plugin-node":"^5.1.0","eslint-plugin-promise":"^3.5.0","eslint-plugin-react":"^7.1.0","eslint-plugin-standard":"^3.0.1","feathers":"^2.1.3","feathers-configuration":"^0.4.1","feathers-hooks":"^2.0.1","feathers-memory":"^1.1.0","feathers-rest":"^1.7.3","mocha":"^3.4.2","mongodb":"^2.2.31","nodemon":"^1.11.0"},"dependencies":{"feathers-errors":"^2.8.1","feathers-hooks-common":"^3.7.2","is-explicit":"^1.3.0"},"gitHead":"689f7222ab827908ba46268b29741bba16c78b0e","_id":"feathers-schema@0.2.5","_npmVersion":"5.4.2","_nodeVersion":"8.4.0","_npmUser":{"name":"benzed","email":"bengaumond@gmail.com"},"dist":{"integrity":"sha512-vWY528xmzB25kNbJriI+TiT1wHnveycnTl6J+2KV/8PHLW3Ebn/UptbJb/aDQY6lcfl88BaJsqZs3FpAfJ5C1w==","shasum":"2a3b922412853defecd2ab92429f6bad76d9792f","tarball":"https://registry.npmjs.org/feathers-schema/-/feathers-schema-0.2.5.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICNF2I0db4ftxdun0lfly0pNwfa0JwekRyes3+pDj+liAiEAp/8vhM9Oh4viWn1fqTU13uBelHTs9FVlUbC9daxeiS4="}]},"maintainers":[{"name":"benzed","email":"bengaumond@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-schema-0.2.5.tgz_1506461684650_0.25150339351966977"},"directories":{}},"0.3.0":{"name":"feathers-schema","version":"0.3.0","description":"Model structure/validation for feathers.js","main":"lib","scripts":{"test":"mocha --opts .mocha.opts test/**/*.test.js","build":"rm -rf lib; mkdir lib; babel src --out-dir lib --plugins transform-runtime","build:watch":"npm run build -- --watch","lint":"eslint src --fix","release:prerelease":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","prepublishOnly":"npm run lint && npm run test && npm run build"},"repository":{"type":"git","url":"git+https://github.com/BenZed/feathers-schema.git"},"keywords":["feathers","schema","model","validation","validate","sanitization","sanitize"],"author":{"name":"Ben Gaumond"},"license":"ISC","bugs":{"url":"https://github.com/BenZed/feathers-schema/issues"},"homepage":"https://github.com/BenZed/feathers-schema#readme","devDependencies":{"babel-cli":"^6.24.1","babel-eslint":"^7.2.3","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.23.0","babel-preset-env":"^1.5.2","babel-preset-stage-0":"^6.24.1","babel-register":"^6.24.1","body-parser":"^1.17.2","chai":"^4.0.2","chai-as-promised":"^7.1.1","cli-clear":"^1.0.4","eslint":"^4.0.0","eslint-config-standard":"^10.2.1","eslint-plugin-import":"^2.6.0","eslint-plugin-node":"^5.1.0","eslint-plugin-promise":"^3.5.0","eslint-plugin-react":"^7.1.0","eslint-plugin-standard":"^3.0.1","feathers":"^2.1.3","feathers-configuration":"^0.4.1","feathers-hooks":"^2.0.1","feathers-memory":"^1.1.0","feathers-rest":"^1.7.3","mocha":"^3.4.2","mongodb":"^2.2.31","nodemon":"^1.11.0"},"dependencies":{"feathers-errors":"^2.8.1","feathers-hooks-common":"^3.7.2","is-explicit":"^1.3.0"},"gitHead":"75efa801ac239acd1bb707f1039c3c39452146c1","_id":"feathers-schema@0.3.0","_shasum":"a6f1ec543cbb43a7144b591d7ece9f8557af614f","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.3","_npmUser":{"name":"benzed","email":"bengaumond@gmail.com"},"dist":{"shasum":"a6f1ec543cbb43a7144b591d7ece9f8557af614f","tarball":"https://registry.npmjs.org/feathers-schema/-/feathers-schema-0.3.0.tgz","integrity":"sha512-tvtPXuawClEamW/ism4WSGxV55x0Lm/76jUbe2xHAtBnGbUK8SaLyoz0INBFT64LotK5HXXnwhEHMSthIvxj9w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCfGA80tvAs/zgbgj7BzzgEFY2Es3s7HbNrgIpyN3jlNwIhAK7TrdQRSAnDOQAQB8STTNc2dYfYeedR4AlNefyLzmcy"}]},"maintainers":[{"name":"benzed","email":"bengaumond@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-schema-0.3.0.tgz_1506721063465_0.5398965252097696"},"directories":{}},"0.3.1":{"name":"feathers-schema","version":"0.3.1","description":"Model structure/validation for feathers.js","main":"lib","scripts":{"test":"mocha --opts .mocha.opts test/**/*.test.js","build":"rm -rf lib; mkdir lib; babel src --out-dir lib --plugins transform-runtime","build:watch":"npm run build -- --watch","lint":"eslint src --fix","release:prerelease":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","prepublishOnly":"npm run lint && npm run test && npm run build"},"repository":{"type":"git","url":"git+https://github.com/BenZed/feathers-schema.git"},"keywords":["feathers","schema","model","validation","validate","sanitization","sanitize"],"author":{"name":"Ben Gaumond"},"license":"ISC","bugs":{"url":"https://github.com/BenZed/feathers-schema/issues"},"homepage":"https://github.com/BenZed/feathers-schema#readme","devDependencies":{"babel-cli":"^6.24.1","babel-eslint":"^7.2.3","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.23.0","babel-preset-env":"^1.5.2","babel-preset-stage-0":"^6.24.1","babel-register":"^6.24.1","body-parser":"^1.17.2","chai":"^4.0.2","chai-as-promised":"^7.1.1","cli-clear":"^1.0.4","eslint":"^4.0.0","eslint-config-standard":"^10.2.1","eslint-plugin-import":"^2.6.0","eslint-plugin-node":"^5.1.0","eslint-plugin-promise":"^3.5.0","eslint-plugin-react":"^7.1.0","eslint-plugin-standard":"^3.0.1","feathers":"^2.1.3","feathers-configuration":"^0.4.1","feathers-hooks":"^2.0.1","feathers-memory":"^1.1.0","feathers-rest":"^1.7.3","mocha":"^3.4.2","mongodb":"^2.2.31","nodemon":"^1.11.0"},"dependencies":{"feathers-errors":"^2.8.1","feathers-hooks-common":"^3.7.2","is-explicit":"^1.3.0"},"gitHead":"7345bff0364a2837b76643911244d5f3917a4509","_id":"feathers-schema@0.3.1","_npmVersion":"5.4.2","_nodeVersion":"8.6.0","_npmUser":{"name":"benzed","email":"bengaumond@gmail.com"},"dist":{"integrity":"sha512-IviVvVpeLP32P/9XeY/2VkxjfltF2aCLgzONCUqXE5fMPB2BnEUPYLpIlSaS5USCPWQjR7nnJ0ZbGh79DlWpQw==","shasum":"7f73a820207d83a76e003b9756ad9be1956e3fbc","tarball":"https://registry.npmjs.org/feathers-schema/-/feathers-schema-0.3.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnlZjIV/9KkfOTkbISWhea7jJupkARSQYv05Ehlh2EDAIgB78sLsqKjUfZrqonhUm9FZe8/NBDhQZTKsaDcMawd1g="}]},"maintainers":[{"name":"benzed","email":"bengaumond@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-schema-0.3.1.tgz_1507683147782_0.6672109188511968"},"directories":{}},"0.3.4":{"name":"feathers-schema","version":"0.3.4","description":"Model structure/validation for feathers.js","main":"lib","scripts":{"test":"mocha --opts .mocha.opts test/**/*.test.js","babel":"rm -rf lib; mkdir lib; babel src --out-dir lib --plugins transform-runtime","babel:dev":"npm run babel -- --watch","lint":"eslint src --fix","release:prerelease":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","prepublishOnly":"npm run lint && npm run test && npm run babel"},"repository":{"type":"git","url":"git+https://github.com/BenZed/feathers-schema.git"},"keywords":["feathers","schema","model","validation","validate","sanitization","sanitize"],"author":{"name":"Ben Gaumond"},"license":"ISC","bugs":{"url":"https://github.com/BenZed/feathers-schema/issues"},"homepage":"https://github.com/BenZed/feathers-schema#readme","devDependencies":{"babel-cli":"^6.26.0","babel-eslint":"^8.2.6","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.7.0","babel-preset-stage-0":"^6.24.1","babel-register":"^6.26.0","body-parser":"^1.18.3","chai":"^4.1.2","chai-as-promised":"^7.1.1","eslint":"^5.1.0","eslint-config-standard":"^11.0.0","eslint-plugin-import":"^2.13.0","eslint-plugin-node":"^6.0.1","eslint-plugin-promise":"^3.8.0","eslint-plugin-react":"^7.10.0","eslint-plugin-standard":"^3.1.0","feathers":"^2.2.4","feathers-configuration":"^0.4.2","feathers-hooks":"^2.1.2","feathers-memory":"^2.1.3","feathers-rest":"^1.8.1","mocha":"^5.2.0","mongodb":"^3.1.1"},"dependencies":{"feathers-errors":"^2.9.2","feathers-hooks-common":"^4.14.3","is-explicit":"^2.1.0"},"gitHead":"abc537192c9cdc4fdcf4e68ecd48fa01bf9266bc","_id":"feathers-schema@0.3.4","_npmVersion":"6.1.0","_nodeVersion":"10.1.0","_npmUser":{"name":"benzed","email":"bengaumond@gmail.com"},"dist":{"integrity":"sha512-MIRS+Jc2JdtYSw4q25C2yBM0sb1uGAgEP7c3xL54vN2ARN50jm0/ZemEMTZ12iZakZBVlodqxmmXC9HI9XM1oA==","shasum":"15efd3507aa8ec1a4cac3d95930a49b3de694f60","tarball":"https://registry.npmjs.org/feathers-schema/-/feathers-schema-0.3.4.tgz","fileCount":24,"unpackedSize":129107,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbSTywCRA9TVsSAnZWagAAVs8QAJaSZNsg7YnzD9nwfxs3\nt5TycdJpW8f1Ddd9uY7/BN/oRoPO2FZyWpR5+sY7kRcH4eSJZnviZuzVQcdh\neOq6P5ZptL2DYtJ15pmWM9je0LMtxb5k1otjQ8JDwgVrPv0w0lH009lGxURQ\nDNNne9jjt/2ubVJgR4jdVupwKxqk7nfDAVFH9Tmd3XGdo3jqkOmsKip7ncDt\nS7YjpV6ULc9bZM+omPv6ADWw58HDySlQeYHdMLu7DnFCuTAxdSuh6sEp+Lgc\nyuAP6ZqVbnhrDWA2tqiY9c93ubEZ9qtCt5e/XnsM5TPa86RuRdEGpOXHPMEH\nrxze1+c586jc9/Qhxv+9zgz3xse30tnZ8jN48PynAB0Ov5ArjyfhFWV9nm/3\nchwdME+029S96iBYlCfjFNWrIG3qqG843GsaWqCHCiv3TdAMnGpZNk2zUFdO\nq5nLR5W8UBZxdwsltySLlC+R9+hUS/7KzMyyu605x4qH52w1B/k9taFL3m1d\nx1cmjptcFXMbAJzPCd/luXtAoVu28aSUIJ2h2Kus7H1EJ38O4mbE91yTjTqg\ns3zZf/lFE5c4E3dwtB8UFjXL5tTd88vP5JKPHT9Ga3K7fxW3mHEHAPmqusBk\n7NF0kqHwYAxyM8E+yo2Z0qclcVREUuYo4TT2HAoy9NPNAUCs9jHezfDE9u74\nWt6u\r\n=y3Gp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDHjmLL8/xHzhYmLMcz31tn+iPyff3IzNi4LDgpWO2iSAiBn568G2A9ZxPr3E6qSUrAD862rOkLwgraIqSDjNXocGw=="}]},"maintainers":[{"name":"benzed","email":"bengaumond@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-schema_0.3.4_1531526320785_0.36900285982553727"},"_hasShrinkwrap":false}},"readme":"# Feathers Schema\n\n# ALPHA VERSION DOCUMENTATION\nIf you're reading this, feathers-schema is in alpha, and not all of the functionality is fully described or finalized.\n___\n# Why?\n\n  - You're using [feathers.js](http://www.feathersjs.com) serverside, and you'd like to validate data.\n  - You'd also like to validate this data using a variety of database adapters with the same syntax.\n  - You'd like to validate data client-side using the same schemas that you create to validate serverside, because you understand the benefits of isomorphism.\n  - You're one of those cools we keep hearing about.\n\n___\n\n# QuickStart\n\nThe following assumes you're familiar with [feathers.js](http://www.feathersjs.com) workflow. If you've never heard of [feathers.js](http://www.feathersjs.com) before, it's great. Learn it: [feathers.js](http://www.feathersjs.com)\n\n## Install\n\n`` npm install feathers-schema ``\n\n## Define a Schema\n\n```js\nimport Schema from 'feathers-schema'\n\nconst articleSchema = new Schema({\n  writeup: String,\n  published: { type: Boolean, default: false },\n  author: {\n    required: true,\n    name: { type: String, required: true, trim: true },\n    age: { type: Number, range: ['>', 16, 'Must be over 16 years old.'] }\n  },\n  comments: [String]\n})\n\n```\n**Hmm... Looks a lot like writing schemas for Mongoose.**\n\nQuite right. Mongoose has an intuitive syntax for creating schemas that I shamelessly\nripped off while creating this package. If you're familiar with mongoose, feathers-schema will be easy mode.\n\n**Then why not just use Mongoose? Mongoose works with feathers.**\n\nGo for it! Mongoose is mature, stable and reliable, and this package is not an attempt to replace it.\n\nThe scope of this tool is much more limited than Mongoose. You cannot create document instances with feather-schema, or directly interact with a database: feathers-schema _only_ validates data.\n\nFeathers.js focuses on being loose, agnostic, and lightweight. This tool is simply an extension of that mindset.\n\n## Use in a Service\n\nLets create an app with the minimum functionality required to test a service:\n```js\nimport feathers from 'feathers'\nimport hooks from 'feathers-hooks'\n\n//this will create an app that allows you to create documents server-side only\nconst app = feathers()\n  .configure(hooks())\n```\n\nThen, we'll create a service using the article schema we created above:\n```js\nimport memory from 'feathers-memory'\n\n//For the sake of example, we'll create a service that stores data in memory\nconst articleService = app.use('/articles', memory())\n```\n\nHere's where the magic happens. A schema automatically builds the hooks relevant to validating data, and stores them in on its own hooks object.\n\nYou can only put schema hooks on 'before' 'create'/'patch' or 'update' methods,\nand typically you'd want them on all three:\n```js\n\n  const articleHooks = [...articleSchema.hooks]\n\n  const before = {\n    create: articleHooks,\n    patch: articleHooks,\n    update: articleHooks\n  }\n\n  articleService.hooks({ before })\n```\n\n**Alternatively**, if you're going to be weaving other hooks throughout for more advanced cases _(or if you're a filthy es5 casual who isn't yet using the rest/spread operator)_ you can do this:\n```js\nconst articleHooks = [\n  articleSchema.hooks.populate,\n  articleSchema.hooks.sanitize,\n  articleSchema.hooks.validate\n]\n\nconst before = {\n  create: articleHooks,\n  patch: articleHooks,\n  update: articleHooks\n}\n\narticleService.hooks({ before })\n\n```\n\nNow, your service will validate document data:\n```js\n  app.service('articles')\n    .create({\n      writeup: 'Buzzwords and such.'\n    })\n    .catch(err => console.log(err)) // { errors: { author: 'Required.' } }\n```\n\nAnd sanitize it as well:\n```js\n  app.service('articles')\n    .create({\n      writeup: 'This is an unpublished article.',\n      author: {\n        name: '  Whitespace Mgee   '\n      }\n    })\n    .then(savedDoc => console.log(savedDoc))/*:\n      {\n        writeup: 'This is an unpublished article.'\n        published: false, // <- false by default\n        author: {\n          name: 'Whitespace Mgee' //<- trimmed\n          age: null // unprovided fields will be stored as null\n        },\n        comments: null\n      }\n    */\n  }\n```\n____\n\n# Types\n\nThe most basic attribute a property can have is it's type:\n```js\nnew Schema({\n  property: { type: String }\n})\n\n```\nIf you only need to define a type, and no other attributes:\n```js\nnew Schema({ property: String })\n\n```\n\nYou can also define weather the property is intended to be an array of items by\nwrapping the rest of the definition in an array:\n```js\nnew Schema({ property: [String] })\n```\n\nA Schema can be composed of properties of the following types:\n+ **String**\n+ **Number**\n+ **Boolean**\n+ **Date**\n+ **Object**\n+ **ANY** ( _defined as_ ```null```)\n\nWithout any further attributes, properties are nullable by default. That is, a missing or invalid property will be stored in the database as ```null```.\n\n## ```Object``` type\n\nType ```Object``` does not mean _any_ object. It specifically means plain key-value\nobjects. If you are creating a nested property, it will default to ```Object```.\n\n```js\n\nnew Schema({\n\n  //Objects types with no sub properties may have any structure, and will not\n  //be validated further.\n  metadata_v1: Object, // { whatever: ['you want'], is: ['fine']} √\n  metadata_v2: {},     //\n\n  //However, it can only be placed in an array if the property is defined as\n  //an array\n  metadata_v3: [Object], //[{cool: true}, {beans: true}] √\n  metadata_v4: [{}],\n\n  //Object types with at least one nested property will be limited in structure\n  //to those properties:\n  name: {\n    first: String,\n    last: String\n  } // { first: 'Jim', last: 'Beam', isABottleOfWhiskey: true } <-- last key will\n  //be filtered by type sanitizer\n})\n\n```\n\n## ```ANY``` type\n\nThe ```ANY``` type means _almost_ any type. Like ```Object``` type, it needs to be defined\nas an array property if it's intended to be able to take arrays.\n\n```js\nimport { ANY } from 'feathers-schema/types'\n\nnew Schema({\n  whatever_v1: ANY,\n  whatever_v2: null, // ANY === null, literally\n\n  whatever_v3: undefined, // throws error. Must be null\n\n  whatever_array_v1: [],\n  whatever_array_v2: [ANY]\n})\n```\n\nANY type is of course the most malleable. Strings, numbers, Objects, whatever. It\nalso has the least number of attributes that apply to it, and cannot validate\nnested properties.\n___\n\n# Sanitization vs Validation\n\nSome attributes will sanitize a value, and some will validate a value.\n\nA schema has methods that can be called by client code or server hooks,\nthat handle each:\n\n```js\n  const schema = new Schema({\n    name: {\n      type: String, /// type is a validator attribute\n      trim: true    /// trim is a sanitizer attribute\n    }\n  })\n\n  //Sanitizers take data and output sanitized data\n  schema.sanitize({ name: '  whitespace mcgee  '})\n    .then(data => console.log(data)) // { name: 'whitespace mcgee' }\n\n  //Validators take data and output errors\n  schema.validate({ name: 1000 })\n    .then(result => console.log(result)) // { name: 'Expected String.'}\n\n  //If there are no errors, schema.validate will return false\n  schema.validate({ name: 'whitespace mcgee'})\n    .then(result => console.log(result)) // false\n```\n\nSanitization should happen before validation.\n___\n\n# Attributes\n\n## Attribute signatures\n\nSome attributes can be configured with a number of options, some attributes\nare enabled simply by being a key.\n\nAttributes configurations can be input as a single value, array, or object:\n```js\nnew Schema({\n  //with some config value, expected to be a number\n  prop1: { attribute: 100 },\n  //with some other config value, expected to be a string\n  prop1: { attribute: 'Error Message.' },\n  //both, implicitly in an array\n  prop2: { attribute: ['Error Message.', 100] },\n  //explicitly defined as an object\n  prop3: { attribute: { msg: 'Error Message.', option: 100 } }\n})\n```\n\n## ```String``` attributes\n\nUsing feathers-schema, blank strings are converted to ```null```.\n\n### ```length```\n\nThe ```length``` attribute validates the length of a string.\n```js\n/*\n\nConfigurations: * = required\n{ min: Number*, max: Number*, msg: String }\n-or-\n{ value: Number*, compare: ('<=', '<', '>' or '>=')*, msg: String }\n\n*/\n\nconst msg = 'Fool! You\\'ll kill us all!'\nconst type = String\nnew Schema({\n//Ways to validate a string of 144 characters or less:\n  tweet_v1: { type, length: ['<=', 144, msg] },\n  tweet_v2: { type, length: [msg, 144, '<=' ] }, //order irrelevant\n  tweet_v3: { type, length: { value: 144, compare: '<=', msg } },\n  tweet_v4: { type, length: [0, 144, msg] },\n  tweet_v4: { type, length: [144, msg, 0] }, //once again, order irrelevant\n  tweet_v5: { type, length: { min: 0, max: 144, msg }},\n\n//these will break:\n  tweet_wrong_v1: { type, length: { min: 144, max: 0 } }, // min must be below max\n  tweet_wrong_v2: { type, length: [0, msg] }, //must supply a comparer with only one value\n  tweet_wrong_v3: { type, length: [0, 144, '<=' ]}, //compare only works with a single value\n\n//or, be a smartass:\n  tweet_lulz: { type, length: [0, 144, '<=>', msg] } //you figured out what I used for the in-between comparison operator, you are cool\n})\n\n```\n\n### ```format```, ```email```, ```alpha```, ```numeric```, ```alphanumeric``` and ```nospaces```\n\nThe ```format``` attribute will validate a string against a regular expression. It will\nthrow an error if an input value does not pass the regular expression test() method.\n```js\n/*\n\nConfiguration: * = required\n{ exp: RegExp*, msg: String }\n\n*/\n\nconst schema = new Schema({\n  zoomy: { type: String, format: [/zoom/, 'Must contain the word \"zoom\"'] }\n})\n```\n\nThe ```email```, ```alpha```, ```numeric```, ```alphanumeric``` and ```nospaces``` attributes are simply canned ```format``` validators:\n\n```js\n/*\n\nConfiguration:\n{ msg: String }\n\n*/\n\nconst type = String\nconst schema = new Schema({\n  email: { type, email: true },\n  name: { type, alpha: 'Only letters in your name there, cheif.' },\n  order: { type, numeric: true },\n  alias: { type, alphanumeric: 'Your cool nickname cannot have any symbols.' },\n  password: { type, nospaces: 'No spaces in your password, please.' },\n})\n\n```\n\n### ```lowercase```, ```uppercase``` and ```trim```\n\n```js\n/*\nNo Configuration\n*/\n\nconst schema = new Schema({\n  loud: { type: String, uppercase: true },\n  quiet: { type: String, lowercase: true },\n  pretty: { type: String, trim: true },\n})\n\nschema.sanitize({\n  loud: 'hey',\n  quiet: 'HO',\n  pretty: '      Im whitespace mcgee        '\n})\n.then(data => console.log(data))\n//^^\n//{\n//  loud: 'HEY',\n//  quiet: 'ho',\n//  pretty: 'Im whitespace mcgee'\n//}\n```\n\n## ```Number``` attributes\n\n### ```range```\nThe ```range``` attribute validates the range of a number.\n```js\n/*\n\nConfigurations: * = required\n{ min: Number*, max: Number*, msg: String }\n-or-\n{ value: Number*, compare: ('<=', '<', '>' or '>=')*, msg: String }\n\n*/\n\nconst type = Number\nnew Schema({\n  //Between Configurations:\n  SIN: { type, range: [100000000, 999999999] },\n  age: { type, range: { min: 19, max: 99, msg: 'No teenagers or centenarians.'} },\n\n  //Compare Configurations:\n  villagePopulation: { type, range: ['<', 10000, 'More than ten thousand people is not considered a village.']},\n  celsius: { type, range: { value: -273.15, compare: '>=', msg: 'Must be above absolute Zero.' }}\n\n})\n\n```\n\n### ```even``` and ```odd```\n\nPretty self explanatory:\n```js\n/*\n\nConfiguration: * = required\n{ msg: String }\n\n*/\n\nconst type = Number\nnew Schema({\n  bestOfRounds: { type, odd: true },\n  totalShoes: { type, even: true }\n})\n\n\n```\n\n## General attributes\n\nGeneral attributes can be applied to a many (or all) types.\n\n### ```default```\n\nThe ```default``` attribute can be placed on any type. It will sanitize ```undefined```\nor ```null``` values as the provided default.\n```js\n/*\n\nConfiguration: * = required\n{ value:(property type or Function)*,  msg: String }\n\n*/\n\nnew Schema({\n  score: { type: Number, default: 0 },\n  //default may also take a function\n  chant: { type: String, default: () => 'go sports team!\\n'.repeat(5) }\n})\n```\n\n\n### ```required```\n\nThe ```required``` attribute can be placed on any type. It will validate undefined or\nnull values, throwing an error.\n\n```js\n/*\n\nConfiguration: * = required\n{ condition:Function*,  msg: String }\n\n*/\n\nconst onFridays = () => new Date().getDay() === 5\n\nnew Schema({\n  name: { type: String, required: true },\n  //required may also take a function\n  coverCharge: { type: String, required: onFridays }\n  //required attribute on an array property means that the array must exist,\n  //and must have more than 0 items\n  comments: [{ type: String, required: true }]\n})\n```\n\n## Hook attributes\n\nHook attributes only have an effect when the schema is being used in a feathers\nservice in the form of hooks. If you're just calling the validate/sanitize methods\non a built schema (if you're using them client side, for example) they will not\ndo anything.\n\n### ```unique```\n\nThe ```unique``` attributes validates that a property value is unique amongst all other documents in it's service.\n\n```js\n/*\nConfiguration: * = required\n{ msg: String }\n*/\n\nnew Schema({\n  accountName: { type: String, unique: true }\n})\n```\n\n### ```service```\n\nIt acts as an associative filter, only allowing values that correspond with ids of\nother services. It's important to ensure that the type property being used matches the type of\nid the database adapter for that service is using.\n\n```js\n\n/*\n\nConfiguration: * = required\n{ name: String* }\n\n*/\n\n//linking to two hypothetical services that are using, say, mongodb\nnew Schema({\n  essay: String,\n  author: { type: Number, service: 'authors' },\n  comments: [{ type: Number, service: 'comments'}]\n})\n\n```\n___\n\n# Custom Validators and Sanitizers\n\n## ```sanitize``` and ```validate```\nYou can create your own functions to sanitize an validate data with the ```sanitize``` and ```validate``` attributes, respectively.\n\n```js\n\nconst batmanify = () => {\n\n  // MUST be created out of higher-order functions.\n  // This example doesn't require any set up, it simply returns the actual method\n  return value => {\n\n    // null or undefined values should be ignored by a sanitizer, by convention.\n    // If you'd like to give a property a default value, use the 'default' sanitizer.\n    if (value == null)\n      return value\n\n    return value.replace(/bruce\\swayne/gi, 'Batman')\n\n  }\n}\n\nnew Schema({\n\n  article: {\n    type: String,\n    sanitize: batmanify\n  }\n\n})\n\n```\n\n## Accessing Property Info\n\nWhen creating a validator or sanitizer, you can access property info to ensure proper\nusage or to help with validation.\n\n```js\n\n//Ensure that you use the function keyword, NOT an arrow function\nfunction supermanify() {\n\n  //this.type will contain a type of the current property.\n  if (this.type !== String)\n    //this.key will contain the name of the current property.\n    throw new Error(`${this.key} is not a String property. 'supermanify' must be placed on String properties.`)\n\n  return value => {\n\n    //null or undefined values should be ignored by a sanitizer, by convention.\n    //If you'd like to give a property a default value, use the 'default' sanitizer.\n    if (value == null)\n      return value\n\n    return value.replace(/clark\\skent/gi, 'Superman')\n\n  }\n}\n\nnew Schema({\n\n  article: {\n    type: String,\n    sanitize: supermanify\n  }\n\n})\n\n```\n\n### Accessible Property Info:\n\nInside of a ```function(){}``` higher order function, here are the properties you\nShould be able to reference:\n\n``key``: The key of the property.\n``array``: True if this is an array property, false if not.\n``type``: The data type of this property. ``null`` if ANY.\n``parent``: A link to the parent property, if any.\n\n\n## Using Parameters\n\nIf used serverside, your validate or sanitize function is provided with a number of parameters:\n\n```js\n\nfunction customValidatorOrSanitizer () {\n\n  return (value, params) => { }\n                //^^^^\n}\n\n```\n\n### Accessible Parameters:\n\nInside of a ```function(){}``` higher order function, here are the properties you\nShould be able to reference:\n\n``id``: Id of the document currently being validated, if provided by the hook\n``method``: Hook method currently being executed: *create*, *patch*, or *update*\n``service``: Service object the document belongs to.\n``app``: Link to the feathers app.\n``data``: Data stored in hook.data.\n\nIts important that you handle the case of the parameters not being provided, otherwise\nyour validator will break client-side.\n\n___\n\n# Custom Types\n\nThe default types are a narrow subset of Javascript types that translate well to\ndatabase types. You can also add existing or custom types to *feathers-schema*.\n\n```js\nimport { ObjectID } from 'mongodb'\nimport Schema, { types } from 'feathers-schema'\n\nconst idSchema = new Schema({ _id: ObjectID }) // throws 'Malformed property: ObjectID is not a valid type.'\n\ntypes.setCustom(ObjectID)\n\nconst idSchema = new Schema({ _id: ObjectID }) // will not throw\n\n```\n\n## Casting\n\nSchema's sanitization phase will take any value supplied and try to cast it to it's intended type. If it cannot cast a value to it's intended type, it will turn it to\n``null``.\n\nIf you are providing a custom type, it will try to cast a value to that type by\nusing the type as a constructor:\n\n```js\nconst { _id } = await idSchema.sanitize({ _id: '59b339090149b98c0a74332d' })\n// is equivalent to\nconst _id = new ObjectID('59b339090149b98c0a74332d')\n```\n\nHowever, this may not always be suitable for any custom type:\n\n```js\nimport Schema, { types } from 'feathers-schema'\n\nclass Vector2 {\n  constructor (x, y) {\n    this.x = typeof x === 'number' ? x : 0\n    this.y = typeof y === 'number' ? y : 0\n  }\n}\n\ntypes.setCustom(Vector2)\n\nconst transform = new Schema({\n  position: Vector2,\n  scale: Vector2\n})\n\nconst data = await transform.sanitize({\n  position: { x: 1, y: 2 },\n  scale: { x: 1, y: 2 }\n})\n// is equivalent to\nconst data = {\n  position: new Vector2({ x: 1, y: 2}),\n  scale: new Vector2({ x: 1, y: 2 })\n}\n\n// Which will result in:\nconsole.log(data) // { position: { x: 0, y: 0 }, scale: { x:0, y:0 } }\n```\n\nThis is a contrived example. If Vector2 was your own type, you'd clearly write a\nmore liberal constructor. However, if you're using a type from a library, you may\nneed to write a function to cast the value into something the type can construct with:\n\n```js\ntypes.setCustom(Vector2, input => {\n\n  return typeof input === 'object'\n    ? new Vector2(input.x, input.y)\n    : new Vector2(input, input)\n})\n```\n\nThe second argument to setCustom will alter the casting function for the specified type.\n\nYou can ALSO alter the casting functions for default types:\n\n```js\ntypes.setCustom(String, value => escape(`${value}`))\n```\n\nBut it is wiser to provide custom sanitizers that custom casters.\n\n## Backing Type and Serialization\n\nIf the custom type you're adding is supported by your database (such as an ObjectID),\nthen you don't have to make any further considerations for Serialization.\n\n```js\n//TODO: describe how to set up a backing type and serialize/deserialize functions\n// for custom types\n```\n___\n\n# Associations\n```js\n//TODO: finish this example once associations are fleshed out.\n```\n\n___\n\n# Further Considerations\n\n```js\n// TODO detail further considerations about interweaving hooks, database adapter\n// restrictions (if any)\n\n```\n","maintainers":[{"name":"benzed","email":"bengaumond@gmail.com"}],"time":{"modified":"2022-06-17T23:59:52.290Z","created":"2017-02-04T00:05:33.107Z","0.1.0":"2017-02-04T00:05:33.107Z","0.1.1":"2017-02-09T20:48:02.481Z","0.1.2":"2017-02-10T22:37:37.790Z","0.1.3":"2017-02-11T00:25:47.867Z","0.1.4":"2017-02-12T00:43:01.879Z","0.1.5":"2017-03-01T20:00:35.449Z","0.1.6":"2017-03-01T22:15:17.423Z","0.1.7":"2017-03-02T03:24:18.344Z","0.1.8":"2017-03-08T19:03:21.343Z","0.1.9":"2017-03-09T05:32:30.010Z","0.1.10":"2017-03-11T01:29:33.991Z","0.1.11":"2017-05-02T22:48:55.008Z","0.1.12":"2017-05-09T00:27:47.131Z","0.1.13":"2017-05-09T01:28:14.708Z","0.1.14":"2017-05-10T17:32:38.657Z","0.1.15":"2017-06-22T00:47:18.164Z","0.1.16":"2017-07-28T22:37:57.705Z","0.1.17":"2017-07-28T22:53:43.069Z","0.2.0":"2017-09-09T01:28:59.208Z","0.2.1":"2017-09-13T23:21:02.762Z","0.2.2":"2017-09-14T20:55:17.555Z","0.2.3":"2017-09-15T20:17:44.985Z","0.2.4":"2017-09-25T23:35:34.734Z","0.2.5":"2017-09-26T21:34:44.853Z","0.3.0":"2017-09-29T21:37:43.544Z","0.3.1":"2017-10-11T00:52:27.938Z","0.3.4":"2018-07-13T23:58:40.870Z"},"homepage":"https://github.com/BenZed/feathers-schema#readme","keywords":["feathers","schema","model","validation","validate","sanitization","sanitize"],"repository":{"type":"git","url":"git+https://github.com/BenZed/feathers-schema.git"},"author":{"name":"Ben Gaumond"},"bugs":{"url":"https://github.com/BenZed/feathers-schema/issues"},"license":"ISC","readmeFilename":"README.md"}