'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var qs = require('qs'); var routup = require('routup'); function parseRequestQuery(req, options) { /* istanbul ignore if */ if (typeof req.url === 'undefined') { return {}; } const url = new URL(req.url, 'http://localhost/'); let { search } = url; if (search.substring(0, 1) === '?') { search = search.substring(1); } return qs.parse(search, options); } function isObject(item) { return !!item && typeof item === 'object' && !Array.isArray(item); } const QuerySymbol = Symbol.for('ReqQuery'); function useRequestQuery(req, key) { /* istanbul ignore if */ if ('query' in req) { if (typeof key === 'string') { return req.query[key]; } return req.query; } if (QuerySymbol in req) { if (typeof key === 'string') { return req[QuerySymbol][key]; } return req[QuerySymbol]; } return typeof key === 'string' ? undefined : {}; } function hasRequestQuery(req) { return QuerySymbol in req && isObject(req[QuerySymbol]) || 'query' in req && isObject(req.query); } function setRequestQuery(req, key, value) { if (isObject(key)) { req[QuerySymbol] = key; return; } req[QuerySymbol] = { [key]: value }; } function createHandler(options) { return routup.coreHandler((req, res, next)=>{ if (hasRequestQuery(req)) { next(); return; } setRequestQuery(req, parseRequestQuery(req, options)); next(); }); } function query(options = {}) { return { name: 'query', install: (router)=>{ router.use(createHandler(options.parse)); } }; } Object.defineProperty(exports, "parse", { enumerable: true, get: function () { return qs.parse; } }); Object.defineProperty(exports, "stringify", { enumerable: true, get: function () { return qs.stringify; } }); exports.createHandler = createHandler; exports.default = query; exports.hasRequestQuery = hasRequestQuery; exports.isObject = isObject; exports.parseRequestQuery = parseRequestQuery; exports.query = query; exports.setRequestQuery = setRequestQuery; exports.useRequestQuery = useRequestQuery; module.exports = Object.assign(exports.default, exports); //# sourceMappingURL=index.cjs.map