/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/zap@2.1.1/dist/zap.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.fromRequest=exports.redirect=exports.RedirectError=exports.httpError=exports.HttpError=exports.route=exports.router=exports.notFound=exports.send=exports.json=exports.text=exports.buffer=exports.getHeader=exports.serve=void 0;const content_type_1=__importDefault(require("content-type")),path_to_regexp_1=require("path-to-regexp"),raw_body_1=__importDefault(require("raw-body")),stream_1=require("stream"),url_1=require("url"),IS_DEV="development"===process.env.NODE_ENV;function serve(e,t={}){return async function(r,o){const n=requestFromHTTP(r,t),s=responseFromHTTP(o);try{await e(n,s)}catch(e){if(o.writableEnded)throw e;if(e instanceof RedirectError)return o.statusCode=e.statusCode,o.setHeader("Location",e.location),void o.end();const r=t.errorHandler??((e,t,r)=>sendError(t,r));r(n,s,e)}}}exports.serve=serve;const protocolFromRequest=fromRequest(((e,t)=>{const r=Boolean(e.socket.encrypted)?"https":"http";if(!t.trustProxy)return r;const o=getHeader(e,"x-forwarded-proto")??r,n=o.indexOf(",");return-1===n?o.trim():o.substring(0,n).trim()})),queryFromRequest=fromRequest((e=>Object.fromEntries(e.parsedURL.searchParams))),urlFromRequest=fromRequest((e=>new url_1.URL(e.url,`${e.protocol}://${e.headers.host}`)));function requestFromHTTP(e,t){const r=Object.defineProperties(e,{protocol:{get:()=>protocolFromRequest(r,t),enumerable:!0},query:{get:()=>queryFromRequest(r),enumerable:!0},parsedURL:{get:()=>urlFromRequest(r),enumerable:!0}});return r}function getHeader(e,t){const r=e.headers[t];return Array.isArray(r)?r[0]:r}exports.getHeader=getHeader;const requestBodyMap=new WeakMap;async function buffer(e,{limit:t="1mb",encoding:r}={}){const o=e.headers["content-type"]??"text/plain",n=e.headers["content-length"];void 0===r&&(r=content_type_1.default.parse(o).parameters.charset);const s=requestBodyMap.get(e);if(s)return s;try{const o=Buffer.from(await(0,raw_body_1.default)(e,{limit:t,length:n,encoding:r}));return requestBodyMap.set(e,o),o}catch(e){if("entity.too.large"===e.type)throw httpError(413,`Body exceeded ${t} limit`,e);throw httpError(400,"Invalid body",e)}}async function text(e,t={}){return await buffer(e,t).then((e=>e.toString()))}async function json(e,t={}){return await text(e,t).then((e=>{try{return JSON.parse(e)}catch(e){throw httpError(400,"Invalid JSON",e)}}))}function responseFromHTTP(e){return Object.defineProperties(e,{})}function send(e,t,r=null){if(e.statusCode=t,null==r)return void e.end();if(r instanceof Error)throw r;if(r instanceof stream_1.Stream||isReadableStream(r))return e.getHeader("Content-Type")||e.setHeader("Content-Type","application/octet-stream"),void r.pipe(e);if(Buffer.isBuffer(r))return e.getHeader("Content-Type")||e.setHeader("Content-Type","application/octet-stream"),e.setHeader("Content-Length",r.length),void e.end(r);let o;"object"==typeof r||"number"==typeof r?(o=JSON.stringify(r),e.getHeader("Content-Type")||e.setHeader("Content-Type","application/json; charset=utf-8")):o=r,e.setHeader("Content-Length",Buffer.byteLength(o)),e.end(o)}function sendError(e,t){t instanceof HttpError?send(e,t.statusCode,t.message):t instanceof Error?send(e,500,IS_DEV?t.stack:t.message):send(e,500,`${t}`)}function notFound(){return httpError(404,"Not Found")}function router(...e){return async function(t,r){for(const o of e){if(t.method!==o.method)continue;const e=o.matchPath(t.parsedURL.pathname);if(e)return t.params=e.params,await o(t,r)}return send(r,404,"Not Found")}}function route(e,t,r){return Object.assign((async(e,t)=>{const o=await Promise.resolve(r(e,t));if(null===o)return send(t,204,null);void 0!==o&&send(t,t.statusCode??200,o)}),{method:e,route:t,compilePath:(0,path_to_regexp_1.compile)(t),matchPath:(0,path_to_regexp_1.match)(t)})}exports.buffer=buffer,exports.text=text,exports.json=json,exports.send=send,exports.notFound=notFound,exports.router=router,exports.route=route;class HttpError extends Error{constructor(e,t,r){super(t),this.statusCode=e,this.metadata=r,Error.captureStackTrace&&Error.captureStackTrace(this,RedirectError)}}function httpError(e,t,r){return new HttpError(e,t,r)}exports.HttpError=HttpError,exports.httpError=httpError;class RedirectError extends Error{constructor(e,t){super(`Redirect to ${t}, status code ${e}`),this.statusCode=e,this.location=t,Error.captureStackTrace&&Error.captureStackTrace(this,RedirectError)}}function redirect(e,t=303){return new RedirectError(t,e)}function isStream(e){return null!==e&&"object"==typeof e&&"object"==typeof e.pipe}function isReadableStream(e){return isStream(e)&&!1!==e.readable&&"function"==typeof e._read&&"object"==typeof e._readableState}function fromRequest(e){const t=new WeakMap,r=new WeakMap;return(o,...n)=>{if(r.has(o))throw r.get(o);if(t.has(o))return t.get(o);try{const r=e(o,...n);return t.set(o,r),r}catch(e){throw r.set(o,e),e}}}exports.RedirectError=RedirectError,exports.redirect=redirect,exports.fromRequest=fromRequest;
//# sourceMappingURL=/sm/77e4b91a972ff730fd074558b5d5fba4e9bf2e0dfbcccc57a3eaf5cf099e7ae8.map