{"_id":"@alexspirgel/schema","_rev":"10-73601de0df9e080365846e8dc64e4a62","name":"@alexspirgel/schema","dist-tags":{"latest":"1.1.7"},"versions":{"1.0.0":{"name":"@alexspirgel/schema","version":"1.0.0","keywords":["schema","validate","validator","model","data"],"author":{"name":"Alexander Spirgel"},"license":"ISC","_id":"@alexspirgel/schema@1.0.0","maintainers":[{"name":"alexspirgel","email":"spirgel.alexander@gmail.com"}],"homepage":"https://github.com/alexspirgel/schema#readme","bugs":{"url":"https://github.com/alexspirgel/schema/issues"},"dist":{"shasum":"ddc636e653a49762b17da757bfa42bc5b6fd515e","tarball":"https://registry.npmjs.org/@alexspirgel/schema/-/schema-1.0.0.tgz","fileCount":7,"integrity":"sha512-rvJWO04kUwi8ffXcEAtig4Bdv+GPDMVBtxCszNqdwuzzSB4mZGcvS3J08F7YCfOCx4rJtJ+b9ApPzDUoyhSlnQ==","signatures":[{"sig":"MEQCIGuPtXTw4KKgGOBQnaAcY0g24j8+UfPQS5Bgpv5s+i7FAiA8K25kL68Rg0H4FJgeplUp/mbU16b9nm7ce14EMQ1GrQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25957,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJZ+uCRA9TVsSAnZWagAA73oP/jY8J0UmkOdyg4hF7LHd\nktRJai7UsVxrJpFM6VwmNmUPNvpXaWIJ3jLlNsOzgoFD8wPIOp7obntRTHVA\n/uhRUxTeHyvx58vbbWZcYDJaq8mJrQVuzC9LNBAypUT19Ahi136E8GKUfkYT\nKay7SC1P0BDZR6rLEkqZ5dWzyGnQBN10ENYAmYUmti2uQ+zBPenO3pHy9hWl\ndvtspdaJnnbprLVXAiGYQwSJHiHtoyizllH40SUOOrXT1oluoKXnpg3CUxcT\nipwHgNDU91UDItQYmujY+WnycMFVoEzRXoPGCnb+wAcs3QmlzEGTflzha+HT\nrg34N3V1bdlGc1KPH4fh1CdLCgU5CfW5JQljRIfDOjD5lXxIXBgQUogymlyy\nQ5dOvVTrtg3umfZcXOM/BNxyZCHslAtiEMq4qK0ClSncJPUua8RXXMmpcKZl\nV3PLF7En7L/JYk3ZoKr0VyOG+Btuv4Z2WOxFOfcVYNhvnxwEo3dpxrNp6Zr5\n0U7ueB1S14GYk7IMYHxQKMGbwWdl95OVpcNJH6XvfhocU+bAYGyhzErN6bq+\nurtarlJo6TYUQ0r1LhYuct4KWEtpPsgofrf47WribAJVaMtsgXoJUb+pqWjQ\nDDtaNSSJyVlAPolFdRCjbEU7FHkctZGio11nIXcEaCIc6g+Ed/K3X7rrYyg6\nYO2a\r\n=nc4B\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","gitHead":"1639333734c6118b5345ee368ec549f198222b60","scripts":{"test":"mocha","build":"webpack"},"_npmUser":{"name":"alexspirgel","email":"spirgel.alexander@gmail.com"},"repository":{"url":"git+https://github.com/alexspirgel/schema.git","type":"git"},"_npmVersion":"6.14.7","description":"A JavaScript data validator.","directories":{},"_nodeVersion":"14.7.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^8.0.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","terser-webpack-plugin":"^3.0.8"},"_npmOperationalInternal":{"tmp":"tmp/schema_1.0.0_1596301229906_0.6992238245854929","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@alexspirgel/schema","version":"1.1.0","keywords":["schema","validate","validator","model","data"],"author":{"name":"Alexander Spirgel"},"license":"ISC","_id":"@alexspirgel/schema@1.1.0","maintainers":[{"name":"alexspirgel","email":"spirgel.alexander@gmail.com"}],"homepage":"https://github.com/alexspirgel/schema#readme","bugs":{"url":"https://github.com/alexspirgel/schema/issues"},"dist":{"shasum":"a1554b0de623e0aaea56d3633bb8b48b1223bd3a","tarball":"https://registry.npmjs.org/@alexspirgel/schema/-/schema-1.1.0.tgz","fileCount":8,"integrity":"sha512-gYpdGnMxBt51I+mXWNCMUpUtfWYHmhmrJjqtBHajsaD7Ho7HCBO1KZt4YLtC2OhhoBvfh3tCjzQ89x6U64Rmrw==","signatures":[{"sig":"MEYCIQCbS/I2FIhDt4VCoV1YSugHw6S7ruSOK2W+Qd6hTAqyTQIhAM0tDAdwXkJrAzCUzwtjd8rJY6D4L0A68CdAnOL9a1wy","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":29271,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLYsRCRA9TVsSAnZWagAA6lUQAI8DhkrGDnWKtgMcOZHW\n0GR/+TqJnROmsoJ8F43ZJ74YHFwh5UI6EKR+MjCsDOsNMewt6gOPrv/f5TDu\nVo64rmyOqHcIFGD8j39kJvKi2u80G+HfXtw0/jkhi0/+PY3uVYJkruDtdQdV\nixRhSbyKeV9mjCNMVobWra5YiZ9q867DydIfY2eKJwzUG11nlYlfP5aVXlet\nu0PtHus/b3ioNfDN2vZWDNxC6sbpyJtyaSa8w6fU7R3zbAtCJjzrn/uivQ7l\n69FJQKOT8tR1yL6pA9PrlSARJyiHTrdWl4OIz5zDCutegcI2yx1xMW0vozWi\nuadAl+a4NOo1+ahRQluiM7GNNThL/lGCn7peCpc8AP9Ry1k9WoLnRthkCR9y\na7A85IcnRT6wnrXLE2QPS+LoAwdWCGpjx2T+aO03Vy0gMmqfnc7j5f+a0Tus\n5m/EsVn9fF8gCTmGaRpKQ0J67ozd/4iMP2mPnzQbxbtstb1lT0yBhlmAu7/5\ne7ohTbbvU3oyR/SCb2RkUfY63EzVCoHD1kQUfBdL3qQgHr+Q+1oGTv6C4669\n6q/wLlvowO25gGeXPqq+qt4pzhHpBzxuXqnVNLG+wckqN37sfAojC8EFr7sA\nw1AiQ6XYFsnV+bPr+1QSjXwM7mXzQ7/HskG6cc64QtZ5CCna9altAI2Py8Ow\ndhh0\r\n=VQJH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","gitHead":"67362e5364e095d69af16b0c4bfdc287291f7850","scripts":{"test":"mocha","build":"webpack"},"_npmUser":{"name":"alexspirgel","email":"spirgel.alexander@gmail.com"},"repository":{"url":"git+https://github.com/alexspirgel/schema.git","type":"git"},"_npmVersion":"6.14.7","description":"A JavaScript data validator.","directories":{},"_nodeVersion":"14.7.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^8.0.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","@alexspirgel/extend":"^2.0.4","terser-webpack-plugin":"^3.0.8"},"_npmOperationalInternal":{"tmp":"tmp/schema_1.1.0_1596820240812_0.9456888079210513","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"@alexspirgel/schema","version":"1.1.1","keywords":["schema","validate","validator","model","data"],"author":{"name":"Alexander Spirgel"},"license":"ISC","_id":"@alexspirgel/schema@1.1.1","maintainers":[{"name":"alexspirgel","email":"spirgel.alexander@gmail.com"}],"homepage":"https://github.com/alexspirgel/schema#readme","bugs":{"url":"https://github.com/alexspirgel/schema/issues"},"dist":{"shasum":"d3c7ef64f4f70ebf3fa14844ca52e2fdcd7dccff","tarball":"https://registry.npmjs.org/@alexspirgel/schema/-/schema-1.1.1.tgz","fileCount":8,"integrity":"sha512-44+SmeCFKhoS95Yui3X3o4a/bPI2jXXhyVQItaDHqmXEcGFsH9TYLVL/yD0IetNLwId8pMuia6lY6JOUYERvHA==","signatures":[{"sig":"MEYCIQCcaxvI8X6jIeFr0pAZEC/lkhety38yBSjjfmRrddL13QIhAKATRKGqURZ14fhAIuF88R1YB8WPndckjs3Sqa/ZaDMu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":30832,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM2CeCRA9TVsSAnZWagAAq44P/3Kn2TueYtHX1YkBCtvl\npREeC6BYTdVCMo/2YnsbpYxeLd9V+l+VGzGPgz79B55mZIZvvDYmA52jA/b3\nxDc+fsY0bG/Ti+68fX1I+3txNAWKha5boL8vM0IzLEBetl3cyOvBbvxh5i+S\nBaOypHPCVJbLcFBThUojWzgBF5k8xO/pTmtEtxn+jZIx9cuDZnS7cmSFWdqy\nCrzKSBwLV5vBgqAHFlIy+XCapGy9zk84nzxPgcw8S/Ev4GUGSEAXJwUXWa9+\nufJVbM8enhgk2yCkMkDtYRS2Q+bSCKMrlITCBd2gX04AwNkLVjr1wjh5tFC1\n87HewUOEbq5SlBinUncEXqaoHqOAXI4PxmI6w187SEGPQb3StXKpnKyyvWRg\nM9T04R3zjgY4aLL/l/e2WeUlKIUIX0F8qv4taRiyTUTNQIPdYpQL36sxU6tz\n+mdByoBsyFnm1xQH/HlY7/eWI/FTCcaAScnTWjjS1+++G8TaCLi8BYsBJcsC\nit++GmbyATsOfniYRqrVnRWQ006C7ulEOpv6MItwjPs6gJoNhFFXO5zPDwqM\nZIFJY2Wm0uZVPgB0/hX6vnnPmBDn09ThC3VVjhncorhZ8p4U7Qzt4uBkqtmk\nzCJB6Kwy/8//I/SopYcfWVjTGI2gQYgzIac0palajUHo0fD73bFBsz4sBnO+\n7Lv0\r\n=sAEI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","gitHead":"5ecfbba669ac28fa226f15ec93f2e4a8437e35be","scripts":{"test":"mocha","build":"webpack"},"_npmUser":{"name":"alexspirgel","email":"spirgel.alexander@gmail.com"},"repository":{"url":"git+https://github.com/alexspirgel/schema.git","type":"git"},"_npmVersion":"6.14.7","description":"A JavaScript data validator.","directories":{},"_nodeVersion":"14.7.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^8.0.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","@alexspirgel/extend":"^2.0.4","terser-webpack-plugin":"^3.0.8"},"_npmOperationalInternal":{"tmp":"tmp/schema_1.1.1_1597202589754_0.8337196344039945","host":"s3://npm-registry-packages"}},"1.1.2":{"name":"@alexspirgel/schema","version":"1.1.2","keywords":["schema","validate","validator","model","data"],"author":{"name":"Alexander Spirgel"},"license":"ISC","_id":"@alexspirgel/schema@1.1.2","maintainers":[{"name":"alexspirgel","email":"spirgel.alexander@gmail.com"}],"homepage":"https://github.com/alexspirgel/schema#readme","bugs":{"url":"https://github.com/alexspirgel/schema/issues"},"dist":{"shasum":"6330a92f7ce29b3297ef502ea9bdeb5603b803b3","tarball":"https://registry.npmjs.org/@alexspirgel/schema/-/schema-1.1.2.tgz","fileCount":8,"integrity":"sha512-cTvEmasfDR4G+bbVLMg0ZRHirfvnLy/UtUlVZ6Y5ss6fp7GBuFswYUceEztJ36tR8KvPo+zTzwAVsFjGxS6A0w==","signatures":[{"sig":"MEQCIGlYJIXf/u3tv0kHWLVU7CjZeq+OZrIyE25qyffer8L+AiB+9tj3guBbIXrNCrI7eg0QlszXerS1/Iqpxbgi+VDk1A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":31158,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQ/qcCRA9TVsSAnZWagAATpQQAKISjENC6+PAZmiiPXC1\nL1uyJEJhHnth1kgBSj651gFcOD/RVGF/qEaQgIVEU0CZAJ80rFaS8UJyX0L8\nfcECaVOcrTW+qpUe06v0eaEJ2s/+t6E7fQQZq4MS0ZARl3hX9qxUgZyKcQe4\n98jKxWSbn4p17sP8SQYS/vEL/m1eTuo/9Y5sxE1XShTAFH+LIJ3S3Daj+yqK\n3IasL4CXf7mFAWvcJGy7i5svJX8hWbGL8YjsjU5Li7s14iG1DctidursIfzX\nMhSrbANvBk8ikHTd9JdpC8Lx0VkSuDE+YSkJToLiBpQiBLSrCQqrevNP2EdI\n5UymgfgHBb0045a39B3yU57AWYMK/1GdnUXr1nx0yKzCAL3i8kY00MuewBKd\nhuL9KraTzwkuCftJ/CfCWDB8Sdr/ffzm4JXkh9P6S83RaFr5UxwIIkmHkLZp\ndCaUXqyTKXWYUPq+l3jWqeggPhBfMJ9NpxpRoHaxwuMvgFtRjWWQqQiSdid0\n/QcETA7uLOGjPbg8uqGK29Rer2faIKmCTaYytMzTYYqGVqEnJ8cUBy35i/nS\nxVmc6kN03+GLr757yxvaBynWvrapZh3B+zfkkV/0F/Z4YzZjBmYKiM2Yug5L\nY5N22HmAb4ik9jlnK8far14S0VilEBZV9VIQ3ell4A7TRy/NLA/brMUzlqry\ny16o\r\n=IRgn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","gitHead":"325305140ecf41c76d60979abffdc7e5c1119751","scripts":{"test":"mocha","build":"webpack"},"_npmUser":{"name":"alexspirgel","email":"spirgel.alexander@gmail.com"},"repository":{"url":"git+https://github.com/alexspirgel/schema.git","type":"git"},"_npmVersion":"6.14.7","description":"A JavaScript data validator.","directories":{},"_nodeVersion":"14.7.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^8.1.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","@alexspirgel/extend":"^3.0.0","terser-webpack-plugin":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/schema_1.1.2_1598290587884_0.4268346039614621","host":"s3://npm-registry-packages"}},"1.1.3":{"name":"@alexspirgel/schema","version":"1.1.3","keywords":["schema","validate","validator","model","data"],"author":{"name":"Alexander Spirgel"},"license":"ISC","_id":"@alexspirgel/schema@1.1.3","maintainers":[{"name":"alexspirgel","email":"spirgel.alexander@gmail.com"}],"homepage":"https://github.com/alexspirgel/schema#readme","bugs":{"url":"https://github.com/alexspirgel/schema/issues"},"dist":{"shasum":"944741a19ec83ff29831447d4476a5c6a74e19b2","tarball":"https://registry.npmjs.org/@alexspirgel/schema/-/schema-1.1.3.tgz","fileCount":8,"integrity":"sha512-rjdow01ZqqpqwyqcXCuzH5cumkqIseWi/HA7oWmCSK3mms78pM1f+f1hviZNOJTtZmJkeKW9DnJna7Vl8T0OCA==","signatures":[{"sig":"MEYCIQCGRpTxQ+9/JIIOqLxiwFA6tXK1eXMEoT66LNE9mGRwhAIhAKVceIOvKFyub+dF+Zup5/mQbltfPM2mAc5lgGXBZkwC","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":31134,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTv7+CRA9TVsSAnZWagAAQLIP/1Nah7evlJ6hmHmreQV6\nB4HRTo5GB+Md0q8dqTtqPThwLj8/So0PDwxWOxOlKgJ1CMNgKFFm//Lgyec1\nqwu1T1ZOb6DsMopKTRGSzfe6UAsFa6sNaZWSG8ezGda8uHLfML4qql06BG/K\njuPbRpIjpGSDHu2ITgGIKjA7k6hbiWxEsgYLAunidl2G/3qvJd4mHvz2P1J9\n5UxlYg5uZe/oYEYZj5aj62kxxrmMhNBLuDEA8ujnCJjUQckf1JfPu4BLGLUz\nTgOUyB0EZdXpte9AVhiQKtgNxFfG8XV+maj8/osqoXTIBUraAfGdPudvkSCu\nPia9p2YYkF9ZTnAvNQxvYnwTgZGYxmB1sNjysaAgI026qKWP/Qp8JiyjpQ+d\nUxL9hm8Oil3Hg89Bd6SHgStd/XkbZTy/KdpZIo43xgViUxSz/Rj/wGZzaC6x\nVGRVgYfCZTiagexXnYDAnqYsVxGp9xTBc6zpezRi3q3ewLqgKboZL7sV2bHN\n/hIpEUCxeftbiU90RMt30cqd7ZTCnLepeOk/jkuutOvuBECmr0vShbvT46SK\nPN+cScg5+s7cT5mIjUWcyv4OiLyEMoF0+2+Pm7fQkjNNmRB6drv1pgrCOspn\nCV0gDyEu1nhZ6nAjmZJDm3JpRWDoj0h/z/gdvRoaxr5da7fqI9MUCPDUf9LO\nNitW\r\n=FktA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","gitHead":"6661ca1493e04fd344d5149a3cdcbb5192dc7593","scripts":{"test":"mocha","build":"webpack"},"_npmUser":{"name":"alexspirgel","email":"spirgel.alexander@gmail.com"},"repository":{"url":"git+https://github.com/alexspirgel/schema.git","type":"git"},"_npmVersion":"6.14.7","description":"A JavaScript data validator.","directories":{},"_nodeVersion":"14.7.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^8.1.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","@alexspirgel/extend":"^3.0.0","terser-webpack-plugin":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/schema_1.1.3_1599012606241_0.09625804488813872","host":"s3://npm-registry-packages"}},"1.1.4":{"name":"@alexspirgel/schema","version":"1.1.4","keywords":["schema","validate","validator","model","data"],"author":{"name":"Alexander Spirgel"},"license":"ISC","_id":"@alexspirgel/schema@1.1.4","maintainers":[{"name":"alexspirgel","email":"spirgel.alexander@gmail.com"}],"homepage":"https://github.com/alexspirgel/schema#readme","bugs":{"url":"https://github.com/alexspirgel/schema/issues"},"dist":{"shasum":"c47273e08336be341c10de6cf8eaba17bff69557","tarball":"https://registry.npmjs.org/@alexspirgel/schema/-/schema-1.1.4.tgz","fileCount":8,"integrity":"sha512-PzbjcUAU65nd4qhBT5HjatnT2bNPIujNL5uuZkhufukirTKWxzECJEplnBwnS/kpmToEVTe+R+IUCsfI3PaG4w==","signatures":[{"sig":"MEUCID3sDR9hoW1U9vn8LRLu3dWsb+9R0kqfh7mitcos7pkhAiEA3/sVUEZGSTqHGaW/L6KgXtaZ3+VEgEo8BLRKux9gfvs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":31137,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVlfDCRA9TVsSAnZWagAAmbYP/RZx3fOywmnUDZkOFXJp\nOoOaeKi+Q1gNCaPjmsq/BSwFFfzlS9HTMIK7ekbmALC3avJdIhDs5+SFGSYg\nOGne3F18ymtEB5/b8QgavYMTsxwbVBkN80CQcppCKI+4tS0/adv8P4KByYnI\nxLLoEIkHu+iOHDXCtTETPveRB7EyXKEtCoe4wErQXb5W6TMN3FRZsgokqB1T\nBCl3M1DiMzKxbNWnFYcUXYOyMyMbX/MVyYVNwoN+9K4xDZBRn716zoIk1r5S\nEB8sOKow8gLrwhHCcRrKy1nzwRf2A5iD4nbh9skPDgRkPbTGudUW793D9Yz+\nDMnElJhWImSFGV/E0ochxWaxRAKbz+ql7HXCw8Fb6XxqBttPHYsw8hLf8al3\npz2B91XUpGyunuJU9KkA86brwyjI5HnyTy4SsxLiUoKbmUrIe1KLH1Hs+4Ni\nc+Z0KBmMtbj5Irq4Qx/rf8fNcxa942wDSwsPw/MQYEtKykfEIw+3qQUWUWTM\nKetXzI7Py45zMzqAx7fZ6wqDFDrtb7SyO2pM8qOHmFEjj7x4G8PtQSH5gYnn\narz/QcIXM1W7R54O74tVRJlTm2cX8IafdHZgyp/sx3s+U2xUr9/1vTG/sd4Y\neddasPuDhl/KkTu/yYRtWpV9kdPcrIi9rcslcZ4ZH+dGeXS0i0V8fAiz2S9c\nUm18\r\n=AyY3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","gitHead":"e8a6511fc294de87230cafb31a3ccde6ec030ec8","scripts":{"test":"mocha","build":"webpack"},"_npmUser":{"name":"alexspirgel","email":"spirgel.alexander@gmail.com"},"repository":{"url":"git+https://github.com/alexspirgel/schema.git","type":"git"},"_npmVersion":"6.14.7","description":"A JavaScript data validator.","directories":{},"_nodeVersion":"14.7.0","dependencies":{"@alexspirgel/extend":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^8.1.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","terser-webpack-plugin":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/schema_1.1.4_1599494083165_0.44918516666646635","host":"s3://npm-registry-packages"}},"1.1.5":{"name":"@alexspirgel/schema","version":"1.1.5","keywords":["schema","validate","validator","model","data"],"author":{"name":"Alexander Spirgel"},"license":"ISC","_id":"@alexspirgel/schema@1.1.5","maintainers":[{"name":"alexspirgel","email":"spirgel.alexander@gmail.com"}],"homepage":"https://github.com/alexspirgel/schema#readme","bugs":{"url":"https://github.com/alexspirgel/schema/issues"},"dist":{"shasum":"256b1559538f7ff27f5a144fb3e7a544a6a9950b","tarball":"https://registry.npmjs.org/@alexspirgel/schema/-/schema-1.1.5.tgz","fileCount":8,"integrity":"sha512-O74H4LByKY7A0veSE09+KkZ+SOj4Kj8csdHS/PRVXyqXuUIRiHCMzxGTSyAUwEnslslaow9Klq+rOoa4Zz9DWA==","signatures":[{"sig":"MEQCIDTPQBovKPf1QpDxLbpkv7fkcxmlFj3EUHjJ/yie0+K0AiAdqd8aH3FXXzFXSoqGgWek2DOYG8adh3N5qjGA3FlBsg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":31137,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNc9QCRA9TVsSAnZWagAAj3EP/3KH5LwhJAhf6/E1lBuI\nzX7kaSXdV6lCaEC6W0qI/yYz85gAWfkyeHNiCL8vwfOuswSBgks6CJJQRDUi\nrs/D0uadtjSp+fERPZxn3lwr1i4tvyciBtGg4x25ZWj0S9z2Djsd3Nck3ri+\n6Abd6s9+bCCH7lrbWKAYSrraNLsotiiLuEWpvnatoIimoC5Pgum8FgGIs/m4\nCvqs+zVWiS7RUGIs26B279iUycyb/PSrpCy3k524+medsXzGSrRo61FlGCSI\nWXmBJ/I7sWM8Nml1aTfuczvJVhdPFDl5UuS9N5H9SETgXruYnF7+jdp4rYIg\nb4WuzlS0BOJSSBCzIAJzsjXH9RrusWwSrLlnALUd7xGxKv6yZdm/oaAFaX9P\nt/z/zns7D5hf8oAQQNX1UUaNib+GLVCHsIY6W/Jauwwt0L0pOyaEEZOhtVLh\nH0jg9fSt2d+XLucXvZWoXXylsI4OGYLOwrf5u0wt8rmfCs7vnxtW7A7pcxsi\n9zkJ1xofapTbNslfGTm8ymmDiaBY+sUhEfxWKdJCY/c/l9ee7qSYjr4Oe+gb\nQV8l+q8gpBgT2KaRB6geu8CEzPvFGBhacLorPcE5vh9a4sXfgL4sPk6D+H8R\nP9PLkZbkPdSgReofA9sjAW4vAhDSIrx0ZDou9io2dPlFfSW2D4Nm1wfbrZuz\nPfF4\r\n=Jfc3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","gitHead":"cb1517e82d01797278d3f79e92dcf3c9803bc49f","scripts":{"test":"mocha","build":"webpack"},"_npmUser":{"name":"alexspirgel","email":"spirgel.alexander@gmail.com"},"repository":{"url":"git+https://github.com/alexspirgel/schema.git","type":"git"},"_npmVersion":"6.14.7","description":"A JavaScript data validator.","directories":{},"_nodeVersion":"14.7.0","dependencies":{"@alexspirgel/extend":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^8.3.0","webpack":"^4.46.0","webpack-cli":"^3.3.12","terser-webpack-plugin":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/schema_1.1.5_1614139215970_0.46753827932805714","host":"s3://npm-registry-packages"}},"1.1.6":{"name":"@alexspirgel/schema","version":"1.1.6","keywords":["schema","validate","validator","model","data"],"author":{"name":"Alexander Spirgel"},"license":"ISC","_id":"@alexspirgel/schema@1.1.6","maintainers":[{"name":"alexspirgel","email":"spirgel.alexander@gmail.com"}],"homepage":"https://github.com/alexspirgel/schema#readme","bugs":{"url":"https://github.com/alexspirgel/schema/issues"},"dist":{"shasum":"d8a43781517d62fe3604d9c9ea8752f6fff9a03f","tarball":"https://registry.npmjs.org/@alexspirgel/schema/-/schema-1.1.6.tgz","fileCount":8,"integrity":"sha512-5bbgJSNCgCOxh2ndf6eaxlGI6HySNQi+njwTOGu1OSjxh9mk6aofMFFg5WlZFy9lJvXSSrMb97Xeur/2sq8C7A==","signatures":[{"sig":"MEQCIG8U7Jzq8DfOMQxU/9m6ZVTrmW8J/YTPRCFK3ldyQ+SBAiAOzzkpZH4ogqYpweQjrsnn2qYPbM3/jEWUX5rAm2OWjQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33244},"main":"src/index.js","gitHead":"03612907136b441bfdf2a5581fc3342392b3e9d0","scripts":{"test":"mocha","build":"webpack"},"_npmUser":{"name":"alexspirgel","email":"spirgel.alexander@gmail.com"},"repository":{"url":"git+https://github.com/alexspirgel/schema.git","type":"git"},"_npmVersion":"8.11.0","description":"A JavaScript data validator.","directories":{},"_nodeVersion":"17.9.1","dependencies":{"@alexspirgel/extend":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^8.3.0","webpack":"^4.46.0","webpack-cli":"^3.3.12","terser-webpack-plugin":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/schema_1.1.6_1749247029623_0.7289006801930094","host":"s3://npm-registry-packages-npm-production"}},"1.1.7":{"name":"@alexspirgel/schema","version":"1.1.7","author":{"name":"Alexander Spirgel"},"description":"A JavaScript data validator.","keywords":["schema","validate","validator","model","data"],"main":"src/index.js","license":"ISC","repository":{"type":"git","url":"git+https://github.com/alexspirgel/schema.git"},"homepage":"https://github.com/alexspirgel/schema#readme","bugs":{"url":"https://github.com/alexspirgel/schema/issues"},"scripts":{"test":"mocha","build":"webpack"},"dependencies":{"@alexspirgel/extend":"^3.0.1"},"devDependencies":{"mocha":"^8.3.0","terser-webpack-plugin":"^3.1.0","webpack":"^4.46.0","webpack-cli":"^3.3.12"},"_id":"@alexspirgel/schema@1.1.7","gitHead":"de18337d441d7bd351ed91a6b7e081418847ebe6","_nodeVersion":"20.19.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-Iwv08WLyQGVpzxBdFTItN5Z3fysEoOiuJFJpFWbtoNoPXe+tHiD9Ozju8J6oH1HmyrB9KM6zRSwDiUt1pK0SBw==","shasum":"6a1edf2bc074d0881c50ecf6f1ad9eb7a84c2e89","tarball":"https://registry.npmjs.org/@alexspirgel/schema/-/schema-1.1.7.tgz","fileCount":8,"unpackedSize":34263,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAmUSNfhXexg7zTl525Wq8+jVQrRxOo3p1MmgJGYwboNAiBe1vDJx8802nnzDgw8kZzd2j6zb3YqXZEvhmxIVtqGmw=="}]},"_npmUser":{"name":"alexspirgel","email":"spirgel.alexander@gmail.com"},"directories":{},"maintainers":[{"name":"alexspirgel","email":"spirgel.alexander@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/schema_1.1.7_1749336555563_0.3428950113656737"},"_hasShrinkwrap":false}},"time":{"created":"2020-08-01T17:00:29.863Z","modified":"2025-06-07T22:49:15.957Z","1.0.0":"2020-08-01T17:00:30.038Z","1.1.0":"2020-08-07T17:10:40.941Z","1.1.1":"2020-08-12T03:23:09.857Z","1.1.2":"2020-08-24T17:36:28.034Z","1.1.3":"2020-09-02T02:10:06.441Z","1.1.4":"2020-09-07T15:54:43.295Z","1.1.5":"2021-02-24T04:00:16.263Z","1.1.6":"2025-06-06T21:57:09.804Z","1.1.7":"2025-06-07T22:49:15.753Z"},"bugs":{"url":"https://github.com/alexspirgel/schema/issues"},"author":{"name":"Alexander Spirgel"},"license":"ISC","homepage":"https://github.com/alexspirgel/schema#readme","keywords":["schema","validate","validator","model","data"],"repository":{"type":"git","url":"git+https://github.com/alexspirgel/schema.git"},"description":"A JavaScript data validator.","maintainers":[{"name":"alexspirgel","email":"spirgel.alexander@gmail.com"}],"readme":"# Schema\r\n\r\nSchema is a JavaScript validator, meaning it will detect if an input matches defined constraints, it will not edit input data. This was originally developed for validating complex options objects as they are passed into other scripts, but it can be used effectively outside of that specific example.\r\n\r\n## Installation\r\n\r\n### Using NPM:\r\n\r\n```js\r\nnpm install @alexspirgel/schema\r\n```\r\n\r\n```js\r\nconst Schema = require('@alexspirgel/schema');\r\n```\r\n\r\n### Using a script tag:\r\n\r\nDownload the normal or minified script from the `/dist` folder.\r\n\r\n```html\r\n<script src=\"path/to/schema.js\"></script>\r\n```\r\n\r\n## Usage\r\n\r\nCreate a schema using a model:\r\n\r\n```js\r\nlet model = {\r\n    type: 'number',\r\n    greaterThan: 5\r\n};\r\nlet schema = new Schema(model);\r\n```\r\n\r\nUse the schema to validate an input:\r\n\r\n```js\r\nschema.validate('abc'); // fail\r\nschema.validate(3); // fail\r\nschema.validate(6); // pass\r\n```\r\n\r\nYou can specify an error style as the second parameter of the validate method. The error style options are:\r\n* `'throw'` (default) will throw a formatted error on validate failure. The message will include multiple errors when applicable.\r\n* `'array'` will return an array of errors on validate failure. Useful for sorting through multiple errors programmatically.\r\n* `'boolean'` will return false on validate failure.\r\n\r\n```js\r\nschema.validate(4); // throws an error\r\nschema.validate(4, 'throw'); // throws an error\r\nschema.validate(4, 'array'); // returns an array\r\nschema.validate(4, 'boolean'); // returns false\r\n```\r\n\r\nMore complex example:\r\n```js\r\nlet schema = new Schema({\r\n    required: true,\r\n    type: 'object',\r\n    propertySchema: {\r\n        width: {\r\n            required: true,\r\n            type: 'number',\r\n            greaterThanOrEqualTo: 0\r\n        },\r\n        tags: {\r\n            type: 'array',\r\n            itemSchema: [\r\n                {\r\n                    type: 'number'\r\n                },\r\n                {\r\n                    type: 'string'\r\n                }\r\n            ]\r\n        }\r\n    }\r\n});\r\nschema.validate(null); // fail\r\nschema.validate({}); // fail\r\nschema.validate({ // pass\r\n    width: 10\r\n});\r\nschema.validate({ // fail\r\n    width: -5\r\n});\r\nschema.validate({ // pass\r\n    width: 10,\r\n    tags: []\r\n});\r\nschema.validate({ // fail\r\n    width: 10,\r\n    tags: ['test', true]\r\n});\r\nschema.validate({ // pass\r\n    width: 10,\r\n    tags: ['test', 123, 'hello']\r\n});\r\n```\r\n\r\n## Model Properties\r\n\r\nThese parameters are used to define the schema rule set.\r\n\r\n<details>\r\n\r\n<summary>required</summary>\r\n\r\nThis property has no restrictions on what models it can belong to.\r\n\r\nAvailable values: any boolean.\r\n\r\nSetting `required` to `true` requires an input not to be `null` or `undefined`.\r\n\r\nSetting `required` to `false` or omitting it from the model (equivalent to `undefined`) will not require any input. If an input is `null` or `undefined` all other model properties will be skipped and the input is valid.\r\n\r\n```js\r\nlet model = {\r\n  required: true\r\n};\r\nlet schema = new Schema(model);\r\nschema.validate(123); // pass\r\nschema.validate(); // fail\r\nschema.validate(null); // fail\r\n```\r\n\r\n</details>\r\n\r\n<details>\r\n\r\n<summary>type</summary>\r\n\r\nThis property has no restrictions on what models it can belong to.\r\n\r\nAvailable values: `boolean`, `number`, `string`, `array`, `object`, `function`.\r\n\r\nAn input must match the set type.\r\n\r\n```js\r\nlet model = {\r\n  type: 'boolean'\r\n};\r\nlet schema = new Schema(model);\r\nschema.validate(true); // pass\r\nschema.validate(false); // pass\r\nschema.validate('abc'); // fail\r\n```\r\n\r\nYou cannot define multiple allowed types in a single type property. Multiple optional type values must be declared in separate models using an array of models.\r\n\r\n```js\r\nlet model = [\r\n  {\r\n    type: 'string'\r\n  },\r\n  {\r\n    type: 'number'\r\n  }\r\n];\r\nlet schema = new Schema(model);\r\nschema.validate('abc'); // pass\r\nschema.validate(123); // pass\r\nschema.validate(true); // fail\r\n```\r\n\r\nNotes:\r\n* `NaN` is not a valid `number`.\r\n* `null` is not a valid `object`.\r\n* Arrays are not objects and objects are not arrays.\r\n  * `[]` is not a valid `object`.\r\n  * `{}` is not a valid `array`.\r\n\r\n</details>\r\n\r\n<details>\r\n\r\n<summary>exactValue</summary>\r\n\r\nThis property is restricted to models with a `type` property of `boolean`, `number`, or `string`.\r\n\r\nAvailable values: any value or array of values.\r\n\r\nAn input must match the value or one of the values in an array of values.\r\n\r\n```js\r\nlet model = {\r\n  type: 'string',\r\n  exactValue: 'hello world'\r\n};\r\n```\r\n\r\n```js\r\nlet model = {\r\n  type: 'number',\r\n  exactValue: [5, 7, -12]\r\n};\r\n```\r\n\r\n</details>\r\n\r\n<details>\r\n\r\n<summary>greaterThan</summary>\r\n\r\nThis property is restricted to models with a `type` property of `number`.\r\n\r\nAvailable values: any number.\r\n\r\nAn input must be greater than the set number.\r\n\r\n```js\r\nlet model = {\r\n  type: 'number',\r\n  greaterThan: 5\r\n};\r\n```\r\n\r\n</details>\r\n\r\n<details>\r\n\r\n<summary>greaterThanOrEqualTo</summary>\r\n\r\nThis property is restricted to models with a `type` property of `number`.\r\n\r\nAvailable values: any number.\r\n\r\nAn input must be greater than or equal to the set number.\r\n\r\n```js\r\nlet model = {\r\n  type: 'number',\r\n  greaterThanOrEqualTo: 5\r\n};\r\n```\r\n\r\n</details>\r\n\r\n<details>\r\n\r\n<summary>lessThan</summary>\r\n\r\nThis property is restricted to models with a `type` property of `number`.\r\n\r\nAvailable values: any number.\r\n\r\nAn input must be less than the set number.\r\n\r\n```js\r\nlet model = {\r\n  type: 'number',\r\n  lessThan: 5\r\n};\r\n```\r\n\r\n</details>\r\n\r\n<details>\r\n\r\n<summary>lessThanOrEqualTo</summary>\r\n\r\nThis property is restricted to models with a `type` property of `number`.\r\n\r\nAvailable values: any number.\r\n\r\nAn input must be less than or equal to the set number.\r\n\r\n```js\r\nlet model = {\r\n  type: 'number',\r\n  lessThanOrEqualTo: 5\r\n};\r\n```\r\n\r\n</details>\r\n\r\n<details>\r\n\r\n<summary>divisibleBy</summary>\r\n\r\nThis property is restricted to models with a `type` property of `number`.\r\n\r\nAvailable values: any number or array of numbers.\r\n\r\nAn input must be cleanly divisible by the number or any of the numbers in the array of numbers (a number is cleanly divisible if the result is an integer without a remainder).\r\n\r\n```js\r\nlet model = {\r\n  type: 'number',\r\n  divisibleBy: 2 // even numbers\r\n};\r\n```\r\n\r\n```js\r\nlet model = {\r\n  type: 'number',\r\n  divisibleBy: [10, 25]\r\n};\r\n```\r\n\r\n</details>\r\n\r\n<details>\r\n\r\n<summary>notDivisibleBy</summary>\r\n\r\nThis property is restricted to models with a `type` property of `number`.\r\n\r\nAvailable values: any number or array of numbers.\r\n\r\nAn input must NOT be cleanly divisible by the number or any of the numbers in the array of numbers (a number is cleanly divisible if the result is an integer without a remainder).\r\n\r\n```js\r\nlet model = {\r\n  type: 'number',\r\n  notDivisibleBy: 2 // odd numbers\r\n};\r\n```\r\n\r\n```js\r\nlet model = {\r\n  type: 'number',\r\n  notDivisibleBy: [2, 5]\r\n};\r\n```\r\n\r\n</details>\r\n\r\n<details>\r\n\r\n<summary>minimumCharacters</summary>\r\n\r\nThis property is restricted to models with a `type` property of `string`.\r\n\r\nAvailable values: any number.\r\n\r\nAn input must have a character count greater than or equal to the set number.\r\n\r\n```js\r\nlet model = {\r\n  type: 'string',\r\n  minimumCharacters: 5\r\n};\r\n```\r\n\r\n</details>\r\n\r\n<details>\r\n\r\n<summary>maximumCharacters</summary>\r\n\r\nThis property is restricted to models with a `type` property of `string`.\r\n\r\nAvailable values: any number.\r\n\r\nAn input must have a character count less than or equal to the set number.\r\n\r\n```js\r\nlet model = {\r\n  type: 'string',\r\n  maximumCharacters: 5\r\n};\r\n```\r\n\r\n</details>\r\n\r\n<details>\r\n\r\n<summary>minimumLength</summary>\r\n\r\nThis property is restricted to models with a `type` property of `array`.\r\n\r\nAvailable values: any number.\r\n\r\nAn input must have length greater than or equal to the set number.\r\n\r\n```js\r\nlet model = {\r\n  type: 'array',\r\n  minimumLength: 5\r\n};\r\n```\r\n\r\n</details>\r\n\r\n<details>\r\n\r\n<summary>maximumLength</summary>\r\n\r\nThis property is restricted to models with a `type` property of `array`.\r\n\r\nAvailable values: any number.\r\n\r\nAn input must have length less than or equal to the set number.\r\n\r\n```js\r\nlet model = {\r\n  type: 'array',\r\n  maximumLength: 5\r\n};\r\n```\r\n\r\n</details>\r\n\r\n<details>\r\n\r\n<summary>instanceOf</summary>\r\n\r\nThis property is restricted to models with a `type` property of `object`.\r\n\r\nAvailable values: any value or array of values.\r\n\r\nAn input must be an instance of the value or one of the values in the array of values.\r\n\r\n```js\r\nlet model = {\r\n  type: 'object',\r\n  instanceOf: Element\r\n};\r\n```\r\n\r\n```js\r\nlet model = {\r\n  type: 'object',\r\n  instanceOf: [Element, Error]\r\n};\r\n```\r\n\r\n</details>\r\n\r\n<details>\r\n\r\n<summary>allowUnvalidatedProperties</summary>\r\n\r\nThis property is restricted to models with a `type` property of `object`.\r\n\r\nAvailable values: any boolean.\r\n\r\nSetting `allowUnvalidatedProperties` to `false` requires every input property to have a model defined in the `propertySchema` property.\r\n\r\nSetting `allowUnvalidatedProperties` to `true` or omitting it from the model (equivalent to `undefined`) will not check if input properties are validated.\r\n\r\n```js\r\nlet model = {\r\n  type: 'object',\r\n  allowUnvalidatedProperties: false,\r\n  propertySchema: {\r\n    width: {\r\n      type: 'number'\r\n    },\r\n    height: {\r\n      type: 'number'\r\n    }\r\n  }\r\n};\r\n```\r\n\r\n</details>\r\n\r\n<details>\r\n\r\n<summary>propertySchema</summary>\r\n\r\nThis property is restricted to models with a `type` property of `array` or `object`.\r\n\r\nAvailable values: an object containing property and model pairs.\r\n\r\nEach property of the input object must validate using the corresponding property model defined in the model.\r\n\r\n```js\r\nlet model = {\r\n  type: 'object',\r\n  propertySchema: {\r\n    property1: {\r\n      type: 'number'\r\n    },\r\n    property2: {\r\n      type: 'string'\r\n    }\r\n  }\r\n};\r\n```\r\n\r\n</details>\r\n\r\n<details>\r\n\r\n<summary>allPropertySchema</summary>\r\n\r\nThis property is restricted to models with a `type` property of `array` or `object`.\r\n\r\nAvailable values: a model.\r\n\r\nEach property of the input must validate using the `allPropertySchema`.\r\n\r\n```js\r\nlet model = {\r\n  type: 'array',\r\n  allPropertySchema: {\r\n    type: 'number'\r\n  }\r\n};\r\n```\r\n\r\n</details>\r\n\r\n<details>\r\n\r\n<summary>custom</summary>\r\n\r\nThis property has no restrictions on what models it can belong to.\r\n\r\nAvailable values: any function that returns true on successful validation or throws a `Schema.ValidationError` on failure.\r\n\r\nAn input must validate successfully using the custom validation function.\r\n\r\n```js\r\nlet model = {\r\n  custom: (inputPathManager) => {\r\n    if (inputPathManager.value.includes('hello')) {\r\n      return true;\r\n    }\r\n    else {\r\n      throw new Schema.ValidationError(`Custom validation failed. The input must contain the string 'hello'.`);\r\n    }\r\n  }\r\n};\r\n```\r\n\r\n</details>\r\n\r\n## Multiple Models\r\n\r\nAnywhere you could use a model, you can instead choose to use an array of models. If an input validates successfully using any of the models in the array, the validation is successful.\r\n\r\nHere is an example of using an array of models:\r\n\r\n```js\r\nlet model = [\r\n  {\r\n    required: true,\r\n    type: 'string'\r\n  },\r\n  {\r\n    required: true,\r\n    type: 'number'\r\n  }\r\n];\r\nlet schema = new Schema(model);\r\nschema.validate('abc'); // pass\r\nschema.validate(123); // pass\r\nschema.validate(true); // fail\r\n```\r\n\r\nThis model allows for the input to be either string or a number.\r\n\r\nNote that when using an array of models, if one of the models in the array isn't required, a null or undefined value will pass validation.\r\n\r\n## Future Changes\r\n\r\n- The `propertySchema` property should be renamed to `propertyModel`.\r\n- The `allPropertySchema` property should be renamed to `allPropertyModel`.\r\n- The `greaterThan`, `greaterThanOrEqualTo`, `minimumCharacters`, and `minimumLength` properties should be consolidated into a singular `minimum` property. It should be explained how the property functions differently depending on the `type` property.\r\n- The `lessThan`, `lessThanOrEqualTo`, `maximumCharacters`, and `maximumLength` properties should be consolidated into a singular `maximum` property. It should be explained how the property functions differently depending on the `type` property.\r\n- The `divisibleBy` and `notDivisibleBy` properties are very niche and should be removed.","readmeFilename":"README.md"}