{"_id":"approved","_rev":"38-6ec403c09d3926b46c16d17f37065c17","name":"approved","description":"Schema-based data filtering, validation and error handling.","dist-tags":{"latest":"2.1.2"},"versions":{"0.1.0":{"name":"approved","version":"0.1.0","description":"An elegant and intuitive way to data validation and error handling.","main":"dist/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","gitHead":"001bf439620e61a29c0879b947b6f0f76cca4754","_id":"approved@0.1.0","_shasum":"c20df4b8095e12e0f04a6275b596c88cc3e9fb3b","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"c20df4b8095e12e0f04a6275b596c88cc3e9fb3b","tarball":"https://registry.npmjs.org/approved/-/approved-0.1.0.tgz","integrity":"sha512-QnLw9Hff2HHg0gVJ18CbRQg+rnKLyVg2MCOQ0wddsmGDAvQfJstDLWk5tKDZLrCi1jpLPNzxmRO82ZclukKC+w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEo2MNiIlfWWtOpQ4BHhyLKCYxr8eFoa1gMpFC1Y8fciAiAOigSF8zyS6y+e+tn/9AFbgaowQndbDSqX/PBHaLx0uA=="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/approved-0.1.0.tgz_1466186438127_0.7990237732883543"}},"0.1.1":{"name":"approved","version":"0.1.1","description":"An elegant and intuitive way of synchronous and asynchronous data validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0"},"gitHead":"9b35a602501b06c24b5774ff93f7d06bb4c820c4","_id":"approved@0.1.1","_shasum":"e566e2b601a336b69b44570f550c44b26b5e2758","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"e566e2b601a336b69b44570f550c44b26b5e2758","tarball":"https://registry.npmjs.org/approved/-/approved-0.1.1.tgz","integrity":"sha512-0awvVygi+899HyWifPrKLmdc/ZwRkPvkngL3cgT3DHPMXfffPFZKWyNseXY7bjB6iNNAFrMcSSJxdB3Sn3nZpQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAxHpP1j3rtkxDzvDXUTiAHXM2uP2iTSch229UknOgTWAiEAkMdmYfW9KeaVE+mE2ivvsZ5tL9Pu3p1nlUxVTF+aT3U="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/approved-0.1.1.tgz_1466210288854_0.7584128328599036"}},"0.1.2":{"name":"approved","version":"0.1.2","description":"An elegant and intuitive way of synchronous and asynchronous data validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0"},"gitHead":"cf06f4fd4cd3e17dac04c2dcd79caf95ce4789bb","_id":"approved@0.1.2","_shasum":"50dffcceb5b015058be6fc74f4e2deacaaea6c80","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"50dffcceb5b015058be6fc74f4e2deacaaea6c80","tarball":"https://registry.npmjs.org/approved/-/approved-0.1.2.tgz","integrity":"sha512-g+TLwfvn1hXcM1AX7QFDovYyCjiCykjmUCk5yULZbV+UbyPOcwYzIeAkDfUp1c6Ajvy1WSAVpG+/M7H7KnHuKA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCWBkiHhpk23oPsmKzukzraJpHnGL/BsJqTxYUpVG06HwIgB/kEi0YUZiLi3atPolZGMcEdFLcaNEPfbod9JAzoRLo="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/approved-0.1.2.tgz_1466210485267_0.9261642869096249"}},"0.1.3":{"name":"approved","version":"0.1.3","description":"An elegant and intuitive way of synchronous and asynchronous data validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0"},"gitHead":"aae54d40019c390afab75f3422463221839dfd31","_id":"approved@0.1.3","_shasum":"607eb39308a153dec3d6545811c7d5221edcb29d","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"607eb39308a153dec3d6545811c7d5221edcb29d","tarball":"https://registry.npmjs.org/approved/-/approved-0.1.3.tgz","integrity":"sha512-NiBHdSRHAZy6X+ZK3GDe5Rxiwdyx/LklTDNrHv3xtArAugsB8E0fQdD8j710M+OKh5TEgzVWQ5PG8OZlmfDCgg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEAePHaSLB8ATDaLLV1XLxDpJJt4+g+SYNu/7dh7Q6sIAiB6wYUwEcSo56iw/4pTCx4mm7XfPwIqrDrP17b+eShzMw=="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/approved-0.1.3.tgz_1466241298728_0.542297248961404"}},"0.2.0":{"name":"approved","version":"0.2.0","description":"An elegant and intuitive way of synchronous and asynchronous data validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0"},"gitHead":"7a395b0df95f9aa31c6322e1e70ede7a2b7652fc","_id":"approved@0.2.0","_shasum":"efd7995a0f9900d4a65664b76e35ab2b5d85b814","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"efd7995a0f9900d4a65664b76e35ab2b5d85b814","tarball":"https://registry.npmjs.org/approved/-/approved-0.2.0.tgz","integrity":"sha512-XtbziVDXqhTzDq4zePSTElLj74Mv/JAbA9PFaNAYIjQi5cMMMJzssSBN72sE3TULJTjy2S+cNylxHDexOBrBjQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC2RqJSKCaihwrpON6/zPE811Yen8C9YbyDGTr4rlAX3wIhAKJk8XS4cra4j4dG3SDuExbSi+rKxlKh6OYha8sATl/z"}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/approved-0.2.0.tgz_1466426124457_0.15993149136193097"}},"0.2.1":{"name":"approved","version":"0.2.1","description":"An elegant and intuitive way of synchronous and asynchronous data validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0"},"gitHead":"cdccfef8fed8bca2c1aae8f73be607305b742035","_id":"approved@0.2.1","_shasum":"8559d51fcfe360b795ab50f1f666198f690439a4","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"8559d51fcfe360b795ab50f1f666198f690439a4","tarball":"https://registry.npmjs.org/approved/-/approved-0.2.1.tgz","integrity":"sha512-yEDGBGr6x2OuyYPUq6jPF8GB27NoylvTkepbwLKFxTDW3fao2Pl00HHxOijO8qa8ovPvlEViwLhPi8BoOti10w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCR7wYAuAPSrPHAWvd1kssc2FPy86ENu+dvPFZnZj509QIhAJ0h887cnXzmWQ8AIEkikjRbCf9iMPSsdF63Y0tYJipi"}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/approved-0.2.1.tgz_1466426330347_0.7670188883785158"}},"0.3.0":{"name":"approved","version":"0.3.0","description":"An elegant and intuitive way of synchronous and asynchronous data validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0"},"gitHead":"2d5e114a300f5015cbc14f9f88b10716266f0188","_id":"approved@0.3.0","_shasum":"089deeffe903649eacfc86038caf2c338895ba36","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"089deeffe903649eacfc86038caf2c338895ba36","tarball":"https://registry.npmjs.org/approved/-/approved-0.3.0.tgz","integrity":"sha512-ulJhmwWaBTHuHJwWozqmZS6OKv8tS2xYhs5hvT5Y9LkdKP/YYucy+QWfEZ8+Ju8FWM7TETNwOpnIoCwjgCk4Mw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDMqfEWJ11OWjfBWV0aTEnfIIE1wrawfE2dSNBXuhId7gIgeF3D6bAq0dNOtnBr4FqWXUpsNT8ooToUJFfy0g6xe3w="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/approved-0.3.0.tgz_1466431438155_0.40450230590067804"}},"0.3.1":{"name":"approved","version":"0.3.1","description":"An elegant and intuitive way of synchronous and asynchronous data validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0"},"gitHead":"f7326a9c4ffa320aa796c73cf7bd0abdaa02e706","_id":"approved@0.3.1","_shasum":"72e1b0030c545ff48f699aafc23a61956f4624be","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"72e1b0030c545ff48f699aafc23a61956f4624be","tarball":"https://registry.npmjs.org/approved/-/approved-0.3.1.tgz","integrity":"sha512-tZZkJE09lNJLdrcUeQ0GtsFcE38zKaHbGKz6odCDGOORsdRUPjFaK5XtNPCuRx5GendWn4i7DzoQk3Srx6qtfg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCbyUnv6+kQcJT9u1/fioHLr+H7FfYbBGhCxR+AU9qougIgCAMBrWCpKbNZD14ZFYftCtOwwbv0rGt1ySm4JZ1zaG4="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/approved-0.3.1.tgz_1466431705979_0.1773484111763537"}},"0.3.2":{"name":"approved","version":"0.3.2","description":"An elegant and intuitive way of synchronous and asynchronous data validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0"},"gitHead":"41d7528c2ca8f827fe25ddc47e7262e3819cbaf7","_id":"approved@0.3.2","_shasum":"c43ee7101095194270b57c1ab64579ec4adddd43","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"c43ee7101095194270b57c1ab64579ec4adddd43","tarball":"https://registry.npmjs.org/approved/-/approved-0.3.2.tgz","integrity":"sha512-Sv5YNxQ8rcvq/vgf8UyJYce+Jw5+VEjtTNAI1a0FcEDvokP5ipfdTEKIOpkYePRU4lgJJv1B8J6GhwX1Nn17cA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD0TWBWQ5GPrH8fWnDRCveuVHpUo4ZVPfH/v1bSGem9UQIhAOOj/b8dB//JZDlz+XDv/vx4WyEfLG2d27vJ/i9FkXcK"}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/approved-0.3.2.tgz_1466434398821_0.7133264823351055"}},"0.3.3":{"name":"approved","version":"0.3.3","description":"An elegant and intuitive way of synchronous and asynchronous data validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","example":"babel-node ./example","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0","koa":"^2.0.0","koa-bodyparser":"^3.1.0"},"gitHead":"512d4db50282beb5d07a38776085e546934190e9","_id":"approved@0.3.3","_shasum":"2ccc6e7cedc32d8b4c7b2db250541055cd88a045","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"2ccc6e7cedc32d8b4c7b2db250541055cd88a045","tarball":"https://registry.npmjs.org/approved/-/approved-0.3.3.tgz","integrity":"sha512-e2CN0pKmcmIgy+pxeuvRkopf+NTeaX6tA1o8Qq5h72kL6PsavgE3h9G7lNQOkJs6PDnU+Cayos9owBbmDEUkDQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICNKJFnqSjZb48gKKhh/PhRlhmJD84S97Qe2CVpo77ExAiEAtavY/YDYroiosp7FgfihrZSUQRIOCYefhzdSM5Gtpfk="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/approved-0.3.3.tgz_1466438048546_0.21633309498429298"}},"0.3.4":{"name":"approved","version":"0.3.4","description":"An elegant and intuitive way of synchronous and asynchronous data validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","example":"babel-node ./example","pretest":"npm run build","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"jest":{"testPathDirs":["dist"],"unmockedModulePathPatterns":["./"],"collectCoverage":true},"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0","jest-cli":"^12.1.1","koa":"^2.0.0","koa-bodyparser":"^3.1.0"},"gitHead":"72b66962f92a5a4e69cbad49e15c6a2c0ca8dbfe","_id":"approved@0.3.4","_shasum":"49471962c420b5fa4f64ac9c70bc47b5081e9957","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"49471962c420b5fa4f64ac9c70bc47b5081e9957","tarball":"https://registry.npmjs.org/approved/-/approved-0.3.4.tgz","integrity":"sha512-uKCz4aQYrsNs0fcSenlttKjKe7i3IsUxF7AAvsYBN5iNYjgRPccJIOdwTvlWEx9a6SqhnxbuSJpmoGXKUyR35g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCzXkesZDkduYf5Y7Utpy50YbrvhPT9yjrqCB1x45aA4gIgWP/pXi+QSBwVwd/GNRYGpxNSAtdiBmduV9cNbcTgKuQ="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/approved-0.3.4.tgz_1466442638288_0.5728728563990444"}},"0.3.5":{"name":"approved","version":"0.3.5","description":"An elegant and intuitive way of synchronous and asynchronous data validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","example":"babel-node ./example","pretest":"npm run build","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"jest":{"testPathDirs":["dist"],"unmockedModulePathPatterns":["./"],"collectCoverage":true},"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0","jest-cli":"^12.1.1","koa":"^2.0.0","koa-bodyparser":"^3.1.0"},"gitHead":"350c768c0b7d9cef03c6a36c85a6e835d1959367","_id":"approved@0.3.5","_shasum":"fcea771d8711e2257b7b173327598e4dc7ea86ff","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"fcea771d8711e2257b7b173327598e4dc7ea86ff","tarball":"https://registry.npmjs.org/approved/-/approved-0.3.5.tgz","integrity":"sha512-vqRaZ3eBbXbH7YyE3l9tHbh/ds/kKffllQs6fbGd237xhTcBCbMj/vxwnwfrUO8H9/A+sWotgGwndWi/t1ncGg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBbf7QYVK3vNaFaBSZ7ViKpTQJR7yTZqaVZumkQi3HXQIgfAPo5MO8zuFfD9fPfzY7XEdr8XYdBFNm0+VXVt+4qho="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/approved-0.3.5.tgz_1466444446066_0.1806589919142425"}},"0.3.6":{"name":"approved","version":"0.3.6","description":"An elegant and intuitive way of synchronous and asynchronous data validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","example":"babel-node ./example","pretest":"npm run build","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"jest":{"testPathDirs":["dist"],"unmockedModulePathPatterns":["./"],"collectCoverage":true},"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0","jest-cli":"^12.1.1","koa":"^2.0.0","koa-bodyparser":"^3.1.0"},"gitHead":"ebf9280ebba5df9c3eefc05cffa49f27ba4806d8","_id":"approved@0.3.6","_shasum":"51186f9bd51b3642ca6fce12c245f7d067e90f46","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"51186f9bd51b3642ca6fce12c245f7d067e90f46","tarball":"https://registry.npmjs.org/approved/-/approved-0.3.6.tgz","integrity":"sha512-XcTwA+AeUN26cVE5Q8maQmf3fETEuDyEHgtwy/vpnd7ybyUbsytKsrr7rENmzE1MoRg6UN1dZMrKXSZ2wDnRFg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQChTNsOaAA1ZZWRrG3yWc9roNGkVv8IS8SYUwlmmCR6xwIgLIlJpDfNOhkE16myToO666k1A+Nja5sldrtGAu0wFc0="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/approved-0.3.6.tgz_1466445751530_0.910924012074247"}},"0.3.7":{"name":"approved","version":"0.3.7","description":"An elegant and intuitive way of synchronous and asynchronous data validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","example":"babel-node ./example","pretest":"npm run build","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"jest":{"testPathDirs":["dist"],"unmockedModulePathPatterns":["./"],"collectCoverage":false},"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0","jest-cli":"^12.1.1","koa":"^2.0.0","koa-bodyparser":"^3.1.0"},"gitHead":"469fef42b7510f1358fefc314d04eb18d6c21202","_id":"approved@0.3.7","_shasum":"d7bf20970c34dd738042db52191d6d9574e4c9c4","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"d7bf20970c34dd738042db52191d6d9574e4c9c4","tarball":"https://registry.npmjs.org/approved/-/approved-0.3.7.tgz","integrity":"sha512-oWNKII2raHNynpir/teODlkYYMGsWU8LswRyV3d9qEzKnl6AbjKMwU7FeWD6x63yYP1MriqjI5vtcBIW+hnrrA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCf5ETihIhGKKXz4qy9+T9l0iGvt7rgUCBugPz8jrkwaAIgRngectjkAuEarWaNeU/wIAqW19EwIdXHQixByBnSU4E="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/approved-0.3.7.tgz_1466682251501_0.4994508360978216"}},"0.3.8":{"name":"approved","version":"0.3.8","description":"An elegant and intuitive way of synchronous and asynchronous data validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","example":"babel-node ./example","pretest":"npm run build","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"jest":{"testPathDirs":["dist"],"unmockedModulePathPatterns":["./"],"collectCoverage":false},"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0","jest-cli":"^12.1.1","koa":"^2.0.0","koa-bodyparser":"^3.1.0"},"gitHead":"bdb12f15d74e18fc5baf6f3b8637f31e2355a8e7","_id":"approved@0.3.8","_shasum":"b9b842f40a3e0755ec61ed61b38d9a42bea412b3","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"b9b842f40a3e0755ec61ed61b38d9a42bea412b3","tarball":"https://registry.npmjs.org/approved/-/approved-0.3.8.tgz","integrity":"sha512-sEJCaMBkt9F3IJQeskCv9XloQrnV+rtLCVTLR2ibEEjhGhEUWAYzReY7ZLHtezULJ1Vsquas/fRNBH9e0eDYUQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID6hAj2/7mUWLdLbLifr49W+nYLH6sboehJ8jsdBgotaAiEAwm7qUve8RN07Y2Mh69cH+cewFtHa3bAziocKrKv5TPY="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/approved-0.3.8.tgz_1466683262862_0.20348257990553975"}},"0.4.0":{"name":"approved","version":"0.4.0","description":"An elegant and intuitive way of synchronous and asynchronous data validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","example":"babel-node ./example","pretest":"npm run build","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"jest":{"testPathDirs":["dist"],"unmockedModulePathPatterns":["./"],"collectCoverage":false},"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0","jest-cli":"^12.1.1","koa":"^2.0.0","koa-bodyparser":"^3.1.0"},"gitHead":"d1bfbefa39c66696db16fcf97c7815c2b62f5ba1","_id":"approved@0.4.0","_shasum":"ae1e62dddab1662e214d904668951947e9e4f34b","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"ae1e62dddab1662e214d904668951947e9e4f34b","tarball":"https://registry.npmjs.org/approved/-/approved-0.4.0.tgz","integrity":"sha512-hCYpb2SzcOyG2rW57MJ1cg37u95daZ8jdCZ7zLAuFYgxKocdRDjYyhAUnCYxmRjxgjo0215GRQQYGhIRaYlUAA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFbgCmw/2SS6zXLLLvDi24bEfweSeYf9LyPBS+PUx48RAiARO4DnHDUNEWHx6m9PoMOGQC5zQKMzhBD4i2Az0kKc6Q=="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/approved-0.4.0.tgz_1466698315965_0.4725776317063719"}},"0.4.1":{"name":"approved","version":"0.4.1","description":"An elegant and intuitive way of synchronous and asynchronous data validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","example":"babel-node ./example","pretest":"npm run build","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"jest":{"testPathDirs":["dist"],"unmockedModulePathPatterns":["./"],"collectCoverage":false},"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0","jest-cli":"^12.1.1","koa":"^2.0.0","koa-bodyparser":"^3.1.0"},"gitHead":"6df805a688d314ab951c5312b2c174e1c5018dbd","_id":"approved@0.4.1","_shasum":"a051d31ca3f2c38dbb3d39badbe7d935474e1268","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"a051d31ca3f2c38dbb3d39badbe7d935474e1268","tarball":"https://registry.npmjs.org/approved/-/approved-0.4.1.tgz","integrity":"sha512-VGad6FBMUkMM9QWGV2K2sgm/1IkFYpYKSXcRo4+CcJFZAFdfhth8GPEwXh/JV3AvrrfNYuJb5Sau+JdSldjV3A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE4a14VBwbaFVwW8H0yb6lF8cV1C1GMkY19Fa4sn6SywAiAoyUE+4GJgDQ51BhVHW6nIqFB0pxqtlhmlgKZc5Ygdsg=="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/approved-0.4.1.tgz_1466699092353_0.6081617886666209"}},"0.4.2":{"name":"approved","version":"0.4.2","description":"An elegant and intuitive way of synchronous and asynchronous data validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","example":"babel-node ./example","pretest":"npm run build","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"jest":{"testPathDirs":["dist"],"unmockedModulePathPatterns":["./"],"collectCoverage":false},"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0","jest-cli":"^12.1.1","koa":"^2.0.0","koa-bodyparser":"^3.1.0"},"gitHead":"2d4cf54c878ac7e0fd03a3bca053c53550339ad5","_id":"approved@0.4.2","_shasum":"f3240c0077cd80f622cf75ac425976528c607547","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"f3240c0077cd80f622cf75ac425976528c607547","tarball":"https://registry.npmjs.org/approved/-/approved-0.4.2.tgz","integrity":"sha512-+QpD3bjp7WeDMT4EH2WeDfszrJ4nBoYoLLdiqJS4u7nj8gK/0iu3ROfVRo6qEp08xNhfPIHpIuRWo/HwF1M0mg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDQmGgHHrnZkgrUiA9UFi4uJ3z6MwHLxF2Du0gF4uIjVgIgNN6FMgDSneM9qlnEuLZD3NxoE7Oj6wtZ0kUMHqfD78g="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/approved-0.4.2.tgz_1466699911599_0.3328670682385564"}},"0.4.3":{"name":"approved","version":"0.4.3","description":"An elegant and intuitive way of synchronous and asynchronous data validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","example":"babel-node ./example","pretest":"npm run build","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"jest":{"testPathDirs":["dist"],"unmockedModulePathPatterns":["./"],"collectCoverage":false},"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0","jest-cli":"^12.1.1","koa":"^2.0.0","koa-bodyparser":"^3.1.0"},"gitHead":"0cc46a1c0a4b8d10985ed1108d5c070865feb6cc","_id":"approved@0.4.3","_shasum":"47751e61f5634d53b2450daa4ae67821b45b67c8","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"47751e61f5634d53b2450daa4ae67821b45b67c8","tarball":"https://registry.npmjs.org/approved/-/approved-0.4.3.tgz","integrity":"sha512-94fzAhUCqpIQKnKvI/FUfFowFbrh+ikxlpgWpI5ZQdiF+D9bW8cqoml/+CPzt1hv6hznlQIYpLP2+MGS/R7ylQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBRgQp1DwkJ9Pi+apL5GU6/Ev5YNGC1wSAhR7lfwBKruAiEAwjIaE7GKIHH6UVJY4Gr48rrFKSVXc7vospIb17GaeR4="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/approved-0.4.3.tgz_1466701804480_0.33429452520795166"}},"1.0.0":{"name":"approved","version":"1.0.0","description":"Schema-based data filtering, validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","example":"babel-node ./example","pretest":"npm run build","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"jest":{"testPathDirs":["dist"],"unmockedModulePathPatterns":["./"],"collectCoverage":false},"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0","jest-cli":"^12.1.1","koa":"^2.0.0","koa-bodyparser":"^3.1.0"},"gitHead":"2b257bf94927689254825f57bd571f7b33101838","_id":"approved@1.0.0","_shasum":"c1f0b257b59cfaf4070a15f93910ea119da6da84","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"c1f0b257b59cfaf4070a15f93910ea119da6da84","tarball":"https://registry.npmjs.org/approved/-/approved-1.0.0.tgz","integrity":"sha512-jIzj0KY1FyeiugQVkqBnantXepuWSU+Ls2jxmLfhORYJCYJ6lRzN9/xx7Kh6MMoem4o9Ja60pa3hP43gNEkORA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID72xfGOWRqAlib02HuX7lyFLb0TKUzoMcn+GwATJZ3tAiBhc/n8FUJMqi45IYsadIXWgpJGbUUSzQH8ltH4JaZtDQ=="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/approved-1.0.0.tgz_1466794730849_0.6794483470730484"}},"1.0.2":{"name":"approved","version":"1.0.2","description":"Schema-based data filtering, validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","example":"babel-node ./example","pretest":"npm run build","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"jest":{"testPathDirs":["dist"],"unmockedModulePathPatterns":["./"],"collectCoverage":false},"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0","jest-cli":"^12.1.1","koa":"^2.0.0","koa-bodyparser":"^3.1.0"},"gitHead":"136a79763063871d96cce1f798dce706e7b04926","_id":"approved@1.0.2","_shasum":"659d2ec8dfe9e689a78c22173f5b853911d5818d","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"659d2ec8dfe9e689a78c22173f5b853911d5818d","tarball":"https://registry.npmjs.org/approved/-/approved-1.0.2.tgz","integrity":"sha512-SAFErySJmlIDHlg8ZRI7EtmxMRH58M+462eqRLOmj5v9yV6d6NmaVSg6NTIwpScfE0p9pFnPmubd3fx3tKECpA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCoBpT2g1SyF+RZgH59Cn4cFZ6Gx56RF1aL1Z5h7ftiwAIhAKdM13mx0LdAr/TBIex+A4CPVKHfnhxTaYuD8daXj9d5"}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/approved-1.0.2.tgz_1466801134386_0.3106684014201164"}},"1.1.0":{"name":"approved","version":"1.1.0","description":"Schema-based data filtering, validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","example":"babel-node ./example","pretest":"npm run build","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"jest":{"testPathDirs":["dist"],"unmockedModulePathPatterns":["./"],"collectCoverage":false},"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0","jest-cli":"^12.1.1","koa":"^2.0.0","koa-bodyparser":"^3.1.0"},"gitHead":"fb2ebbf27001ed549d9fa908dbb2d5a350138160","_id":"approved@1.1.0","_shasum":"0ad56b390c2eea8c431ae094a759873ad4a14ed4","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"0ad56b390c2eea8c431ae094a759873ad4a14ed4","tarball":"https://registry.npmjs.org/approved/-/approved-1.1.0.tgz","integrity":"sha512-Sq509XJ5Xlc6FSEM4HaR5LA5ym3r0i8/dQjJ+OGoi27UCNrofNB1lqkIPiIPlEVjg6iVormPRD+wazACwBXmPQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCAbxje7+eZ+W3Ms7lGUHKsHD2WcrNo2hB+bPvNO7SWSQIgGdNAkH+FWTDlM8jVJQhtO61C8PLG9UwobNYowX5/6ew="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/approved-1.1.0.tgz_1466840215496_0.02318252995610237"}},"1.1.2":{"name":"approved","version":"1.1.2","description":"Schema-based data filtering, validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","example":"babel-node ./example","pretest":"npm run build","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"jest":{"testPathDirs":["dist"],"unmockedModulePathPatterns":["./"],"collectCoverage":false},"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0","jest-cli":"^12.1.1","koa":"^2.0.0","koa-bodyparser":"^3.1.0"},"gitHead":"75fa9598ad7b39fe38a3bfae0e59b7fbe1a9a7c1","_id":"approved@1.1.2","_shasum":"0e99f852cc28012b8f28ce91182b2262cffa142c","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"0e99f852cc28012b8f28ce91182b2262cffa142c","tarball":"https://registry.npmjs.org/approved/-/approved-1.1.2.tgz","integrity":"sha512-+uCJr7CEaH25gGTpuQhbw4C8TNpDhAv12QtGKdh2Y/Exn+9NerEbLPa9DDs0xOUh1N9AHVNLTYs8JSpfqKciOA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEts3Bvw3lRo805K11vLfBGHRy6UgEtVfcQ6uxPjFEzcAiEA8WZw38qOmkLx4JyLqKyxHe5RgWl9PCMh3PTwHY0FTQc="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/approved-1.1.2.tgz_1466840557838_0.6717783522326499"}},"1.1.4":{"name":"approved","version":"1.1.4","description":"Schema-based data filtering, validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","example":"babel-node ./example","pretest":"npm run build","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"jest":{"testPathDirs":["dist"],"unmockedModulePathPatterns":["./"],"collectCoverage":false},"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0","jest-cli":"^12.1.1","koa":"^2.0.0","koa-bodyparser":"^3.1.0"},"gitHead":"fe76f07937ca8ef144032d47739c5078a48166d6","_id":"approved@1.1.4","_shasum":"573831f0dd8642f5630cb7041dd67b2490d74c57","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"573831f0dd8642f5630cb7041dd67b2490d74c57","tarball":"https://registry.npmjs.org/approved/-/approved-1.1.4.tgz","integrity":"sha512-mnJpOAey8RoyLjr0ZxSccUsXPn/OufomxpWV22VEXIvkYvMjpB30xc/G07wtC486Ay87DpH+qEsD5h9gQYhWkw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF5Ux0XVZ43wCcNECG61e+e7mS+QRtlCHcBz8sWQQ+6AAiEAiR6/BQ4Vlsedd9l3vKVEvTTMndebmL7SwJFTsCgHgys="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/approved-1.1.4.tgz_1466842109315_0.9708156809210777"}},"1.1.5":{"name":"approved","version":"1.1.5","description":"Schema-based data filtering, validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","example":"babel-node ./example","pretest":"npm run build","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"jest":{"testPathDirs":["dist"],"unmockedModulePathPatterns":["./"],"collectCoverage":false},"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0","jest-cli":"^13.0.0","koa":"^2.0.0","koa-bodyparser":"^3.1.0"},"gitHead":"cb7c6e106315837fe77719ff44a588d5f61acace","_id":"approved@1.1.5","_shasum":"d6e44e7d4a89e5178e7d11dec6f089244fa36e47","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"d6e44e7d4a89e5178e7d11dec6f089244fa36e47","tarball":"https://registry.npmjs.org/approved/-/approved-1.1.5.tgz","integrity":"sha512-Z9WIzTwxQ5ZgLAKAB0v0KXR/EJCGIpqEPIa6rTQTT+Fpas2Pd8yjZ2VqF4hOTq6Qp+mUVPUS8PO7CACmVwOc7w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEDrv4hZ6PO7ajkU5UFhchAparpzeLNaPc0APCu5FJO3AiEA3w4IZq5rCniBhDRL3Jv4gjbEyxu0JfVUPMMg/EJflZo="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/approved-1.1.5.tgz_1466842376871_0.37460476043634117"}},"1.1.6":{"name":"approved","version":"1.1.6","description":"Schema-based data filtering, validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","example":"babel-node ./example","pretest":"npm run build","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"jest":{"testPathDirs":["dist"],"unmockedModulePathPatterns":["./"],"collectCoverage":false},"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0","jest-cli":"^13.0.0","koa":"^2.0.0","koa-bodyparser":"^3.1.0"},"gitHead":"5b768e7e6c403ce99c37e80a3f1c815f495c030b","_id":"approved@1.1.6","_shasum":"cb6f410662b5a8ec4ebd430d5e928ac905608dd9","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"cb6f410662b5a8ec4ebd430d5e928ac905608dd9","tarball":"https://registry.npmjs.org/approved/-/approved-1.1.6.tgz","integrity":"sha512-S4h/MxPryaaXN3++BveeLgHMza5GuTC16qMJd9gHZ9pif/X4xEnC5Oqucx/77MrctzIjzsGk3DVEAP3ReSzatw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD28n7N7Kt95tWHG4PpRxiDPKy5ydtxXt+iWpBILgvP+wIgVXbiV1Q/wMWkl2P517d3P2H7CwbPFSOE5NdEa9X8jvc="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/approved-1.1.6.tgz_1466843634228_0.9500662013888359"}},"1.2.0":{"name":"approved","version":"1.2.0","description":"Schema-based data filtering, validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","example":"babel-node ./example","pretest":"npm run build","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"jest":{"testPathDirs":["dist"],"unmockedModulePathPatterns":["./"],"collectCoverage":false},"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0","jest-cli":"^13.0.0","koa":"^2.0.0","koa-bodyparser":"^3.1.0","string":"^3.3.1"},"gitHead":"9d1d71c903a1a28819a7cdcb9c02b282acf429b3","_id":"approved@1.2.0","_shasum":"8d444d28c22f08fc38c50cb0af3ab8743d5a26d6","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"8d444d28c22f08fc38c50cb0af3ab8743d5a26d6","tarball":"https://registry.npmjs.org/approved/-/approved-1.2.0.tgz","integrity":"sha512-tTNMrlu7QVNreZX70IuvHXTOx4lm0os9n9vT2EVuBI7RmmB71jxaHlhI+3iJe2QOTh1TG9MP1pp/sfmcrh/7Xg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE86zGzDZ/V/liZgm3j0rXvzWK4Ywy0XvpeH1jeqQTQBAiEA3nqst05C35TSdAdbv6eEoVeG9uG9BbzutLeUTIqwkrA="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/approved-1.2.0.tgz_1466844892908_0.5396480662748218"}},"1.2.1":{"name":"approved","version":"1.2.1","description":"Schema-based data filtering, validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","example":"babel-node ./example","pretest":"npm run build","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"jest":{"testPathDirs":["dist"],"unmockedModulePathPatterns":["./"],"collectCoverage":false},"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0","jest-cli":"^13.0.0","koa":"^2.0.0","koa-bodyparser":"^3.1.0","string":"^3.3.1"},"gitHead":"c85851f4736a0039a5b49371cc517f87986a27a0","_id":"approved@1.2.1","_shasum":"38ff6473ca48d24f639b68e26878241ee0cdaf4a","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"38ff6473ca48d24f639b68e26878241ee0cdaf4a","tarball":"https://registry.npmjs.org/approved/-/approved-1.2.1.tgz","integrity":"sha512-Y7MI1nku93diU8IRTjJ7uVdinGk8xINJ51Kz65VKkPmgfzBkvc887PQi/UprnHU+5RkX4Qsr25lNcmpFnpsbxQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDXLPdufM2O6jm2+fqCG+H7F3m5i4WXgVAC7eC9jgWNVAIgaIzIHGihXVPDDBShrCSLjUz+UcsCbxJGTCfUl43nveo="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/approved-1.2.1.tgz_1466845943977_0.09956062864512205"}},"1.2.2":{"name":"approved","version":"1.2.2","description":"Schema-based data filtering, validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","example":"babel-node ./example","pretest":"npm run build","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"jest":{"testPathDirs":["dist"],"unmockedModulePathPatterns":["./"],"collectCoverage":false},"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0","jest-cli":"^13.0.0","koa":"^2.0.0","koa-bodyparser":"^3.1.0","string":"^3.3.1"},"gitHead":"21336283c8d6c3c24e26226ced6f3bb19c6ada38","_id":"approved@1.2.2","_shasum":"3e783578dd15c0c58202430ad051860094a799a1","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"3e783578dd15c0c58202430ad051860094a799a1","tarball":"https://registry.npmjs.org/approved/-/approved-1.2.2.tgz","integrity":"sha512-wuEfrCTIUUAw9+bRRW+TRPyXA2E9Pw/n2k80d4nioLrHoEJy+lvWQFewH0nlg4hKQ0xxVVgJuMfcj8eyadR+AQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCDSMGKj/KHKTfoSUjeUm6RmtbE2WwofcfPGuFLJNUQ3QIgTlJ9CZr+nIqlKw2ewOzqJw8eD0bv+r/BeVxLXeJdRes="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/approved-1.2.2.tgz_1466867056129_0.3452000811230391"}},"1.2.3":{"name":"approved","version":"1.2.3","description":"Schema-based data filtering, validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","example":"babel-node ./example","pretest":"npm run build","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"jest":{"testPathDirs":["dist"],"unmockedModulePathPatterns":["./"],"collectCoverage":false},"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0","jest-cli":"^13.0.0","koa":"^2.0.0","koa-bodyparser":"^3.1.0","string":"^3.3.1"},"gitHead":"c0e7ae4c93e0ac3109df00d43fe55dfba5095864","_id":"approved@1.2.3","_shasum":"8bc8df7334d5186dd2e425dbeb3aa68c3fdbc6ef","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"8bc8df7334d5186dd2e425dbeb3aa68c3fdbc6ef","tarball":"https://registry.npmjs.org/approved/-/approved-1.2.3.tgz","integrity":"sha512-YFChmE3jSVo8p6xFYBirAV8fviWnEC77HSTOfRyerjYJ3KonNjXeZRhblvOUhzMZkhq7bJRhGWs8ghtuYUOaJA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBfJRFSdZtRngqvO+mjMBpbJnbOyfxVXYabA3BT86QQkAiEA70rxTV4DWZtqaGHjLpGnJcnLKYS4pYvZa53+lDAtS4k="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/approved-1.2.3.tgz_1469008237125_0.739265084033832"}},"2.0.0":{"name":"approved","version":"2.0.0","description":"Schema-based data filtering, validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","example":"babel-node ./example","pretest":"npm run build","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"jest":{"testPathDirs":["dist"],"unmockedModulePathPatterns":["./"],"collectCoverage":false},"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0","jest-cli":"^13.0.0","koa":"^2.0.0","koa-bodyparser":"^3.1.0","string":"^3.3.1"},"gitHead":"23c69af7a52871b1ebf48a541d7af5ad4d48e2e0","_id":"approved@2.0.0","_shasum":"769a91590ccb7fb038c5af6fb18c7a7862bea1de","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"769a91590ccb7fb038c5af6fb18c7a7862bea1de","tarball":"https://registry.npmjs.org/approved/-/approved-2.0.0.tgz","integrity":"sha512-QfzIGVbY2odaJwDIjrk8KGRvovAY+/WmJjDXTPqNHjEoFWUrDM1MoK6pPMShThAGVjTCc6BISymuvZ8v5EEiFg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHcOFX5O15vC/7Tnwo8VhMyviw2atRN9/UstXWwxwCRcAiAGTMKehCRaEPu5ALkYiNjjQXVYvPMhn5h7bdsKT36jfw=="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/approved-2.0.0.tgz_1469175237590_0.41236671968363225"}},"2.0.2":{"name":"approved","version":"2.0.2","description":"Schema-based data filtering, validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","example":"babel-node ./example","pretest":"npm run build","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"jest":{"testPathDirs":["dist"],"unmockedModulePathPatterns":["./"]},"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0","jest-cli":"^13.0.0","koa":"^2.0.0","koa-bodyparser":"^3.1.0","string":"^3.3.1"},"gitHead":"12576804294d27a48ed78c50da8c3cac78c75ff8","_id":"approved@2.0.2","_shasum":"aed11c52e892c307c3f83089039a1aa876fde1d2","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"aed11c52e892c307c3f83089039a1aa876fde1d2","tarball":"https://registry.npmjs.org/approved/-/approved-2.0.2.tgz","integrity":"sha512-5pQcFkhYQDqMnlpyN6SBmwFlvYaV79StgwwMMeEnJJ8wY4hlzv5W+2+SsquXfZ0h4HbrLJRZ/llMzhEhDH00Sw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBctCobGYiDcnFn9Hm6MG77wb4WWp4gibVo5u9TJJlxIAiEA5FMk3PdkOlWoP7KbMISSMda5/zBQHcSaGTNmx6gBs/0="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/approved-2.0.2.tgz_1469179524273_0.5877570174634457"}},"2.1.0":{"name":"approved","version":"2.1.0","description":"Schema-based data filtering, validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","example":"babel-node ./example","pretest":"npm run build","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"jest":{"testPathDirs":["dist"],"unmockedModulePathPatterns":["./"]},"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0","jest-cli":"^13.0.0","koa":"^2.0.0","koa-bodyparser":"^3.1.0","string":"^3.3.1"},"gitHead":"2f587bd9c70190b65a24dfa9798a69f56567888e","_id":"approved@2.1.0","_shasum":"b42c6e6140bae6e0aebc063a903f6bd4185435a9","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"b42c6e6140bae6e0aebc063a903f6bd4185435a9","tarball":"https://registry.npmjs.org/approved/-/approved-2.1.0.tgz","integrity":"sha512-Kp8+JHL5qWUmOqzvvkpqq4JFtBi+KkVHLgkX8Z7pfiBB/0BZ4uVhZltXbOF5trtWr54mEReE4q4taFuKoXzwKw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC7jGo5yvvgRiuqtzhpZOTlZI6dax9hFjpQDLysH3y7wAIgZ+C8xZnwcWzheEIQLAhmZis3CFJkx+KP8ZEk60hcrpk="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/approved-2.1.0.tgz_1469180273466_0.7084356416016817"}},"2.1.1":{"name":"approved","version":"2.1.1","description":"Schema-based data filtering, validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","example":"babel-node ./example","pretest":"npm run build","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"jest":{"testPathDirs":["dist"],"unmockedModulePathPatterns":["./"]},"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0","jest-cli":"^13.0.0","koa":"^2.0.0","koa-bodyparser":"^3.1.0","string":"^3.3.1"},"gitHead":"71629344344134d12f6cdb87672607d187af1093","_id":"approved@2.1.1","_shasum":"c024db050e35f669551f0e2652b89a8bc185677a","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"c024db050e35f669551f0e2652b89a8bc185677a","tarball":"https://registry.npmjs.org/approved/-/approved-2.1.1.tgz","integrity":"sha512-LWerf4EbaJmxcRlJ5/c/M9DmtyMTs4Gt0ZzLzEv+mpVFSOm1CLajTQAE3YUj8syRUOAShEIrkSyI5nvu3DxNzQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCGM3Cf3y56MvcZ/+kTrzsQuCfDnNpYFArFrI3aW4ZV/gIgfjkxgPm0nfWUD/SR0uBJOYflPpr7YBl44L74rVRrdEw="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/approved-2.1.1.tgz_1469181180708_0.0779982169624418"}},"2.1.2":{"name":"approved","version":"2.1.2","description":"Schema-based data filtering, validation and error handling.","main":"dist/index.js","scripts":{"clean":"rm -Rf dist","prebuild":"npm run clean; mkdir -p dist","build":"babel src -d dist","prepublish":"npm run build","example":"babel-node ./example","pretest":"npm run build","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"jest":{"testPathDirs":["dist"],"unmockedModulePathPatterns":["./"]},"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"license":"MIT","bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"homepage":"https://github.com/xpepermint/approvedjs#readme","dependencies":{"dottie":"^1.1.1","es6-error":"^3.0.0","validator":"^5.4.0"},"devDependencies":{"babel-cli":"^6.10.1","babel-preset-node5":"^11.1.0","jest-cli":"^13.0.0","koa":"^2.0.0","koa-bodyparser":"^3.1.0","string":"^3.3.1"},"gitHead":"2db4bb5d28f9d5dd031e8da12c5ca4cb3ae1b81f","_id":"approved@2.1.2","_shasum":"2a2c0c5a87208409c4a94c61a3bc24df46160374","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"xpepermint","email":"xpepermint@gmail.com"},"dist":{"shasum":"2a2c0c5a87208409c4a94c61a3bc24df46160374","tarball":"https://registry.npmjs.org/approved/-/approved-2.1.2.tgz","integrity":"sha512-Zt3WNx6DCOiUseyvHmN1xR7ETELsy6b1fnnLFjulIVMvDw7Wa7n5B+YFLm4xZgqgkS/sLmuDpwp0f1tPWeRghA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEPw9dMGAJAUxuphHIk6d2ZUG5jcA4SDVT0Gf2nJ1wNtAiBq/OVDDV5uPgC7ZTEtipwmsOM72T49OV0cgXl3LNeljA=="}]},"maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/approved-2.1.2.tgz_1469182420063_0.13532569888047874"}}},"readme":"![Build Status](https://travis-ci.org/xpepermint/approvedjs.svg?branch=master)&nbsp;[![NPM Version](https://badge.fury.io/js/approved.svg)](https://badge.fury.io/js/approved)&nbsp;[![Dependency Status](https://gemnasium.com/xpepermint/approvedjs.svg)](https://gemnasium.com/xpepermint/approvedjs)\n\n# approved.js\n\n> Schema-based data filtering, validation and error handling.\n\nApproved.js allows for filtering and validating complex javascript objects and error handling. It has a simple, unified and beautiful API which fully supports asynchronous processing.\n\nIt is an open source package. The [source code](https://github.com/xpepermint/approvedjs) is available on GitHub where you can also find our [issue tracker](https://github.com/xpepermint/approvedjs/issues).\n\n<img src=\"giphy.gif\" width=\"300\" />\n\n## Motivation\n\nWe often write code which validates data and handles errors. We do it when we write API controllers, GraphQL mutations, before we try to write something into a database and in many other cases where we manipulate and mutate data.\n\nEvery time you start writing validations, you ask yourself the same questions. You try hard finding the best way to get a clean and beautiful solution. At the end you desperately start googling for answers, searching best practices and possible conventions.\n\nWe need to write a clean and beautiful code to keep our projects long-term sustainable. Validation happens before actual action and error handling happens afterwords - validation and error handling go hand in hand. Approved.js has been written with that in mind.\n\n## Installation\n\nInstall the package by running the command below.\n\n```\n$ npm install --save approved\n```\n\nContinue reading to see how this package is supposed to be used.\n\n## Usage\n\nBelow, we create a simple example to show the benefit of using Approved.js in your Node.js projects. In this tutorial we filter and validate data and then create a new document in a database. If something goes wrong, an error is handled and parsed into a user-friendly format.\n\nTo make things as clean as possible, we use [Babel](https://babeljs.io/) with ES7 features thus we can wrap our code into the `async` block.\n\n```js\n(async function() {\n  // code here\n})().catch(console.error);\n```\n\nFor the purpose of this tutorial let's first define an imaginary `data` object which we will later validate and save to the database.\n\n```js\nconst data = {\n  firstName: 'John',\n  lastName: 'Smith',\n  email: 'John@Smith.com'\n}\n```\n\nNext, let's create a simple schema for the data above.\n\n```js\nimport {Approval} from 'approved';\n\nlet schema = new Approval();\n```\n\nWe can filter `data` and extract only the paths defined by filters. Filters also cast data to the right data type.\n\n```js\nschema.addFilter({\n  path: 'email',\n  type: 'string'\n});\n\ndata = await schema.filter(data); // check the API for method options\n```\n\nWe define a filter and then we call the `filter` method to extract, cast and modify the data object.\n\nLet's continue by adding validations. We need to verify the email before we store it to the database.\n\n```js\nschema.addValidation({\n  path: 'name',\n  validator: 'isPresent',\n  message: 'must be present'\n});\n\ntry {\n  await schema.validate(data); // check the API for method options\n} catch(e) {\n  // validation failed\n}\n```\n\nSimilar to filters, we first add the validation, then we execute the `validate` method to verify the `data` object. If validation fails the method throws a `ValidationError`. \n\nLet's update the try/catch block above with an error handler.\n\n```js\nlet errors = null;\ntry {\n  await schema.validate();\n} catch(e) {\n  errors = await schema.handle(e); // check the API for method options\n  if (!errors) throw e; // unhandled error\n}\n```\n\nTo show the real benefit of the `handle` method let's use the [MongoDB driver](https://docs.mongodb.com/ecosystem/drivers/node-js/) to store `data`, with a unique index on the `email` field, named `uniqueEmail`. This triggers the `E11000` error when the code is executed for the second time. How to use the MongoDB driver and how to [create a unique index](https://docs.mongodb.com/manual/reference/method/db.collection.createIndex/) is out of scope for this tutorial and you'll have to figure that yourself.\n\n```js\nimport {MongoClient} from 'mongodb';\n\nconst mongo = await MongoClient.connect('mongodb://localhost:27017/approved');\n```\n\nThe `handle` method handles the `ValidationError` by default. To handle a `MongoError`, we need to define a handler. Here we also use the [mongo-error-parser](https://github.com/xpepermint/mongo-error-parser) helper for parsing MongoError message (don't forget to install it).\n\n```js\nimport mongoParser from 'mongo-error-parser';\n\nschema.addHandler({\n  path: 'email',\n  error: 'MongoError',\n  block: async (err) => err.code === 11000 && mongoParser(err).index === 'uniqueEmail',\n  message: 'is already taken'\n});\n```\n\nWe can now update the try/catch block defined earlier with the logic for storing data to the database.\n\n```js\nlet errors = null;\ntry {\n  await schema.validate(data);\n  data = await mongo.collection('users').insertOne(data);\n} catch(e) {\n  errors = await schema.handle(e);\n  if (!errors) throw e; // unhandled error\n}\n```\n\nThat's it. We can now show a well structured data object to a user.\n\n```js\nconsole.log({data, errors}); // cool for GraphQL\n```\n\nNote that it's a good practice to store schema classes into the `./approvals` directory. See the included example (`npm run example`) and the source code for more.\n\n## API\n\nThe core of this package represents the `Approval` class.\n\n```js\nimport {Approval} from 'approved';\n\nconst schema = new Approval(config);\n```\n\n| Param | Type | Required | Default | Description\n|-------|------|----------|---------|------------\n| config | Object | No | - | A configuration object accepting keys `types={}`, `validators={}`, `filters=[]`, `validations=[]` and `handlers=[]`.\n\n### Instance Variables\n\n#### schema.filters\n\n> Holds a list of defined inout filters.\n\n#### schema.handlers\n\n> Holds a list of defined error handlers.\n\n#### schema.types\n\n> Holds a list of defined data types.\n\n#### schema.validations\n\n> Holds a list of defined validations.\n\n#### schema.validators\n\n> Holds a list of defined validators.\n\n### Instance Methods\n\n#### schema.addFilter(filter)\n\n> Adds a filter to the list of filters.\n\n#### schema.addHandler(handler)\n\n> Adds a handler to the list of handlers.\n\n#### schema.addValidation(validation)\n\n> Adds a validation to the list of validations.\n\n#### schema.filter(data, context, {strict});\n\n> Filters a data object against the filters provided by the `addFilter` method.\n\n| Param | Type | Required | Default | Description\n|-------|------|----------|---------|------------\n| data | Object | Yes | - | A data object.\n| context | Object | No | {} | A context object which is passed into filters.\n| strict | Boolean | No | false | Removes data object keys which are not defined by the filters when `true`.\n\n#### schema.handle(error, context);\n\n> Handles the provided Error object based on the provided handlers.\n\n| Param | Type | Required | Description\n|-------|------|----------|------------\n| error | Object | Yes | Error class instance or an error object.\n| context | Object | No | {} | A context object which is passed into handlers.\n\n#### schema.removeFilterAtIndex(index)\n\n> Removes a filter from the list of filters.\n\n#### schema.removeHandlerAtIndex(index)\n\n> Removes a handler from the list of handlers.\n\n#### schema.removeValidationAtIndex(index)\n\n> Removes a validation from the list of validations.\n\n#### schema.setType(name, fn)\n\n> Registers a data type method.\n\n| Param | Type | Required | Description\n|-------|------|----------|------------\n| name | String | Yes | Type name.\n| fn | Function | Yes | Type method.\n\n#### schema.setValidator(name, fn)\n\n> Registers a validator.\n\n| Param | Type | Required | Description\n|-------|------|----------|------------\n| name | String | Yes | Validator name.\n| fn | Function | Yes | Validator method.\n\n#### schema.unsetType(name)\n\n> Unregisters a data type method.\n\n| Param | Type | Required | Description\n|-------|------|----------|------------\n| name | String | Yes | Type name.\n\n#### schema.unsetValidator(name)\n\n> Unregisters a validator.\n\n| Param | Type | Required | Description\n|-------|------|----------|------------\n| name | String | Yes | Validator name.\n\n#### schema.validate(data, context);\n\n| Param | Type | Required | Default | Description\n|-------|------|----------|---------|------------\n| data | Object | Yes | - | A data object.\n| context | Object | No | {} | A context object which is passed into validators.\n\n> Validates the data object against the validations provided by the `addValidation` method. It throws a `ValidationError` if an object is not valid.\n\n### Filters\n\nFilter object defines how a value of an data object key is casted and filtered by the `filter` method.\n\n| Key | Type | Required | Description\n|-----|------|----------|------------\n| path | String | Yes | Key name of a data object (e.g. firstName). Nested object paths are also supported (e.g. `users.name.first`)\n| type | String | Yes | Data type name (possible values are `boolean`, `date`, `float`, `integer` or `string`).\n| block | Function | No | Synchronous or asynchronous resolver for modifying key value (e.g. `async (s) => s`).\n\n```js\nconst filter = {\n  path: 'email',\n  type: 'string',\n  block: (s, o) => s.toLowerCase()\n};\n```\n\n### Validations\n\nValidation object defines how a value of a data object key is validated by the `validate` method.\n\n| Key | Type | Required | Description\n|-----|------|----------|------------\n| path | String | Yes | Key name of a data object (e.g. firstName). Nested object paths are also supported (e.g. `users.name.first`)\n| validator | String | Yes | Validator name (see the `Built-in Validators` section for a list of available names).\n| options | Object | No | Validator settings.\n| message | String | Yes | Output error message explaining what went wrong.\n\n```js\nlet validation = {\n  path: 'name',\n  validator: 'isPresent',\n  message: 'must be present'\n};\n```\n\n#### Built-in Validators\n\n##### contains\n\n> Checks if the string contains the seed.\n\n| Option | Type | Required | Default | Description\n|--------|------|---------|----------|------------\n| seed | String | Yes | - | The seed which should exist in the string.\n\n##### isAbsent\n\n> Validates that the specified attribute is blank.\n\n##### isBase64\n\n> Validates that the specified attribute is base64 encoded string.\n\n##### isByteLength\n\n> Validates that the specified attribute is a string where length (in bytes) falls in a range.\n\n| Option | Type | Required | Default | Description\n|--------|------|----------|---------|------------\n| min | Integer | Yes | 0 | Minimum number in bytes.\n| max | Integer | Yes | - | Maximum number in bytes.\n\n##### isCreditCard\n\n> Validates that the specified attribute is a credit card number.\n\n##### isDate\n\n> Validates that the specified attribute is a date string.\n\n| Option | Type | Required | Default | Description\n|--------|------|----------|---------|------------\n| format | String | No | - | Date format (possible value is `iso8601`).\n\n##### isEmail\n\n> Validates that the specified attribute is an email.\n\n| Option | Type | Required | Default | Description\n|--------|------|----------|----------|------------\n| allowDisplayName | Boolean | No | false | When set to true, the validator will also match `name <address>`.\n| allowUtf8LocalPart | Boolean | No | false | When set to false, the validator will not allow any non-English UTF8 character in email address' local part.\n| requireTld | Boolean | No | true | When set to false, email addresses without having TLD in their domain will also be matched.\n\n##### isExcluded\n\n> Validates that the specified attribute is not in an array of restricted values.\n\n| Option | Type | Required | Description\n|--------|------|----------|------------\n| values | Array | Yes | Array of restricted values.\n\n##### isFQDN\n\n> Validates that the specified attribute is a fully qualified domain name (e.g. domain.com).\n\n| Option | Type | Required | Description\n|--------|------|----------|------------\n| requireTld | Boolean | No | Require top-level domain name.\n| allowUnderscores | Boolean | No | Allow string to include underscores.\n| allowTrailingDot | Boolean | No | Allow string to include a trailing dot.\n\n##### isHexadecimal\n\n> Validates that the specified attribute is a hexadecimal number.\n\n##### isHexColor\n\n> Validates that the specified attribute is a hexadecimal color string.\n\n##### isIncluded\n\n> Validates that the specified attribute is in an array of allowed values.\n\n| Option | Type | Required | Description\n|--------|------|----------|------------\n| values | Array | Yes | Array of allowed values.\n\n##### isIP\n\n> Validates that the specified attribute is an IP.\n\n| Option | Type | Required | Default | Description\n|--------|------|----------|---------|-------------\n| version | Integer | No | - | IP version (4 or 6).\n\n##### isISBN\n\n> Validates that the specified attribute is an [International Standard Book Number](https://en.wikipedia.org/wiki/International_Standard_Book_Number).\n\n| Option | Type | Required | Default | Description\n|--------|------|----------|---------|------------\n| version | Integer | No | - | IP version (10 or 13).\n\n##### isISIN\n\n> Validates that the specified attribute is an [International Securities Identification](https://en.wikipedia.org/wiki/International_Securities_Identification_Number).\n\n##### isJSON\n\n> Validates that the specified attribute is a stringified JSON string.\n\n##### isLength\n\n> Validates the length of the specified attribute.\n\n| Option | Type | Required | Default | Description\n|--------|------|----------|----------|------------\n| min | Number | No | 0 | Minimum number of characters.\n| max | Number | No | - | Maximum number of characters.\n\n##### isLowercase\n\n> Validates that the specified attribute is lowercase.\n\n##### isMACAddress\n\n> Validates that the specified attribute is a MAC address.\n\n##### isMongoId\n\n> Validates that the specified attribute is a valid hex-encoded representation of a [MongoDB ObjectId](http://docs.mongodb.org/manual/reference/object-id/).\n\n##### isPresent\n\n> Validates that the specified attribute is not blank.\n\n##### isUppercase\n\n> Validates that the specified attribute is uppercase.\n\n##### isURL\n\n> Validates that the specified attribute is an URL.\n\n| Option | Type | Required | Default | Description\n|--------|------|----------|---------|------------\n| protocols | Array | No | ['http', 'https', 'ftp'] | List of known protocols (e.g. http, https, ftp).\n| requireTld | Boolean | No | true | Require top-level domain name.\n| requireProtocol | Boolean | No | true | Require URL protocol.\n| requireValidProtocol | Boolean | No | true | Require a valid protocol.\n| allowUnderscores | Boolean | No | false | Allow using underscores.\n| allowTrailingDot | Boolean | No | false | Allow trailing dot.\n| allowProtocolRelativeUrls | Boolean | No | false | Allow protocol relative urls (e.g. //foobar.com)\n\n##### isUUID\n\n> Validates that the specified attribute is a [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier).\n\n| Option | Type | Required | Description\n|--------|------|----------|------------\n| version | Integer | No | UUID version (3, 4 or 5).\n\n##### isValid\n\n> Validates the specified attribute against the provided block function. If the function returns true then the attribute is treated as valid.\n\n| Option | Type | Required | Description\n|--------|------|----------|------------\n| block | Function | Yes | Synchronous or asynchronous function (e.g. `async () => true`)\n\n```js\nlet validation = {\n  path: 'name',\n  validator: 'isValid',\n  options: {block: async (value, options) => true},\n  message: 'must be present'\n};\n```\n\n##### matches\n\n> Validates that the specified attribute matches the pattern.\n\n| Key | Type | Required | Description\n|-----|------|----------|------------\n| pattern | String | Yes | Regular expression pattern.\n| modifiers | String | No | Regular expression modifiers.\n\n### Handlers\n\nHandler object defines how an error is handled by the `handle` method.\n\n| Key | Type | Required | Description\n|-----|------|----------|------------\n| path | String | Yes | The output key name or a key name of a data object to which the error refers to.\n| error | Object | Yes | Error class instance.\n| block | Function | No | Synchronous or asynchronous helper to additionally check if the handler applies to the provided error.\n| message | String | Yes | Output error message explaining what went wrong.\n\n```js\nlet handler = {\n  path: 'request',\n  error: 'Error',\n  block: async (err) => err.code === 400,\n  message: 'bad request'\n};\n```\n\n## Advanced Usage\n\nYou can customize how this module behaves by extending the Schema class or by defining your custom types and validators (check the source code for more).\n\n### Custom Type\n\nUse the `setType` method to define a custom data type.\n\n```js\nlet schema = new Schema();\n\nschema.setType('cooltype', (value, context) => {\n  return `cool-${value}`; // not a very smart example :)\n});\n```\n\n### Custom Validator\n\nUse the `setValidator` method to define a custom validator.\n\n```js\nlet schema = new Schema();\n\nschema.setValidator('isCool', async (value, context) => {\n  return str === 'cool'; // not a very smart example :)\n});\n```\n\n## Contribute\n\nLet's make this package even better. Please contribute!\n\n## License (MIT)\n\n```\nCopyright (c) 2016 Kristijan Sedlak <xpepermint@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n```\n","maintainers":[{"name":"xpepermint","email":"xpepermint@gmail.com"}],"time":{"modified":"2022-06-13T03:19:21.633Z","created":"2016-06-17T18:00:39.279Z","0.1.0":"2016-06-17T18:00:39.279Z","0.1.1":"2016-06-18T00:38:11.732Z","0.1.2":"2016-06-18T00:41:26.547Z","0.1.3":"2016-06-18T09:14:59.899Z","0.2.0":"2016-06-20T12:35:25.863Z","0.2.1":"2016-06-20T12:38:53.259Z","0.3.0":"2016-06-20T14:03:59.688Z","0.3.1":"2016-06-20T14:08:28.929Z","0.3.2":"2016-06-20T14:53:21.814Z","0.3.3":"2016-06-20T15:54:11.380Z","0.3.4":"2016-06-20T17:10:39.897Z","0.3.5":"2016-06-20T17:40:47.509Z","0.3.6":"2016-06-20T18:02:34.653Z","0.3.7":"2016-06-23T11:44:13.641Z","0.3.8":"2016-06-23T12:01:05.024Z","0.4.0":"2016-06-23T16:11:59.682Z","0.4.1":"2016-06-23T16:24:54.518Z","0.4.2":"2016-06-23T16:38:34.646Z","0.4.3":"2016-06-23T17:10:06.766Z","1.0.0":"2016-06-24T18:58:53.275Z","1.0.2":"2016-06-24T20:45:37.503Z","1.1.0":"2016-06-25T07:36:57.802Z","1.1.2":"2016-06-25T07:42:40.938Z","1.1.4":"2016-06-25T08:08:31.691Z","1.1.5":"2016-06-25T08:12:59.339Z","1.1.6":"2016-06-25T08:33:56.581Z","1.2.0":"2016-06-25T08:54:55.856Z","1.2.1":"2016-06-25T09:12:26.738Z","1.2.2":"2016-06-25T15:04:18.448Z","1.2.3":"2016-07-20T09:50:38.500Z","2.0.0":"2016-07-22T08:14:00.130Z","2.0.2":"2016-07-22T09:25:26.898Z","2.1.0":"2016-07-22T09:37:55.291Z","2.1.1":"2016-07-22T09:53:02.906Z","2.1.2":"2016-07-22T10:13:42.008Z"},"homepage":"https://github.com/xpepermint/approvedjs#readme","keywords":["validation","validations","error","errors","handling","data","input","check","catch","exception","exceptions","framework"],"repository":{"type":"git","url":"git+https://github.com/xpepermint/approvedjs.git"},"author":{"name":"xpepermint","url":"Kristijan Sedlak"},"bugs":{"url":"https://github.com/xpepermint/approvedjs/issues"},"license":"MIT","readmeFilename":"README.md","users":{"xpepermint":true}}