UNPKG

@halsp/http

Version:

支持 Halsp HTTP 请求

79 lines 2.23 kB
import { Request } from "@halsp/core"; import { HttpMethods } from "../methods.mjs"; import { initHeaderHandler } from "./header-handler.mjs"; const headersMap = new WeakMap(); Object.defineProperty(Request.prototype, "headers", { configurable: true, enumerable: true, get: function () { if (!headersMap.has(this)) { headersMap.set(this, {}); } return headersMap.get(this); }, }); const methodMap = new WeakMap(); Object.defineProperty(Request.prototype, "overrideMethod", { configurable: true, enumerable: true, get: function () { const method = methodMap.get(this); if (method && method.toUpperCase() != this.method.toUpperCase()) { return method; } }, }); Object.defineProperty(Request.prototype, "method", { configurable: true, enumerable: true, get: function () { if (!methodMap.has(this)) { methodMap.set(this, HttpMethods.any); } const ovrdHeader = this.getHeader("X-HTTP-Method-Override"); if (ovrdHeader) { if (Array.isArray(ovrdHeader)) { return ovrdHeader[0].toUpperCase(); } else { return ovrdHeader.toUpperCase(); } } return methodMap.get(this); }, }); Request.prototype.setMethod = function (val) { methodMap.set(this, val?.toUpperCase()); return this; }; const queryMap = new WeakMap(); Object.defineProperty(Request.prototype, "query", { configurable: true, enumerable: true, get: function () { if (!queryMap.has(this)) { queryMap.set(this, {}); } return queryMap.get(this); }, }); Request.prototype.setQuery = function (key, value) { const query = this.query; if (typeof key == "string") { query[key] = value ?? ""; } else { const query = key; Object.keys(query).forEach((key) => { const value = query[key]; this.setQuery(key, value); }); } return this; }; initHeaderHandler(Request.prototype, function () { return this.headers; }, function () { return this.headers; }); //# sourceMappingURL=request.js.map