koa-query
Version:
Query params parser for Koa 2.0
57 lines (47 loc) • 1.63 kB
JavaScript
;
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);
};
}