UNPKG

koa-query

Version:

Query params parser for Koa 2.0

57 lines (47 loc) 1.63 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = query; exports.toBoolean = toBoolean; exports.toArray = toArray; function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } var contains = function contains(list, i) { return list.indexOf(i) > -1; }; function query(params) { var paramsKeys = Object.keys(params); return function (ctx, next) { var query, queryKeys, keys; return Promise.resolve().then(function () { query = ctx.request.query; queryKeys = Object.keys(query); keys = Array.from(new Set([].concat(_toConsumableArray(paramsKeys), _toConsumableArray(queryKeys)))); ctx.q = keys.reduce(function (q, key) { if (contains(paramsKeys, key)) { var fn = params[key]; q[key] = fn(q[key]); } return q; }, query); return next(); }).then(function () {}); }; } function toBoolean() { return function (query) { var value = query.toLowerCase(); if (value == 'true') return true; if (value == 'false') return false; if (value == '1') return true; if (value == '0') return false; if (value == 'yes') return true; if (value == 'no') return false; return Boolean(value); }; } function toArray(sep) { return function (value) { return value.split(sep); }; }