@whook/whook
Version:
Build strong and efficient REST web services.
33 lines • 1.42 kB
JavaScript
import { location, autoService } from 'knifecycle';
import { qsStrict as strictQs, } from 'strict-qs';
import { ensureResolvedObject, } from 'ya-open-api-types';
export const DEFAULT_QUERY_PARSER_OPTIONS = {};
async function initQueryParserBuilder({ QUERY_PARSER_OPTIONS = DEFAULT_QUERY_PARSER_OPTIONS, API, log, }) {
log('warning', `⌨️ - Initializing the basic query parser.`);
return async (parameters) => {
// TODO: Update strict qs to provide strings only
const retroCompatibleQueryParameters = [];
for (const parameter of parameters || []) {
if (parameter.in !== 'query') {
continue;
}
const schema = {
...(await ensureResolvedObject(API, 'schema' in parameter && typeof parameter.schema === 'object'
? parameter.schema
: {})),
};
if ('items' in schema) {
schema.items = await ensureResolvedObject(API, schema.items);
}
retroCompatibleQueryParameters.push({
...parameter,
...schema,
});
}
return (search) => {
return strictQs(QUERY_PARSER_OPTIONS, retroCompatibleQueryParameters, search);
};
};
}
export default location(autoService(initQueryParserBuilder), import.meta.url);
//# sourceMappingURL=queryParserBuilder.js.map