{"_id":"@byted/koa-validation","_rev":"4-8d024e541007aa06b1a07dd78517477d","name":"@byted/koa-validation","description":"The Koa Validation is a single point validation library that enables you to validate params, body, queries, files and headers","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@byted/koa-validation","version":"1.0.0","description":"The Koa Validation is a single point validation library that enables you to validate params, body, queries, files and headers","main":"lib/validate.js","scripts":{"test":"NODE_ENV=test mocha --require should --reporter spec","test-cov":"NODE_ENV=test node ./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha -- --require should","test-travis":"NODE_ENV=test node ./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha --report lcovonly -- --require should"},"keywords":["koa","middleware","validation","filters","validator","koa-validation","koa validation","file validation"],"repository":{"type":"git","url":"git+https://github.com/srinivasiyer/koa-validation.git"},"author":{"name":"Srinivas Iyer","email":"srinivasiyer87@gmail.com"},"license":"ISC","dependencies":{"co-fs-extra":"^1.1.0","fs-extra":"^4.0.1","koa-better-body":"^1.0.17","mime-types":"^2.1.7","moment-timezone":"^0.4.1","validator":"^4.0.5"},"devDependencies":{"co":"^4.6.0","istanbul-harmony":"^0.3.16","koa":"^2.3.0","koa-qs":"^2.0.0","koa-router":"^7.2.1","mocha":"^2.3.3","should":"^7.1.1","supertest":"^1.1.0"},"gitHead":"91fa22423c9633a7b3a0fd69ab20fe88efda5b40","bugs":{"url":"https://github.com/srinivasiyer/koa-validation/issues"},"homepage":"https://github.com/srinivasiyer/koa-validation#readme","_id":"@byted/koa-validation@1.0.0","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"tsyeyuanfeng","email":"tsyeyuanfeng@126.com"},"dist":{"integrity":"sha512-t1Im5mfx41R6HnvG/yf8pTpOgAbKqRWTIB8Lpr2l18b1e4frBIhWFZOh8avIQPLmkjQZT2AzwH2jjNnUzBQu3A==","shasum":"5c1b7263b22247cdd28b18b6629ceaa997881228","tarball":"https://registry.npmjs.org/@byted/koa-validation/-/koa-validation-1.0.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqKWkeA3d/onNoSeDhlKbM9tiFwLd4DYdao62JjivSwgIgAigtSKhe76iaIEa4aagP0AAkyYz8qvwT2764L2lz068="}]},"maintainers":[{"name":"tsyeyuanfeng","email":"tsyeyuanfeng@126.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/koa-validation-1.0.0.tgz_1504594885054_0.08541832794435322"}},"1.0.1":{"name":"@byted/koa-validation","version":"1.0.1","description":"The Koa Validation is a single point validation library that enables you to validate params, body, queries, files and headers","main":"lib/validate.js","scripts":{"test":"NODE_ENV=test mocha --require should --reporter spec","test-cov":"NODE_ENV=test node ./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha -- --require should","test-travis":"NODE_ENV=test node ./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha --report lcovonly -- --require should"},"keywords":["koa","middleware","validation","filters","validator","koa-validation","koa validation","file validation"],"repository":{"type":"git","url":"git+https://github.com/srinivasiyer/koa-validation.git"},"author":{"name":"Srinivas Iyer","email":"srinivasiyer87@gmail.com"},"license":"ISC","dependencies":{"co-fs-extra":"^1.1.0","fs-extra":"^4.0.1","koa-better-body":"^1.0.17","mime-types":"^2.1.7","moment-timezone":"^0.4.1","validator":"^4.0.5"},"devDependencies":{"co":"^4.6.0","istanbul-harmony":"^0.3.16","koa":"^2.3.0","koa-qs":"^2.0.0","koa-router":"^7.2.1","mocha":"^2.3.3","should":"^7.1.1","supertest":"^1.1.0"},"gitHead":"a9e143048ac252edb0ecf57570baed574804914a","bugs":{"url":"https://github.com/srinivasiyer/koa-validation/issues"},"homepage":"https://github.com/srinivasiyer/koa-validation#readme","_id":"@byted/koa-validation@1.0.1","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"tsyeyuanfeng","email":"tsyeyuanfeng@126.com"},"dist":{"integrity":"sha512-vefubAsF6eeLJi37bMq3OYJqyEIWIZmic24lvSqRGEAT7Z2Hnk1WYWz/Uv0du0D1JgyAPmVI50TZKN0cRwsMUA==","shasum":"3462c54877f69428a9f1a30021015eccd77eec6c","tarball":"https://registry.npmjs.org/@byted/koa-validation/-/koa-validation-1.0.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDklvagjiniR++0NHNGwnilG91ZH9iKKN7KkR+xx+b+xwIhAPOJrhD3t8dUE5NQMlOCBlKYWr3XaXrxd1EMCelxQGjs"}]},"maintainers":[{"email":"meicx@bupt.edu.cn","name":"meicx"},{"email":"2546116686@qq.com","name":"weiheran"},{"email":"turnsun27@163.com","name":"turnsun"},{"email":"wanghuan.fe@bytedance.com","name":"luara"},{"email":"ljianjianl@163.com","name":"kerryjianlan"},{"email":"luowen19920829@gmail.com","name":"luowen"},{"email":"casfe@126.com","name":"aspirin"},{"email":"307987279@qq.com","name":"dongyang03"},{"email":"yd2005232@163.com","name":"yangde"},{"email":"whuxjj92@gmail.com","name":"animabear"},{"email":"tsyeyuanfeng@126.com","name":"tsyeyuanfeng"},{"email":"fansekey@gmail.com","name":"fansekey"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/koa-validation-1.0.1.tgz_1504595441519_0.46033316128887236"}}},"readme":"# Koa Validation\n\nThis is a fork of Koa Validation. I add koa2 support to it.\nKoa Validation is a validation middleware for Koa. Using Koa Validation, you can validate\nurl params, url queries, request bodies, headers as well as files. The module also allows for nested\nqueries and nested jsons to be validated. The plugin uses generators and hence syncronous database validations\ncan alse be made. The module can also be used to filter values sent as well as performing after actions on files uploaded.\n\nThe module can also be extended to add custom rules, filters and actions based on convenience.\n\n##Installation\n\n```npm install koa-validation```\n\n##Field Validations\n\n```js\n\nconst Koa = require('koa');\nconst Router = require('koa-router');\nconst koaBody = require('koa-better-body');\n\nconst app = new Koa();\nconst router = new Router();\n\nrequire('koa-qs')(app, 'extended');\n\nconst validate = require('@byted/koa-validation');\n\napp.use(koaBody({\n    'multipart': true\n}));\napp.use(validate());\nrouter.post('/', async function(ctx, next){\n    await ctx.validateBody(\n        {\n            name: 'required|minLength:4',\n            girlfiend: 'requiredIf:age,25',\n            wife: 'requiredNotIf:age,22',\n            foo: 'requiredWith:bar,baz',\n            foobar: 'requiredWithAll:barbaz,bazbaz',\n            gandalf: 'requiredWithout:Saruman',\n            tyrion: 'requiredWithoutAll:tywin,cercei',\n            age: 'numeric',\n            teenage: 'digitsBetween:13,19',\n            date: 'dateFormat:MMDDYYYY',\n            birthdate: 'date',\n            past: 'before:2015-10-06',\n            future: 'after:2015-10-07',\n            gender: 'in:male, female',\n            genres: 'notIn:Pop,Metal',\n            grade: 'accepted',\n            nickname: 'alpha',\n            nospaces: 'alphaDash',\n            email: 'email',\n            alphanum: 'alphaNumeric',\n            password: 'between:6,15'\n        },\n        {\n            'name.required': 'The name field is a required one'\n        },\n        {\n            before: {\n                name: 'lowercase',\n                nickname: 'uppercase',\n                snum: 'integer',\n                sword: 'trim',\n                lword: 'ltrim',\n                rword: 'rtrim',\n                dnum: 'float',\n                bword: 'boolean',\n            },\n            \n            after: {\n                obj: 'json',\n                eword: 'escape',\n                reword: 'replace:come,came',\n                shaword: 'sha1',\n                mdword: 'md5',\n                hexword: 'hex:sha256'\n            }\n        }\n    )\n\n    if (ctx.validationErrors) {\n        ctx.status = 422;\n        ctx.body = ctx.validationErrors;\n    } else {\n        ctx.status = 200;\n        ctx.body = { success: true }\n    }\n});\n\napp.use(router.routes()).use(router.allowedMethods());\n\n```\n\n##File Validations\n\n```js\n\nconst Koa = require('koa');\nconst Router = require('koa-router');\nconst koaBody = require('koa-better-body');\n\nconst app = new Koa();\nconst router = new Router();\n\nrequire('koa-qs')(app, 'extended');\n\nconst validate = require('@byted/koa-validation');\n\napp.use(koaBody({\n    'multipart': true\n}));\napp.use(validate());\nrouter.post('/files', async function(ctx, next){\n    await ctx.validateFiles({\n        'jsFile':'required|size:min,10kb,max,20kb',\n        'imgFile': 'required|image',\n        'imgFile1': 'mime:jpg',\n        'imgFile2': 'extension:jpg',\n        'pkgFile': 'name:package'\n    },true, {}, {\n        jsFile: {\n            action: 'move',\n            args: __dirname + '/../files/tmp/rules.js',\n            callback: async function(validator, file, destination){\n                validator.addError(jsFile, 'action', 'move', 'Just checking if the callback action works!!')\n            }\n        },\n        imgFile: [\n            {\n                action: 'copy',\n                args: __dirname + '/../files/tmp/panda.jpg'\n            },\n            {\n                action: 'delete'\n            }\n        ]\n    });\n\n    if (ctx.validationErrors) {\n        ctx.status = 422;\n        ctx.body = ctx.validationErrors;\n    } else {\n        ctx.status = 200;\n        ctx.body = { success: true }\n    }\n});\n\napp.use(router.routes()).use(router.allowedMethods());\n\n```\n\nCheck out Detailed Documentation at [koa-validation.readme.io](https://koa-validation.readme.io)\n\n## License\n\n[MIT](LICENSE)\n","maintainers":[{"email":"gaochang.gcidea@bytedance.com","name":"gaochang"},{"email":"meicx@bupt.edu.cn","name":"meicx"},{"email":"2546116686@qq.com","name":"weiheran"},{"email":"turnsun27@163.com","name":"turnsun"},{"email":"wanghuan.fe@bytedance.com","name":"luara"},{"email":"ljianjianl@163.com","name":"kerryjianlan"},{"email":"luowen19920829@gmail.com","name":"luowen"},{"email":"casfe@126.com","name":"aspirin"},{"email":"307987279@qq.com","name":"dongyang03"},{"email":"yd2005232@163.com","name":"yangde"},{"email":"whuxjj92@gmail.com","name":"animabear"},{"email":"tsyeyuanfeng@126.com","name":"tsyeyuanfeng"},{"email":"fansekey@gmail.com","name":"fansekey"}],"time":{"modified":"2022-04-04T21:21:42.521Z","created":"2017-09-05T07:01:25.183Z","1.0.0":"2017-09-05T07:01:25.183Z","1.0.1":"2017-09-05T07:10:43.001Z"},"homepage":"https://github.com/srinivasiyer/koa-validation#readme","keywords":["koa","middleware","validation","filters","validator","koa-validation","koa validation","file validation"],"repository":{"type":"git","url":"git+https://github.com/srinivasiyer/koa-validation.git"},"author":{"name":"Srinivas Iyer","email":"srinivasiyer87@gmail.com"},"bugs":{"url":"https://github.com/srinivasiyer/koa-validation/issues"},"license":"ISC","readmeFilename":"README.md"}