UNPKG

webserv

Version:

a quick, flexible, fully typed development server

43 lines 1.7 kB
(function (factory) { if (typeof module === "object" && typeof module.exports === "object") { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === "function" && define.amd) { define(["require", "exports"], factory); } })(function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function getAccepts(accepts) { return accepts.split(',').map((_) => { const [accept, quality = 1] = _.split(';q='); const [type, subtype] = accept.split('/'); return { type, subtype, quality: typeof quality === 'number' ? quality : parseInt(quality, 10) }; }); } function contentNegotiator(handlers, defaultHandler) { return (accepts = '*/*') => { const list = getAccepts(accepts); let found = { handler: defaultHandler, quality: 0 }; for (let { type, subtype, quality } of list) { for (let meta of handlers) { if ((type === '*' || (type === meta.type && (subtype === '*' || subtype === meta.subtype))) && quality > found.quality) { found = { handler: meta.handler, quality }; } if (found.quality === 1) { break; } } } return found.handler; }; } exports.contentNegotiator = contentNegotiator; }); //# sourceMappingURL=contentNegotiator.js.map