/
opt
/
canhelp
/
node_modules
/
@hono
/
node-server
/
dist
/
/opt/canhelp/node_modules/@hono/node-server/dist
mkdir
upload
Name
Size
Mode
Actions
utils/
-
0755
rm
conninfo.d.mts
191
0644
edit
dl
rm
conninfo.d.ts
191
0644
edit
dl
rm
conninfo.js
1465
0644
edit
dl
rm
conninfo.mjs
444
0644
edit
dl
rm
globals.d.mts
13
0644
edit
dl
rm
globals.d.ts
13
0644
edit
dl
rm
globals.js
1340
0644
edit
dl
rm
globals.mjs
119
0644
edit
dl
rm
index.d.mts
310
0644
edit
dl
rm
index.d.ts
306
0644
edit
dl
rm
index.js
20491
0644
edit
dl
rm
index.mjs
18607
0644
edit
dl
rm
listener.d.mts
582
0644
edit
dl
rm
listener.d.ts
581
0644
edit
dl
rm
listener.js
19511
0644
edit
dl
rm
listener.mjs
17733
0644
edit
dl
rm
request.d.mts
1057
0644
edit
dl
rm
request.d.ts
1057
0644
edit
dl
rm
request.js
6844
0644
edit
dl
rm
request.mjs
5453
0644
edit
dl
rm
response.d.mts
905
0644
edit
dl
rm
response.d.ts
905
0644
edit
dl
rm
response.js
3209
0644
edit
dl
rm
response.mjs
2126
0644
edit
dl
rm
serve-static.d.mts
698
0644
edit
dl
rm
serve-static.d.ts
698
0644
edit
dl
rm
serve-static.js
6374
0644
edit
dl
rm
serve-static.mjs
5157
0644
edit
dl
rm
server.d.mts
367
0644
edit
dl
rm
server.d.ts
366
0644
edit
dl
rm
server.js
20361
0644
edit
dl
rm
server.mjs
18569
0644
edit
dl
rm
types.d.mts
1785
0644
edit
dl
rm
types.d.ts
1785
0644
edit
dl
rm
types.js
758
0644
edit
dl
rm
types.mjs
0
0644
edit
dl
rm
utils.d.mts
839
0644
edit
dl
rm
utils.d.ts
839
0644
edit
dl
rm
utils.js
3122
0644
edit
dl
rm
utils.mjs
1892
0644
edit
dl
rm
vercel.d.mts
301
0644
edit
dl
rm
vercel.d.ts
301
0644
edit
dl
rm
vercel.js
19572
0644
edit
dl
rm
vercel.mjs
17806
0644
edit
dl
rm
Edit:
/opt/canhelp/node_modules/@hono/node-server/dist/server.mjs
(18569B)
// src/server.ts import { createServer as createServerHTTP } from "http"; // src/listener.ts import { Http2ServerRequest as Http2ServerRequest2, constants as h2constants } from "http2"; // src/request.ts import { Http2ServerRequest } from "http2"; import { Readable } from "stream"; var RequestError = class extends Error { constructor(message, options) { super(message, options); this.name = "RequestError"; } }; var toRequestError = (e) => { if (e instanceof RequestError) { return e; } return new RequestError(e.message, { cause: e }); }; var GlobalRequest = global.Request; var Request = class extends GlobalRequest { constructor(input, options) { if (typeof input === "object" && getRequestCache in input) { input = input[getRequestCache](); } if (typeof options?.body?.getReader !== "undefined") { ; options.duplex ??= "half"; } super(input, options); } }; var newHeadersFromIncoming = (incoming) => { const headerRecord = []; const rawHeaders = incoming.rawHeaders; for (let i = 0; i < rawHeaders.length; i += 2) { const { [i]: key, [i + 1]: value } = rawHeaders; if (key.charCodeAt(0) !== /*:*/ 58) { headerRecord.push([key, value]); } } return new Headers(headerRecord); }; var wrapBodyStream = Symbol("wrapBodyStream"); var newRequestFromIncoming = (method, url, headers, incoming, abortController) => { const init = { method, headers, signal: abortController.signal }; if (method === "TRACE") { init.method = "GET"; const req = new Request(url, init); Object.defineProperty(req, "method", { get() { return "TRACE"; } }); return req; } if (!(method === "GET" || method === "HEAD")) { if ("rawBody" in incoming && incoming.rawBody instanceof Buffer) { init.body = new ReadableStream({ start(controller) { controller.enqueue(incoming.rawBody); controller.close(); } }); } else if (incoming[wrapBodyStream]) { let reader; init.body = new ReadableStream({ async pull(controller) { try { reader ||= Readable.toWeb(incoming).getReader(); const { done, value } = await reader.read(); if (done) { controller.close(); } else { controller.enqueue(value); } } catch (error) { controller.error(error); } } }); } else { init.body = Readable.toWeb(incoming); } } return new Request(url, init); }; var getRequestCache = Symbol("getRequestCache"); var requestCache = Symbol("requestCache"); var incomingKey = Symbol("incomingKey"); var urlKey = Symbol("urlKey"); var headersKey = Symbol("headersKey"); var abortControllerKey = Symbol("abortControllerKey"); var getAbortController = Symbol("getAbortController"); var requestPrototype = { get method() { return this[incomingKey].method || "GET"; }, get url() { return this[urlKey]; }, get headers() { return this[headersKey] ||= newHeadersFromIncoming(this[incomingKey]); }, [getAbortController]() { this[getRequestCache](); return this[abortControllerKey]; }, [getRequestCache]() { this[abortControllerKey] ||= new AbortController(); return this[requestCache] ||= newRequestFromIncoming( this.method, this[urlKey], this.headers, this[incomingKey], this[abortControllerKey] ); } }; [ "body", "bodyUsed", "cache", "credentials", "destination", "integrity", "mode", "redirect", "referrer", "referrerPolicy", "signal", "keepalive" ].forEach((k) => { Object.defineProperty(requestPrototype, k, { get() { return this[getRequestCache]()[k]; } }); }); ["arrayBuffer", "blob", "clone", "formData", "json", "text"].forEach((k) => { Object.defineProperty(requestPrototype, k, { value: function() { return this[getRequestCache]()[k](); } }); }); Object.setPrototypeOf(requestPrototype, Request.prototype); var newRequest = (incoming, defaultHostname) => { const req = Object.create(requestPrototype); req[incomingKey] = incoming; const incomingUrl = incoming.url || ""; if (incomingUrl[0] !== "/" && // short-circuit for performance. most requests are relative URL. (incomingUrl.startsWith("http://") || incomingUrl.startsWith("https://"))) { if (incoming instanceof Http2ServerRequest) { throw new RequestError("Absolute URL for :path is not allowed in HTTP/2"); } try { const url2 = new URL(incomingUrl); req[urlKey] = url2.href; } catch (e) { throw new RequestError("Invalid absolute URL", { cause: e }); } return req; } const host = (incoming instanceof Http2ServerRequest ? incoming.authority : incoming.headers.host) || defaultHostname; if (!host) { throw new RequestError("Missing host header"); } let scheme; if (incoming instanceof Http2ServerRequest) { scheme = incoming.scheme; if (!(scheme === "http" || scheme === "https")) { throw new RequestError("Unsupported scheme"); } } else { scheme = incoming.socket && incoming.socket.encrypted ? "https" : "http"; } const url = new URL(`${scheme}://${host}${incomingUrl}`); if (url.hostname.length !== host.length && url.hostname !== host.replace(/:\d+$/, "")) { throw new RequestError("Invalid host header"); } req[urlKey] = url.href; return req; }; // src/response.ts var responseCache = Symbol("responseCache"); var getResponseCache = Symbol("getResponseCache"); var cacheKey = Symbol("cache"); var GlobalResponse = global.Response; var Response2 = class _Response { #body; #init; [getResponseCache]() { delete this[cacheKey]; return this[responseCache] ||= new GlobalResponse(this.#body, this.#init); } constructor(body, init) { let headers; this.#body = body; if (init instanceof _Response) { const cachedGlobalResponse = init[responseCache]; if (cachedGlobalResponse) { this.#init = cachedGlobalResponse; this[getResponseCache](); return; } else { this.#init = init.#init; headers = new Headers(init.#init.headers); } } else { this.#init = init; } if (typeof body === "string" || typeof body?.getReader !== "undefined" || body instanceof Blob || body instanceof Uint8Array) { ; this[cacheKey] = [init?.status || 200, body, headers || init?.headers]; } } get headers() { const cache = this[cacheKey]; if (cache) { if (!(cache[2] instanceof Headers)) { cache[2] = new Headers( cache[2] || { "content-type": "text/plain; charset=UTF-8" } ); } return cache[2]; } return this[getResponseCache]().headers; } get status() { return this[cacheKey]?.[0] ?? this[getResponseCache]().status; } get ok() { const status = this.status; return status >= 200 && status < 300; } }; ["body", "bodyUsed", "redirected", "statusText", "trailers", "type", "url"].forEach((k) => { Object.defineProperty(Response2.prototype, k, { get() { return this[getResponseCache]()[k]; } }); }); ["arrayBuffer", "blob", "clone", "formData", "json", "text"].forEach((k) => { Object.defineProperty(Response2.prototype, k, { value: function() { return this[getResponseCache]()[k](); } }); }); Object.setPrototypeOf(Response2, GlobalResponse); Object.setPrototypeOf(Response2.prototype, GlobalResponse.prototype); // src/utils.ts async function readWithoutBlocking(readPromise) { return Promise.race([readPromise, Promise.resolve().then(() => Promise.resolve(void 0))]); } function writeFromReadableStreamDefaultReader(reader, writable, currentReadPromise) { const cancel = (error) => { reader.cancel(error).catch(() => { }); }; writable.on("close", cancel); writable.on("error", cancel); (currentReadPromise ?? reader.read()).then(flow, handleStreamError); return reader.closed.finally(() => { writable.off("close", cancel); writable.off("error", cancel); }); function handleStreamError(error) { if (error) { writable.destroy(error); } } function onDrain() { reader.read().then(flow, handleStreamError); } function flow({ done, value }) { try { if (done) { writable.end(); } else if (!writable.write(value)) { writable.once("drain", onDrain); } else { return reader.read().then(flow, handleStreamError); } } catch (e) { handleStreamError(e); } } } function writeFromReadableStream(stream, writable) { if (stream.locked) { throw new TypeError("ReadableStream is locked."); } else if (writable.destroyed) { return; } return writeFromReadableStreamDefaultReader(stream.getReader(), writable); } var buildOutgoingHttpHeaders = (headers) => { const res = {}; if (!(headers instanceof Headers)) { headers = new Headers(headers ?? void 0); } const cookies = []; for (const [k, v] of headers) { if (k === "set-cookie") { cookies.push(v); } else { res[k] = v; } } if (cookies.length > 0) { res["set-cookie"] = cookies; } res["content-type"] ??= "text/plain; charset=UTF-8"; return res; }; // src/utils/response/constants.ts var X_ALREADY_SENT = "x-hono-already-sent"; // src/globals.ts import crypto from "crypto"; if (typeof global.crypto === "undefined") { global.crypto = crypto; } // src/listener.ts var outgoingEnded = Symbol("outgoingEnded"); var incomingDraining = Symbol("incomingDraining"); var DRAIN_TIMEOUT_MS = 500; var MAX_DRAIN_BYTES = 64 * 1024 * 1024; var drainIncoming = (incoming) => { const incomingWithDrainState = incoming; if (incoming.destroyed || incomingWithDrainState[incomingDraining]) { return; } incomingWithDrainState[incomingDraining] = true; if (incoming instanceof Http2ServerRequest2) { try { ; incoming.stream?.close?.(h2constants.NGHTTP2_NO_ERROR); } catch { } return; } let bytesRead = 0; const cleanup = () => { clearTimeout(timer); incoming.off("data", onData); incoming.off("end", cleanup); incoming.off("error", cleanup); }; const forceClose = () => { cleanup(); const socket = incoming.socket; if (socket && !socket.destroyed) { socket.destroySoon(); } }; const timer = setTimeout(forceClose, DRAIN_TIMEOUT_MS); timer.unref?.(); const onData = (chunk) => { bytesRead += chunk.length; if (bytesRead > MAX_DRAIN_BYTES) { forceClose(); } }; incoming.on("data", onData); incoming.on("end", cleanup); incoming.on("error", cleanup); incoming.resume(); }; var handleRequestError = () => new Response(null, { status: 400 }); var handleFetchError = (e) => new Response(null, { status: e instanceof Error && (e.name === "TimeoutError" || e.constructor.name === "TimeoutError") ? 504 : 500 }); var handleResponseError = (e, outgoing) => { const err = e instanceof Error ? e : new Error("unknown error", { cause: e }); if (err.code === "ERR_STREAM_PREMATURE_CLOSE") { console.info("The user aborted a request."); } else { console.error(e); if (!outgoing.headersSent) { outgoing.writeHead(500, { "Content-Type": "text/plain" }); } outgoing.end(`Error: ${err.message}`); outgoing.destroy(err); } }; var flushHeaders = (outgoing) => { if ("flushHeaders" in outgoing && outgoing.writable) { outgoing.flushHeaders(); } }; var responseViaCache = async (res, outgoing) => { let [status, body, header] = res[cacheKey]; let hasContentLength = false; if (!header) { header = { "content-type": "text/plain; charset=UTF-8" }; } else if (header instanceof Headers) { hasContentLength = header.has("content-length"); header = buildOutgoingHttpHeaders(header); } else if (Array.isArray(header)) { const headerObj = new Headers(header); hasContentLength = headerObj.has("content-length"); header = buildOutgoingHttpHeaders(headerObj); } else { for (const key in header) { if (key.length === 14 && key.toLowerCase() === "content-length") { hasContentLength = true; break; } } } if (!hasContentLength) { if (typeof body === "string") { header["Content-Length"] = Buffer.byteLength(body); } else if (body instanceof Uint8Array) { header["Content-Length"] = body.byteLength; } else if (body instanceof Blob) { header["Content-Length"] = body.size; } } outgoing.writeHead(status, header); if (typeof body === "string" || body instanceof Uint8Array) { outgoing.end(body); } else if (body instanceof Blob) { outgoing.end(new Uint8Array(await body.arrayBuffer())); } else { flushHeaders(outgoing); await writeFromReadableStream(body, outgoing)?.catch( (e) => handleResponseError(e, outgoing) ); } ; outgoing[outgoingEnded]?.(); }; var isPromise = (res) => typeof res.then === "function"; var responseViaResponseObject = async (res, outgoing, options = {}) => { if (isPromise(res)) { if (options.errorHandler) { try { res = await res; } catch (err) { const errRes = await options.errorHandler(err); if (!errRes) { return; } res = errRes; } } else { res = await res.catch(handleFetchError); } } if (cacheKey in res) { return responseViaCache(res, outgoing); } const resHeaderRecord = buildOutgoingHttpHeaders(res.headers); if (res.body) { const reader = res.body.getReader(); const values = []; let done = false; let currentReadPromise = void 0; if (resHeaderRecord["transfer-encoding"] !== "chunked") { let maxReadCount = 2; for (let i = 0; i < maxReadCount; i++) { currentReadPromise ||= reader.read(); const chunk = await readWithoutBlocking(currentReadPromise).catch((e) => { console.error(e); done = true; }); if (!chunk) { if (i === 1) { await new Promise((resolve) => setTimeout(resolve)); maxReadCount = 3; continue; } break; } currentReadPromise = void 0; if (chunk.value) { values.push(chunk.value); } if (chunk.done) { done = true; break; } } if (done && !("content-length" in resHeaderRecord)) { resHeaderRecord["content-length"] = values.reduce((acc, value) => acc + value.length, 0); } } outgoing.writeHead(res.status, resHeaderRecord); values.forEach((value) => { ; outgoing.write(value); }); if (done) { outgoing.end(); } else { if (values.length === 0) { flushHeaders(outgoing); } await writeFromReadableStreamDefaultReader(reader, outgoing, currentReadPromise); } } else if (resHeaderRecord[X_ALREADY_SENT]) { } else { outgoing.writeHead(res.status, resHeaderRecord); outgoing.end(); } ; outgoing[outgoingEnded]?.(); }; var getRequestListener = (fetchCallback, options = {}) => { const autoCleanupIncoming = options.autoCleanupIncoming ?? true; if (options.overrideGlobalObjects !== false && global.Request !== Request) { Object.defineProperty(global, "Request", { value: Request }); Object.defineProperty(global, "Response", { value: Response2 }); } return async (incoming, outgoing) => { let res, req; try { req = newRequest(incoming, options.hostname); let incomingEnded = !autoCleanupIncoming || incoming.method === "GET" || incoming.method === "HEAD"; if (!incomingEnded) { ; incoming[wrapBodyStream] = true; incoming.on("end", () => { incomingEnded = true; }); if (incoming instanceof Http2ServerRequest2) { ; outgoing[outgoingEnded] = () => { if (!incomingEnded) { setTimeout(() => { if (!incomingEnded) { setTimeout(() => { drainIncoming(incoming); }); } }); } }; } outgoing.on("finish", () => { if (!incomingEnded) { drainIncoming(incoming); } }); } outgoing.on("close", () => { const abortController = req[abortControllerKey]; if (abortController) { if (incoming.errored) { req[abortControllerKey].abort(incoming.errored.toString()); } else if (!outgoing.writableFinished) { req[abortControllerKey].abort("Client connection prematurely closed."); } } if (!incomingEnded) { setTimeout(() => { if (!incomingEnded) { setTimeout(() => { drainIncoming(incoming); }); } }); } }); res = fetchCallback(req, { incoming, outgoing }); if (cacheKey in res) { return responseViaCache(res, outgoing); } } catch (e) { if (!res) { if (options.errorHandler) { res = await options.errorHandler(req ? e : toRequestError(e)); if (!res) { return; } } else if (!req) { res = handleRequestError(); } else { res = handleFetchError(e); } } else { return handleResponseError(e, outgoing); } } try { return await responseViaResponseObject(res, outgoing, options); } catch (e) { return handleResponseError(e, outgoing); } }; }; // src/server.ts var createAdaptorServer = (options) => { const fetchCallback = options.fetch; const requestListener = getRequestListener(fetchCallback, { hostname: options.hostname, overrideGlobalObjects: options.overrideGlobalObjects, autoCleanupIncoming: options.autoCleanupIncoming }); const createServer = options.createServer || createServerHTTP; const server = createServer(options.serverOptions || {}, requestListener); return server; }; var serve = (options, listeningListener) => { const server = createAdaptorServer(options); server.listen(options?.port ?? 3e3, options.hostname, () => { const serverInfo = server.address(); listeningListener && listeningListener(serverInfo); }); return server; }; export { createAdaptorServer, serve };
Save
cmd:
run