{"_id":"@bloxite/koa-query-defaults","_rev":"6-fbaecce37c004286ef274b1ec7a99317","name":"@bloxite/koa-query-defaults","description":"Simple parsing and filtering of input params for Koa@2","dist-tags":{"latest":"0.1.0"},"versions":{"0.0.1":{"name":"@bloxite/koa-query-defaults","version":"0.0.1","description":"Simple parsing and filtering of input params for Koa@2","main":"src/index.js","scripts":{"test":"NODE_ENV=testing mocha","test:watch":"NODE_ENV=testing mocha --watch"},"repository":{"type":"git","url":"git+ssh://git@github.com/bloxite/koa-query-defaults.git"},"authors":"Pavel Kilin <pavel@asdf404.net>, Bloxite Team (bloxite.net)","license":"MIT","homepage":"https://github.com/bloxite/koa-query-defaults#readme","keywords":["koa","query","body","params","filter"],"devDependencies":{"babel-eslint":"^7.1.1","eslint":"^3.15.0","eslint-config-standard":"^6.1.0","eslint-plugin-mocha":"^4.8.0","eslint-plugin-promise":"^3.4.0","eslint-plugin-standard":"^2.0.1","mocha":"^2.5.3"},"dependencies":{"http-errors":"^1.6.1"},"gitHead":"7fc432aa4473190fb847e5fc9f5a4e8ea4591978","bugs":{"url":"https://github.com/bloxite/koa-query-defaults/issues"},"_id":"@bloxite/koa-query-defaults@0.0.1","_shasum":"8fd322796bdadfb82fde8979b261d2b8e0590a66","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.5.0","_npmUser":{"name":"bloxite","email":"admin@bloxite.net"},"dist":{"shasum":"8fd322796bdadfb82fde8979b261d2b8e0590a66","tarball":"https://registry.npmjs.org/@bloxite/koa-query-defaults/-/koa-query-defaults-0.0.1.tgz","integrity":"sha512-AfvEeLOOa3za1BDEVWUSB14Yufy50Y85N3omswMqdl0oD8I1boADN7cTo9EaXlPPUdjLRCh8pL8Jvp6jhkIBNQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHPwVdRs/hWYgPya6oHw1IC0BaV5XPWHxNmHvl8zP2isAiABQnGhmu6SAmPlQrkcduSfGU3lMd58uSrT0tIbmrWKBg=="}]},"maintainers":[{"name":"bloxite","email":"admin@bloxite.net"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/koa-query-defaults-0.0.1.tgz_1487844501391_0.07147531467489898"}},"0.1.0":{"name":"@bloxite/koa-query-defaults","version":"0.1.0","description":"Simple parsing and filtering of input params for Koa@2","main":"src/index.js","scripts":{"test":"NODE_ENV=testing mocha","test:watch":"NODE_ENV=testing mocha --watch","test:coverage":"NODE_ENV=testing istanbul cover _mocha -- -R min","coveralls":"cat ./coverage/lcov.info | ./node_modules/.bin/coveralls"},"repository":{"type":"git","url":"git+ssh://git@github.com/bloxite/koa-query-defaults.git"},"authors":"Pavel Kilin <pavel@asdf404.net>, Bloxite Team (bloxite.net)","license":"MIT","homepage":"https://github.com/bloxite/koa-query-defaults#readme","keywords":["koa","query","body","params","filter"],"devDependencies":{"babel-eslint":"^7.1.1","coveralls":"^2.11.16","eslint":"^3.15.0","eslint-config-standard":"^6.1.0","eslint-plugin-mocha":"^4.8.0","eslint-plugin-promise":"^3.4.0","eslint-plugin-standard":"^2.0.1","istanbul":"^0.4.5","mocha":"^2.5.3"},"dependencies":{"http-errors":"^1.6.1"},"gitHead":"327a4236707b55ec65a66a80ac5b468dff3887b8","bugs":{"url":"https://github.com/bloxite/koa-query-defaults/issues"},"_id":"@bloxite/koa-query-defaults@0.1.0","_shasum":"bcf09c158fac8c417cf1bdf68454e03c3e99addc","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.5.0","_npmUser":{"name":"bloxite","email":"admin@bloxite.net"},"dist":{"shasum":"bcf09c158fac8c417cf1bdf68454e03c3e99addc","tarball":"https://registry.npmjs.org/@bloxite/koa-query-defaults/-/koa-query-defaults-0.1.0.tgz","integrity":"sha512-H9N0DVN3dQbft+VZKM/ZhyiqrYWVOxUg0Jta3/34fYjjoVCfpwtmLqPCxB+e6CwXzpIn9E02A+kPVLCHkmrLFg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAS7NjAgIBR6j7ytGeqQuoFiZ60NohMVe6qneJRId/QRAiEAzOkSKA1eitMwWk/gAh2vPG7i25zem+Bdolb84mMgyY0="}]},"maintainers":[{"name":"asdf404","email":"pavel@asdf404.net"},{"name":"bloxite","email":"admin@bloxite.net"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/koa-query-defaults-0.1.0.tgz_1487917127395_0.18087420193478465"}}},"readme":"# Koa query defaults\n\n[![Build Status](https://travis-ci.org/Bloxite/koa-query-defaults.svg?branch=master)](https://travis-ci.org/Bloxite/koa-query-defaults)\n[![Coverage Status](https://coveralls.io/repos/Bloxite/koa-query-defaults/badge.svg?branch=master)](https://coveralls.io/r/Bloxite/koa-query-defaults?branch=master)\n\nSimple parsing and filtering of input params for Koa@2\n\n[![Standard - JavaScript Style Guide](https://cdn.rawgit.com/feross/standard/master/badge.svg)](https://github.com/feross/standard)\n\n## Installation\n\n```\nnpm install @bloxite/koa-query-defaults --save\n```\n\nThis module made for work with [koa-router](https://www.npmjs.com/package/koa-router).\n\n## Usage\n\n```js\nconst { query, body, params } = require('@bloxite/koa-query-defaults')\n// or in ES6-way\nimport { query, body, params } from '@bloxite/koa-query-defaults'\n```\n\n### Create middleware\n\nTo create middleware call one of these methods: `query`, `body` or `params`. These method works with `ctx.query`, `ctx.body` or `ctx.params` respectively and accept same rules. For example:\n\n```js\nimport { query } from '@bloxite/koa-query-defaults'\n\nrouter.get(\n  '/posts',\n  query({\n    // parse `page` param as number in range from 1 to 50\n    // also this value is required\n    page: [ 'number', 'range:1..50' ],\n    // parse `tags` param as array\n    tags: [ 'array' ],\n    // parse `search` as string with length from 1 to 100\n    search: [ 'string', 'length:1..100' ],\n    // parse `sort` param as enum with possible values 'asc' and 'desc'\n    sort: [ 'values:asc,desc' ]\n  }),\n  (ctx) => {\n    const { query } = ctx\n    // GET /posts?page=2&tags=foo,bar&tags=baz&sort=desc\n\n    assert.strictEqual(query.page, 2)\n    assert.strictEqual(query.sort, 'desc')\n    assert.strictEqual(query.search, '')\n    assert.deepEqual  (query.tags, [ 'foo', 'bar', 'baz' ])\n  }\n)\n```\n\nAny runtime validation/parsing errors will be thrown as `BadRequest` error from [`http-errors`](https://www.npmjs.com/package/http-errors) package.\n\n### List of rules\n\nRules will apply in order of definition: `[ 'number', 'value:1,2' ]` will not work, because first value will be converted to number and then will be matched against list of strings `'1'` and `'2'`.\n\nHere is a list of rules:\n\n* `default:<value>` — put `<default>` value if input is not present;\n* `boolean` — parse `\"true\"`, `\"on\"`, `\"yes\"`, `\"y\"`, `\"1\"` as `true`, `\"false\"`, `\"off\"`, `\"no\"`, `\"n\"`, `\"0\"` as `false`;\n* `number` — parse any input number to JS-number, also support hex, octal and binary numbers (e.g. `GET /posts?page=0xDEADBEEF`);\n* `string` — return value as is if present (or coma-separated list of values if array is present), or empty string if value is not provided;\n* `array:<separator>` — split input parameter by optional `<separator>` (default is `,`) and returns array (empty array for empty input);\n* `required` — return an errors if no parameter is present;\n* `length:<min>..<max>` — validate string length, where `<min>` is lower bound and `<max>` is upper bound;\n* `range:<min>..<max>` — same as `length` but valdate number value;\n* `enum:<val1>,<val2>,...` — check value (or every value in array) to match a list of allowed values;\n* `values` (deprecated) ­— same as `enum`;\n\n## Known issues\n\n* [ ] `router.use(query(/* ... */))` has no effect;\n\n## License\n\n[MIT](LICENSE)\n","maintainers":[],"time":{"modified":"2022-06-12T15:22:33.911Z","created":"2017-02-23T10:08:23.225Z","0.0.1":"2017-02-23T10:08:23.225Z","0.1.0":"2017-02-24T06:18:49.456Z"},"homepage":"https://github.com/bloxite/koa-query-defaults#readme","keywords":["koa","query","body","params","filter"],"repository":{"type":"git","url":"git+ssh://git@github.com/bloxite/koa-query-defaults.git"},"bugs":{"url":"https://github.com/bloxite/koa-query-defaults/issues"},"license":"MIT","readmeFilename":"README.md"}