@mastra/deployer 1.0.0-beta.8 → 1.0.0-beta.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/{arktype-aI7TBD0R-RMRB5ZNY.cjs → arktype-aI7TBD0R-4YXBEQBG.cjs} +3 -3
  3. package/dist/{arktype-aI7TBD0R-RMRB5ZNY.cjs.map → arktype-aI7TBD0R-4YXBEQBG.cjs.map} +1 -1
  4. package/dist/arktype-aI7TBD0R-OEPFT4G6.js +8 -0
  5. package/dist/{arktype-aI7TBD0R-JG4WETGU.js.map → arktype-aI7TBD0R-OEPFT4G6.js.map} +1 -1
  6. package/dist/build/analyze.cjs +2 -2
  7. package/dist/build/analyze.js +1 -1
  8. package/dist/build/bundler.cjs +3 -3
  9. package/dist/build/bundler.js +1 -1
  10. package/dist/build/index.cjs +10 -10
  11. package/dist/build/index.js +3 -3
  12. package/dist/build/shared/extract-mastra-option.d.ts.map +1 -1
  13. package/dist/bundler/index.cjs +2 -2
  14. package/dist/bundler/index.js +1 -1
  15. package/dist/{chunk-IL36YSXF.cjs → chunk-7PLNIFGZ.cjs} +3 -3
  16. package/dist/{chunk-IL36YSXF.cjs.map → chunk-7PLNIFGZ.cjs.map} +1 -1
  17. package/dist/{chunk-3NVSKU27.cjs → chunk-BFQ2S5UD.cjs} +9 -9
  18. package/dist/{chunk-3NVSKU27.cjs.map → chunk-BFQ2S5UD.cjs.map} +1 -1
  19. package/dist/chunk-BTNPI4Z7.cjs +4 -0
  20. package/dist/{chunk-4YYZKC2P.cjs.map → chunk-BTNPI4Z7.cjs.map} +1 -1
  21. package/dist/chunk-FBT6QP7J.js +3 -0
  22. package/dist/{chunk-HXYLK6CH.js.map → chunk-FBT6QP7J.js.map} +1 -1
  23. package/dist/{chunk-IR2ZJ7CP.cjs → chunk-GD2TGMBP.cjs} +3 -3
  24. package/dist/{chunk-IR2ZJ7CP.cjs.map → chunk-GD2TGMBP.cjs.map} +1 -1
  25. package/dist/chunk-ID3HN3BH.cjs +16 -0
  26. package/dist/{chunk-BJURVMEW.cjs.map → chunk-ID3HN3BH.cjs.map} +1 -1
  27. package/dist/{chunk-46SXOVGO.js → chunk-MMUE22EL.js} +9 -9
  28. package/dist/{chunk-46SXOVGO.js.map → chunk-MMUE22EL.js.map} +1 -1
  29. package/dist/{chunk-SYGG6SXN.cjs → chunk-MUWNMVNL.cjs} +4 -4
  30. package/dist/chunk-MUWNMVNL.cjs.map +1 -0
  31. package/dist/chunk-N5TMJUIR.js +14 -0
  32. package/dist/{chunk-L4SN27ZE.js.map → chunk-N5TMJUIR.js.map} +1 -1
  33. package/dist/{chunk-2NO5NO4J.js → chunk-P4L6VIHY.js} +3 -3
  34. package/dist/{chunk-2NO5NO4J.js.map → chunk-P4L6VIHY.js.map} +1 -1
  35. package/dist/chunk-Q2YGWEXY.js +6 -0
  36. package/dist/{chunk-PDVYEX76.js.map → chunk-Q2YGWEXY.js.map} +1 -1
  37. package/dist/{chunk-IJ2JJVRX.js → chunk-RBPCXFN7.js} +4 -4
  38. package/dist/{chunk-IJ2JJVRX.js.map → chunk-RBPCXFN7.js.map} +1 -1
  39. package/dist/{chunk-UEEYA5FR.cjs → chunk-SS22TD6R.cjs} +10 -10
  40. package/dist/{chunk-UEEYA5FR.cjs.map → chunk-SS22TD6R.cjs.map} +1 -1
  41. package/dist/{chunk-I47TD6VX.js → chunk-TK2CCU7I.js} +4 -4
  42. package/dist/chunk-TK2CCU7I.js.map +1 -0
  43. package/dist/{chunk-NZ47MQSD.cjs → chunk-TXKETRIN.cjs} +9 -9
  44. package/dist/{chunk-NZ47MQSD.cjs.map → chunk-TXKETRIN.cjs.map} +1 -1
  45. package/dist/{chunk-HGMQ75WR.js → chunk-UQZGTSBF.js} +3 -3
  46. package/dist/{chunk-HGMQ75WR.js.map → chunk-UQZGTSBF.js.map} +1 -1
  47. package/dist/{chunk-YQFLK7ZK.cjs → chunk-X4TNUYQL.cjs} +11 -11
  48. package/dist/{chunk-YQFLK7ZK.cjs.map → chunk-X4TNUYQL.cjs.map} +1 -1
  49. package/dist/{chunk-KTLA3OLD.js → chunk-X5QU7B2W.js} +4 -4
  50. package/dist/{chunk-KTLA3OLD.js.map → chunk-X5QU7B2W.js.map} +1 -1
  51. package/dist/default-u_dwuiYb-65M4BHAA.js +3 -0
  52. package/dist/{default-u_dwuiYb-MRYQILW4.js.map → default-u_dwuiYb-65M4BHAA.js.map} +1 -1
  53. package/dist/default-u_dwuiYb-PWN6FHC6.cjs +9 -0
  54. package/dist/{default-u_dwuiYb-WPBHZH2R.cjs.map → default-u_dwuiYb-PWN6FHC6.cjs.map} +1 -1
  55. package/dist/effect-QlVUlMFu-2ADPKIDF.cjs +17 -0
  56. package/dist/{effect-QlVUlMFu-N7VAYT2B.cjs.map → effect-QlVUlMFu-2ADPKIDF.cjs.map} +1 -1
  57. package/dist/{effect-QlVUlMFu-NH625H3V.js → effect-QlVUlMFu-FD73M3OO.js} +4 -4
  58. package/dist/{effect-QlVUlMFu-NH625H3V.js.map → effect-QlVUlMFu-FD73M3OO.js.map} +1 -1
  59. package/dist/{esm-T7FR74HN.js → esm-BLVTLTJW.js} +40 -40
  60. package/dist/esm-BLVTLTJW.js.map +1 -0
  61. package/dist/{esm-BZAOWJTI.cjs → esm-E3NUCNVN.cjs} +81 -81
  62. package/dist/esm-E3NUCNVN.cjs.map +1 -0
  63. package/dist/index.cjs +5 -5
  64. package/dist/index.js +2 -2
  65. package/dist/server/index.cjs +1 -1
  66. package/dist/server/index.cjs.map +1 -1
  67. package/dist/server/index.js +1 -1
  68. package/dist/server/index.js.map +1 -1
  69. package/dist/sury-CWZTCd75-K3FHMZF5.cjs +17 -0
  70. package/dist/{sury-CWZTCd75-E5BDQIXB.cjs.map → sury-CWZTCd75-K3FHMZF5.cjs.map} +1 -1
  71. package/dist/{sury-CWZTCd75-HWBNYVQW.js → sury-CWZTCd75-Y2GURJ6K.js} +4 -4
  72. package/dist/{sury-CWZTCd75-HWBNYVQW.js.map → sury-CWZTCd75-Y2GURJ6K.js.map} +1 -1
  73. package/dist/typebox-Dei93FPO-2WP4NOYD.js +8 -0
  74. package/dist/{typebox-Dei93FPO-XXPZXWWK.js.map → typebox-Dei93FPO-2WP4NOYD.js.map} +1 -1
  75. package/dist/{typebox-Dei93FPO-42ICWLXF.cjs → typebox-Dei93FPO-WTXAW2LA.cjs} +3 -3
  76. package/dist/{typebox-Dei93FPO-42ICWLXF.cjs.map → typebox-Dei93FPO-WTXAW2LA.cjs.map} +1 -1
  77. package/dist/valibot--1zFm7rT-HMTCRBB3.cjs +17 -0
  78. package/dist/{valibot--1zFm7rT-ALWQ34TP.cjs.map → valibot--1zFm7rT-HMTCRBB3.cjs.map} +1 -1
  79. package/dist/{valibot--1zFm7rT-W6DSEVCL.js → valibot--1zFm7rT-VGFBTDTW.js} +4 -4
  80. package/dist/{valibot--1zFm7rT-W6DSEVCL.js.map → valibot--1zFm7rT-VGFBTDTW.js.map} +1 -1
  81. package/dist/{valibot-D_HTw1Gn-PN7GEV4F.cjs → valibot-D_HTw1Gn-ILCWWLE4.cjs} +7 -7
  82. package/dist/{valibot-D_HTw1Gn-PN7GEV4F.cjs.map → valibot-D_HTw1Gn-ILCWWLE4.cjs.map} +1 -1
  83. package/dist/{valibot-D_HTw1Gn-LVFT5X5F.js → valibot-D_HTw1Gn-LLCGNU3W.js} +5 -5
  84. package/dist/{valibot-D_HTw1Gn-LVFT5X5F.js.map → valibot-D_HTw1Gn-LLCGNU3W.js.map} +1 -1
  85. package/dist/{zod-Bwrt9trS-UDAV5VDV.js → zod-Bwrt9trS-XCRGYQVE.js} +5 -5
  86. package/dist/{zod-Bwrt9trS-UDAV5VDV.js.map → zod-Bwrt9trS-XCRGYQVE.js.map} +1 -1
  87. package/dist/{zod-Bwrt9trS-C5ATNTZG.cjs → zod-Bwrt9trS-XDMWF3NW.cjs} +7 -7
  88. package/dist/{zod-Bwrt9trS-C5ATNTZG.cjs.map → zod-Bwrt9trS-XDMWF3NW.cjs.map} +1 -1
  89. package/dist/{zod-DSgpEGAE-AVWGGTUD.js → zod-DSgpEGAE-TKBHSSLS.js} +5 -5
  90. package/dist/{zod-DSgpEGAE-AVWGGTUD.js.map → zod-DSgpEGAE-TKBHSSLS.js.map} +1 -1
  91. package/dist/{zod-DSgpEGAE-EH7N2QK7.cjs → zod-DSgpEGAE-ZWQMF6SS.cjs} +7 -7
  92. package/dist/{zod-DSgpEGAE-EH7N2QK7.cjs.map → zod-DSgpEGAE-ZWQMF6SS.cjs.map} +1 -1
  93. package/package.json +6 -6
  94. package/dist/arktype-aI7TBD0R-JG4WETGU.js +0 -8
  95. package/dist/chunk-4YYZKC2P.cjs +0 -4
  96. package/dist/chunk-BJURVMEW.cjs +0 -16
  97. package/dist/chunk-HXYLK6CH.js +0 -3
  98. package/dist/chunk-I47TD6VX.js.map +0 -1
  99. package/dist/chunk-L4SN27ZE.js +0 -14
  100. package/dist/chunk-PDVYEX76.js +0 -6
  101. package/dist/chunk-SYGG6SXN.cjs.map +0 -1
  102. package/dist/default-u_dwuiYb-MRYQILW4.js +0 -3
  103. package/dist/default-u_dwuiYb-WPBHZH2R.cjs +0 -9
  104. package/dist/effect-QlVUlMFu-N7VAYT2B.cjs +0 -17
  105. package/dist/esm-BZAOWJTI.cjs.map +0 -1
  106. package/dist/esm-T7FR74HN.js.map +0 -1
  107. package/dist/sury-CWZTCd75-E5BDQIXB.cjs +0 -17
  108. package/dist/typebox-Dei93FPO-XXPZXWWK.js +0 -8
  109. package/dist/valibot--1zFm7rT-ALWQ34TP.cjs +0 -17
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../node_modules/.pnpm/@hono+node-server@1.19.6_hono@4.10.6/node_modules/@hono/node-server/dist/index.mjs","../../../../node_modules/.pnpm/@hono+node-server@1.19.6_hono@4.10.6/node_modules/@hono/node-server/dist/serve-static.mjs","../../../../node_modules/.pnpm/@hono+swagger-ui@0.5.2_hono@4.10.6/node_modules/@hono/swagger-ui/dist/index.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/utils/errors.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/fetch-to-node/http-incoming.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/utils/types.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/fetch-to-node/internal-http.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/fetch-to-node/internal-streams-state.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/fetch-to-node/http-common.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/fetch-to-node/http-outgoing.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/fetch-to-node/http-server.js","../../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/http-exception.js","../../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/middleware/body-limit/index.js","../../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/utils/stream.js","../../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/helper/streaming/utils.js","../../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/helper/streaming/stream.js","../../../../server-adapters/hono/src/auth-middleware.ts","../../../../server-adapters/hono/src/index.ts","../../../../node_modules/.pnpm/hono-openapi@1.1.1_@hono+standard-validator@0.2.0_@standard-schema+spec@1.0.0_hono@4.10_dee62e986c04f5a510cb45dc6cf3f0e3/node_modules/hono-openapi/dist/index.js","../../src/server/handlers/client.ts","../../src/server/handlers/error.ts","../../src/server/handlers/health.ts","../../src/server/handlers/restart-active-runs.ts","../../src/server/welcome.ts","../../src/server/index.ts"],"names":["Request","Readable","Http2ServerRequest","stream","crypto","Http2ServerRequest2","createServer","createServerHTTP","lstatSync","existsSync","path","join","getMimeType","createReadStream","html","util","Writable","l","onError","Buffer","headerCharRegex","checkInvalidHeaderChar","incoming","isDevPlaygroundRequest","isProtectedPath","canAccessPublicly","checkRules","defaultAuthConfig","MastraServerBase","redactStreamChunk","middleware","HTTPException","tools","Tool","Hono","InMemoryTaskStore","timeout","cors","logger","readFile","https"],"mappings":"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","file":"index.cjs","sourcesContent":["// src/server.ts\nimport { createServer as createServerHTTP } from \"http\";\n\n// src/listener.ts\nimport { Http2ServerRequest as Http2ServerRequest2 } from \"http2\";\n\n// src/request.ts\nimport { Http2ServerRequest } from \"http2\";\nimport { Readable } from \"stream\";\nvar RequestError = class extends Error {\n constructor(message, options) {\n super(message, options);\n this.name = \"RequestError\";\n }\n};\nvar toRequestError = (e) => {\n if (e instanceof RequestError) {\n return e;\n }\n return new RequestError(e.message, { cause: e });\n};\nvar GlobalRequest = global.Request;\nvar Request = class extends GlobalRequest {\n constructor(input, options) {\n if (typeof input === \"object\" && getRequestCache in input) {\n input = input[getRequestCache]();\n }\n if (typeof options?.body?.getReader !== \"undefined\") {\n ;\n options.duplex ??= \"half\";\n }\n super(input, options);\n }\n};\nvar newHeadersFromIncoming = (incoming) => {\n const headerRecord = [];\n const rawHeaders = incoming.rawHeaders;\n for (let i = 0; i < rawHeaders.length; i += 2) {\n const { [i]: key, [i + 1]: value } = rawHeaders;\n if (key.charCodeAt(0) !== /*:*/\n 58) {\n headerRecord.push([key, value]);\n }\n }\n return new Headers(headerRecord);\n};\nvar wrapBodyStream = Symbol(\"wrapBodyStream\");\nvar newRequestFromIncoming = (method, url, headers, incoming, abortController) => {\n const init = {\n method,\n headers,\n signal: abortController.signal\n };\n if (method === \"TRACE\") {\n init.method = \"GET\";\n const req = new Request(url, init);\n Object.defineProperty(req, \"method\", {\n get() {\n return \"TRACE\";\n }\n });\n return req;\n }\n if (!(method === \"GET\" || method === \"HEAD\")) {\n if (\"rawBody\" in incoming && incoming.rawBody instanceof Buffer) {\n init.body = new ReadableStream({\n start(controller) {\n controller.enqueue(incoming.rawBody);\n controller.close();\n }\n });\n } else if (incoming[wrapBodyStream]) {\n let reader;\n init.body = new ReadableStream({\n async pull(controller) {\n try {\n reader ||= Readable.toWeb(incoming).getReader();\n const { done, value } = await reader.read();\n if (done) {\n controller.close();\n } else {\n controller.enqueue(value);\n }\n } catch (error) {\n controller.error(error);\n }\n }\n });\n } else {\n init.body = Readable.toWeb(incoming);\n }\n }\n return new Request(url, init);\n};\nvar getRequestCache = Symbol(\"getRequestCache\");\nvar requestCache = Symbol(\"requestCache\");\nvar incomingKey = Symbol(\"incomingKey\");\nvar urlKey = Symbol(\"urlKey\");\nvar headersKey = Symbol(\"headersKey\");\nvar abortControllerKey = Symbol(\"abortControllerKey\");\nvar getAbortController = Symbol(\"getAbortController\");\nvar requestPrototype = {\n get method() {\n return this[incomingKey].method || \"GET\";\n },\n get url() {\n return this[urlKey];\n },\n get headers() {\n return this[headersKey] ||= newHeadersFromIncoming(this[incomingKey]);\n },\n [getAbortController]() {\n this[getRequestCache]();\n return this[abortControllerKey];\n },\n [getRequestCache]() {\n this[abortControllerKey] ||= new AbortController();\n return this[requestCache] ||= newRequestFromIncoming(\n this.method,\n this[urlKey],\n this.headers,\n this[incomingKey],\n this[abortControllerKey]\n );\n }\n};\n[\n \"body\",\n \"bodyUsed\",\n \"cache\",\n \"credentials\",\n \"destination\",\n \"integrity\",\n \"mode\",\n \"redirect\",\n \"referrer\",\n \"referrerPolicy\",\n \"signal\",\n \"keepalive\"\n].forEach((k) => {\n Object.defineProperty(requestPrototype, k, {\n get() {\n return this[getRequestCache]()[k];\n }\n });\n});\n[\"arrayBuffer\", \"blob\", \"clone\", \"formData\", \"json\", \"text\"].forEach((k) => {\n Object.defineProperty(requestPrototype, k, {\n value: function() {\n return this[getRequestCache]()[k]();\n }\n });\n});\nObject.setPrototypeOf(requestPrototype, Request.prototype);\nvar newRequest = (incoming, defaultHostname) => {\n const req = Object.create(requestPrototype);\n req[incomingKey] = incoming;\n const incomingUrl = incoming.url || \"\";\n if (incomingUrl[0] !== \"/\" && // short-circuit for performance. most requests are relative URL.\n (incomingUrl.startsWith(\"http://\") || incomingUrl.startsWith(\"https://\"))) {\n if (incoming instanceof Http2ServerRequest) {\n throw new RequestError(\"Absolute URL for :path is not allowed in HTTP/2\");\n }\n try {\n const url2 = new URL(incomingUrl);\n req[urlKey] = url2.href;\n } catch (e) {\n throw new RequestError(\"Invalid absolute URL\", { cause: e });\n }\n return req;\n }\n const host = (incoming instanceof Http2ServerRequest ? incoming.authority : incoming.headers.host) || defaultHostname;\n if (!host) {\n throw new RequestError(\"Missing host header\");\n }\n let scheme;\n if (incoming instanceof Http2ServerRequest) {\n scheme = incoming.scheme;\n if (!(scheme === \"http\" || scheme === \"https\")) {\n throw new RequestError(\"Unsupported scheme\");\n }\n } else {\n scheme = incoming.socket && incoming.socket.encrypted ? \"https\" : \"http\";\n }\n const url = new URL(`${scheme}://${host}${incomingUrl}`);\n if (url.hostname.length !== host.length && url.hostname !== host.replace(/:\\d+$/, \"\")) {\n throw new RequestError(\"Invalid host header\");\n }\n req[urlKey] = url.href;\n return req;\n};\n\n// src/response.ts\nvar responseCache = Symbol(\"responseCache\");\nvar getResponseCache = Symbol(\"getResponseCache\");\nvar cacheKey = Symbol(\"cache\");\nvar GlobalResponse = global.Response;\nvar Response2 = class _Response {\n #body;\n #init;\n [getResponseCache]() {\n delete this[cacheKey];\n return this[responseCache] ||= new GlobalResponse(this.#body, this.#init);\n }\n constructor(body, init) {\n let headers;\n this.#body = body;\n if (init instanceof _Response) {\n const cachedGlobalResponse = init[responseCache];\n if (cachedGlobalResponse) {\n this.#init = cachedGlobalResponse;\n this[getResponseCache]();\n return;\n } else {\n this.#init = init.#init;\n headers = new Headers(init.#init.headers);\n }\n } else {\n this.#init = init;\n }\n if (typeof body === \"string\" || typeof body?.getReader !== \"undefined\" || body instanceof Blob || body instanceof Uint8Array) {\n headers ||= init?.headers || { \"content-type\": \"text/plain; charset=UTF-8\" };\n this[cacheKey] = [init?.status || 200, body, headers];\n }\n }\n get headers() {\n const cache = this[cacheKey];\n if (cache) {\n if (!(cache[2] instanceof Headers)) {\n cache[2] = new Headers(cache[2]);\n }\n return cache[2];\n }\n return this[getResponseCache]().headers;\n }\n get status() {\n return this[cacheKey]?.[0] ?? this[getResponseCache]().status;\n }\n get ok() {\n const status = this.status;\n return status >= 200 && status < 300;\n }\n};\n[\"body\", \"bodyUsed\", \"redirected\", \"statusText\", \"trailers\", \"type\", \"url\"].forEach((k) => {\n Object.defineProperty(Response2.prototype, k, {\n get() {\n return this[getResponseCache]()[k];\n }\n });\n});\n[\"arrayBuffer\", \"blob\", \"clone\", \"formData\", \"json\", \"text\"].forEach((k) => {\n Object.defineProperty(Response2.prototype, k, {\n value: function() {\n return this[getResponseCache]()[k]();\n }\n });\n});\nObject.setPrototypeOf(Response2, GlobalResponse);\nObject.setPrototypeOf(Response2.prototype, GlobalResponse.prototype);\n\n// src/utils.ts\nasync function readWithoutBlocking(readPromise) {\n return Promise.race([readPromise, Promise.resolve().then(() => Promise.resolve(void 0))]);\n}\nfunction writeFromReadableStreamDefaultReader(reader, writable, currentReadPromise) {\n const cancel = (error) => {\n reader.cancel(error).catch(() => {\n });\n };\n writable.on(\"close\", cancel);\n writable.on(\"error\", cancel);\n (currentReadPromise ?? reader.read()).then(flow, handleStreamError);\n return reader.closed.finally(() => {\n writable.off(\"close\", cancel);\n writable.off(\"error\", cancel);\n });\n function handleStreamError(error) {\n if (error) {\n writable.destroy(error);\n }\n }\n function onDrain() {\n reader.read().then(flow, handleStreamError);\n }\n function flow({ done, value }) {\n try {\n if (done) {\n writable.end();\n } else if (!writable.write(value)) {\n writable.once(\"drain\", onDrain);\n } else {\n return reader.read().then(flow, handleStreamError);\n }\n } catch (e) {\n handleStreamError(e);\n }\n }\n}\nfunction writeFromReadableStream(stream, writable) {\n if (stream.locked) {\n throw new TypeError(\"ReadableStream is locked.\");\n } else if (writable.destroyed) {\n return;\n }\n return writeFromReadableStreamDefaultReader(stream.getReader(), writable);\n}\nvar buildOutgoingHttpHeaders = (headers) => {\n const res = {};\n if (!(headers instanceof Headers)) {\n headers = new Headers(headers ?? void 0);\n }\n const cookies = [];\n for (const [k, v] of headers) {\n if (k === \"set-cookie\") {\n cookies.push(v);\n } else {\n res[k] = v;\n }\n }\n if (cookies.length > 0) {\n res[\"set-cookie\"] = cookies;\n }\n res[\"content-type\"] ??= \"text/plain; charset=UTF-8\";\n return res;\n};\n\n// src/utils/response/constants.ts\nvar X_ALREADY_SENT = \"x-hono-already-sent\";\n\n// src/globals.ts\nimport crypto from \"crypto\";\nvar webFetch = global.fetch;\nif (typeof global.crypto === \"undefined\") {\n global.crypto = crypto;\n}\nglobal.fetch = (info, init) => {\n init = {\n // Disable compression handling so people can return the result of a fetch\n // directly in the loader without messing with the Content-Encoding header.\n compress: false,\n ...init\n };\n return webFetch(info, init);\n};\n\n// src/listener.ts\nvar outgoingEnded = Symbol(\"outgoingEnded\");\nvar handleRequestError = () => new Response(null, {\n status: 400\n});\nvar handleFetchError = (e) => new Response(null, {\n status: e instanceof Error && (e.name === \"TimeoutError\" || e.constructor.name === \"TimeoutError\") ? 504 : 500\n});\nvar handleResponseError = (e, outgoing) => {\n const err = e instanceof Error ? e : new Error(\"unknown error\", { cause: e });\n if (err.code === \"ERR_STREAM_PREMATURE_CLOSE\") {\n console.info(\"The user aborted a request.\");\n } else {\n console.error(e);\n if (!outgoing.headersSent) {\n outgoing.writeHead(500, { \"Content-Type\": \"text/plain\" });\n }\n outgoing.end(`Error: ${err.message}`);\n outgoing.destroy(err);\n }\n};\nvar flushHeaders = (outgoing) => {\n if (\"flushHeaders\" in outgoing && outgoing.writable) {\n outgoing.flushHeaders();\n }\n};\nvar responseViaCache = async (res, outgoing) => {\n let [status, body, header] = res[cacheKey];\n if (header instanceof Headers) {\n header = buildOutgoingHttpHeaders(header);\n }\n if (typeof body === \"string\") {\n header[\"Content-Length\"] = Buffer.byteLength(body);\n } else if (body instanceof Uint8Array) {\n header[\"Content-Length\"] = body.byteLength;\n } else if (body instanceof Blob) {\n header[\"Content-Length\"] = body.size;\n }\n outgoing.writeHead(status, header);\n if (typeof body === \"string\" || body instanceof Uint8Array) {\n outgoing.end(body);\n } else if (body instanceof Blob) {\n outgoing.end(new Uint8Array(await body.arrayBuffer()));\n } else {\n flushHeaders(outgoing);\n await writeFromReadableStream(body, outgoing)?.catch(\n (e) => handleResponseError(e, outgoing)\n );\n }\n ;\n outgoing[outgoingEnded]?.();\n};\nvar isPromise = (res) => typeof res.then === \"function\";\nvar responseViaResponseObject = async (res, outgoing, options = {}) => {\n if (isPromise(res)) {\n if (options.errorHandler) {\n try {\n res = await res;\n } catch (err) {\n const errRes = await options.errorHandler(err);\n if (!errRes) {\n return;\n }\n res = errRes;\n }\n } else {\n res = await res.catch(handleFetchError);\n }\n }\n if (cacheKey in res) {\n return responseViaCache(res, outgoing);\n }\n const resHeaderRecord = buildOutgoingHttpHeaders(res.headers);\n if (res.body) {\n const reader = res.body.getReader();\n const values = [];\n let done = false;\n let currentReadPromise = void 0;\n if (resHeaderRecord[\"transfer-encoding\"] !== \"chunked\") {\n let maxReadCount = 2;\n for (let i = 0; i < maxReadCount; i++) {\n currentReadPromise ||= reader.read();\n const chunk = await readWithoutBlocking(currentReadPromise).catch((e) => {\n console.error(e);\n done = true;\n });\n if (!chunk) {\n if (i === 1) {\n await new Promise((resolve) => setTimeout(resolve));\n maxReadCount = 3;\n continue;\n }\n break;\n }\n currentReadPromise = void 0;\n if (chunk.value) {\n values.push(chunk.value);\n }\n if (chunk.done) {\n done = true;\n break;\n }\n }\n if (done && !(\"content-length\" in resHeaderRecord)) {\n resHeaderRecord[\"content-length\"] = values.reduce((acc, value) => acc + value.length, 0);\n }\n }\n outgoing.writeHead(res.status, resHeaderRecord);\n values.forEach((value) => {\n ;\n outgoing.write(value);\n });\n if (done) {\n outgoing.end();\n } else {\n if (values.length === 0) {\n flushHeaders(outgoing);\n }\n await writeFromReadableStreamDefaultReader(reader, outgoing, currentReadPromise);\n }\n } else if (resHeaderRecord[X_ALREADY_SENT]) {\n } else {\n outgoing.writeHead(res.status, resHeaderRecord);\n outgoing.end();\n }\n ;\n outgoing[outgoingEnded]?.();\n};\nvar getRequestListener = (fetchCallback, options = {}) => {\n const autoCleanupIncoming = options.autoCleanupIncoming ?? true;\n if (options.overrideGlobalObjects !== false && global.Request !== Request) {\n Object.defineProperty(global, \"Request\", {\n value: Request\n });\n Object.defineProperty(global, \"Response\", {\n value: Response2\n });\n }\n return async (incoming, outgoing) => {\n let res, req;\n try {\n req = newRequest(incoming, options.hostname);\n let incomingEnded = !autoCleanupIncoming || incoming.method === \"GET\" || incoming.method === \"HEAD\";\n if (!incomingEnded) {\n ;\n incoming[wrapBodyStream] = true;\n incoming.on(\"end\", () => {\n incomingEnded = true;\n });\n if (incoming instanceof Http2ServerRequest2) {\n ;\n outgoing[outgoingEnded] = () => {\n if (!incomingEnded) {\n setTimeout(() => {\n if (!incomingEnded) {\n setTimeout(() => {\n incoming.destroy();\n outgoing.destroy();\n });\n }\n });\n }\n };\n }\n }\n outgoing.on(\"close\", () => {\n const abortController = req[abortControllerKey];\n if (abortController) {\n if (incoming.errored) {\n req[abortControllerKey].abort(incoming.errored.toString());\n } else if (!outgoing.writableFinished) {\n req[abortControllerKey].abort(\"Client connection prematurely closed.\");\n }\n }\n if (!incomingEnded) {\n setTimeout(() => {\n if (!incomingEnded) {\n setTimeout(() => {\n incoming.destroy();\n });\n }\n });\n }\n });\n res = fetchCallback(req, { incoming, outgoing });\n if (cacheKey in res) {\n return responseViaCache(res, outgoing);\n }\n } catch (e) {\n if (!res) {\n if (options.errorHandler) {\n res = await options.errorHandler(req ? e : toRequestError(e));\n if (!res) {\n return;\n }\n } else if (!req) {\n res = handleRequestError();\n } else {\n res = handleFetchError(e);\n }\n } else {\n return handleResponseError(e, outgoing);\n }\n }\n try {\n return await responseViaResponseObject(res, outgoing, options);\n } catch (e) {\n return handleResponseError(e, outgoing);\n }\n };\n};\n\n// src/server.ts\nvar createAdaptorServer = (options) => {\n const fetchCallback = options.fetch;\n const requestListener = getRequestListener(fetchCallback, {\n hostname: options.hostname,\n overrideGlobalObjects: options.overrideGlobalObjects,\n autoCleanupIncoming: options.autoCleanupIncoming\n });\n const createServer = options.createServer || createServerHTTP;\n const server = createServer(options.serverOptions || {}, requestListener);\n return server;\n};\nvar serve = (options, listeningListener) => {\n const server = createAdaptorServer(options);\n server.listen(options?.port ?? 3e3, options.hostname, () => {\n const serverInfo = server.address();\n listeningListener && listeningListener(serverInfo);\n });\n return server;\n};\nexport {\n RequestError,\n createAdaptorServer,\n getRequestListener,\n serve\n};\n","// src/serve-static.ts\nimport { getMimeType } from \"hono/utils/mime\";\nimport { createReadStream, lstatSync, existsSync } from \"fs\";\nimport { join } from \"path\";\nvar COMPRESSIBLE_CONTENT_TYPE_REGEX = /^\\s*(?:text\\/[^;\\s]+|application\\/(?:javascript|json|xml|xml-dtd|ecmascript|dart|postscript|rtf|tar|toml|vnd\\.dart|vnd\\.ms-fontobject|vnd\\.ms-opentype|wasm|x-httpd-php|x-javascript|x-ns-proxy-autoconfig|x-sh|x-tar|x-virtualbox-hdd|x-virtualbox-ova|x-virtualbox-ovf|x-virtualbox-vbox|x-virtualbox-vdi|x-virtualbox-vhd|x-virtualbox-vmdk|x-www-form-urlencoded)|font\\/(?:otf|ttf)|image\\/(?:bmp|vnd\\.adobe\\.photoshop|vnd\\.microsoft\\.icon|vnd\\.ms-dds|x-icon|x-ms-bmp)|message\\/rfc822|model\\/gltf-binary|x-shader\\/x-fragment|x-shader\\/x-vertex|[^;\\s]+?\\+(?:json|text|xml|yaml))(?:[;\\s]|$)/i;\nvar ENCODINGS = {\n br: \".br\",\n zstd: \".zst\",\n gzip: \".gz\"\n};\nvar ENCODINGS_ORDERED_KEYS = Object.keys(ENCODINGS);\nvar createStreamBody = (stream) => {\n const body = new ReadableStream({\n start(controller) {\n stream.on(\"data\", (chunk) => {\n controller.enqueue(chunk);\n });\n stream.on(\"error\", (err) => {\n controller.error(err);\n });\n stream.on(\"end\", () => {\n controller.close();\n });\n },\n cancel() {\n stream.destroy();\n }\n });\n return body;\n};\nvar getStats = (path) => {\n let stats;\n try {\n stats = lstatSync(path);\n } catch {\n }\n return stats;\n};\nvar serveStatic = (options = { root: \"\" }) => {\n const root = options.root || \"\";\n const optionPath = options.path;\n if (root !== \"\" && !existsSync(root)) {\n console.error(`serveStatic: root path '${root}' is not found, are you sure it's correct?`);\n }\n return async (c, next) => {\n if (c.finalized) {\n return next();\n }\n let filename;\n if (optionPath) {\n filename = optionPath;\n } else {\n try {\n filename = decodeURIComponent(c.req.path);\n if (/(?:^|[\\/\\\\])\\.\\.(?:$|[\\/\\\\])/.test(filename)) {\n throw new Error();\n }\n } catch {\n await options.onNotFound?.(c.req.path, c);\n return next();\n }\n }\n let path = join(\n root,\n !optionPath && options.rewriteRequestPath ? options.rewriteRequestPath(filename, c) : filename\n );\n let stats = getStats(path);\n if (stats && stats.isDirectory()) {\n const indexFile = options.index ?? \"index.html\";\n path = join(path, indexFile);\n stats = getStats(path);\n }\n if (!stats) {\n await options.onNotFound?.(path, c);\n return next();\n }\n const mimeType = getMimeType(path);\n c.header(\"Content-Type\", mimeType || \"application/octet-stream\");\n if (options.precompressed && (!mimeType || COMPRESSIBLE_CONTENT_TYPE_REGEX.test(mimeType))) {\n const acceptEncodingSet = new Set(\n c.req.header(\"Accept-Encoding\")?.split(\",\").map((encoding) => encoding.trim())\n );\n for (const encoding of ENCODINGS_ORDERED_KEYS) {\n if (!acceptEncodingSet.has(encoding)) {\n continue;\n }\n const precompressedStats = getStats(path + ENCODINGS[encoding]);\n if (precompressedStats) {\n c.header(\"Content-Encoding\", encoding);\n c.header(\"Vary\", \"Accept-Encoding\", { append: true });\n stats = precompressedStats;\n path = path + ENCODINGS[encoding];\n break;\n }\n }\n }\n let result;\n const size = stats.size;\n const range = c.req.header(\"range\") || \"\";\n if (c.req.method == \"HEAD\" || c.req.method == \"OPTIONS\") {\n c.header(\"Content-Length\", size.toString());\n c.status(200);\n result = c.body(null);\n } else if (!range) {\n c.header(\"Content-Length\", size.toString());\n result = c.body(createStreamBody(createReadStream(path)), 200);\n } else {\n c.header(\"Accept-Ranges\", \"bytes\");\n c.header(\"Date\", stats.birthtime.toUTCString());\n const parts = range.replace(/bytes=/, \"\").split(\"-\", 2);\n const start = parseInt(parts[0], 10) || 0;\n let end = parseInt(parts[1], 10) || size - 1;\n if (size < end - start + 1) {\n end = size - 1;\n }\n const chunksize = end - start + 1;\n const stream = createReadStream(path, { start, end });\n c.header(\"Content-Length\", chunksize.toString());\n c.header(\"Content-Range\", `bytes ${start}-${end}/${stats.size}`);\n result = c.body(createStreamBody(stream), 206);\n }\n await options.onFound?.(path, c);\n return result;\n };\n};\nexport {\n serveStatic\n};\n","// src/index.ts\nimport { html } from \"hono/html\";\n\n// src/swagger/renderer.ts\nvar RENDER_TYPE = {\n STRING_ARRAY: \"string_array\",\n STRING: \"string\",\n JSON_STRING: \"json_string\",\n RAW: \"raw\"\n};\nvar RENDER_TYPE_MAP = {\n configUrl: RENDER_TYPE.STRING,\n deepLinking: RENDER_TYPE.RAW,\n presets: RENDER_TYPE.STRING_ARRAY,\n plugins: RENDER_TYPE.STRING_ARRAY,\n spec: RENDER_TYPE.JSON_STRING,\n url: RENDER_TYPE.STRING,\n urls: RENDER_TYPE.JSON_STRING,\n layout: RENDER_TYPE.STRING,\n docExpansion: RENDER_TYPE.STRING,\n maxDisplayedTags: RENDER_TYPE.RAW,\n operationsSorter: RENDER_TYPE.RAW,\n requestInterceptor: RENDER_TYPE.RAW,\n responseInterceptor: RENDER_TYPE.RAW,\n persistAuthorization: RENDER_TYPE.RAW,\n defaultModelsExpandDepth: RENDER_TYPE.RAW,\n defaultModelExpandDepth: RENDER_TYPE.RAW,\n defaultModelRendering: RENDER_TYPE.STRING,\n displayRequestDuration: RENDER_TYPE.RAW,\n filter: RENDER_TYPE.RAW,\n showExtensions: RENDER_TYPE.RAW,\n showCommonExtensions: RENDER_TYPE.RAW,\n queryConfigEnabled: RENDER_TYPE.RAW,\n displayOperationId: RENDER_TYPE.RAW,\n tagsSorter: RENDER_TYPE.RAW,\n onComplete: RENDER_TYPE.RAW,\n syntaxHighlight: RENDER_TYPE.JSON_STRING,\n tryItOutEnabled: RENDER_TYPE.RAW,\n requestSnippetsEnabled: RENDER_TYPE.RAW,\n requestSnippets: RENDER_TYPE.JSON_STRING,\n oauth2RedirectUrl: RENDER_TYPE.STRING,\n showMutabledRequest: RENDER_TYPE.RAW,\n request: RENDER_TYPE.JSON_STRING,\n supportedSubmitMethods: RENDER_TYPE.JSON_STRING,\n validatorUrl: RENDER_TYPE.STRING,\n withCredentials: RENDER_TYPE.RAW,\n modelPropertyMacro: RENDER_TYPE.RAW,\n parameterMacro: RENDER_TYPE.RAW\n};\nvar renderSwaggerUIOptions = (options) => {\n const optionsStrings = Object.entries(options).map(([k, v]) => {\n const key = k;\n if (!RENDER_TYPE_MAP[key] || v === void 0) {\n return \"\";\n }\n switch (RENDER_TYPE_MAP[key]) {\n case RENDER_TYPE.STRING:\n return `${key}: '${v}'`;\n case RENDER_TYPE.STRING_ARRAY:\n if (!Array.isArray(v)) {\n return \"\";\n }\n return `${key}: [${v.map((ve) => `${ve}`).join(\",\")}]`;\n case RENDER_TYPE.JSON_STRING:\n return `${key}: ${JSON.stringify(v)}`;\n case RENDER_TYPE.RAW:\n return `${key}: ${v}`;\n default:\n return \"\";\n }\n }).filter((item) => item !== \"\").join(\",\");\n return optionsStrings;\n};\n\n// src/swagger/resource.ts\nvar remoteAssets = ({ version }) => {\n const url = `https://cdn.jsdelivr.net/npm/swagger-ui-dist${version !== void 0 ? `@${version}` : \"\"}`;\n return {\n css: [`${url}/swagger-ui.css`],\n js: [`${url}/swagger-ui-bundle.js`]\n };\n};\n\n// src/index.ts\nvar SwaggerUI = (options) => {\n const asset = remoteAssets({ version: options?.version });\n delete options.version;\n if (options.manuallySwaggerUIHtml) {\n return options.manuallySwaggerUIHtml(asset);\n }\n const optionsStrings = renderSwaggerUIOptions(options);\n return `\n <div>\n <div id=\"swagger-ui\"></div>\n ${asset.css.map((url) => html`<link rel=\"stylesheet\" href=\"${url}\" />`)}\n ${asset.js.map((url) => html`<script src=\"${url}\" crossorigin=\"anonymous\"></script>`)}\n <script>\n window.onload = () => {\n window.ui = SwaggerUIBundle({\n dom_id: '#swagger-ui',${optionsStrings},\n })\n }\n </script>\n </div>\n `;\n};\nvar middleware = (options) => async (c) => {\n const title = options?.title ?? \"SwaggerUI\";\n return c.html(\n /* html */\n `\n <html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <meta name=\"description\" content=\"SwaggerUI\" />\n <title>${title}</title>\n </head>\n <body>\n ${SwaggerUI(options)}\n </body>\n </html>\n `\n );\n};\nexport {\n SwaggerUI,\n middleware as swaggerUI\n};\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\nimport util from \"node:util\";\n/* These items copied from Node.js: node/lib/internal/errors.js */\nconst classRegExp = /^([A-Z][a-z0-9]*)+$/;\n// Sorted by a rough estimate on most frequently used entries.\nconst kTypes = [\n \"string\",\n \"function\",\n \"number\",\n \"object\",\n // Accept 'Function' and 'Object' as alternative to the lower cased version.\n \"Function\",\n \"Object\",\n \"boolean\",\n \"bigint\",\n \"symbol\",\n];\n/**\n * Determine the specific type of a value for type-mismatch errors.\n * @param {*} value\n * @returns {string}\n */\nfunction determineSpecificType(value) {\n if (value == null) {\n return \"\" + value;\n }\n if (typeof value === \"function\" && value.name) {\n return `function ${value.name}`;\n }\n if (typeof value === \"object\") {\n if (value.constructor?.name) {\n return `an instance of ${value.constructor.name}`;\n }\n return `${util.inspect(value, { depth: -1 })}`;\n }\n let inspected = util.inspect(value, { colors: false });\n if (inspected.length > 28) {\n inspected = `${inspected.slice(0, 25)}...`;\n }\n return `type ${typeof value} (${inspected})`;\n}\n// The following classes are adaptations of a subset of the ERR_* classes\n// declared in Node.js in the file - node/lib/internal/errors.js.\nexport class ERR_HTTP_BODY_NOT_ALLOWED extends Error {\n constructor() {\n super(\"Adding content for this request method or response status is not allowed.\");\n }\n}\nexport class ERR_HTTP_CONTENT_LENGTH_MISMATCH extends Error {\n constructor(actual, expected) {\n super(`Response body's content-length of ${actual} byte(s) does not match the content-length of ${expected} byte(s) set in header`);\n }\n}\nexport class ERR_HTTP_HEADERS_SENT extends Error {\n constructor(arg) {\n super(`Cannot ${arg} headers after they are sent to the client`);\n }\n}\nexport class ERR_INVALID_ARG_VALUE extends TypeError /*, RangeError */ {\n constructor(name, value, reason = \"is invalid\") {\n let inspected = util.inspect(value);\n if (inspected.length > 128) {\n inspected = `${inspected.slice(0, 128)}...`;\n }\n const type = name.includes(\".\") ? \"property\" : \"argument\";\n super(`The ${type} '${name}' ${reason}. Received ${inspected}`);\n }\n}\nexport class ERR_INVALID_CHAR extends TypeError {\n constructor(name, field) {\n let msg = `Invalid character in ${name}`;\n if (field !== undefined) {\n msg += ` [\"${field}\"]`;\n }\n super(msg);\n }\n}\nexport class ERR_HTTP_INVALID_HEADER_VALUE extends TypeError {\n constructor(value, name) {\n super(`Invalid value \"${value}\" for header \"${name}\"`);\n }\n}\nexport class ERR_HTTP_INVALID_STATUS_CODE extends RangeError {\n originalStatusCode;\n constructor(originalStatusCode) {\n super(`Invalid status code: ${originalStatusCode}`);\n this.originalStatusCode = originalStatusCode;\n }\n}\nexport class ERR_HTTP_TRAILER_INVALID extends Error {\n constructor() {\n super(`Trailers are invalid with this transfer encoding`);\n }\n}\nexport class ERR_INVALID_ARG_TYPE extends TypeError {\n constructor(name, expected, actual) {\n // assert(typeof name === 'string', \"'name' must be a string\");\n if (!Array.isArray(expected)) {\n expected = [expected];\n }\n let msg = \"The \";\n if (name.endsWith(\" argument\")) {\n // For cases like 'first argument'\n msg += `${name} `;\n }\n else {\n const type = name.includes(\".\") ? \"property\" : \"argument\";\n msg += `\"${name}\" ${type} `;\n }\n msg += \"must be \";\n const types = [];\n const instances = [];\n const other = [];\n for (const value of expected) {\n // assert(typeof value === 'string',\n // 'All expected entries have to be of type string');\n if (kTypes.includes(value)) {\n types.push(value.toLowerCase());\n }\n else if (classRegExp.exec(value) !== null) {\n instances.push(value);\n }\n else {\n // assert(value !== 'object',\n // 'The value \"object\" should be written as \"Object\"');\n other.push(value);\n }\n }\n // Special handle `object` in case other instances are allowed to outline\n // the differences between each other.\n if (instances.length > 0) {\n const pos = types.indexOf(\"object\");\n if (pos !== -1) {\n types.splice(pos, 1);\n instances.push(\"Object\");\n }\n }\n if (types.length > 0) {\n if (types.length > 2) {\n const last = types.pop();\n msg += `one of type ${types.join(\", \")}, or ${last}`;\n }\n else if (types.length === 2) {\n msg += `one of type ${types[0]} or ${types[1]}`;\n }\n else {\n msg += `of type ${types[0]}`;\n }\n if (instances.length > 0 || other.length > 0)\n msg += \" or \";\n }\n if (instances.length > 0) {\n if (instances.length > 2) {\n const last = instances.pop();\n msg += `an instance of ${instances.join(\", \")}, or ${last}`;\n }\n else {\n msg += `an instance of ${instances[0]}`;\n if (instances.length === 2) {\n msg += ` or ${instances[1]}`;\n }\n }\n if (other.length > 0)\n msg += \" or \";\n }\n if (other.length > 0) {\n if (other.length > 2) {\n const last = other.pop();\n msg += `one of ${other.join(\", \")}, or ${last}`;\n }\n else if (other.length === 2) {\n msg += `one of ${other[0]} or ${other[1]}`;\n }\n else {\n if (other[0].toLowerCase() !== other[0])\n msg += \"an \";\n msg += `${other[0]}`;\n }\n }\n msg += `. Received ${determineSpecificType(actual)}`;\n super(msg);\n }\n}\nexport class ERR_INVALID_HTTP_TOKEN extends TypeError {\n constructor(name, field) {\n super(`${name} must be a valid HTTP token [\"${field}\"]`);\n }\n}\nexport class ERR_METHOD_NOT_IMPLEMENTED extends Error {\n constructor(methodName) {\n super(`The ${methodName} method is not implemented`);\n }\n}\nexport class ERR_STREAM_ALREADY_FINISHED extends Error {\n constructor(methodName) {\n super(`Cannot call ${methodName} after a stream was finished`);\n }\n}\nexport class ERR_STREAM_CANNOT_PIPE extends Error {\n constructor() {\n super(`Cannot pipe, not readable`);\n }\n}\nexport class ERR_STREAM_DESTROYED extends Error {\n constructor(methodName) {\n super(`Cannot call ${methodName} after a stream was destroyed`);\n }\n}\nexport class ERR_STREAM_NULL_VALUES extends TypeError {\n constructor() {\n super(`May not write null values to stream`);\n }\n}\nexport class ERR_STREAM_WRITE_AFTER_END extends Error {\n constructor() {\n super(`write after end`);\n }\n}\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\n// This file modeled after Node.js - node/lib/_http_incoming.js\nimport { Readable } from \"node:stream\";\nimport { ERR_METHOD_NOT_IMPLEMENTED } from \"../utils/errors.js\";\nconst kHeaders = Symbol(\"kHeaders\");\nconst kHeadersDistinct = Symbol(\"kHeadersDistinct\");\nconst kHeadersCount = Symbol(\"kHeadersCount\");\nconst kTrailers = Symbol(\"kTrailers\");\nconst kTrailersDistinct = Symbol(\"kTrailersDistinct\");\nconst kTrailersCount = Symbol(\"kTrailersCount\");\n/**\n * This is an implementation of IncomingMessage from Node.js intended to run in\n * a WinterTC runtime. The 'Readable' interface of this class is wired to a 'Request'\n * object's 'body'.\n *\n * This instance can be used in normal ways, but it does not give access to the\n * underlying socket (because there isn't one. req.socket will always return null).\n *\n * Some code in this class is transplanted/adapted from node/lib/_http_incoming.js\n */\nexport class FetchIncomingMessage extends Readable {\n get socket() {\n // Difference from Node.js -\n // We don't really have a way to support direct access to the socket\n return null;\n }\n set socket(_val) {\n // Difference from Node.js -\n // We don't really have a way to support direct access to the socket\n throw new ERR_METHOD_NOT_IMPLEMENTED(\"socket\");\n }\n httpVersionMajor;\n httpVersionMinor;\n httpVersion;\n complete = false;\n [kHeaders] = null;\n [kHeadersDistinct] = null;\n [kHeadersCount] = 0;\n rawHeaders = [];\n [kTrailers] = null;\n [kTrailersDistinct] = null;\n [kTrailersCount] = 0;\n rawTrailers = [];\n joinDuplicateHeaders = false;\n aborted = false;\n upgrade = false;\n // request (server) only\n url = \"\";\n method;\n // TODO: Support ClientRequest\n // statusCode = null;\n // statusMessage = null;\n // client = socket;\n _consuming;\n _dumped;\n // The underlying ReadableStream\n _stream = null;\n constructor() {\n const streamOptions = {};\n // Difference from Node.js -\n // In Node.js, if the IncomingMessages is associated with a socket then\n // that socket's 'readableHighWaterMark' would be used to set\n // streamOptions.highWaterMark before calling parent constructor.\n super(streamOptions);\n this._readableState.readingMore = true;\n this._consuming = false;\n // Flag for when we decide that this message cannot possibly be\n // read by the user, so there's no point continuing to handle it.\n this._dumped = false;\n }\n get connection() {\n // Difference from Node.js -\n // We don't really have a way to support direct access to the socket\n return null;\n }\n set connection(_socket) {\n // Difference from Node.js -\n // We don't really have a way to support direct access to the socket\n console.error(\"No support for IncomingMessage.connection\");\n }\n get headers() {\n if (!this[kHeaders]) {\n this[kHeaders] = {};\n const src = this.rawHeaders;\n const dst = this[kHeaders];\n for (let n = 0; n < this[kHeadersCount]; n += 2) {\n this._addHeaderLine(src[n], src[n + 1], dst);\n }\n }\n return this[kHeaders];\n }\n set headers(val) {\n this[kHeaders] = val;\n }\n get headersDistinct() {\n if (!this[kHeadersDistinct]) {\n this[kHeadersDistinct] = {};\n const src = this.rawHeaders;\n const dst = this[kHeadersDistinct];\n for (let n = 0; n < this[kHeadersCount]; n += 2) {\n this._addHeaderLineDistinct(src[n], src[n + 1], dst);\n }\n }\n return this[kHeadersDistinct];\n }\n set headersDistinct(val) {\n this[kHeadersDistinct] = val;\n }\n get trailers() {\n if (!this[kTrailers]) {\n this[kTrailers] = {};\n const src = this.rawTrailers;\n const dst = this[kTrailers];\n for (let n = 0; n < this[kTrailersCount]; n += 2) {\n this._addHeaderLine(src[n], src[n + 1], dst);\n }\n }\n return this[kTrailers];\n }\n set trailers(val) {\n this[kTrailers] = val;\n }\n get trailersDistinct() {\n if (!this[kTrailersDistinct]) {\n this[kTrailersDistinct] = {};\n const src = this.rawTrailers;\n const dst = this[kTrailersDistinct];\n for (let n = 0; n < this[kTrailersCount]; n += 2) {\n this._addHeaderLineDistinct(src[n], src[n + 1], dst);\n }\n }\n return this[kTrailersDistinct];\n }\n set trailersDistinct(val) {\n this[kTrailersDistinct] = val;\n }\n setTimeout(msecs, callback) {\n // Difference from Node.js -\n // In Node.js, this is supposed to set the underlying socket to time out\n // after some time and then run a callback.\n // We do nothing here since we don't really have a way to support direct\n // access to the socket.\n return this;\n }\n async _read(n) {\n // As this is an implementation of stream.Readable, we provide a _read()\n // function that pumps the next chunk out of the underlying ReadableStream.\n if (!this._consuming) {\n this._readableState.readingMore = false;\n this._consuming = true;\n }\n // Difference from Node.js -\n // The Node.js implementation will already have its internal buffer\n // filled by the parserOnBody function.\n // For our implementation, we use the ReadableStream instance.\n if (this._stream == null) {\n // For GET and HEAD requests, the stream would be empty.\n // Simply signal that we're done.\n this.complete = true;\n this.push(null);\n return;\n }\n const reader = this._stream.getReader();\n try {\n const data = await reader.read();\n if (data.done) {\n // Done with stream, tell Readable we have no more data;\n this.complete = true;\n this.push(null);\n }\n else {\n this.push(data.value);\n }\n }\n catch (e) {\n this.destroy(e);\n }\n finally {\n reader.releaseLock();\n }\n }\n _destroy(err, cb) {\n if (!this.readableEnded || !this.complete) {\n this.aborted = true;\n this.emit(\"aborted\");\n }\n // Difference from Node.js -\n // Node.js would check for the existence of the socket and do some additional\n // cleanup.\n // By the way, I believe this name 'onError' is misleading, it is called\n // regardless of whether there was an error. The callback is expected to\n // check for the existence of the error to decide whether the result was\n // actually an error.\n setTimeout(onError, 0, this, err, cb);\n }\n _addHeaderLines(headers, n) {\n if (headers?.length) {\n let dest;\n if (this.complete) {\n this.rawTrailers = headers;\n this[kTrailersCount] = n;\n dest = this[kTrailers];\n }\n else {\n this.rawHeaders = headers;\n this[kHeadersCount] = n;\n dest = this[kHeaders];\n }\n if (dest) {\n for (let i = 0; i < n; i += 2) {\n this._addHeaderLine(headers[i], headers[i + 1], dest);\n }\n }\n }\n }\n // Add the given (field, value) pair to the message\n //\n // Per RFC2616, section 4.2 it is acceptable to join multiple instances of the\n // same header with a ', ' if the header in question supports specification of\n // multiple values this way. The one exception to this is the Cookie header,\n // which has multiple values joined with a '; ' instead. If a header's values\n // cannot be joined in either of these ways, we declare the first instance the\n // winner and drop the second. Extended header fields (those beginning with\n // 'x-') are always joined.\n _addHeaderLine(field, value, dest) {\n field = matchKnownFields(field);\n const flag = field.charCodeAt(0);\n if (flag === 0 || flag === 2) {\n field = field.slice(1);\n // Make a delimited list\n if (typeof dest[field] === \"string\") {\n dest[field] += (flag === 0 ? \", \" : \"; \") + value;\n }\n else {\n dest[field] = value;\n }\n }\n else if (flag === 1) {\n // Array header -- only Set-Cookie at the moment\n if (dest[\"set-cookie\"] !== undefined) {\n dest[\"set-cookie\"].push(value);\n }\n else {\n dest[\"set-cookie\"] = [value];\n }\n }\n else if (this.joinDuplicateHeaders) {\n // RFC 9110 https://www.rfc-editor.org/rfc/rfc9110#section-5.2\n // https://github.com/nodejs/node/issues/45699\n // allow authorization multiple fields\n // Make a delimited list\n if (dest[field] === undefined) {\n dest[field] = value;\n }\n else {\n dest[field] += \", \" + value;\n }\n }\n else if (dest[field] === undefined) {\n // Drop duplicates\n dest[field] = value;\n }\n }\n _addHeaderLineDistinct(field, value, dest) {\n field = field.toLowerCase();\n if (!dest[field]) {\n dest[field] = [value];\n }\n else {\n dest[field].push(value);\n }\n }\n // Call this instead of resume() if we want to just\n // dump all the data to /dev/null\n _dump() {\n if (!this._dumped) {\n this._dumped = true;\n // If there is buffered data, it may trigger 'data' events.\n // Remove 'data' event listeners explicitly.\n this.removeAllListeners(\"data\");\n this.resume();\n }\n }\n}\n/* These items copied from Node.js: node/lib/_http_incoming.js, because they are not exported from that file. */\n// This function is used to help avoid the lowercasing of a field name if it\n// matches a 'traditional cased' version of a field name. It then returns the\n// lowercased name to both avoid calling toLowerCase() a second time and to\n// indicate whether the field was a 'no duplicates' field. If a field is not a\n// 'no duplicates' field, a `0` byte is prepended as a flag. The one exception\n// to this is the Set-Cookie header which is indicated by a `1` byte flag, since\n// it is an 'array' field and thus is treated differently in _addHeaderLines().\n// TODO: perhaps http_parser could be returning both raw and lowercased versions\n// of known header names to avoid us having to call toLowerCase() for those\n// headers.\nfunction matchKnownFields(field, lowercased = false) {\n switch (field.length) {\n case 3:\n if (field === \"Age\" || field === \"age\")\n return \"age\";\n break;\n case 4:\n if (field === \"Host\" || field === \"host\")\n return \"host\";\n if (field === \"From\" || field === \"from\")\n return \"from\";\n if (field === \"ETag\" || field === \"etag\")\n return \"etag\";\n if (field === \"Date\" || field === \"date\")\n return \"\\u0000date\";\n if (field === \"Vary\" || field === \"vary\")\n return \"\\u0000vary\";\n break;\n case 6:\n if (field === \"Server\" || field === \"server\")\n return \"server\";\n if (field === \"Cookie\" || field === \"cookie\")\n return \"\\u0002cookie\";\n if (field === \"Origin\" || field === \"origin\")\n return \"\\u0000origin\";\n if (field === \"Expect\" || field === \"expect\")\n return \"\\u0000expect\";\n if (field === \"Accept\" || field === \"accept\")\n return \"\\u0000accept\";\n break;\n case 7:\n if (field === \"Referer\" || field === \"referer\")\n return \"referer\";\n if (field === \"Expires\" || field === \"expires\")\n return \"expires\";\n if (field === \"Upgrade\" || field === \"upgrade\")\n return \"\\u0000upgrade\";\n break;\n case 8:\n if (field === \"Location\" || field === \"location\")\n return \"location\";\n if (field === \"If-Match\" || field === \"if-match\")\n return \"\\u0000if-match\";\n break;\n case 10:\n if (field === \"User-Agent\" || field === \"user-agent\")\n return \"user-agent\";\n if (field === \"Set-Cookie\" || field === \"set-cookie\")\n return \"\\u0001\";\n if (field === \"Connection\" || field === \"connection\")\n return \"\\u0000connection\";\n break;\n case 11:\n if (field === \"Retry-After\" || field === \"retry-after\")\n return \"retry-after\";\n break;\n case 12:\n if (field === \"Content-Type\" || field === \"content-type\")\n return \"content-type\";\n if (field === \"Max-Forwards\" || field === \"max-forwards\")\n return \"max-forwards\";\n break;\n case 13:\n if (field === \"Authorization\" || field === \"authorization\")\n return \"authorization\";\n if (field === \"Last-Modified\" || field === \"last-modified\")\n return \"last-modified\";\n if (field === \"Cache-Control\" || field === \"cache-control\")\n return \"\\u0000cache-control\";\n if (field === \"If-None-Match\" || field === \"if-none-match\")\n return \"\\u0000if-none-match\";\n break;\n case 14:\n if (field === \"Content-Length\" || field === \"content-length\")\n return \"content-length\";\n break;\n case 15:\n if (field === \"Accept-Encoding\" || field === \"accept-encoding\")\n return \"\\u0000accept-encoding\";\n if (field === \"Accept-Language\" || field === \"accept-language\")\n return \"\\u0000accept-language\";\n if (field === \"X-Forwarded-For\" || field === \"x-forwarded-for\")\n return \"\\u0000x-forwarded-for\";\n break;\n case 16:\n if (field === \"Content-Encoding\" || field === \"content-encoding\")\n return \"\\u0000content-encoding\";\n if (field === \"X-Forwarded-Host\" || field === \"x-forwarded-host\")\n return \"\\u0000x-forwarded-host\";\n break;\n case 17:\n if (field === \"If-Modified-Since\" || field === \"if-modified-since\")\n return \"if-modified-since\";\n if (field === \"Transfer-Encoding\" || field === \"transfer-encoding\")\n return \"\\u0000transfer-encoding\";\n if (field === \"X-Forwarded-Proto\" || field === \"x-forwarded-proto\")\n return \"\\u0000x-forwarded-proto\";\n break;\n case 19:\n if (field === \"Proxy-Authorization\" || field === \"proxy-authorization\")\n return \"proxy-authorization\";\n if (field === \"If-Unmodified-Since\" || field === \"if-unmodified-since\")\n return \"if-unmodified-since\";\n break;\n }\n if (lowercased) {\n return \"\\u0000\" + field;\n }\n return matchKnownFields(field.toLowerCase(), true);\n}\nfunction onError(self, error, cb) {\n // This is to keep backward compatible behavior.\n // An error is emitted only if there are listeners attached to the event.\n if (self.listenerCount(\"error\") === 0) {\n cb();\n }\n else {\n cb(error);\n }\n}\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\nimport { ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE } from \"./errors.js\";\n/* These items copied from Node.js: node/lib/internal/validators.js */\nexport function validateString(value, name) {\n if (typeof value !== \"string\")\n throw new ERR_INVALID_ARG_TYPE(name, \"string\", value);\n}\nconst linkValueRegExp = /^(?:<[^>]*>)(?:\\s*;\\s*[^;\"\\s]+(?:=(\")?[^;\"\\s]*\\1)?)*$/;\nexport function validateLinkHeaderFormat(value, name) {\n if (typeof value === \"undefined\" || !linkValueRegExp.exec(value)) {\n throw new ERR_INVALID_ARG_VALUE(name, value, 'must be an array or string of format \"</styles.css>; rel=preload; as=style\"');\n }\n}\nexport function validateLinkHeaderValue(hints) {\n if (typeof hints === \"string\") {\n validateLinkHeaderFormat(hints, \"hints\");\n return hints;\n }\n else if (Array.isArray(hints)) {\n const hintsLength = hints.length;\n let result = \"\";\n if (hintsLength === 0) {\n return result;\n }\n for (let i = 0; i < hintsLength; i++) {\n const link = hints[i];\n validateLinkHeaderFormat(link, \"hints\");\n result += link;\n if (i !== hintsLength - 1) {\n result += \", \";\n }\n }\n return result;\n }\n throw new ERR_INVALID_ARG_VALUE(\"hints\", hints, 'must be an array or string of format \"</styles.css>; rel=preload; as=style\"');\n}\n/* These items copied from Node.js: node/lib/internal/util/types.js */\nexport function isUint8Array(value) {\n return value != null && value[Symbol.toStringTag] === \"Uint8Array\";\n}\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\n/* These items copied from Node.js: node/lib/internal/http.js. */\nexport const kNeedDrain = Symbol(\"kNeedDrain\");\nexport const kOutHeaders = Symbol(\"kOutHeaders\");\n// In Node.js this utcDate is cached for 1 second, for use across\n// all http connections. However, in C@E we just create a new one\n// since we're not able to share this data across separate invocations.\nexport function utcDate() {\n return new Date().toUTCString();\n}\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\n/* These items copied from Node.js: node/lib/internal/streams/state.js. */\nexport function getDefaultHighWaterMark(objectMode) {\n return objectMode ? 16 : 64 * 1024;\n}\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\n/* These items copied from Node.js: node/lib/_http_common.js. */\nconst tokenRegExp = /^[\\^_`a-zA-Z\\-0-9!#$%&'*+.|~]+$/;\n/**\n * Verifies that the given val is a valid HTTP token\n * per the rules defined in RFC 7230\n * See https://tools.ietf.org/html/rfc7230#section-3.2.6\n */\nexport function checkIsHttpToken(val) {\n return tokenRegExp.test(val);\n}\nconst headerCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/;\n/**\n * True if val contains an invalid field-vchar\n * field-value = *( field-content / obs-fold )\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n */\nexport function checkInvalidHeaderChar(val) {\n return headerCharRegex.test(val);\n}\nexport const chunkExpression = /(?:^|\\W)chunked(?:$|\\W)/i;\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\n// This file modeled after Node.js - node/lib/_http_outgoing.js\nimport { Buffer } from \"node:buffer\";\nimport { Writable } from \"node:stream\";\nimport { ERR_HTTP_BODY_NOT_ALLOWED, ERR_HTTP_CONTENT_LENGTH_MISMATCH, ERR_HTTP_HEADERS_SENT, ERR_HTTP_INVALID_HEADER_VALUE, ERR_HTTP_TRAILER_INVALID, ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, ERR_INVALID_CHAR, ERR_INVALID_HTTP_TOKEN, ERR_METHOD_NOT_IMPLEMENTED, ERR_STREAM_ALREADY_FINISHED, ERR_STREAM_CANNOT_PIPE, ERR_STREAM_DESTROYED, ERR_STREAM_NULL_VALUES, ERR_STREAM_WRITE_AFTER_END, } from \"../utils/errors.js\";\nimport { isUint8Array, validateString } from \"../utils/types.js\";\nimport { kNeedDrain, kOutHeaders, utcDate } from \"./internal-http.js\";\nimport { getDefaultHighWaterMark } from \"./internal-streams-state.js\";\nimport { checkInvalidHeaderChar, checkIsHttpToken, chunkExpression as RE_TE_CHUNKED, } from \"./http-common.js\";\n/* These items copied from Node.js: node/lib/_http_outgoing.js. */\nfunction debug(format) {\n // console.log(\"http \" + format);\n}\nconst kCorked = Symbol(\"corked\");\nconst kChunkedBuffer = Symbol(\"kChunkedBuffer\");\nconst kChunkedLength = Symbol(\"kChunkedLength\");\nconst kUniqueHeaders = Symbol(\"kUniqueHeaders\");\nconst kBytesWritten = Symbol(\"kBytesWritten\");\nconst kErrored = Symbol(\"errored\");\nconst kHighWaterMark = Symbol(\"kHighWaterMark\");\nconst kRejectNonStandardBodyWrites = Symbol(\"kRejectNonStandardBodyWrites\");\nconst nop = () => { };\nconst RE_CONN_CLOSE = /(?:^|\\W)close(?:$|\\W)/i;\n// isCookieField performs a case-insensitive comparison of a provided string\n// against the word \"cookie.\" As of V8 6.6 this is faster than handrolling or\n// using a case-insensitive RegExp.\nfunction isCookieField(s) {\n return s.length === 6 && s.toLowerCase() === \"cookie\";\n}\nfunction isContentDispositionField(s) {\n return s.length === 19 && s.toLowerCase() === \"content-disposition\";\n}\n/**\n * An in-memory buffer that stores the chunks that have been streamed to an\n * OutgoingMessage instance.\n */\nexport class WrittenDataBuffer {\n [kCorked] = 0;\n [kHighWaterMark] = getDefaultHighWaterMark();\n entries = [];\n onWrite;\n constructor(params = {}) {\n this.onWrite = params.onWrite;\n }\n write(data, encoding, callback) {\n this.entries.push({\n data,\n length: data.length,\n encoding,\n callback,\n written: false,\n });\n this._flush();\n return true;\n }\n cork() {\n this[kCorked]++;\n }\n uncork() {\n this[kCorked]--;\n this._flush();\n }\n _flush() {\n if (this[kCorked] <= 0) {\n for (const [index, entry] of this.entries.entries()) {\n if (!entry.written) {\n entry.written = true;\n if (this.onWrite != null) {\n this.onWrite(index, entry);\n }\n if (entry.callback != null) {\n entry.callback.call(undefined);\n }\n }\n }\n }\n }\n get writableLength() {\n return this.entries.reduce((acc, entry) => {\n return acc + (entry.written && entry.length ? entry.length : 0);\n }, 0);\n }\n get writableHighWaterMark() {\n return this[kHighWaterMark];\n }\n get writableCorked() {\n return this[kCorked];\n }\n}\n/**\n * This is an implementation of OutgoingMessage from Node.js intended to run in\n * a WinterTC runtime. The 'Writable' interface of this class is wired to an in-memory\n * buffer.\n *\n * This instance can be used in normal ways, but it does not give access to the\n * underlying socket (because there isn't one. req.socket will always return null).\n *\n * Some code in this class is transplanted/adapted from node/lib/_http_outgoing.js\n */\nexport class FetchOutgoingMessage extends Writable {\n req;\n outputData;\n outputSize;\n // Difference from Node.js -\n // `writtenHeaderBytes` is the number of bytes the header has taken.\n // Since Node.js writes both the headers and body into the same outgoing\n // stream, it helps to keep track of this so that we can skip that many bytes\n // from the beginning of the stream when providing the outgoing stream.\n writtenHeaderBytes = 0;\n _last;\n chunkedEncoding;\n shouldKeepAlive;\n maxRequestsOnConnectionReached;\n _defaultKeepAlive;\n useChunkedEncodingByDefault;\n sendDate;\n _removedConnection;\n _removedContLen;\n _removedTE;\n strictContentLength;\n [kBytesWritten];\n _contentLength;\n _hasBody;\n _trailer;\n [kNeedDrain];\n finished;\n _headerSent;\n [kCorked];\n [kChunkedBuffer];\n [kChunkedLength];\n _closed;\n // Difference from Node.js -\n // In Node.js, this is a socket object.\n // [kSocket]: null;\n _header;\n [kOutHeaders];\n _keepAliveTimeout;\n _maxRequestsPerSocket;\n _onPendingData;\n [kUniqueHeaders];\n [kErrored];\n [kHighWaterMark];\n [kRejectNonStandardBodyWrites];\n _writtenDataBuffer = new WrittenDataBuffer({\n onWrite: this._onDataWritten.bind(this),\n });\n constructor(req, options) {\n super();\n this.req = req;\n // Queue that holds all currently pending data, until the response will be\n // assigned to the socket (until it will its turn in the HTTP pipeline).\n this.outputData = [];\n // `outputSize` is an approximate measure of how much data is queued on this\n // response. `_onPendingData` will be invoked to update similar global\n // per-connection counter. That counter will be used to pause/unpause the\n // TCP socket and HTTP Parser and thus handle the backpressure.\n this.outputSize = 0;\n // Cannot assign to this.writable because it is a readonly property\n // this.writable = true;\n this.destroyed = false;\n this._last = false;\n this.chunkedEncoding = false;\n this.shouldKeepAlive = true;\n this.maxRequestsOnConnectionReached = false;\n this._defaultKeepAlive = true;\n this.useChunkedEncodingByDefault = true;\n this.sendDate = false;\n this._removedConnection = false;\n this._removedContLen = false;\n this._removedTE = false;\n this.strictContentLength = false;\n this[kBytesWritten] = 0;\n this._contentLength = null;\n this._hasBody = true;\n this._trailer = \"\";\n this[kNeedDrain] = false;\n this.finished = false;\n this._headerSent = false;\n this[kCorked] = 0;\n this[kChunkedBuffer] = [];\n this[kChunkedLength] = 0;\n this._closed = false;\n this._header = null;\n this[kOutHeaders] = null;\n this._keepAliveTimeout = 0;\n this._onPendingData = nop;\n this[kErrored] = null;\n this[kHighWaterMark] = options?.highWaterMark ?? getDefaultHighWaterMark();\n this[kRejectNonStandardBodyWrites] =\n options?.rejectNonStandardBodyWrites ?? false;\n this[kUniqueHeaders] = null;\n }\n _renderHeaders() {\n if (this._header) {\n throw new ERR_HTTP_HEADERS_SENT(\"render\");\n }\n const headersMap = this[kOutHeaders];\n const headers = {};\n if (headersMap !== null) {\n const keys = Object.keys(headersMap);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n headers[headersMap[key][0]] = headersMap[key][1];\n }\n }\n return headers;\n }\n cork() {\n // Difference from Node.js -\n // In Node.js, if a socket exists, we would call cork() on the socket instead\n // In our implementation, we do the same to the \"written data buffer\" instead.\n this[kCorked]++;\n if (this._writtenDataBuffer != null) {\n this._writtenDataBuffer.cork();\n }\n }\n uncork() {\n // Difference from Node.js -\n // In Node.js, if a socket exists, we would call uncork() on the socket instead\n // In our implementation, we do the same to the \"written data buffer\" instead.\n this[kCorked]--;\n if (this._writtenDataBuffer != null) {\n this._writtenDataBuffer.uncork();\n }\n if (this[kCorked] || this[kChunkedBuffer].length === 0) {\n return;\n }\n // Difference from Node.js -\n // Chunked transfer encoding doesn't need to use the low-level protocol\n // (with each chunk preceded by its length)\n // All commented out code below is from Node.js used for this purpose.\n // const len = this[kChunkedLength];\n const buf = this[kChunkedBuffer];\n // assert(this.chunkedEncoding);\n // let callbacks: (WriteCallback | undefined)[] | undefined;\n // this._send(len.toString(16), \"latin1\", null);\n // this._send(crlf_buf, null, null);\n for (const { data, encoding, callback } of buf) {\n // this._send(data ?? \"\", encoding, null);\n // if (callback) {\n // callbacks ??= [];\n // callbacks.push(callback);\n // }\n this._send(data ?? \"\", encoding, callback);\n }\n // this._send(\n // crlf_buf,\n // null,\n // callbacks?.length\n // ? (err) => {\n // for (const callback of callbacks) {\n // callback?.(err);\n // }\n // }\n // : null\n // );\n this[kChunkedBuffer].length = 0;\n this[kChunkedLength] = 0;\n }\n setTimeout(msecs, callback) {\n // Difference from Node.js -\n // In Node.js, this is supposed to set the underlying socket to time out\n // after some time and then run a callback.\n // We do nothing here since we don't really have a way to support direct\n // access to the socket.\n return this;\n }\n destroy(error) {\n if (this.destroyed) {\n return this;\n }\n this.destroyed = true;\n this[kErrored] = error;\n // Difference from Node.js -\n // In Node.js, we would also attempt to destroy the underlying socket.\n return this;\n }\n _send(data, encoding, callback, byteLength) {\n // This is a shameful hack to get the headers and first body chunk onto\n // the same packet. Future versions of Node are going to take care of\n // this at a lower level and in a more general way.\n if (!this._headerSent) {\n const header = this._header;\n if (typeof data === \"string\" &&\n (encoding === \"utf8\" || encoding === \"latin1\" || !encoding)) {\n data = header + data;\n }\n else {\n this.outputData.unshift({\n data: header,\n encoding: \"latin1\",\n callback: undefined,\n });\n this.outputSize += header.length;\n this._onPendingData(header.length);\n }\n this._headerSent = true;\n // Difference from Node.js -\n // Parse headers here and trigger _headersSent\n this.writtenHeaderBytes = header.length;\n // Save written headers as object\n const [statusLine, ...headerLines] = this._header.split(\"\\r\\n\");\n const STATUS_LINE_REGEXP = /^HTTP\\/1\\.1 (?<statusCode>\\d+) (?<statusMessage>.*)$/;\n const statusLineResult = STATUS_LINE_REGEXP.exec(statusLine);\n if (statusLineResult == null) {\n throw new Error(\"Unexpected! Status line was \" + statusLine);\n }\n const { statusCode: statusCodeText, statusMessage } = statusLineResult.groups ?? {};\n const statusCode = parseInt(statusCodeText, 10);\n const headers = [];\n for (const headerLine of headerLines) {\n if (headerLine !== \"\") {\n const pos = headerLine.indexOf(\": \");\n const k = headerLine.slice(0, pos);\n const v = headerLine.slice(pos + 2); // Skip the colon and the space\n headers.push([k, v]);\n }\n }\n const event = {\n statusCode,\n statusMessage,\n headers,\n };\n this.emit(\"_headersSent\", event);\n }\n return this._writeRaw(data, encoding, callback, byteLength);\n }\n _writeRaw(data, encoding, callback, size) {\n // Difference from Node.js -\n // In Node.js, we would check for an underlying socket, and if that socket\n // exists and is already destroyed, simply return false.\n if (typeof encoding === \"function\") {\n callback = encoding;\n encoding = null;\n }\n // Difference from Node.js -\n // In Node.js, we would check for an underlying socket, and if that socket\n // exists and is currently writable, it would flush any pending data to the socket and then\n // write the current chunk's data directly into the socket. Afterwards, it would return with the\n // value returned from socket.write().\n // In our implementation, instead we do the same for the \"written data buffer\".\n if (this._writtenDataBuffer != null) {\n // There might be pending data in the this.output buffer.\n if (this.outputData.length) {\n this._flushOutput(this._writtenDataBuffer);\n }\n // Directly write to the buffer.\n return this._writtenDataBuffer.write(data, encoding, callback);\n }\n // Buffer, as long as we're not destroyed.\n this.outputData.push({ data, encoding, callback });\n this.outputSize += data.length;\n this._onPendingData(data.length);\n return this.outputSize < this[kHighWaterMark];\n }\n _onDataWritten(index, entry) {\n const event = { index, entry };\n this.emit(\"_dataWritten\", event);\n }\n _storeHeader(firstLine, headers) {\n // firstLine in the case of request is: 'GET /index.html HTTP/1.1\\r\\n'\n // in the case of response it is: 'HTTP/1.1 200 OK\\r\\n'\n const state = {\n connection: false,\n contLen: false,\n te: false,\n date: false,\n expect: false,\n trailer: false,\n header: firstLine,\n };\n if (headers) {\n if (headers === this[kOutHeaders]) {\n for (const key in headers) {\n const entry = headers[key];\n processHeader(this, state, entry[0], entry[1], false);\n }\n }\n else if (Array.isArray(headers)) {\n if (headers.length && Array.isArray(headers[0])) {\n for (let i = 0; i < headers.length; i++) {\n const entry = headers[i];\n processHeader(this, state, entry[0], entry[1], true);\n }\n }\n else {\n if (headers.length % 2 !== 0) {\n throw new ERR_INVALID_ARG_VALUE(\"headers\", headers);\n }\n for (let n = 0; n < headers.length; n += 2) {\n processHeader(this, state, headers[n], headers[n + 1], true);\n }\n }\n }\n else {\n for (const key in headers) {\n if (headers.hasOwnProperty(key)) {\n const _headers = headers;\n processHeader(this, state, key, _headers[key], true);\n }\n }\n }\n }\n let { header } = state;\n // Date header\n if (this.sendDate && !state.date) {\n header += \"Date: \" + utcDate() + \"\\r\\n\";\n }\n // Force the connection to close when the response is a 204 No Content or\n // a 304 Not Modified and the user has set a \"Transfer-Encoding: chunked\"\n // header.\n //\n // RFC 2616 mandates that 204 and 304 responses MUST NOT have a body but\n // node.js used to send out a zero chunk anyway to accommodate clients\n // that don't have special handling for those responses.\n //\n // It was pointed out that this might confuse reverse proxies to the point\n // of creating security liabilities, so suppress the zero chunk and force\n // the connection to close.\n // NOTE: the \"as any\" here is needed because 'statusCode' is only\n // defined on the subclass but is used here.\n if (this.chunkedEncoding &&\n (this.statusCode === 204 || this.statusCode === 304)) {\n debug(this.statusCode +\n \" response should not use chunked encoding,\" +\n \" closing connection.\");\n this.chunkedEncoding = false;\n this.shouldKeepAlive = false;\n }\n // keep-alive logic\n if (this._removedConnection) {\n // shouldKeepAlive is generally true for HTTP/1.1. In that common case,\n // even if the connection header isn't sent, we still persist by default.\n this._last = !this.shouldKeepAlive;\n }\n else if (!state.connection) {\n // this.agent would only exist on class ClientRequest\n const shouldSendKeepAlive = this.shouldKeepAlive &&\n (state.contLen || this.useChunkedEncodingByDefault); /* || this.agent */\n if (shouldSendKeepAlive && this.maxRequestsOnConnectionReached) {\n header += \"Connection: close\\r\\n\";\n }\n else if (shouldSendKeepAlive) {\n header += \"Connection: keep-alive\\r\\n\";\n if (this._keepAliveTimeout && this._defaultKeepAlive) {\n const timeoutSeconds = Math.floor(this._keepAliveTimeout / 1000);\n let max = \"\";\n if (this._maxRequestsPerSocket && ~~this._maxRequestsPerSocket > 0) {\n max = `, max=${this._maxRequestsPerSocket}`;\n }\n header += `Keep-Alive: timeout=${timeoutSeconds}${max}\\r\\n`;\n }\n }\n else {\n this._last = true;\n header += \"Connection: close\\r\\n\";\n }\n }\n if (!state.contLen && !state.te) {\n if (!this._hasBody) {\n // Make sure we don't end the 0\\r\\n\\r\\n at the end of the message.\n this.chunkedEncoding = false;\n }\n else if (!this.useChunkedEncodingByDefault) {\n this._last = true;\n }\n else if (!state.trailer &&\n !this._removedContLen &&\n typeof this._contentLength === \"number\") {\n header += \"Content-Length: \" + this._contentLength + \"\\r\\n\";\n }\n else if (!this._removedTE) {\n header += \"Transfer-Encoding: chunked\\r\\n\";\n this.chunkedEncoding = true;\n }\n else {\n // We should only be able to get here if both Content-Length and\n // Transfer-Encoding are removed by the user.\n // See: test/parallel/test-http-remove-header-stays-removed.js\n debug(\"Both Content-Length and Transfer-Encoding are removed\");\n // We can't keep alive in this case, because with no header info the body\n // is defined as all data until the connection is closed.\n this._last = true;\n }\n }\n // Test non-chunked message does not have trailer header set,\n // message will be terminated by the first empty line after the\n // header fields, regardless of the header fields present in the\n // message, and thus cannot contain a message body or 'trailers'.\n if (this.chunkedEncoding !== true && state.trailer) {\n throw new ERR_HTTP_TRAILER_INVALID();\n }\n this._header = header + \"\\r\\n\";\n this._headerSent = false;\n // Wait until the first body chunk, or close(), is sent to flush,\n // UNLESS we're sending Expect: 100-continue.\n if (state.expect) {\n this._send(\"\");\n }\n }\n get _headers() {\n console.warn(\"DEP0066: OutgoingMessage.prototype._headers is deprecated\");\n return this.getHeaders();\n }\n set _headers(val) {\n console.warn(\"DEP0066: OutgoingMessage.prototype._headers is deprecated\");\n if (val == null) {\n this[kOutHeaders] = null;\n }\n else if (typeof val === \"object\") {\n const headers = (this[kOutHeaders] = Object.create(null));\n const keys = Object.keys(val);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0; i < keys.length; ++i) {\n const name = keys[i];\n headers[name.toLowerCase()] = [name, val[name]];\n }\n }\n }\n get connection() {\n // Difference from Node.js -\n // Connection is not supported\n return null;\n }\n set connection(_socket) {\n // Difference from Node.js -\n // Connection is not supported\n console.error(\"No support for OutgoingMessage.connection\");\n }\n get socket() {\n // Difference from Node.js -\n // socket is not supported\n return null;\n }\n set socket(_socket) {\n // Difference from Node.js -\n // socket is not supported\n console.error(\"No support for OutgoingMessage.socket\");\n }\n get _headerNames() {\n console.warn(\"DEP0066: OutgoingMessage.prototype._headerNames is deprecated\");\n const headers = this[kOutHeaders];\n if (headers !== null) {\n const out = Object.create(null);\n const keys = Object.keys(headers);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n const val = headers[key][0];\n out[key] = val;\n }\n return out;\n }\n return null;\n }\n set _headerNames(val) {\n console.warn(\"DEP0066: OutgoingMessage.prototype._headerNames is deprecated\");\n if (typeof val === \"object\" && val !== null) {\n const headers = this[kOutHeaders];\n if (!headers)\n return;\n const keys = Object.keys(val);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0; i < keys.length; ++i) {\n const header = headers[keys[i]];\n if (header)\n header[0] = val[keys[i]];\n }\n }\n }\n setHeader(name, value) {\n if (this._header) {\n throw new ERR_HTTP_HEADERS_SENT(\"set\");\n }\n validateHeaderName(name);\n validateHeaderValue(name, value);\n let headers = this[kOutHeaders];\n if (headers === null) {\n this[kOutHeaders] = headers = { __proto__: null };\n }\n headers[name.toLowerCase()] = [name, value];\n return this;\n }\n setHeaders(headers) {\n if (this._header) {\n throw new ERR_HTTP_HEADERS_SENT(\"set\");\n }\n if (!headers ||\n Array.isArray(headers) ||\n typeof headers.keys !== \"function\" ||\n typeof headers.get !== \"function\") {\n throw new ERR_INVALID_ARG_TYPE(\"headers\", [\"Headers\", \"Map\"], headers);\n }\n // Headers object joins multiple cookies with a comma when using\n // the getter to retrieve the value,\n // unless iterating over the headers directly.\n // We also cannot safely split by comma.\n // To avoid setHeader overwriting the previous value we push\n // set-cookie values in array and set them all at once.\n const cookies = [];\n for (const { 0: key, 1: value } of headers) {\n if (key === \"set-cookie\") {\n if (Array.isArray(value)) {\n cookies.push(...value);\n }\n else {\n cookies.push(value);\n }\n continue;\n }\n this.setHeader(key, value);\n }\n if (cookies.length) {\n this.setHeader(\"set-cookie\", cookies);\n }\n return this;\n }\n appendHeader(name, value) {\n if (this._header) {\n throw new ERR_HTTP_HEADERS_SENT(\"append\");\n }\n validateHeaderName(name);\n validateHeaderValue(name, value);\n const field = name.toLowerCase();\n const headers = this[kOutHeaders];\n if (headers === null || !headers[field]) {\n return this.setHeader(name, value);\n }\n // Prepare the field for appending, if required\n if (!Array.isArray(headers[field][1])) {\n headers[field][1] = [headers[field][1]];\n }\n const existingValues = headers[field][1];\n if (Array.isArray(value)) {\n for (let i = 0, length = value.length; i < length; i++) {\n existingValues.push(value[i]);\n }\n }\n else {\n existingValues.push(value);\n }\n return this;\n }\n getHeader(name) {\n validateString(name, \"name\");\n const headers = this[kOutHeaders];\n if (headers === null) {\n return;\n }\n const entry = headers[name.toLowerCase()];\n return entry?.[1];\n }\n getHeaderNames() {\n return this[kOutHeaders] !== null ? Object.keys(this[kOutHeaders]) : [];\n }\n getRawHeaderNames() {\n const headersMap = this[kOutHeaders];\n if (headersMap === null)\n return [];\n const values = Object.values(headersMap);\n const headers = Array(values.length);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0, l = values.length; i < l; i++) {\n headers[i] = values[i][0];\n }\n return headers;\n }\n getHeaders() {\n const headers = this[kOutHeaders];\n const ret = { __proto__: null };\n if (headers) {\n const keys = Object.keys(headers);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n const val = headers[key][1];\n ret[key] = val;\n }\n }\n return ret;\n }\n hasHeader(name) {\n validateString(name, \"name\");\n return (this[kOutHeaders] !== null && !!this[kOutHeaders][name.toLowerCase()]);\n }\n removeHeader(name) {\n validateString(name, \"name\");\n if (this._header) {\n throw new ERR_HTTP_HEADERS_SENT(\"remove\");\n }\n const key = name.toLowerCase();\n switch (key) {\n case \"connection\":\n this._removedConnection = true;\n break;\n case \"content-length\":\n this._removedContLen = true;\n break;\n case \"transfer-encoding\":\n this._removedTE = true;\n break;\n case \"date\":\n this.sendDate = false;\n break;\n }\n if (this[kOutHeaders] !== null) {\n delete this[kOutHeaders][key];\n }\n }\n _implicitHeader() {\n throw new ERR_METHOD_NOT_IMPLEMENTED(\"_implicitHeader()\");\n }\n get headersSent() {\n return !!this._header;\n }\n write(chunk, encoding, callback) {\n if (typeof encoding === \"function\") {\n callback = encoding;\n encoding = null;\n }\n const ret = write_(this, chunk, encoding, callback, false);\n if (!ret) {\n this[kNeedDrain] = true;\n }\n return ret;\n }\n addTrailers(headers) {\n this._trailer = \"\";\n const isArray = Array.isArray(headers);\n const keys = isArray ? [...headers.keys()] : Object.keys(headers);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0, l = keys.length; i < l; i++) {\n let field, value;\n if (isArray) {\n const _headers = headers;\n const key = keys[i];\n field = _headers[key][0];\n value = _headers[key][1];\n }\n else {\n const _headers = headers;\n const key = keys[i];\n field = key;\n value = _headers[key];\n }\n validateHeaderName(field, \"Trailer name\");\n // Check if the field must be sent several times\n if (Array.isArray(value) &&\n value.length > 1 &&\n (!this[kUniqueHeaders] ||\n !this[kUniqueHeaders].has(field.toLowerCase()))) {\n for (let j = 0, l = value.length; j < l; j++) {\n if (checkInvalidHeaderChar(value[j])) {\n debug(`Trailer \"${field}\"[${j}] contains invalid characters`);\n throw new ERR_INVALID_CHAR(\"trailer content\", field);\n }\n this._trailer += field + \": \" + value[j] + \"\\r\\n\";\n }\n }\n else {\n if (Array.isArray(value)) {\n value = value.join(\"; \");\n }\n if (checkInvalidHeaderChar(String(value))) {\n debug(`Trailer \"${field}\" contains invalid characters`);\n throw new ERR_INVALID_CHAR(\"trailer content\", field);\n }\n this._trailer += field + \": \" + value + \"\\r\\n\";\n }\n }\n }\n end(chunk, encoding, callback) {\n if (typeof chunk === \"function\") {\n callback = chunk;\n chunk = null;\n encoding = null;\n }\n else if (typeof encoding === \"function\") {\n callback = encoding;\n encoding = null;\n }\n if (chunk) {\n if (this.finished) {\n onError(this, new ERR_STREAM_WRITE_AFTER_END(), typeof callback !== \"function\" ? nop : callback);\n return this;\n }\n // Difference from Node.js -\n // In Node.js, if a socket exists, we would also call socket.cork() at this point.\n // For our implementation we do the same for the \"written data buffer\"\n if (this._writtenDataBuffer != null) {\n this._writtenDataBuffer.cork();\n }\n write_(this, chunk, encoding, null, true);\n }\n else if (this.finished) {\n if (typeof callback === \"function\") {\n if (!this.writableFinished) {\n this.on(\"finish\", callback);\n }\n else {\n callback(new ERR_STREAM_ALREADY_FINISHED(\"end\"));\n }\n }\n return this;\n }\n else if (!this._header) {\n // Difference from Node.js -\n // In Node.js, if a socket exists, we would also call socket.cork() at this point.\n // For our implementation we do the same for the \"written data buffer\"\n if (this._writtenDataBuffer != null) {\n this._writtenDataBuffer.cork();\n }\n this._contentLength = 0;\n this._implicitHeader();\n }\n if (typeof callback === \"function\")\n this.once(\"finish\", callback);\n if (strictContentLength(this) &&\n this[kBytesWritten] !== this._contentLength) {\n throw new ERR_HTTP_CONTENT_LENGTH_MISMATCH(this[kBytesWritten], this._contentLength);\n }\n const finish = onFinish.bind(undefined, this);\n if (this._hasBody && this.chunkedEncoding) {\n // Difference from Node.js -\n // Chunked transfer encoding doesn't need to use the low-level protocol\n // (with each chunk preceded by its length)\n // So here we just send an empty chunk. Trailers are not supported\n // this._send(\"0\\r\\n\" + this._trailer + \"\\r\\n\", \"latin1\", finish);\n this._send(\"\", \"latin1\", finish);\n }\n else if (!this._headerSent || this.writableLength || chunk) {\n this._send(\"\", \"latin1\", finish);\n }\n else {\n setTimeout(finish, 0);\n }\n // Difference from Node.js -\n // In Node.js, if a socket exists, we would also call socket.uncork() at this point.\n // For our implementation we do the same for the \"written data buffer\"\n if (this._writtenDataBuffer != null) {\n this._writtenDataBuffer.uncork();\n }\n this[kCorked] = 1;\n this.uncork();\n this.finished = true;\n // There is the first message on the outgoing queue, and we've sent\n // everything to the socket.\n debug(\"outgoing message end.\");\n // Difference from Node.js -\n // In Node.js, if a socket exists, and there is no pending output data,\n // we would also call this._finish() at this point.\n // For our implementation we do the same for the \"written data buffer\"\n if (this.outputData.length === 0 && this._writtenDataBuffer != null) {\n this._finish();\n }\n return this;\n }\n _finish() {\n // Difference from Node.js -\n // In Node.js, this function is only called if a socket exists.\n // This function would assert() for a socket and then emit 'prefinish'.\n // For our implementation we do the same for the \"written data buffer\"\n this.emit(\"prefinish\");\n }\n // No _flush() implementation?\n _flush() {\n // Difference from Node.js -\n // In Node.js, this function is only called if a socket exists.\n // For our implementation we do the same for the \"written data buffer\"\n if (this._writtenDataBuffer != null) {\n // There might be remaining data in this.output; write it out\n const ret = this._flushOutput(this._writtenDataBuffer);\n if (this.finished) {\n // This is a queue to the server or client to bring in the next this.\n this._finish();\n }\n else if (ret && this[kNeedDrain]) {\n this[kNeedDrain] = false;\n this.emit(\"drain\");\n }\n }\n }\n _flushOutput(dataBuffer) {\n while (this[kCorked]) {\n this[kCorked]--;\n dataBuffer.cork();\n }\n const outputLength = this.outputData.length;\n if (outputLength <= 0) {\n return undefined;\n }\n const outputData = this.outputData;\n dataBuffer.cork();\n let ret;\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0; i < outputLength; i++) {\n const { data, encoding, callback } = outputData[i]; // Avoid any potential ref to Buffer in new generation from old generation\n outputData[i].data = null;\n ret = dataBuffer.write(data ?? \"\", encoding, callback);\n }\n dataBuffer.uncork();\n this.outputData = [];\n this._onPendingData(-this.outputSize);\n this.outputSize = 0;\n return ret;\n }\n flushHeaders() {\n if (!this._header) {\n this._implicitHeader();\n }\n // Force-flush the headers.\n this._send(\"\");\n }\n pipe(destination) {\n // OutgoingMessage should be write-only. Piping from it is disabled.\n this.emit(\"error\", new ERR_STREAM_CANNOT_PIPE());\n return destination;\n }\n}\nfunction processHeader(self, state, key, value, validate) {\n if (validate) {\n validateHeaderName(key);\n }\n // If key is content-disposition and there is content-length\n // encode the value in latin1\n // https://www.rfc-editor.org/rfc/rfc6266#section-4.3\n // Refs: https://github.com/nodejs/node/pull/46528\n if (isContentDispositionField(key) && self._contentLength) {\n // The value could be an array here\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n value[i] = String(Buffer.from(String(value[i]), \"latin1\"));\n }\n }\n else {\n value = String(Buffer.from(String(value), \"latin1\"));\n }\n }\n if (Array.isArray(value)) {\n if ((value.length < 2 || !isCookieField(key)) &&\n (!self[kUniqueHeaders] || !self[kUniqueHeaders].has(key.toLowerCase()))) {\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0; i < value.length; i++) {\n storeHeader(self, state, key, value[i], validate);\n }\n return;\n }\n value = value.join(\"; \");\n }\n storeHeader(self, state, key, String(value), validate);\n}\nfunction storeHeader(self, state, key, value, validate) {\n if (validate) {\n validateHeaderValue(key, value);\n }\n state.header += key + \": \" + value + \"\\r\\n\";\n matchHeader(self, state, key, value);\n}\nfunction validateHeaderName(name, label) {\n if (typeof name !== \"string\" || !name || !checkIsHttpToken(name)) {\n throw new ERR_INVALID_HTTP_TOKEN(label || \"Header name\", name);\n }\n}\nfunction validateHeaderValue(name, value) {\n if (value === undefined) {\n throw new ERR_HTTP_INVALID_HEADER_VALUE(String(value), name);\n }\n if (checkInvalidHeaderChar(String(value))) {\n debug(`Header \"${name}\" contains invalid characters`);\n throw new ERR_INVALID_CHAR(\"header content\", name);\n }\n}\nfunction matchHeader(self, state, field, value) {\n if (field.length < 4 || field.length > 17)\n return;\n field = field.toLowerCase();\n switch (field) {\n case \"connection\":\n state.connection = true;\n self._removedConnection = false;\n if (RE_CONN_CLOSE.exec(value) !== null)\n self._last = true;\n else\n self.shouldKeepAlive = true;\n break;\n case \"transfer-encoding\":\n state.te = true;\n self._removedTE = false;\n if (RE_TE_CHUNKED.exec(value) !== null)\n self.chunkedEncoding = true;\n break;\n case \"content-length\":\n state.contLen = true;\n self._contentLength = +value;\n self._removedContLen = false;\n break;\n case \"date\":\n case \"expect\":\n case \"trailer\":\n state[field] = true;\n break;\n case \"keep-alive\":\n self._defaultKeepAlive = false;\n break;\n }\n}\n// const crlf_buf = Buffer.from(\"\\r\\n\");\nfunction onError(msg, err, callback) {\n if (msg.destroyed) {\n return;\n }\n // Difference from Node.js -\n // In Node.js, we would check for the existence of a socket. If one exists, we would\n // use that async ID to scope the error.\n // Instead, we do this.\n setTimeout(emitErrorNt, 0, msg, err, callback);\n}\nfunction emitErrorNt(msg, err, callback) {\n callback(err);\n if (typeof msg.emit === \"function\" && !msg.destroyed) {\n msg.emit(\"error\", err);\n }\n}\nfunction strictContentLength(msg) {\n return (msg.strictContentLength &&\n msg._contentLength != null &&\n msg._hasBody &&\n !msg._removedContLen &&\n !msg.chunkedEncoding &&\n !msg.hasHeader(\"transfer-encoding\"));\n}\nfunction write_(msg, chunk, encoding, callback, fromEnd) {\n if (typeof callback !== \"function\") {\n callback = nop;\n }\n if (chunk === null) {\n throw new ERR_STREAM_NULL_VALUES();\n }\n else if (typeof chunk !== \"string\" && !isUint8Array(chunk)) {\n throw new ERR_INVALID_ARG_TYPE(\"chunk\", [\"string\", \"Buffer\", \"Uint8Array\"], chunk);\n }\n let err = undefined;\n if (msg.finished) {\n err = new ERR_STREAM_WRITE_AFTER_END();\n }\n else if (msg.destroyed) {\n err = new ERR_STREAM_DESTROYED(\"write\");\n }\n if (err) {\n if (!msg.destroyed) {\n onError(msg, err, callback);\n }\n else {\n setTimeout(callback, 0, err);\n }\n return false;\n }\n let len = undefined;\n if (msg.strictContentLength) {\n len ??=\n typeof chunk === \"string\"\n ? Buffer.byteLength(chunk, encoding ?? undefined)\n : chunk.byteLength;\n if (strictContentLength(msg) &&\n (fromEnd\n ? msg[kBytesWritten] + len !== msg._contentLength\n : msg[kBytesWritten] + len > (msg._contentLength ?? 0))) {\n throw new ERR_HTTP_CONTENT_LENGTH_MISMATCH(len + msg[kBytesWritten], msg._contentLength);\n }\n msg[kBytesWritten] += len;\n }\n if (!msg._header) {\n if (fromEnd) {\n len ??=\n typeof chunk === \"string\"\n ? Buffer.byteLength(chunk, encoding ?? undefined)\n : chunk.byteLength;\n msg._contentLength = len;\n }\n msg._implicitHeader();\n }\n if (!msg._hasBody) {\n if (msg[kRejectNonStandardBodyWrites]) {\n throw new ERR_HTTP_BODY_NOT_ALLOWED();\n }\n else {\n debug(\"This type of response MUST NOT have a body. \" +\n \"Ignoring write() calls.\");\n setTimeout(callback, 0);\n return true;\n }\n }\n // Difference from Node.js -\n // In Node.js, we would also check at this point if a socket exists and is not corked.\n // If so, we'd cork the socket and then queue up an 'uncork' for the next tick.\n // In our implementation we do the same for \"written data buffer\"\n if (!fromEnd &&\n msg._writtenDataBuffer != null &&\n !msg._writtenDataBuffer.writableCorked) {\n msg._writtenDataBuffer.cork();\n setTimeout(connectionCorkNT, 0, msg._writtenDataBuffer);\n }\n let ret;\n if (msg.chunkedEncoding && chunk.length !== 0) {\n len ??=\n typeof chunk === \"string\"\n ? Buffer.byteLength(chunk, encoding ?? undefined)\n : chunk.byteLength;\n if (msg[kCorked] && msg._headerSent) {\n msg[kChunkedBuffer].push({ data: chunk, encoding, callback });\n msg[kChunkedLength] += len;\n ret = msg[kChunkedLength] < msg[kHighWaterMark];\n }\n else {\n // Difference from Node.js -\n // Chunked transfer encoding doesn't need to use the low-level protocol\n // (with each chunk preceded by its length)\n // msg._send(len.toString(16), \"latin1\", null);\n // msg._send(crlf_buf, null, null);\n // msg._send(chunk, encoding, null, len);\n // ret = msg._send(crlf_buf, null, callback);\n ret = msg._send(chunk, encoding, callback, len);\n }\n }\n else {\n ret = msg._send(chunk, encoding, callback, len);\n }\n debug(\"write ret = \" + ret);\n return ret;\n}\nfunction connectionCorkNT(dataBuffer) {\n dataBuffer.uncork();\n}\nfunction onFinish(outmsg) {\n // Difference from Node.js -\n // In Node.js, if a socket exists and already had an error, we would simply return.\n outmsg.emit(\"finish\");\n}\n// Override some properties this way, because TypeScript won't let us override\n// properties with accessors.\nObject.defineProperties(FetchOutgoingMessage.prototype, {\n errored: {\n get() {\n return this[kErrored];\n },\n },\n closed: {\n get() {\n return this._closed;\n },\n },\n writableFinished: {\n get() {\n // Difference from Node.js -\n // In Node.js, there is one additional requirement --\n // there must be no underlying socket (or its writableLength must be 0).\n // In this implementation we will do the same against \"written data buffer\".\n return (this.finished &&\n this.outputSize === 0 &&\n (this._writtenDataBuffer == null ||\n this._writtenDataBuffer.writableLength === 0));\n },\n },\n writableObjectMode: {\n get() {\n return false;\n },\n },\n writableLength: {\n get() {\n // Difference from Node.js -\n // In Node.js, if a socket exists then that socket's writableLength is added to\n // this value.\n // In this implementation we will do the same against \"written data buffer\".\n return (this.outputSize +\n this[kChunkedLength] +\n (this._writtenDataBuffer != null\n ? this._writtenDataBuffer.writableLength\n : 0));\n },\n },\n writableHighWaterMark: {\n get() {\n // Difference from Node.js -\n // In Node.js, if a socket exists then use that socket's writableHighWaterMark\n // In this implementation we will do the same against \"written data buffer\".\n return this._writtenDataBuffer != null\n ? this._writtenDataBuffer.writableHighWaterMark\n : this[kHighWaterMark];\n },\n },\n writableCorked: {\n get() {\n return this[kCorked];\n },\n },\n writableEnded: {\n get() {\n return this.finished;\n },\n },\n writableNeedDrain: {\n get() {\n return !this.destroyed && !this.finished && this[kNeedDrain];\n },\n },\n});\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\nimport { Buffer } from \"node:buffer\";\nimport { ERR_HTTP_HEADERS_SENT, ERR_HTTP_INVALID_STATUS_CODE, ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, ERR_INVALID_CHAR, ERR_METHOD_NOT_IMPLEMENTED, } from \"../utils/errors.js\";\nimport { FetchOutgoingMessage, } from \"./http-outgoing.js\";\nimport { chunkExpression } from \"./http-common.js\";\nimport { FetchIncomingMessage } from \"./http-incoming.js\";\nimport { kOutHeaders } from \"./internal-http.js\";\nimport { validateLinkHeaderValue } from \"../utils/types.js\";\n/* These items copied from Node.js: node/lib/_http_common.js. */\nconst headerCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/;\n/**\n * True if val contains an invalid field-vchar\n * field-value = *( field-content / obs-fold )\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n */\nfunction checkInvalidHeaderChar(val) {\n return headerCharRegex.test(val);\n}\n// This file modeled after Node.js - node/lib/_http_server.js\nexport const STATUS_CODES = {\n 100: \"Continue\", // RFC 7231 6.2.1\n 101: \"Switching Protocols\", // RFC 7231 6.2.2\n 102: \"Processing\", // RFC 2518 10.1 (obsoleted by RFC 4918)\n 103: \"Early Hints\", // RFC 8297 2\n 200: \"OK\", // RFC 7231 6.3.1\n 201: \"Created\", // RFC 7231 6.3.2\n 202: \"Accepted\", // RFC 7231 6.3.3\n 203: \"Non-Authoritative Information\", // RFC 7231 6.3.4\n 204: \"No Content\", // RFC 7231 6.3.5\n 205: \"Reset Content\", // RFC 7231 6.3.6\n 206: \"Partial Content\", // RFC 7233 4.1\n 207: \"Multi-Status\", // RFC 4918 11.1\n 208: \"Already Reported\", // RFC 5842 7.1\n 226: \"IM Used\", // RFC 3229 10.4.1\n 300: \"Multiple Choices\", // RFC 7231 6.4.1\n 301: \"Moved Permanently\", // RFC 7231 6.4.2\n 302: \"Found\", // RFC 7231 6.4.3\n 303: \"See Other\", // RFC 7231 6.4.4\n 304: \"Not Modified\", // RFC 7232 4.1\n 305: \"Use Proxy\", // RFC 7231 6.4.5\n 307: \"Temporary Redirect\", // RFC 7231 6.4.7\n 308: \"Permanent Redirect\", // RFC 7238 3\n 400: \"Bad Request\", // RFC 7231 6.5.1\n 401: \"Unauthorized\", // RFC 7235 3.1\n 402: \"Payment Required\", // RFC 7231 6.5.2\n 403: \"Forbidden\", // RFC 7231 6.5.3\n 404: \"Not Found\", // RFC 7231 6.5.4\n 405: \"Method Not Allowed\", // RFC 7231 6.5.5\n 406: \"Not Acceptable\", // RFC 7231 6.5.6\n 407: \"Proxy Authentication Required\", // RFC 7235 3.2\n 408: \"Request Timeout\", // RFC 7231 6.5.7\n 409: \"Conflict\", // RFC 7231 6.5.8\n 410: \"Gone\", // RFC 7231 6.5.9\n 411: \"Length Required\", // RFC 7231 6.5.10\n 412: \"Precondition Failed\", // RFC 7232 4.2\n 413: \"Payload Too Large\", // RFC 7231 6.5.11\n 414: \"URI Too Long\", // RFC 7231 6.5.12\n 415: \"Unsupported Media Type\", // RFC 7231 6.5.13\n 416: \"Range Not Satisfiable\", // RFC 7233 4.4\n 417: \"Expectation Failed\", // RFC 7231 6.5.14\n 418: \"I'm a Teapot\", // RFC 7168 2.3.3\n 421: \"Misdirected Request\", // RFC 7540 9.1.2\n 422: \"Unprocessable Entity\", // RFC 4918 11.2\n 423: \"Locked\", // RFC 4918 11.3\n 424: \"Failed Dependency\", // RFC 4918 11.4\n 425: \"Too Early\", // RFC 8470 5.2\n 426: \"Upgrade Required\", // RFC 2817 and RFC 7231 6.5.15\n 428: \"Precondition Required\", // RFC 6585 3\n 429: \"Too Many Requests\", // RFC 6585 4\n 431: \"Request Header Fields Too Large\", // RFC 6585 5\n 451: \"Unavailable For Legal Reasons\", // RFC 7725 3\n 500: \"Internal Server Error\", // RFC 7231 6.6.1\n 501: \"Not Implemented\", // RFC 7231 6.6.2\n 502: \"Bad Gateway\", // RFC 7231 6.6.3\n 503: \"Service Unavailable\", // RFC 7231 6.6.4\n 504: \"Gateway Timeout\", // RFC 7231 6.6.5\n 505: \"HTTP Version Not Supported\", // RFC 7231 6.6.6\n 506: \"Variant Also Negotiates\", // RFC 2295 8.1\n 507: \"Insufficient Storage\", // RFC 4918 11.5\n 508: \"Loop Detected\", // RFC 5842 7.2\n 509: \"Bandwidth Limit Exceeded\",\n 510: \"Not Extended\", // RFC 2774 7\n 511: \"Network Authentication Required\", // RFC 6585 6\n};\n/**\n * This is an implementation of ServerResponse from Node.js intended to run in\n * a WinterTC runtime. The 'Writable' interface of this class is wired to an in-memory\n * buffer. This class also provides a method that creates a Response object that\n * can be handled by the runtime.\n *\n * This instance can be used in normal ways, but it does not give access to the\n * underlying socket (because there isn't one. req.socket will always return null).\n *\n * Some code in this class is transplanted/adapted from node/lib/_httpserver.js\n *\n * NOTE: Node.js doesn't really separate the body from headers, the entire \"stream\"\n * contains the headers and the body. So we provide functions that lets us pull\n * the headers and body out individually at a later time.\n */\nexport class FetchServerResponse extends FetchOutgoingMessage {\n static encoder = new TextEncoder();\n statusCode = 200;\n statusMessage;\n _sent100;\n _expect_continue;\n [kOutHeaders] = null;\n constructor(req, options) {\n super(req, options);\n if (req.method === \"HEAD\") {\n this._hasBody = false;\n }\n // this.req = req; // super() actually does this\n this.sendDate = true;\n this._sent100 = false;\n this._expect_continue = false;\n if (req.httpVersionMajor < 1 || req.httpVersionMinor < 1) {\n this.useChunkedEncodingByDefault =\n chunkExpression.exec(String(req.headers.te)) !== null;\n this.shouldKeepAlive = false;\n }\n // Difference from Node.js -\n // In Node.js, in addition to the above, we would check if an observer is enabled for\n // http, and if it is, we would start performance measurement of server response statistics.\n this.fetchResponse = new Promise((resolve) => {\n let finished = false;\n this.on(\"finish\", () => {\n finished = true;\n });\n const initialDataChunks = [];\n const initialDataWrittenHandler = (e) => {\n if (finished) {\n return;\n }\n initialDataChunks[e.index] = this.dataFromDataWrittenEvent(e);\n };\n this.on(\"_dataWritten\", initialDataWrittenHandler);\n this.on(\"_headersSent\", (e) => {\n this.off(\"_dataWritten\", initialDataWrittenHandler);\n // Convert the response object to a Response object and return it\n const { statusCode, statusMessage, headers } = e;\n resolve(this._toFetchResponse(statusCode, statusMessage, headers, initialDataChunks, finished));\n });\n });\n }\n dataFromDataWrittenEvent(e) {\n const { index, entry } = e;\n let { data, encoding } = entry;\n if (index === 0) {\n if (typeof data !== \"string\") {\n console.error(\"First chunk should be string, not sure what happened.\");\n throw new ERR_INVALID_ARG_TYPE(\"packet.data\", [\"string\", \"Buffer\", \"Uint8Array\"], data);\n }\n // The first X bytes are header material, so we remove it.\n data = data.slice(this.writtenHeaderBytes);\n }\n if (typeof data === \"string\") {\n if (encoding === undefined ||\n encoding === \"utf8\" ||\n encoding === \"utf-8\") {\n data = FetchServerResponse.encoder.encode(data);\n }\n else {\n data = Buffer.from(data, encoding ?? undefined);\n }\n }\n return data ?? Buffer.from([]);\n }\n _finish() {\n // Difference from Node.js -\n // In Node.js, if server response statistics performance is being measured, we would stop it.\n super._finish();\n }\n assignSocket(socket) {\n // Difference from Node.js -\n // Socket is not supported\n throw new ERR_METHOD_NOT_IMPLEMENTED(\"assignSocket\");\n }\n detachSocket(socket) {\n // Difference from Node.js -\n // Socket is not supported\n throw new ERR_METHOD_NOT_IMPLEMENTED(\"detachSocket\");\n }\n writeContinue(callback) {\n this._writeRaw(\"HTTP/1.1 100 Continue\\r\\n\\r\\n\", \"ascii\", callback);\n this._sent100 = true;\n }\n writeProcessing(callback) {\n this._writeRaw(\"HTTP/1.1 102 Processing\\r\\n\\r\\n\", \"ascii\", callback);\n }\n writeEarlyHints(hints, callback) {\n let head = \"HTTP/1.1 103 Early Hints\\r\\n\";\n // Difference from Node.js -\n // In Node.js, we would validate the hints object here.\n // validateObject(hints, 'hints');\n if (hints.link === null || hints.link === undefined) {\n return;\n }\n const link = validateLinkHeaderValue(hints.link);\n if (link.length === 0) {\n return;\n }\n head += \"Link: \" + link + \"\\r\\n\";\n for (const key of Object.keys(hints)) {\n if (key !== \"link\") {\n head += key + \": \" + hints[key] + \"\\r\\n\";\n }\n }\n head += \"\\r\\n\";\n this._writeRaw(head, \"ascii\", callback);\n }\n _implicitHeader() {\n this.writeHead(this.statusCode);\n }\n writeHead(statusCode, reason, obj) {\n if (this._header) {\n throw new ERR_HTTP_HEADERS_SENT(\"write\");\n }\n const originalStatusCode = statusCode;\n statusCode |= 0;\n if (statusCode < 100 || statusCode > 999) {\n throw new ERR_HTTP_INVALID_STATUS_CODE(originalStatusCode);\n }\n if (typeof reason === \"string\") {\n // writeHead(statusCode, reasonPhrase[, headers])\n this.statusMessage = reason;\n }\n else {\n // writeHead(statusCode[, headers])\n this.statusMessage ||= STATUS_CODES[statusCode] || \"unknown\";\n obj ??= reason;\n }\n this.statusCode = statusCode;\n let headers;\n if (this[kOutHeaders]) {\n // Slow-case: when progressive API and header fields are passed.\n let k;\n if (Array.isArray(obj)) {\n if (obj.length % 2 !== 0) {\n throw new ERR_INVALID_ARG_VALUE(\"headers\", obj);\n }\n // Headers in obj should override previous headers but still\n // allow explicit duplicates. To do so, we first remove any\n // existing conflicts, then use appendHeader.\n for (let n = 0; n < obj.length; n += 2) {\n k = obj[n + 0];\n this.removeHeader(String(k));\n }\n for (let n = 0; n < obj.length; n += 2) {\n k = obj[n];\n if (k) {\n this.appendHeader(String(k), obj[n + 1]);\n }\n }\n }\n else if (obj) {\n const keys = Object.keys(obj);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0; i < keys.length; i++) {\n k = keys[i];\n if (k) {\n this.setHeader(k, obj[k]);\n }\n }\n }\n // Only progressive api is used\n headers = this[kOutHeaders];\n }\n else {\n // Only writeHead() called\n headers = obj;\n }\n if (checkInvalidHeaderChar(this.statusMessage)) {\n throw new ERR_INVALID_CHAR(\"statusMessage\");\n }\n const statusLine = `HTTP/1.1 ${statusCode} ${this.statusMessage}\\r\\n`;\n if (statusCode === 204 ||\n statusCode === 304 ||\n (statusCode >= 100 && statusCode <= 199)) {\n // RFC 2616, 10.2.5:\n // The 204 response MUST NOT include a message-body, and thus is always\n // terminated by the first empty line after the header fields.\n // RFC 2616, 10.3.5:\n // The 304 response MUST NOT contain a message-body, and thus is always\n // terminated by the first empty line after the header fields.\n // RFC 2616, 10.1 Informational 1xx:\n // This class of status code indicates a provisional response,\n // consisting only of the Status-Line and optional headers, and is\n // terminated by an empty line.\n this._hasBody = false;\n }\n // Don't keep alive connections where the client expects 100 Continue\n // but we sent a final status; they may put extra bytes on the wire.\n if (this._expect_continue && !this._sent100) {\n this.shouldKeepAlive = false;\n }\n // Convert headers to a compatible type for _storeHeader\n const convertedHeaders = headers && !Array.isArray(headers)\n ? headers\n : headers;\n this._storeHeader(statusLine, convertedHeaders ?? null);\n return this;\n }\n // Docs-only deprecated: DEP0063\n writeHeader = this.writeHead;\n fetchResponse;\n _toFetchResponse(status, statusText, sentHeaders, initialDataChunks, finished) {\n const headers = new Headers();\n for (const [header, value] of sentHeaders) {\n headers.append(header, value);\n }\n const _this = this;\n let body = this._hasBody\n ? new ReadableStream({\n start(controller) {\n for (const dataChunk of initialDataChunks) {\n controller.enqueue(dataChunk);\n }\n if (finished) {\n controller.close();\n }\n else {\n _this.on(\"finish\", () => {\n finished = true;\n controller.close();\n });\n _this.on(\"_dataWritten\", (e) => {\n if (finished) {\n return;\n }\n const data = _this.dataFromDataWrittenEvent(e);\n controller.enqueue(data);\n });\n }\n },\n })\n : null;\n // @ts-expect-error this is (currently) a cloudflare-specific class\n if (body != null && typeof FixedLengthStream !== \"undefined\") {\n const contentLength = parseInt(headers.get(\"content-length\") ?? \"\", 10); // will be NaN if not set\n if (contentLength >= 0) {\n // @ts-expect-error this is (currently) a cloudflare-specific class\n body = body.pipeThrough(new FixedLengthStream(contentLength));\n }\n }\n return new Response(body, {\n status,\n statusText,\n headers,\n });\n }\n}\nexport function toReqRes(req, options) {\n const { createIncomingMessage = () => new FetchIncomingMessage(), createServerResponse = (incoming) => new FetchServerResponse(incoming), ctx, } = options ?? {};\n const incoming = createIncomingMessage(ctx);\n const serverResponse = createServerResponse(incoming, ctx);\n const reqUrl = new URL(req.url);\n const versionMajor = 1;\n const versionMinor = 1;\n incoming.httpVersionMajor = versionMajor;\n incoming.httpVersionMinor = versionMinor;\n incoming.httpVersion = `${versionMajor}.${versionMinor}`;\n incoming.url = reqUrl.pathname + reqUrl.search;\n incoming.upgrade = false;\n const headers = [];\n for (const [headerName, headerValue] of req.headers) {\n headers.push(headerName);\n headers.push(headerValue);\n }\n incoming._addHeaderLines(headers, headers.length);\n incoming.method = req.method;\n incoming._stream = req.body;\n return {\n req: incoming,\n res: serverResponse,\n };\n}\nexport function toFetchResponse(res) {\n if (!(res instanceof FetchServerResponse)) {\n throw new Error(\"toFetchResponse must be called on a ServerResponse generated by toReqRes\");\n }\n return res.fetchResponse;\n}\n","// src/http-exception.ts\nvar HTTPException = class extends Error {\n res;\n status;\n constructor(status = 500, options) {\n super(options?.message, { cause: options?.cause });\n this.res = options?.res;\n this.status = status;\n }\n getResponse() {\n if (this.res) {\n const newResponse = new Response(this.res.body, {\n status: this.status,\n headers: this.res.headers\n });\n return newResponse;\n }\n return new Response(this.message, {\n status: this.status\n });\n }\n};\nexport {\n HTTPException\n};\n","// src/middleware/body-limit/index.ts\nimport { HTTPException } from \"../../http-exception.js\";\nvar ERROR_MESSAGE = \"Payload Too Large\";\nvar BodyLimitError = class extends Error {\n constructor(message) {\n super(message);\n this.name = \"BodyLimitError\";\n }\n};\nvar bodyLimit = (options) => {\n const onError = options.onError || (() => {\n const res = new Response(ERROR_MESSAGE, {\n status: 413\n });\n throw new HTTPException(413, { res });\n });\n const maxSize = options.maxSize;\n return async function bodyLimit2(c, next) {\n if (!c.req.raw.body) {\n return next();\n }\n const hasTransferEncoding = c.req.raw.headers.has(\"transfer-encoding\");\n const hasContentLength = c.req.raw.headers.has(\"content-length\");\n if (hasTransferEncoding && hasContentLength) {\n }\n if (hasContentLength && !hasTransferEncoding) {\n const contentLength = parseInt(c.req.raw.headers.get(\"content-length\") || \"0\", 10);\n return contentLength > maxSize ? onError(c) : next();\n }\n let size = 0;\n const rawReader = c.req.raw.body.getReader();\n const reader = new ReadableStream({\n async start(controller) {\n try {\n for (; ; ) {\n const { done, value } = await rawReader.read();\n if (done) {\n break;\n }\n size += value.length;\n if (size > maxSize) {\n controller.error(new BodyLimitError(ERROR_MESSAGE));\n break;\n }\n controller.enqueue(value);\n }\n } finally {\n controller.close();\n }\n }\n });\n const requestInit = { body: reader, duplex: \"half\" };\n c.req.raw = new Request(c.req.raw, requestInit);\n await next();\n if (c.error instanceof BodyLimitError) {\n c.res = await onError(c);\n }\n };\n};\nexport {\n bodyLimit\n};\n","// src/utils/stream.ts\nvar StreamingApi = class {\n writer;\n encoder;\n writable;\n abortSubscribers = [];\n responseReadable;\n aborted = false;\n closed = false;\n constructor(writable, _readable) {\n this.writable = writable;\n this.writer = writable.getWriter();\n this.encoder = new TextEncoder();\n const reader = _readable.getReader();\n this.abortSubscribers.push(async () => {\n await reader.cancel();\n });\n this.responseReadable = new ReadableStream({\n async pull(controller) {\n const { done, value } = await reader.read();\n done ? controller.close() : controller.enqueue(value);\n },\n cancel: () => {\n this.abort();\n }\n });\n }\n async write(input) {\n try {\n if (typeof input === \"string\") {\n input = this.encoder.encode(input);\n }\n await this.writer.write(input);\n } catch {\n }\n return this;\n }\n async writeln(input) {\n await this.write(input + \"\\n\");\n return this;\n }\n sleep(ms) {\n return new Promise((res) => setTimeout(res, ms));\n }\n async close() {\n try {\n await this.writer.close();\n } catch {\n }\n this.closed = true;\n }\n async pipe(body) {\n this.writer.releaseLock();\n await body.pipeTo(this.writable, { preventClose: true });\n this.writer = this.writable.getWriter();\n }\n onAbort(listener) {\n this.abortSubscribers.push(listener);\n }\n abort() {\n if (!this.aborted) {\n this.aborted = true;\n this.abortSubscribers.forEach((subscriber) => subscriber());\n }\n }\n};\nexport {\n StreamingApi\n};\n","// src/helper/streaming/utils.ts\nvar isOldBunVersion = () => {\n const version = typeof Bun !== \"undefined\" ? Bun.version : void 0;\n if (version === void 0) {\n return false;\n }\n const result = version.startsWith(\"1.1\") || version.startsWith(\"1.0\") || version.startsWith(\"0.\");\n isOldBunVersion = () => result;\n return result;\n};\nexport {\n isOldBunVersion\n};\n","// src/helper/streaming/stream.ts\nimport { StreamingApi } from \"../../utils/stream.js\";\nimport { isOldBunVersion } from \"./utils.js\";\nvar contextStash = /* @__PURE__ */ new WeakMap();\nvar stream = (c, cb, onError) => {\n const { readable, writable } = new TransformStream();\n const stream2 = new StreamingApi(writable, readable);\n if (isOldBunVersion()) {\n c.req.raw.signal.addEventListener(\"abort\", () => {\n if (!stream2.closed) {\n stream2.abort();\n }\n });\n }\n contextStash.set(stream2.responseReadable, c);\n (async () => {\n try {\n await cb(stream2);\n } catch (e) {\n if (e === void 0) {\n } else if (e instanceof Error && onError) {\n await onError(e, stream2);\n } else {\n console.error(e);\n }\n } finally {\n stream2.close();\n }\n })();\n return c.newResponse(stream2.responseReadable);\n};\nexport {\n stream\n};\n","import type { ContextWithMastra } from '@mastra/core/server';\nimport {\n canAccessPublicly,\n checkRules,\n defaultAuthConfig,\n isDevPlaygroundRequest,\n isProtectedPath,\n} from '@mastra/server/auth';\nimport type { Next } from 'hono';\n\nexport const authenticationMiddleware = async (c: ContextWithMastra, next: Next) => {\n const mastra = c.get('mastra');\n const authConfig = mastra.getServer()?.auth;\n const customRouteAuthConfig = c.get('customRouteAuthConfig');\n\n if (!authConfig) {\n // No auth config, skip authentication\n return next();\n }\n\n const path = c.req.path;\n const method = c.req.method;\n const getHeader = (name: string) => c.req.header(name);\n\n if (isDevPlaygroundRequest(path, method, getHeader, authConfig)) {\n // Skip authentication for dev playground requests\n return next();\n }\n\n if (!isProtectedPath(c.req.path, c.req.method, authConfig, customRouteAuthConfig)) {\n return next();\n }\n\n // Skip authentication for public routes\n if (canAccessPublicly(c.req.path, c.req.method, authConfig)) {\n return next();\n }\n\n // Get token from header or query\n const authHeader = c.req.header('Authorization');\n let token: string | null = authHeader ? authHeader.replace('Bearer ', '') : null;\n\n if (!token && c.req.query('apiKey')) {\n token = c.req.query('apiKey') || null;\n }\n\n // Handle missing token\n if (!token) {\n return c.json({ error: 'Authentication required' }, 401);\n }\n\n try {\n // Verify token and get user data\n let user: unknown;\n\n // Client provided verify function\n if (typeof authConfig.authenticateToken === 'function') {\n user = await authConfig.authenticateToken(token, c.req);\n } else {\n throw new Error('No token verification method configured');\n }\n\n if (!user) {\n return c.json({ error: 'Invalid or expired token' }, 401);\n }\n\n // Store user in context\n c.get('requestContext').set('user', user);\n\n return next();\n } catch (err) {\n console.error(err);\n return c.json({ error: 'Invalid or expired token' }, 401);\n }\n};\n\nexport const authorizationMiddleware = async (c: ContextWithMastra, next: Next) => {\n const mastra = c.get('mastra');\n const authConfig = mastra.getServer()?.auth;\n const customRouteAuthConfig = c.get('customRouteAuthConfig');\n\n if (!authConfig) {\n // No auth config, skip authorization\n return next();\n }\n\n const path = c.req.path;\n const method = c.req.method;\n const getHeader = (name: string) => c.req.header(name);\n\n if (isDevPlaygroundRequest(path, method, getHeader, authConfig)) {\n // Skip authorization for dev playground requests\n return next();\n }\n\n if (!isProtectedPath(c.req.path, c.req.method, authConfig, customRouteAuthConfig)) {\n return next();\n }\n\n // Skip for public routes\n if (canAccessPublicly(path, method, authConfig)) {\n return next();\n }\n\n const user = c.get('requestContext').get('user');\n\n if ('authorizeUser' in authConfig && typeof authConfig.authorizeUser === 'function') {\n try {\n const isAuthorized = await authConfig.authorizeUser(user, c.req);\n\n if (isAuthorized) {\n return next();\n }\n\n return c.json({ error: 'Access denied' }, 403);\n } catch (err) {\n console.error(err);\n return c.json({ error: 'Authorization error' }, 500);\n }\n }\n\n // Client-provided authorization function\n if ('authorize' in authConfig && typeof authConfig.authorize === 'function') {\n try {\n const isAuthorized = await authConfig.authorize(path, method, user, c);\n\n if (isAuthorized) {\n return next();\n }\n\n return c.json({ error: 'Access denied' }, 403);\n } catch (err) {\n console.error(err);\n return c.json({ error: 'Authorization error' }, 500);\n }\n }\n\n // Custom rule-based authorization\n if ('rules' in authConfig && authConfig.rules && authConfig.rules.length > 0) {\n const isAuthorized = await checkRules(authConfig.rules, path, method, user);\n\n if (isAuthorized) {\n return next();\n }\n\n return c.json({ error: 'Access denied' }, 403);\n }\n\n // Default rule-based authorization\n if (defaultAuthConfig.rules && defaultAuthConfig.rules.length > 0) {\n const isAuthorized = await checkRules(defaultAuthConfig.rules, path, method, user);\n\n if (isAuthorized) {\n return next();\n }\n }\n\n return c.json({ error: 'Access denied' }, 403);\n};\n","import type { Mastra } from '@mastra/core/mastra';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { Tool } from '@mastra/core/tools';\nimport type { InMemoryTaskStore } from '@mastra/server/a2a/store';\nimport type { MCPHttpTransportResult, MCPSseTransportResult } from '@mastra/server/handlers/mcp';\nimport { MastraServer as MastraServerBase, redactStreamChunk } from '@mastra/server/server-adapter';\nimport type { ServerRoute } from '@mastra/server/server-adapter';\nimport { toReqRes, toFetchResponse } from 'fetch-to-node';\nimport type { Context, Env, Hono, HonoRequest, MiddlewareHandler } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { stream } from 'hono/streaming';\n\nimport { authenticationMiddleware, authorizationMiddleware } from './auth-middleware';\n\n// Export type definitions for Hono app configuration\nexport type HonoVariables = {\n mastra: Mastra;\n requestContext: RequestContext;\n tools: Record<string, Tool>;\n abortSignal: AbortSignal;\n taskStore: InMemoryTaskStore;\n customRouteAuthConfig?: Map<string, boolean>;\n playground?: boolean;\n isDev?: boolean;\n};\n\nexport type HonoBindings = {};\n\nexport class MastraServer extends MastraServerBase<Hono<any, any, any>, HonoRequest, Context> {\n createContextMiddleware(): MiddlewareHandler {\n return async (c, next) => {\n // Parse request context from request body and add to context\n\n let bodyRequestContext: Record<string, any> | undefined;\n let paramsRequestContext: Record<string, any> | undefined;\n\n // Parse request context from request body (POST/PUT)\n if (c.req.method === 'POST' || c.req.method === 'PUT') {\n const contentType = c.req.header('content-type');\n if (contentType?.includes('application/json')) {\n try {\n const clonedReq = c.req.raw.clone();\n const body = (await clonedReq.json()) as { requestContext?: Record<string, any> };\n if (body.requestContext) {\n bodyRequestContext = body.requestContext;\n }\n } catch {\n // Body parsing failed, continue without body\n }\n }\n }\n\n // Parse request context from query params (GET)\n if (c.req.method === 'GET') {\n try {\n const encodedRequestContext = c.req.query('requestContext');\n if (encodedRequestContext) {\n // Try JSON first\n try {\n paramsRequestContext = JSON.parse(encodedRequestContext);\n } catch {\n // Fallback to base64(JSON)\n try {\n const json = Buffer.from(encodedRequestContext, 'base64').toString('utf-8');\n paramsRequestContext = JSON.parse(json);\n } catch {\n // ignore if still invalid\n }\n }\n }\n } catch {\n // ignore query parsing errors\n }\n }\n\n const requestContext = this.mergeRequestContext({ paramsRequestContext, bodyRequestContext });\n\n // Add relevant contexts to hono context\n c.set('requestContext', requestContext);\n c.set('mastra', this.mastra);\n c.set('tools', this.tools || {});\n c.set('taskStore', this.taskStore);\n c.set('playground', this.playground === true);\n c.set('isDev', this.isDev === true);\n c.set('abortSignal', c.req.raw.signal);\n c.set('customRouteAuthConfig', this.customRouteAuthConfig);\n\n return next();\n };\n }\n async stream(route: ServerRoute, res: Context, result: { fullStream: ReadableStream }): Promise<any> {\n res.header('Content-Type', 'text/plain');\n res.header('Transfer-Encoding', 'chunked');\n\n const streamFormat = route.streamFormat || 'stream';\n\n return stream(\n res,\n async stream => {\n const readableStream = result instanceof ReadableStream ? result : result.fullStream;\n const reader = readableStream.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n if (value) {\n // Optionally redact sensitive data (system prompts, tool definitions, API keys) before sending to the client\n const shouldRedact = this.streamOptions?.redact ?? true;\n const outputValue = shouldRedact ? redactStreamChunk(value) : value;\n if (streamFormat === 'sse') {\n await stream.write(`data: ${JSON.stringify(outputValue)}\\n\\n`);\n } else {\n await stream.write(JSON.stringify(outputValue) + '\\x1E');\n }\n }\n }\n\n await stream.write('data: [DONE]\\n\\n');\n } catch (error) {\n console.error(error);\n } finally {\n await stream.close();\n }\n },\n async err => {\n console.error(err);\n },\n );\n }\n\n async getParams(\n route: ServerRoute,\n request: HonoRequest,\n ): Promise<{ urlParams: Record<string, string>; queryParams: Record<string, string>; body: unknown }> {\n const urlParams = request.param();\n const queryParams = request.query();\n let body: unknown;\n if (route.method === 'POST' || route.method === 'PUT' || route.method === 'PATCH') {\n try {\n body = await request.json();\n } catch {}\n }\n return { urlParams, queryParams: queryParams as Record<string, string>, body };\n }\n\n async sendResponse(route: ServerRoute, response: Context, result: unknown): Promise<any> {\n if (route.responseType === 'json') {\n return response.json(result as any, 200);\n } else if (route.responseType === 'stream') {\n return this.stream(route, response, result as { fullStream: ReadableStream });\n } else if (route.responseType === 'datastream-response') {\n const fetchResponse = result as globalThis.Response;\n return fetchResponse;\n } else if (route.responseType === 'mcp-http') {\n // MCP Streamable HTTP transport\n const { server, httpPath } = result as MCPHttpTransportResult;\n const { req, res } = toReqRes(response.req.raw);\n\n try {\n await server.startHTTP({\n url: new URL(response.req.url),\n httpPath,\n req,\n res,\n });\n return await toFetchResponse(res);\n } catch {\n if (!res.headersSent) {\n res.writeHead(500, { 'Content-Type': 'application/json' });\n res.end(\n JSON.stringify({\n jsonrpc: '2.0',\n error: { code: -32603, message: 'Internal server error' },\n id: null,\n }),\n );\n return await toFetchResponse(res);\n }\n return await toFetchResponse(res);\n }\n } else if (route.responseType === 'mcp-sse') {\n // MCP SSE transport\n const { server, ssePath, messagePath } = result as MCPSseTransportResult;\n\n try {\n return await server.startHonoSSE({\n url: new URL(response.req.url),\n ssePath,\n messagePath,\n context: response,\n });\n } catch {\n return response.json({ error: 'Error handling MCP SSE request' }, 500);\n }\n } else {\n return response.status(500);\n }\n }\n\n async registerRoute<E extends Env = any>(\n app: Hono<E, any, any>,\n route: ServerRoute,\n { prefix }: { prefix?: string },\n ): Promise<void> {\n // Determine if body limits should be applied\n const shouldApplyBodyLimit = this.bodyLimitOptions && ['POST', 'PUT', 'PATCH'].includes(route.method.toUpperCase());\n\n // Get the body size limit for this route (route-specific or default)\n const maxSize = route.maxBodySize ?? this.bodyLimitOptions?.maxSize;\n\n // Build middleware array\n const middlewares: MiddlewareHandler[] = [];\n\n if (shouldApplyBodyLimit && maxSize && this.bodyLimitOptions) {\n middlewares.push(\n bodyLimit({\n maxSize,\n onError: this.bodyLimitOptions.onError as any,\n }),\n );\n }\n\n app[route.method.toLowerCase() as 'get' | 'post' | 'put' | 'delete' | 'patch' | 'all'](\n `${prefix}${route.path}`,\n ...middlewares,\n async (c: Context) => {\n const params = await this.getParams(route, c.req);\n\n if (params.queryParams) {\n try {\n params.queryParams = await this.parseQueryParams(route, params.queryParams as Record<string, string>);\n } catch (error) {\n console.error('Error parsing query params', error);\n // Zod validation errors should return 400 Bad Request, not 500\n return c.json(\n {\n error: 'Invalid query parameters',\n details: error instanceof Error ? error.message : 'Unknown error',\n },\n 400,\n );\n }\n }\n\n if (params.body) {\n try {\n params.body = await this.parseBody(route, params.body);\n } catch (error) {\n console.error('Error parsing body:', error instanceof Error ? error.message : String(error));\n // Zod validation errors should return 400 Bad Request, not 500\n return c.json(\n {\n error: 'Invalid request body',\n details: error instanceof Error ? error.message : 'Unknown error',\n },\n 400,\n );\n }\n }\n\n const handlerParams = {\n ...params.urlParams,\n ...params.queryParams,\n ...(typeof params.body === 'object' ? params.body : {}),\n requestContext: c.get('requestContext'),\n mastra: this.mastra,\n tools: c.get('tools'),\n taskStore: c.get('taskStore'),\n abortSignal: c.get('abortSignal'),\n };\n\n try {\n const result = await route.handler(handlerParams);\n return this.sendResponse(route, c, result);\n } catch (error) {\n console.error('Error calling handler', error);\n // Check if it's an HTTPException or MastraError with a status code\n if (error && typeof error === 'object') {\n // Check for direct status property (HTTPException)\n if ('status' in error) {\n const status = (error as any).status;\n return c.json({ error: error instanceof Error ? error.message : 'Unknown error' }, status);\n }\n // Check for MastraError with status in details\n if ('details' in error && error.details && typeof error.details === 'object' && 'status' in error.details) {\n const status = (error.details as any).status;\n return c.json({ error: error instanceof Error ? error.message : 'Unknown error' }, status);\n }\n }\n return c.json({ error: error instanceof Error ? error.message : 'Unknown error' }, 500);\n }\n },\n );\n }\n\n registerContextMiddleware(): void {\n this.app.use('*', this.createContextMiddleware());\n }\n\n registerAuthMiddleware(): void {\n const authConfig = this.mastra.getServer()?.auth;\n if (!authConfig) {\n // No auth config, skip registration\n return;\n }\n\n this.app.use('*', authenticationMiddleware);\n this.app.use('*', authorizationMiddleware);\n }\n}\n","import { sValidator } from '@hono/standard-validator';\nimport { loadVendor as loadVendor$1, toJsonSchema } from '@standard-community/standard-json';\nimport { loadVendor as loadVendor$2, toOpenAPISchema } from '@standard-community/standard-openapi';\n\nconst uniqueSymbol = Symbol(\"openapi\");\nconst ALLOWED_METHODS = [\n \"GET\",\n \"PUT\",\n \"POST\",\n \"DELETE\",\n \"OPTIONS\",\n \"HEAD\",\n \"PATCH\",\n \"TRACE\"\n];\nconst toOpenAPIPath = (path) => path.split(\"/\").map((x) => {\n let tmp = x;\n if (tmp.startsWith(\":\")) {\n const match = tmp.match(/^:([^{?]+)(?:{(.+)})?(\\?)?$/);\n if (match) {\n const paramName = match[1];\n tmp = `{${paramName}}`;\n } else {\n tmp = tmp.slice(1, tmp.length);\n if (tmp.endsWith(\"?\")) tmp = tmp.slice(0, -1);\n tmp = `{${tmp}}`;\n }\n }\n return tmp;\n}).join(\"/\");\nconst capitalize = (word) => word.charAt(0).toUpperCase() + word.slice(1);\nconst generateOperationId = (route) => {\n let operationId = route.method.toLowerCase();\n if (route.path === \"/\") return `${operationId}Index`;\n for (const segment of route.path.split(\"/\")) {\n if (segment.charCodeAt(0) === 123) {\n operationId += `By${capitalize(segment.slice(1, -1))}`;\n } else {\n operationId += capitalize(segment);\n }\n }\n return operationId;\n};\nconst paramKey = (param) => \"$ref\" in param ? param.$ref : `${param.in} ${param.name}`;\nfunction mergeParameters(...params) {\n const merged = params.flatMap((x) => x ?? []).reduce((acc, param) => {\n acc.set(paramKey(param), param);\n return acc;\n }, /* @__PURE__ */ new Map());\n return Array.from(merged.values());\n}\nconst specsByPathContext = /* @__PURE__ */ new Map();\nfunction getPathContext(path) {\n const context = [];\n for (const [key, data] of specsByPathContext) {\n if (data && path.match(key)) {\n context.push(data);\n }\n }\n return context;\n}\nfunction clearSpecsContext() {\n specsByPathContext.clear();\n}\nfunction mergeSpecs(route, ...specs) {\n return specs.reduce(\n (prev, spec) => {\n if (!spec || !prev) return prev;\n for (const [key, value] of Object.entries(spec)) {\n if (value == null) continue;\n if (key in prev && (typeof value === \"object\" || typeof value === \"function\" && key === \"operationId\")) {\n if (Array.isArray(value)) {\n const values = [...prev[key] ?? [], ...value];\n if (key === \"tags\") {\n prev[key] = Array.from(new Set(values));\n } else if (key === \"parameters\") {\n prev[key] = mergeParameters(values);\n } else {\n prev[key] = values;\n }\n } else if (typeof value === \"function\") {\n prev[key] = value(route);\n } else {\n if (key === \"parameters\") {\n prev[key] = mergeParameters(prev[key], value);\n } else {\n prev[key] = {\n ...prev[key],\n ...value\n };\n }\n }\n } else {\n prev[key] = value;\n }\n }\n return prev;\n },\n {\n operationId: generateOperationId(route)\n }\n );\n}\nfunction registerSchemaPath({\n route,\n specs,\n paths\n}) {\n const path = toOpenAPIPath(route.path);\n const method = route.method.toLowerCase();\n if (method === \"all\") {\n if (!specs) return;\n if (specsByPathContext.has(path)) {\n const prev = specsByPathContext.get(path) ?? {};\n specsByPathContext.set(path, mergeSpecs(route, prev, specs));\n } else {\n specsByPathContext.set(path, specs);\n }\n } else {\n const pathContext = getPathContext(path);\n if (!(path in paths)) {\n paths[path] = {};\n }\n if (paths[path]) {\n paths[path][method] = mergeSpecs(\n route,\n ...pathContext,\n paths[path]?.[method],\n specs\n );\n }\n }\n}\nfunction removeExcludedPaths(paths, ctx) {\n const { exclude, excludeStaticFile } = ctx.options;\n const newPaths = {};\n const _exclude = Array.isArray(exclude) ? exclude : [exclude];\n for (const [key, value] of Object.entries(paths)) {\n if (value == null) continue;\n const isExplicitlyExcluded = _exclude.some((x) => {\n if (typeof x === \"string\") return key === x;\n return x.test(key);\n });\n if (isExplicitlyExcluded) continue;\n const isWildcardWithoutParameters = key.includes(\"*\") && !key.includes(\"{\");\n if (isWildcardWithoutParameters) continue;\n if (excludeStaticFile) {\n const hasPathParameters = key.includes(\"{\");\n const lastSegment = key.split(\"/\").pop() || \"\";\n const looksLikeStaticFile = lastSegment.includes(\".\");\n const shouldExcludeAsStaticFile = !hasPathParameters && looksLikeStaticFile;\n if (shouldExcludeAsStaticFile) continue;\n }\n for (const method of Object.keys(value)) {\n const schema = value[method];\n if (schema == null) continue;\n if (key.includes(\"{\")) {\n if (!schema.parameters) schema.parameters = [];\n const pathParameters = key.split(\"/\").filter(\n (x) => x.startsWith(\"{\") && !schema.parameters.find(\n (params) => params.in === \"path\" && params.name === x.slice(1, x.length - 1)\n )\n );\n for (const param of pathParameters) {\n const paramName = param.slice(1, param.length - 1);\n const index = schema.parameters.findIndex(\n (x) => {\n if (\"$ref\" in x) {\n const pos = x.$ref.split(\"/\").pop();\n if (pos) {\n const param2 = ctx.components.parameters?.[pos];\n if (param2 && !(\"$ref\" in param2)) {\n return param2.in === \"path\" && param2.name === paramName;\n }\n }\n return false;\n }\n return x.in === \"path\" && x.name === paramName;\n }\n );\n if (index === -1) {\n schema.parameters.push({\n schema: { type: \"string\" },\n in: \"path\",\n name: paramName,\n required: true\n });\n }\n }\n }\n if (!schema.responses) {\n schema.responses = {\n 200: {}\n };\n }\n }\n newPaths[key] = value;\n }\n return newPaths;\n}\n\nconst DEFAULT_OPTIONS = {\n documentation: {},\n excludeStaticFile: true,\n exclude: [],\n excludeMethods: [\"OPTIONS\"],\n excludeTags: []\n};\nfunction openAPIRouteHandler(hono, options) {\n let specs;\n return async (c) => {\n if (specs) return c.json(specs);\n specs = await generateSpecs(hono, options, c);\n return c.json(specs);\n };\n}\nasync function generateSpecs(hono, options = DEFAULT_OPTIONS, c) {\n const ctx = {\n components: {},\n // @ts-expect-error\n options: {\n ...DEFAULT_OPTIONS,\n ...options\n }\n };\n const _documentation = ctx.options.documentation ?? {};\n clearSpecsContext();\n const paths = await generatePaths(hono, ctx);\n for (const path in paths) {\n for (const method in paths[path]) {\n const isHidden = getHiddenValue({\n valueOrFunc: paths[path][method]?.hide,\n method,\n path,\n c\n });\n if (isHidden) {\n paths[path][method] = void 0;\n }\n }\n }\n const components = mergeComponentsObjects(\n _documentation.components,\n ctx.components\n );\n return {\n openapi: \"3.1.0\",\n ..._documentation,\n tags: _documentation.tags?.filter(\n (tag) => !ctx.options.excludeTags?.includes(tag?.name)\n ),\n info: {\n title: \"Hono Documentation\",\n description: \"Development documentation\",\n version: \"0.0.0\",\n ..._documentation.info\n },\n paths: {\n ...removeExcludedPaths(paths, ctx),\n ..._documentation.paths\n },\n components\n };\n}\nasync function generatePaths(hono, ctx) {\n const paths = {};\n for (const route of hono.routes) {\n const middlewareHandler = route.handler[uniqueSymbol];\n if (!middlewareHandler) {\n if (ctx.options.includeEmptyPaths) {\n registerSchemaPath({\n route,\n paths\n });\n }\n continue;\n }\n const routeMethod = route.method;\n if (routeMethod !== \"ALL\") {\n if (ctx.options.excludeMethods?.includes(routeMethod)) {\n continue;\n }\n if (!ALLOWED_METHODS.includes(routeMethod)) {\n continue;\n }\n }\n const defaultOptionsForThisMethod = ctx.options.defaultOptions?.[routeMethod];\n const { schema: routeSpecs, components = {} } = await getSpec(\n middlewareHandler,\n defaultOptionsForThisMethod\n );\n ctx.components = mergeComponentsObjects(ctx.components, components);\n registerSchemaPath({\n route,\n specs: routeSpecs,\n paths\n });\n }\n return paths;\n}\nfunction getHiddenValue(options) {\n const { valueOrFunc, c, method, path } = options;\n if (valueOrFunc != null) {\n if (typeof valueOrFunc === \"boolean\") {\n return valueOrFunc;\n }\n if (typeof valueOrFunc === \"function\") {\n return valueOrFunc({ c, method, path });\n }\n }\n return false;\n}\nasync function getSpec(middlewareHandler, defaultOptions) {\n if (\"spec\" in middlewareHandler) {\n let components = {};\n const tmp = {\n ...defaultOptions,\n ...middlewareHandler.spec,\n responses: {\n ...defaultOptions?.responses,\n ...middlewareHandler.spec.responses\n }\n };\n if (tmp.responses) {\n for (const key of Object.keys(tmp.responses)) {\n const response = tmp.responses[key];\n if (!response || !(\"content\" in response)) continue;\n for (const contentKey of Object.keys(response.content ?? {})) {\n const raw = response.content?.[contentKey];\n if (!raw) continue;\n if (raw.schema && \"toOpenAPISchema\" in raw.schema) {\n const result2 = await raw.schema.toOpenAPISchema();\n raw.schema = result2.schema;\n if (result2.components) {\n components = mergeComponentsObjects(\n components,\n result2.components\n );\n }\n }\n }\n }\n }\n return { schema: tmp, components };\n }\n const result = await middlewareHandler.toOpenAPISchema();\n const docs = defaultOptions ?? {};\n if (middlewareHandler.target === \"form\" || middlewareHandler.target === \"json\") {\n const media = middlewareHandler.options?.media ?? middlewareHandler.target === \"json\" ? \"application/json\" : \"multipart/form-data\";\n if (!docs.requestBody || !(\"content\" in docs.requestBody) || !docs.requestBody.content) {\n docs.requestBody = {\n content: {\n [media]: {\n schema: result.schema\n }\n }\n };\n } else {\n docs.requestBody.content[media] = {\n schema: result.schema\n };\n }\n } else {\n let parameters = [];\n if (\"$ref\" in result.schema) {\n const ref = result.schema.$ref;\n const pos = ref.split(\"/\").pop();\n if (pos && result.components?.schemas?.[pos]) {\n const schema = result.components.schemas[pos];\n const newParameters = generateParameters(\n middlewareHandler.target,\n schema\n )[0];\n if (!result.components.parameters) {\n result.components.parameters = {};\n }\n result.components.parameters[pos] = newParameters;\n delete result.components.schemas[pos];\n parameters.push({\n $ref: `#/components/parameters/${pos}`\n });\n }\n } else {\n parameters = generateParameters(middlewareHandler.target, result.schema);\n }\n docs.parameters = parameters;\n }\n return { schema: docs, components: result.components };\n}\nfunction generateParameters(target, schema) {\n const parameters = [];\n for (const [key, value] of Object.entries(schema.properties ?? {})) {\n const def = {\n in: target === \"param\" ? \"path\" : target,\n name: key,\n // @ts-expect-error\n schema: value\n };\n const isRequired = schema.required?.includes(key);\n if (isRequired) {\n def.required = true;\n }\n if (def.schema && \"description\" in def.schema && def.schema.description) {\n def.description = def.schema.description;\n def.schema.description = void 0;\n }\n parameters.push(def);\n }\n return parameters;\n}\nfunction mergeComponentsObjects(...components) {\n return components.reduce(\n (prev, component, index) => {\n if (component == null || index === 0) return prev;\n if (prev.schemas && Object.keys(prev.schemas).length > 0 || component.schemas && Object.keys(component.schemas).length > 0) {\n prev.schemas = {\n ...prev.schemas,\n ...component.schemas\n };\n }\n if (prev.parameters && Object.keys(prev.parameters).length > 0 || component.parameters && Object.keys(component.parameters).length > 0) {\n prev.parameters = {\n ...prev.parameters,\n ...component.parameters\n };\n }\n return prev;\n },\n components[0] ?? {}\n );\n}\n\nfunction loadVendor(vendor, fn) {\n if (fn.toJSONSchema) {\n loadVendor$1(vendor, fn.toJSONSchema);\n }\n if (fn.toOpenAPISchema) {\n loadVendor$2(vendor, fn.toOpenAPISchema);\n }\n}\nfunction resolver(schema, userDefinedOptions) {\n return {\n vendor: schema[\"~standard\"].vendor,\n validate: schema[\"~standard\"].validate,\n toJSONSchema: (customOptions) => toJsonSchema(schema, { ...userDefinedOptions, ...customOptions }),\n toOpenAPISchema: (customOptions) => toOpenAPISchema(schema, { ...userDefinedOptions, ...customOptions })\n };\n}\nfunction validator(target, schema, hook, options) {\n const middleware = sValidator(target, schema, hook);\n return Object.assign(middleware, {\n [uniqueSymbol]: {\n target,\n ...resolver(schema, options),\n options\n }\n });\n}\nfunction describeRoute(spec) {\n const middleware = async (_c, next) => {\n await next();\n };\n return Object.assign(middleware, {\n [uniqueSymbol]: {\n spec\n }\n });\n}\nfunction describeResponse(handler, responses, options) {\n const _responses = Object.entries(responses).reduce(\n (acc, [statusCode, response]) => {\n if (response.content) {\n const content = Object.entries(response.content).reduce(\n (contentAcc, [mediaType, media]) => {\n if (media.vSchema) {\n const { vSchema, ...rest } = media;\n contentAcc[mediaType] = {\n ...rest,\n schema: resolver(vSchema, options)\n };\n } else {\n contentAcc[mediaType] = media;\n }\n return contentAcc;\n },\n {}\n );\n acc[statusCode] = { ...response, content };\n } else {\n acc[statusCode] = response;\n }\n return acc;\n },\n {}\n );\n return Object.assign(handler, {\n [uniqueSymbol]: {\n spec: { responses: _responses }\n }\n });\n}\n\nexport { ALLOWED_METHODS, clearSpecsContext, describeResponse, describeRoute, generateSpecs, loadVendor, openAPIRouteHandler, registerSchemaPath, removeExcludedPaths, resolver, uniqueSymbol, validator };\n","import type { Context } from 'hono';\n\nconst clients = new Set<ReadableStreamDefaultController>();\nlet hotReloadDisabled = false;\n\nexport function handleClientsRefresh(c: Context): Response {\n const stream = new ReadableStream({\n start(controller) {\n clients.add(controller);\n controller.enqueue('data: connected\\n\\n');\n\n c.req.raw.signal.addEventListener('abort', () => {\n clients.delete(controller);\n });\n },\n });\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n 'Cache-Control': 'no-cache',\n Connection: 'keep-alive',\n 'Access-Control-Allow-Origin': '*',\n },\n });\n}\n\nexport function handleTriggerClientsRefresh(c: Context) {\n clients.forEach(controller => {\n try {\n controller.enqueue('data: refresh\\n\\n');\n } catch {\n clients.delete(controller);\n }\n });\n return c.json({ success: true, clients: clients.size });\n}\n\n// Functions to control hot reload during template installation\nexport function disableHotReload() {\n hotReloadDisabled = true;\n console.info('🔒 Hot reload disabled for template installation');\n}\n\nexport function enableHotReload() {\n hotReloadDisabled = false;\n console.info('🔓 Hot reload re-enabled after template installation');\n}\n\nexport function isHotReloadDisabled(): boolean {\n return hotReloadDisabled;\n}\n","import type { Context } from 'hono';\nimport { HTTPException } from 'hono/http-exception';\nimport type { ContentfulStatusCode } from 'hono/utils/http-status';\n\nimport type { ApiError } from '../types';\n\n// Helper to handle errors consistently\nexport function handleError(error: unknown, defaultMessage: string): Promise<Response> {\n const apiError = error as ApiError;\n throw new HTTPException((apiError.status || 500) as ContentfulStatusCode, {\n message: apiError.message || defaultMessage,\n cause: apiError.cause,\n });\n}\nexport function errorHandler(err: Error, c: Context, isDev?: boolean): Response {\n if (err instanceof HTTPException) {\n if (isDev) {\n return c.json({ error: err.message, cause: err.cause, stack: err.stack }, err.status);\n }\n return c.json({ error: err.message }, err.status);\n }\n\n c.get('mastra').getLogger().error(err);\n return c.json({ error: 'Internal Server Error' }, 500);\n}\n","import type { Context } from 'hono';\n\n// Health check handler\nexport async function healthHandler(c: Context) {\n return c.json({ success: true }, 200);\n}\n","import type { Mastra } from '@mastra/core/mastra';\nimport type { Context } from 'hono';\n\nimport { handleError } from './error';\n\nexport async function restartAllActiveWorkflowRunsHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n void mastra.restartAllActiveWorkflowRuns();\n\n return c.json({ message: 'Restarting all active workflow runs...' });\n } catch (error) {\n return handleError(error, 'Error restarting active workflow runs');\n }\n}\n","export const html = `\n<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>Welcome to Mastra</title>\n <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/inter-ui/3.19.3/inter.min.css\" />\n <style>\n body {\n margin: 0;\n padding: 0;\n background-color: #0d0d0d;\n color: #ffffff;\n font-family:\n 'Inter',\n -apple-system,\n BlinkMacSystemFont,\n system-ui,\n sans-serif;\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n }\n\n main {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 2rem;\n text-align: center;\n }\n\n h1 {\n font-size: 4rem;\n font-weight: 600;\n margin: 0 0 1rem 0;\n background: linear-gradient(to right, #fff, #ccc);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n line-height: 1.2;\n }\n\n .subtitle {\n color: #9ca3af;\n font-size: 1.25rem;\n max-width: 600px;\n margin: 0 auto 3rem auto;\n line-height: 1.6;\n }\n\n .docs-link {\n background-color: #1a1a1a;\n padding: 1rem 2rem;\n border-radius: 0.5rem;\n display: flex;\n align-items: center;\n gap: 1rem;\n font-family: monospace;\n font-size: 1rem;\n color: #ffffff;\n text-decoration: none;\n transition: background-color 0.2s;\n }\n\n .docs-link:hover {\n background-color: #252525;\n }\n\n .arrow-icon {\n transition: transform 0.2s;\n }\n\n .docs-link:hover .arrow-icon {\n transform: translateX(4px);\n }\n </style>\n </head>\n <body>\n <main>\n <h1>Welcome to Mastra</h1>\n <p class=\"subtitle\">\n Prototype and productionize AI features with a modern JS/TS stack.\n </p>\n\n <a href=\"https://mastra.ai/docs\" class=\"docs-link\">\n Browse the docs\n <svg\n class=\"arrow-icon\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"M5 12h14M12 5l7 7-7 7\" />\n </svg>\n </a>\n </main>\n </body>\n</html>\n`;\n","import { readFile } from 'node:fs/promises';\nimport * as https from 'node:https';\nimport { join } from 'node:path/posix';\nimport { serve } from '@hono/node-server';\nimport { serveStatic } from '@hono/node-server/serve-static';\nimport { swaggerUI } from '@hono/swagger-ui';\nimport type { Mastra } from '@mastra/core/mastra';\nimport { Tool } from '@mastra/core/tools';\nimport { MastraServer } from '@mastra/hono';\nimport type { HonoBindings, HonoVariables } from '@mastra/hono';\nimport { InMemoryTaskStore } from '@mastra/server/a2a/store';\nimport type { Context, MiddlewareHandler } from 'hono';\nimport { Hono } from 'hono';\nimport { cors } from 'hono/cors';\nimport { logger } from 'hono/logger';\nimport { timeout } from 'hono/timeout';\nimport { describeRoute } from 'hono-openapi';\nimport { handleClientsRefresh, handleTriggerClientsRefresh, isHotReloadDisabled } from './handlers/client';\nimport { errorHandler } from './handlers/error';\nimport { healthHandler } from './handlers/health';\nimport { restartAllActiveWorkflowRunsHandler } from './handlers/restart-active-runs';\nimport type { ServerBundleOptions } from './types';\nimport { html } from './welcome.js';\n\n// Use adapter type definitions\ntype Bindings = HonoBindings;\n\ntype Variables = HonoVariables & {\n clients: Set<{ controller: ReadableStreamDefaultController }>;\n};\n\nexport function getToolExports(tools: Record<string, Function>[]) {\n try {\n return tools.reduce((acc, toolModule) => {\n Object.entries(toolModule).forEach(([key, tool]) => {\n if (tool instanceof Tool) {\n acc[key] = tool;\n }\n });\n return acc;\n }, {});\n } catch (err: any) {\n console.error(\n `Failed to import tools\nreason: ${err.message}\n${err.stack.split('\\n').slice(1).join('\\n')}\n `,\n err,\n );\n }\n}\n\nexport async function createHonoServer(\n mastra: Mastra,\n options: ServerBundleOptions = {\n tools: {},\n },\n) {\n // Create typed Hono app\n const app = new Hono<{ Bindings: Bindings; Variables: Variables }>();\n const server = mastra.getServer();\n const a2aTaskStore = new InMemoryTaskStore();\n const routes = server?.apiRoutes;\n\n // Store custom route auth configurations\n const customRouteAuthConfig = new Map<string, boolean>();\n\n if (routes) {\n for (const route of routes) {\n // By default, routes require authentication unless explicitly set to false\n const requiresAuth = route.requiresAuth !== false;\n const routeKey = `${route.method}:${route.path}`;\n customRouteAuthConfig.set(routeKey, requiresAuth);\n }\n }\n\n app.onError((err, c) => errorHandler(err, c, options.isDev));\n\n // Define body limit options\n const bodyLimitOptions = {\n maxSize: server?.bodySizeLimit ?? 4.5 * 1024 * 1024, // 4.5 MB,\n onError: () => ({ error: 'Request body too large' }),\n };\n\n // Create server adapter with all configuration\n const honoServerAdapter = new MastraServer({\n app,\n mastra,\n tools: options.tools,\n taskStore: a2aTaskStore,\n playground: options.playground,\n isDev: options.isDev,\n bodyLimitOptions,\n openapiPath: '/openapi.json',\n customRouteAuthConfig,\n });\n\n // Register context middleware FIRST - this sets mastra, requestContext, tools, taskStore in context\n // Cast needed due to Hono type variance - safe because registerContextMiddleware is generic\n honoServerAdapter.registerContextMiddleware();\n\n // Apply custom server middleware from Mastra instance\n const serverMiddleware = mastra.getServerMiddleware?.();\n\n if (serverMiddleware && serverMiddleware.length > 0) {\n for (const m of serverMiddleware) {\n app.use(m.path, m.handler);\n }\n }\n\n //Global cors config\n if (server?.cors === false) {\n app.use('*', timeout(server?.timeout ?? 3 * 60 * 1000));\n } else {\n const corsConfig = {\n origin: '*',\n allowMethods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'],\n credentials: false,\n maxAge: 3600,\n ...server?.cors,\n allowHeaders: ['Content-Type', 'Authorization', 'x-mastra-client-type', ...(server?.cors?.allowHeaders ?? [])],\n exposeHeaders: ['Content-Length', 'X-Requested-With', ...(server?.cors?.exposeHeaders ?? [])],\n };\n app.use('*', timeout(server?.timeout ?? 3 * 60 * 1000), cors(corsConfig));\n }\n\n // Health check endpoint (before auth middleware so it's publicly accessible)\n app.get(\n '/health',\n describeRoute({\n description: 'Health check endpoint',\n tags: ['system'],\n responses: {\n 200: {\n description: 'Service is healthy',\n },\n },\n }),\n healthHandler,\n );\n\n // Register auth middleware (authentication and authorization)\n // This is handled by the server adapter now\n honoServerAdapter.registerAuthMiddleware();\n\n if (server?.middleware) {\n const normalizedMiddlewares = Array.isArray(server.middleware) ? server.middleware : [server.middleware];\n const middlewares = normalizedMiddlewares.map(middleware => {\n if (typeof middleware === 'function') {\n return {\n path: '*',\n handler: middleware,\n };\n }\n\n return middleware;\n });\n\n for (const middleware of middlewares) {\n app.use(middleware.path, middleware.handler);\n }\n }\n\n if (routes) {\n for (const route of routes) {\n const middlewares: MiddlewareHandler[] = [];\n\n if (route.middleware) {\n middlewares.push(...(Array.isArray(route.middleware) ? route.middleware : [route.middleware]));\n }\n if (route.openapi) {\n middlewares.push(describeRoute(route.openapi));\n }\n\n const handler = 'handler' in route ? route.handler : await route.createHandler({ mastra });\n\n if (route.method === 'GET') {\n app.get(route.path, ...middlewares, handler);\n } else if (route.method === 'POST') {\n app.post(route.path, ...middlewares, handler);\n } else if (route.method === 'PUT') {\n app.put(route.path, ...middlewares, handler);\n } else if (route.method === 'DELETE') {\n app.delete(route.path, ...middlewares, handler);\n } else if (route.method === 'PATCH') {\n app.patch(route.path, ...middlewares, handler);\n } else if (route.method === 'ALL') {\n app.all(route.path, ...middlewares, handler);\n }\n }\n }\n\n if (server?.build?.apiReqLogs) {\n app.use(logger());\n }\n\n // Register adapter routes (adapter was created earlier with configuration)\n // Cast needed due to Hono type variance - safe because registerRoutes is generic\n await honoServerAdapter.registerRoutes();\n\n if (options?.isDev || server?.build?.swaggerUI) {\n app.get(\n '/swagger-ui',\n describeRoute({\n hide: true,\n }),\n swaggerUI({ url: '/openapi.json' }),\n );\n }\n\n if (options?.isDev) {\n app.post(\n '/__restart-active-workflow-runs',\n describeRoute({\n hide: true,\n }),\n restartAllActiveWorkflowRunsHandler,\n );\n }\n\n if (options?.playground) {\n // SSE endpoint for refresh notifications\n app.get(\n '/refresh-events',\n describeRoute({\n hide: true,\n }),\n handleClientsRefresh,\n );\n\n // Trigger refresh for all clients\n app.post(\n '/__refresh',\n describeRoute({\n hide: true,\n }),\n handleTriggerClientsRefresh,\n );\n\n // Check hot reload status\n app.get(\n '/__hot-reload-status',\n describeRoute({\n hide: true,\n }),\n (c: Context) => {\n return c.json({\n disabled: isHotReloadDisabled(),\n timestamp: new Date().toISOString(),\n });\n },\n );\n // Playground routes - these should come after API routes\n // Serve assets with specific MIME types\n app.use('/assets/*', async (c, next) => {\n const path = c.req.path;\n if (path.endsWith('.js')) {\n c.header('Content-Type', 'application/javascript');\n } else if (path.endsWith('.css')) {\n c.header('Content-Type', 'text/css');\n }\n await next();\n });\n\n // Serve static assets from playground directory\n app.use(\n '/assets/*',\n serveStatic({\n root: './playground/assets',\n }),\n );\n }\n\n // Dynamic HTML handler - this must come before static file serving\n app.get('*', async (c, next) => {\n // Skip if it's an API route\n if (\n c.req.path.startsWith('/api/') ||\n c.req.path.startsWith('/swagger-ui') ||\n c.req.path.startsWith('/openapi.json')\n ) {\n return await next();\n }\n\n // Skip if it's an asset file (has extension other than .html)\n const path = c.req.path;\n if (path.includes('.') && !path.endsWith('.html')) {\n return await next();\n }\n\n if (options?.playground) {\n // For HTML routes, serve index.html with dynamic replacements\n let indexHtml = await readFile(join(process.cwd(), './playground/index.html'), 'utf-8');\n\n // Inject the server port information\n const serverOptions = mastra.getServer();\n const port = serverOptions?.port ?? (Number(process.env.PORT) || 4111);\n const hideCloudCta = process.env.MASTRA_HIDE_CLOUD_CTA === 'true';\n const host = serverOptions?.host ?? 'localhost';\n\n indexHtml = indexHtml.replace(`'%%MASTRA_SERVER_HOST%%'`, `'${host}'`);\n indexHtml = indexHtml.replace(`'%%MASTRA_SERVER_PORT%%'`, `'${port}'`);\n indexHtml = indexHtml.replace(`'%%MASTRA_HIDE_CLOUD_CTA%%'`, `'${hideCloudCta}'`);\n\n return c.newResponse(indexHtml, 200, { 'Content-Type': 'text/html' });\n }\n\n return c.newResponse(html, 200, { 'Content-Type': 'text/html' });\n });\n\n if (options?.playground) {\n // Serve extra static files from playground directory (this comes after HTML handler)\n app.use(\n '*',\n serveStatic({\n root: './playground',\n }),\n );\n }\n\n return app;\n}\n\nexport async function createNodeServer(mastra: Mastra, options: ServerBundleOptions = { tools: {} }) {\n const app = await createHonoServer(mastra, options);\n const serverOptions = mastra.getServer();\n\n const key =\n serverOptions?.https?.key ??\n (process.env.MASTRA_HTTPS_KEY ? Buffer.from(process.env.MASTRA_HTTPS_KEY, 'base64') : undefined);\n const cert =\n serverOptions?.https?.cert ??\n (process.env.MASTRA_HTTPS_CERT ? Buffer.from(process.env.MASTRA_HTTPS_CERT, 'base64') : undefined);\n const isHttpsEnabled = Boolean(key && cert);\n\n const host = serverOptions?.host ?? 'localhost';\n const port = serverOptions?.port ?? (Number(process.env.PORT) || 4111);\n const protocol = isHttpsEnabled ? 'https' : 'http';\n\n const server = serve(\n {\n fetch: app.fetch,\n port,\n hostname: serverOptions?.host,\n ...(isHttpsEnabled\n ? {\n createServer: https.createServer,\n serverOptions: {\n key,\n cert,\n },\n }\n : {}),\n },\n () => {\n const logger = mastra.getLogger();\n logger.info(` Mastra API running on port ${protocol}://${host}:${port}/api`);\n if (options?.playground) {\n const studioUrl = `${protocol}://${host}:${port}`;\n logger.info(`👨‍💻 Studio available at ${studioUrl}`);\n }\n\n if (process.send) {\n process.send({\n type: 'server-ready',\n port,\n host,\n });\n }\n },\n );\n\n await mastra.startEventEngine();\n\n return server;\n}\n"]}
1
+ {"version":3,"sources":["../../../../node_modules/.pnpm/@hono+node-server@1.19.6_hono@4.10.6/node_modules/@hono/node-server/dist/index.mjs","../../../../node_modules/.pnpm/@hono+node-server@1.19.6_hono@4.10.6/node_modules/@hono/node-server/dist/serve-static.mjs","../../../../node_modules/.pnpm/@hono+swagger-ui@0.5.2_hono@4.10.6/node_modules/@hono/swagger-ui/dist/index.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/utils/errors.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/fetch-to-node/http-incoming.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/utils/types.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/fetch-to-node/internal-http.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/fetch-to-node/internal-streams-state.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/fetch-to-node/http-common.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/fetch-to-node/http-outgoing.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/fetch-to-node/http-server.js","../../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/http-exception.js","../../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/middleware/body-limit/index.js","../../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/utils/stream.js","../../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/helper/streaming/utils.js","../../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/helper/streaming/stream.js","../../../../server-adapters/hono/src/auth-middleware.ts","../../../../server-adapters/hono/src/index.ts","../../../../node_modules/.pnpm/hono-openapi@1.1.1_@hono+standard-validator@0.2.0_@standard-schema+spec@1.0.0_hono@4.10_104989a2a6e05db2703d6e18fdeb5196/node_modules/hono-openapi/dist/index.js","../../src/server/handlers/client.ts","../../src/server/handlers/error.ts","../../src/server/handlers/health.ts","../../src/server/handlers/restart-active-runs.ts","../../src/server/welcome.ts","../../src/server/index.ts"],"names":["Request","Readable","Http2ServerRequest","stream","crypto","Http2ServerRequest2","createServer","createServerHTTP","lstatSync","existsSync","path","join","getMimeType","createReadStream","html","util","Writable","l","onError","Buffer","headerCharRegex","checkInvalidHeaderChar","incoming","isDevPlaygroundRequest","isProtectedPath","canAccessPublicly","checkRules","defaultAuthConfig","MastraServerBase","redactStreamChunk","middleware","HTTPException","tools","Tool","Hono","InMemoryTaskStore","timeout","cors","logger","readFile","https"],"mappings":"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","file":"index.cjs","sourcesContent":["// src/server.ts\nimport { createServer as createServerHTTP } from \"http\";\n\n// src/listener.ts\nimport { Http2ServerRequest as Http2ServerRequest2 } from \"http2\";\n\n// src/request.ts\nimport { Http2ServerRequest } from \"http2\";\nimport { Readable } from \"stream\";\nvar RequestError = class extends Error {\n constructor(message, options) {\n super(message, options);\n this.name = \"RequestError\";\n }\n};\nvar toRequestError = (e) => {\n if (e instanceof RequestError) {\n return e;\n }\n return new RequestError(e.message, { cause: e });\n};\nvar GlobalRequest = global.Request;\nvar Request = class extends GlobalRequest {\n constructor(input, options) {\n if (typeof input === \"object\" && getRequestCache in input) {\n input = input[getRequestCache]();\n }\n if (typeof options?.body?.getReader !== \"undefined\") {\n ;\n options.duplex ??= \"half\";\n }\n super(input, options);\n }\n};\nvar newHeadersFromIncoming = (incoming) => {\n const headerRecord = [];\n const rawHeaders = incoming.rawHeaders;\n for (let i = 0; i < rawHeaders.length; i += 2) {\n const { [i]: key, [i + 1]: value } = rawHeaders;\n if (key.charCodeAt(0) !== /*:*/\n 58) {\n headerRecord.push([key, value]);\n }\n }\n return new Headers(headerRecord);\n};\nvar wrapBodyStream = Symbol(\"wrapBodyStream\");\nvar newRequestFromIncoming = (method, url, headers, incoming, abortController) => {\n const init = {\n method,\n headers,\n signal: abortController.signal\n };\n if (method === \"TRACE\") {\n init.method = \"GET\";\n const req = new Request(url, init);\n Object.defineProperty(req, \"method\", {\n get() {\n return \"TRACE\";\n }\n });\n return req;\n }\n if (!(method === \"GET\" || method === \"HEAD\")) {\n if (\"rawBody\" in incoming && incoming.rawBody instanceof Buffer) {\n init.body = new ReadableStream({\n start(controller) {\n controller.enqueue(incoming.rawBody);\n controller.close();\n }\n });\n } else if (incoming[wrapBodyStream]) {\n let reader;\n init.body = new ReadableStream({\n async pull(controller) {\n try {\n reader ||= Readable.toWeb(incoming).getReader();\n const { done, value } = await reader.read();\n if (done) {\n controller.close();\n } else {\n controller.enqueue(value);\n }\n } catch (error) {\n controller.error(error);\n }\n }\n });\n } else {\n init.body = Readable.toWeb(incoming);\n }\n }\n return new Request(url, init);\n};\nvar getRequestCache = Symbol(\"getRequestCache\");\nvar requestCache = Symbol(\"requestCache\");\nvar incomingKey = Symbol(\"incomingKey\");\nvar urlKey = Symbol(\"urlKey\");\nvar headersKey = Symbol(\"headersKey\");\nvar abortControllerKey = Symbol(\"abortControllerKey\");\nvar getAbortController = Symbol(\"getAbortController\");\nvar requestPrototype = {\n get method() {\n return this[incomingKey].method || \"GET\";\n },\n get url() {\n return this[urlKey];\n },\n get headers() {\n return this[headersKey] ||= newHeadersFromIncoming(this[incomingKey]);\n },\n [getAbortController]() {\n this[getRequestCache]();\n return this[abortControllerKey];\n },\n [getRequestCache]() {\n this[abortControllerKey] ||= new AbortController();\n return this[requestCache] ||= newRequestFromIncoming(\n this.method,\n this[urlKey],\n this.headers,\n this[incomingKey],\n this[abortControllerKey]\n );\n }\n};\n[\n \"body\",\n \"bodyUsed\",\n \"cache\",\n \"credentials\",\n \"destination\",\n \"integrity\",\n \"mode\",\n \"redirect\",\n \"referrer\",\n \"referrerPolicy\",\n \"signal\",\n \"keepalive\"\n].forEach((k) => {\n Object.defineProperty(requestPrototype, k, {\n get() {\n return this[getRequestCache]()[k];\n }\n });\n});\n[\"arrayBuffer\", \"blob\", \"clone\", \"formData\", \"json\", \"text\"].forEach((k) => {\n Object.defineProperty(requestPrototype, k, {\n value: function() {\n return this[getRequestCache]()[k]();\n }\n });\n});\nObject.setPrototypeOf(requestPrototype, Request.prototype);\nvar newRequest = (incoming, defaultHostname) => {\n const req = Object.create(requestPrototype);\n req[incomingKey] = incoming;\n const incomingUrl = incoming.url || \"\";\n if (incomingUrl[0] !== \"/\" && // short-circuit for performance. most requests are relative URL.\n (incomingUrl.startsWith(\"http://\") || incomingUrl.startsWith(\"https://\"))) {\n if (incoming instanceof Http2ServerRequest) {\n throw new RequestError(\"Absolute URL for :path is not allowed in HTTP/2\");\n }\n try {\n const url2 = new URL(incomingUrl);\n req[urlKey] = url2.href;\n } catch (e) {\n throw new RequestError(\"Invalid absolute URL\", { cause: e });\n }\n return req;\n }\n const host = (incoming instanceof Http2ServerRequest ? incoming.authority : incoming.headers.host) || defaultHostname;\n if (!host) {\n throw new RequestError(\"Missing host header\");\n }\n let scheme;\n if (incoming instanceof Http2ServerRequest) {\n scheme = incoming.scheme;\n if (!(scheme === \"http\" || scheme === \"https\")) {\n throw new RequestError(\"Unsupported scheme\");\n }\n } else {\n scheme = incoming.socket && incoming.socket.encrypted ? \"https\" : \"http\";\n }\n const url = new URL(`${scheme}://${host}${incomingUrl}`);\n if (url.hostname.length !== host.length && url.hostname !== host.replace(/:\\d+$/, \"\")) {\n throw new RequestError(\"Invalid host header\");\n }\n req[urlKey] = url.href;\n return req;\n};\n\n// src/response.ts\nvar responseCache = Symbol(\"responseCache\");\nvar getResponseCache = Symbol(\"getResponseCache\");\nvar cacheKey = Symbol(\"cache\");\nvar GlobalResponse = global.Response;\nvar Response2 = class _Response {\n #body;\n #init;\n [getResponseCache]() {\n delete this[cacheKey];\n return this[responseCache] ||= new GlobalResponse(this.#body, this.#init);\n }\n constructor(body, init) {\n let headers;\n this.#body = body;\n if (init instanceof _Response) {\n const cachedGlobalResponse = init[responseCache];\n if (cachedGlobalResponse) {\n this.#init = cachedGlobalResponse;\n this[getResponseCache]();\n return;\n } else {\n this.#init = init.#init;\n headers = new Headers(init.#init.headers);\n }\n } else {\n this.#init = init;\n }\n if (typeof body === \"string\" || typeof body?.getReader !== \"undefined\" || body instanceof Blob || body instanceof Uint8Array) {\n headers ||= init?.headers || { \"content-type\": \"text/plain; charset=UTF-8\" };\n this[cacheKey] = [init?.status || 200, body, headers];\n }\n }\n get headers() {\n const cache = this[cacheKey];\n if (cache) {\n if (!(cache[2] instanceof Headers)) {\n cache[2] = new Headers(cache[2]);\n }\n return cache[2];\n }\n return this[getResponseCache]().headers;\n }\n get status() {\n return this[cacheKey]?.[0] ?? this[getResponseCache]().status;\n }\n get ok() {\n const status = this.status;\n return status >= 200 && status < 300;\n }\n};\n[\"body\", \"bodyUsed\", \"redirected\", \"statusText\", \"trailers\", \"type\", \"url\"].forEach((k) => {\n Object.defineProperty(Response2.prototype, k, {\n get() {\n return this[getResponseCache]()[k];\n }\n });\n});\n[\"arrayBuffer\", \"blob\", \"clone\", \"formData\", \"json\", \"text\"].forEach((k) => {\n Object.defineProperty(Response2.prototype, k, {\n value: function() {\n return this[getResponseCache]()[k]();\n }\n });\n});\nObject.setPrototypeOf(Response2, GlobalResponse);\nObject.setPrototypeOf(Response2.prototype, GlobalResponse.prototype);\n\n// src/utils.ts\nasync function readWithoutBlocking(readPromise) {\n return Promise.race([readPromise, Promise.resolve().then(() => Promise.resolve(void 0))]);\n}\nfunction writeFromReadableStreamDefaultReader(reader, writable, currentReadPromise) {\n const cancel = (error) => {\n reader.cancel(error).catch(() => {\n });\n };\n writable.on(\"close\", cancel);\n writable.on(\"error\", cancel);\n (currentReadPromise ?? reader.read()).then(flow, handleStreamError);\n return reader.closed.finally(() => {\n writable.off(\"close\", cancel);\n writable.off(\"error\", cancel);\n });\n function handleStreamError(error) {\n if (error) {\n writable.destroy(error);\n }\n }\n function onDrain() {\n reader.read().then(flow, handleStreamError);\n }\n function flow({ done, value }) {\n try {\n if (done) {\n writable.end();\n } else if (!writable.write(value)) {\n writable.once(\"drain\", onDrain);\n } else {\n return reader.read().then(flow, handleStreamError);\n }\n } catch (e) {\n handleStreamError(e);\n }\n }\n}\nfunction writeFromReadableStream(stream, writable) {\n if (stream.locked) {\n throw new TypeError(\"ReadableStream is locked.\");\n } else if (writable.destroyed) {\n return;\n }\n return writeFromReadableStreamDefaultReader(stream.getReader(), writable);\n}\nvar buildOutgoingHttpHeaders = (headers) => {\n const res = {};\n if (!(headers instanceof Headers)) {\n headers = new Headers(headers ?? void 0);\n }\n const cookies = [];\n for (const [k, v] of headers) {\n if (k === \"set-cookie\") {\n cookies.push(v);\n } else {\n res[k] = v;\n }\n }\n if (cookies.length > 0) {\n res[\"set-cookie\"] = cookies;\n }\n res[\"content-type\"] ??= \"text/plain; charset=UTF-8\";\n return res;\n};\n\n// src/utils/response/constants.ts\nvar X_ALREADY_SENT = \"x-hono-already-sent\";\n\n// src/globals.ts\nimport crypto from \"crypto\";\nvar webFetch = global.fetch;\nif (typeof global.crypto === \"undefined\") {\n global.crypto = crypto;\n}\nglobal.fetch = (info, init) => {\n init = {\n // Disable compression handling so people can return the result of a fetch\n // directly in the loader without messing with the Content-Encoding header.\n compress: false,\n ...init\n };\n return webFetch(info, init);\n};\n\n// src/listener.ts\nvar outgoingEnded = Symbol(\"outgoingEnded\");\nvar handleRequestError = () => new Response(null, {\n status: 400\n});\nvar handleFetchError = (e) => new Response(null, {\n status: e instanceof Error && (e.name === \"TimeoutError\" || e.constructor.name === \"TimeoutError\") ? 504 : 500\n});\nvar handleResponseError = (e, outgoing) => {\n const err = e instanceof Error ? e : new Error(\"unknown error\", { cause: e });\n if (err.code === \"ERR_STREAM_PREMATURE_CLOSE\") {\n console.info(\"The user aborted a request.\");\n } else {\n console.error(e);\n if (!outgoing.headersSent) {\n outgoing.writeHead(500, { \"Content-Type\": \"text/plain\" });\n }\n outgoing.end(`Error: ${err.message}`);\n outgoing.destroy(err);\n }\n};\nvar flushHeaders = (outgoing) => {\n if (\"flushHeaders\" in outgoing && outgoing.writable) {\n outgoing.flushHeaders();\n }\n};\nvar responseViaCache = async (res, outgoing) => {\n let [status, body, header] = res[cacheKey];\n if (header instanceof Headers) {\n header = buildOutgoingHttpHeaders(header);\n }\n if (typeof body === \"string\") {\n header[\"Content-Length\"] = Buffer.byteLength(body);\n } else if (body instanceof Uint8Array) {\n header[\"Content-Length\"] = body.byteLength;\n } else if (body instanceof Blob) {\n header[\"Content-Length\"] = body.size;\n }\n outgoing.writeHead(status, header);\n if (typeof body === \"string\" || body instanceof Uint8Array) {\n outgoing.end(body);\n } else if (body instanceof Blob) {\n outgoing.end(new Uint8Array(await body.arrayBuffer()));\n } else {\n flushHeaders(outgoing);\n await writeFromReadableStream(body, outgoing)?.catch(\n (e) => handleResponseError(e, outgoing)\n );\n }\n ;\n outgoing[outgoingEnded]?.();\n};\nvar isPromise = (res) => typeof res.then === \"function\";\nvar responseViaResponseObject = async (res, outgoing, options = {}) => {\n if (isPromise(res)) {\n if (options.errorHandler) {\n try {\n res = await res;\n } catch (err) {\n const errRes = await options.errorHandler(err);\n if (!errRes) {\n return;\n }\n res = errRes;\n }\n } else {\n res = await res.catch(handleFetchError);\n }\n }\n if (cacheKey in res) {\n return responseViaCache(res, outgoing);\n }\n const resHeaderRecord = buildOutgoingHttpHeaders(res.headers);\n if (res.body) {\n const reader = res.body.getReader();\n const values = [];\n let done = false;\n let currentReadPromise = void 0;\n if (resHeaderRecord[\"transfer-encoding\"] !== \"chunked\") {\n let maxReadCount = 2;\n for (let i = 0; i < maxReadCount; i++) {\n currentReadPromise ||= reader.read();\n const chunk = await readWithoutBlocking(currentReadPromise).catch((e) => {\n console.error(e);\n done = true;\n });\n if (!chunk) {\n if (i === 1) {\n await new Promise((resolve) => setTimeout(resolve));\n maxReadCount = 3;\n continue;\n }\n break;\n }\n currentReadPromise = void 0;\n if (chunk.value) {\n values.push(chunk.value);\n }\n if (chunk.done) {\n done = true;\n break;\n }\n }\n if (done && !(\"content-length\" in resHeaderRecord)) {\n resHeaderRecord[\"content-length\"] = values.reduce((acc, value) => acc + value.length, 0);\n }\n }\n outgoing.writeHead(res.status, resHeaderRecord);\n values.forEach((value) => {\n ;\n outgoing.write(value);\n });\n if (done) {\n outgoing.end();\n } else {\n if (values.length === 0) {\n flushHeaders(outgoing);\n }\n await writeFromReadableStreamDefaultReader(reader, outgoing, currentReadPromise);\n }\n } else if (resHeaderRecord[X_ALREADY_SENT]) {\n } else {\n outgoing.writeHead(res.status, resHeaderRecord);\n outgoing.end();\n }\n ;\n outgoing[outgoingEnded]?.();\n};\nvar getRequestListener = (fetchCallback, options = {}) => {\n const autoCleanupIncoming = options.autoCleanupIncoming ?? true;\n if (options.overrideGlobalObjects !== false && global.Request !== Request) {\n Object.defineProperty(global, \"Request\", {\n value: Request\n });\n Object.defineProperty(global, \"Response\", {\n value: Response2\n });\n }\n return async (incoming, outgoing) => {\n let res, req;\n try {\n req = newRequest(incoming, options.hostname);\n let incomingEnded = !autoCleanupIncoming || incoming.method === \"GET\" || incoming.method === \"HEAD\";\n if (!incomingEnded) {\n ;\n incoming[wrapBodyStream] = true;\n incoming.on(\"end\", () => {\n incomingEnded = true;\n });\n if (incoming instanceof Http2ServerRequest2) {\n ;\n outgoing[outgoingEnded] = () => {\n if (!incomingEnded) {\n setTimeout(() => {\n if (!incomingEnded) {\n setTimeout(() => {\n incoming.destroy();\n outgoing.destroy();\n });\n }\n });\n }\n };\n }\n }\n outgoing.on(\"close\", () => {\n const abortController = req[abortControllerKey];\n if (abortController) {\n if (incoming.errored) {\n req[abortControllerKey].abort(incoming.errored.toString());\n } else if (!outgoing.writableFinished) {\n req[abortControllerKey].abort(\"Client connection prematurely closed.\");\n }\n }\n if (!incomingEnded) {\n setTimeout(() => {\n if (!incomingEnded) {\n setTimeout(() => {\n incoming.destroy();\n });\n }\n });\n }\n });\n res = fetchCallback(req, { incoming, outgoing });\n if (cacheKey in res) {\n return responseViaCache(res, outgoing);\n }\n } catch (e) {\n if (!res) {\n if (options.errorHandler) {\n res = await options.errorHandler(req ? e : toRequestError(e));\n if (!res) {\n return;\n }\n } else if (!req) {\n res = handleRequestError();\n } else {\n res = handleFetchError(e);\n }\n } else {\n return handleResponseError(e, outgoing);\n }\n }\n try {\n return await responseViaResponseObject(res, outgoing, options);\n } catch (e) {\n return handleResponseError(e, outgoing);\n }\n };\n};\n\n// src/server.ts\nvar createAdaptorServer = (options) => {\n const fetchCallback = options.fetch;\n const requestListener = getRequestListener(fetchCallback, {\n hostname: options.hostname,\n overrideGlobalObjects: options.overrideGlobalObjects,\n autoCleanupIncoming: options.autoCleanupIncoming\n });\n const createServer = options.createServer || createServerHTTP;\n const server = createServer(options.serverOptions || {}, requestListener);\n return server;\n};\nvar serve = (options, listeningListener) => {\n const server = createAdaptorServer(options);\n server.listen(options?.port ?? 3e3, options.hostname, () => {\n const serverInfo = server.address();\n listeningListener && listeningListener(serverInfo);\n });\n return server;\n};\nexport {\n RequestError,\n createAdaptorServer,\n getRequestListener,\n serve\n};\n","// src/serve-static.ts\nimport { getMimeType } from \"hono/utils/mime\";\nimport { createReadStream, lstatSync, existsSync } from \"fs\";\nimport { join } from \"path\";\nvar COMPRESSIBLE_CONTENT_TYPE_REGEX = /^\\s*(?:text\\/[^;\\s]+|application\\/(?:javascript|json|xml|xml-dtd|ecmascript|dart|postscript|rtf|tar|toml|vnd\\.dart|vnd\\.ms-fontobject|vnd\\.ms-opentype|wasm|x-httpd-php|x-javascript|x-ns-proxy-autoconfig|x-sh|x-tar|x-virtualbox-hdd|x-virtualbox-ova|x-virtualbox-ovf|x-virtualbox-vbox|x-virtualbox-vdi|x-virtualbox-vhd|x-virtualbox-vmdk|x-www-form-urlencoded)|font\\/(?:otf|ttf)|image\\/(?:bmp|vnd\\.adobe\\.photoshop|vnd\\.microsoft\\.icon|vnd\\.ms-dds|x-icon|x-ms-bmp)|message\\/rfc822|model\\/gltf-binary|x-shader\\/x-fragment|x-shader\\/x-vertex|[^;\\s]+?\\+(?:json|text|xml|yaml))(?:[;\\s]|$)/i;\nvar ENCODINGS = {\n br: \".br\",\n zstd: \".zst\",\n gzip: \".gz\"\n};\nvar ENCODINGS_ORDERED_KEYS = Object.keys(ENCODINGS);\nvar createStreamBody = (stream) => {\n const body = new ReadableStream({\n start(controller) {\n stream.on(\"data\", (chunk) => {\n controller.enqueue(chunk);\n });\n stream.on(\"error\", (err) => {\n controller.error(err);\n });\n stream.on(\"end\", () => {\n controller.close();\n });\n },\n cancel() {\n stream.destroy();\n }\n });\n return body;\n};\nvar getStats = (path) => {\n let stats;\n try {\n stats = lstatSync(path);\n } catch {\n }\n return stats;\n};\nvar serveStatic = (options = { root: \"\" }) => {\n const root = options.root || \"\";\n const optionPath = options.path;\n if (root !== \"\" && !existsSync(root)) {\n console.error(`serveStatic: root path '${root}' is not found, are you sure it's correct?`);\n }\n return async (c, next) => {\n if (c.finalized) {\n return next();\n }\n let filename;\n if (optionPath) {\n filename = optionPath;\n } else {\n try {\n filename = decodeURIComponent(c.req.path);\n if (/(?:^|[\\/\\\\])\\.\\.(?:$|[\\/\\\\])/.test(filename)) {\n throw new Error();\n }\n } catch {\n await options.onNotFound?.(c.req.path, c);\n return next();\n }\n }\n let path = join(\n root,\n !optionPath && options.rewriteRequestPath ? options.rewriteRequestPath(filename, c) : filename\n );\n let stats = getStats(path);\n if (stats && stats.isDirectory()) {\n const indexFile = options.index ?? \"index.html\";\n path = join(path, indexFile);\n stats = getStats(path);\n }\n if (!stats) {\n await options.onNotFound?.(path, c);\n return next();\n }\n const mimeType = getMimeType(path);\n c.header(\"Content-Type\", mimeType || \"application/octet-stream\");\n if (options.precompressed && (!mimeType || COMPRESSIBLE_CONTENT_TYPE_REGEX.test(mimeType))) {\n const acceptEncodingSet = new Set(\n c.req.header(\"Accept-Encoding\")?.split(\",\").map((encoding) => encoding.trim())\n );\n for (const encoding of ENCODINGS_ORDERED_KEYS) {\n if (!acceptEncodingSet.has(encoding)) {\n continue;\n }\n const precompressedStats = getStats(path + ENCODINGS[encoding]);\n if (precompressedStats) {\n c.header(\"Content-Encoding\", encoding);\n c.header(\"Vary\", \"Accept-Encoding\", { append: true });\n stats = precompressedStats;\n path = path + ENCODINGS[encoding];\n break;\n }\n }\n }\n let result;\n const size = stats.size;\n const range = c.req.header(\"range\") || \"\";\n if (c.req.method == \"HEAD\" || c.req.method == \"OPTIONS\") {\n c.header(\"Content-Length\", size.toString());\n c.status(200);\n result = c.body(null);\n } else if (!range) {\n c.header(\"Content-Length\", size.toString());\n result = c.body(createStreamBody(createReadStream(path)), 200);\n } else {\n c.header(\"Accept-Ranges\", \"bytes\");\n c.header(\"Date\", stats.birthtime.toUTCString());\n const parts = range.replace(/bytes=/, \"\").split(\"-\", 2);\n const start = parseInt(parts[0], 10) || 0;\n let end = parseInt(parts[1], 10) || size - 1;\n if (size < end - start + 1) {\n end = size - 1;\n }\n const chunksize = end - start + 1;\n const stream = createReadStream(path, { start, end });\n c.header(\"Content-Length\", chunksize.toString());\n c.header(\"Content-Range\", `bytes ${start}-${end}/${stats.size}`);\n result = c.body(createStreamBody(stream), 206);\n }\n await options.onFound?.(path, c);\n return result;\n };\n};\nexport {\n serveStatic\n};\n","// src/index.ts\nimport { html } from \"hono/html\";\n\n// src/swagger/renderer.ts\nvar RENDER_TYPE = {\n STRING_ARRAY: \"string_array\",\n STRING: \"string\",\n JSON_STRING: \"json_string\",\n RAW: \"raw\"\n};\nvar RENDER_TYPE_MAP = {\n configUrl: RENDER_TYPE.STRING,\n deepLinking: RENDER_TYPE.RAW,\n presets: RENDER_TYPE.STRING_ARRAY,\n plugins: RENDER_TYPE.STRING_ARRAY,\n spec: RENDER_TYPE.JSON_STRING,\n url: RENDER_TYPE.STRING,\n urls: RENDER_TYPE.JSON_STRING,\n layout: RENDER_TYPE.STRING,\n docExpansion: RENDER_TYPE.STRING,\n maxDisplayedTags: RENDER_TYPE.RAW,\n operationsSorter: RENDER_TYPE.RAW,\n requestInterceptor: RENDER_TYPE.RAW,\n responseInterceptor: RENDER_TYPE.RAW,\n persistAuthorization: RENDER_TYPE.RAW,\n defaultModelsExpandDepth: RENDER_TYPE.RAW,\n defaultModelExpandDepth: RENDER_TYPE.RAW,\n defaultModelRendering: RENDER_TYPE.STRING,\n displayRequestDuration: RENDER_TYPE.RAW,\n filter: RENDER_TYPE.RAW,\n showExtensions: RENDER_TYPE.RAW,\n showCommonExtensions: RENDER_TYPE.RAW,\n queryConfigEnabled: RENDER_TYPE.RAW,\n displayOperationId: RENDER_TYPE.RAW,\n tagsSorter: RENDER_TYPE.RAW,\n onComplete: RENDER_TYPE.RAW,\n syntaxHighlight: RENDER_TYPE.JSON_STRING,\n tryItOutEnabled: RENDER_TYPE.RAW,\n requestSnippetsEnabled: RENDER_TYPE.RAW,\n requestSnippets: RENDER_TYPE.JSON_STRING,\n oauth2RedirectUrl: RENDER_TYPE.STRING,\n showMutabledRequest: RENDER_TYPE.RAW,\n request: RENDER_TYPE.JSON_STRING,\n supportedSubmitMethods: RENDER_TYPE.JSON_STRING,\n validatorUrl: RENDER_TYPE.STRING,\n withCredentials: RENDER_TYPE.RAW,\n modelPropertyMacro: RENDER_TYPE.RAW,\n parameterMacro: RENDER_TYPE.RAW\n};\nvar renderSwaggerUIOptions = (options) => {\n const optionsStrings = Object.entries(options).map(([k, v]) => {\n const key = k;\n if (!RENDER_TYPE_MAP[key] || v === void 0) {\n return \"\";\n }\n switch (RENDER_TYPE_MAP[key]) {\n case RENDER_TYPE.STRING:\n return `${key}: '${v}'`;\n case RENDER_TYPE.STRING_ARRAY:\n if (!Array.isArray(v)) {\n return \"\";\n }\n return `${key}: [${v.map((ve) => `${ve}`).join(\",\")}]`;\n case RENDER_TYPE.JSON_STRING:\n return `${key}: ${JSON.stringify(v)}`;\n case RENDER_TYPE.RAW:\n return `${key}: ${v}`;\n default:\n return \"\";\n }\n }).filter((item) => item !== \"\").join(\",\");\n return optionsStrings;\n};\n\n// src/swagger/resource.ts\nvar remoteAssets = ({ version }) => {\n const url = `https://cdn.jsdelivr.net/npm/swagger-ui-dist${version !== void 0 ? `@${version}` : \"\"}`;\n return {\n css: [`${url}/swagger-ui.css`],\n js: [`${url}/swagger-ui-bundle.js`]\n };\n};\n\n// src/index.ts\nvar SwaggerUI = (options) => {\n const asset = remoteAssets({ version: options?.version });\n delete options.version;\n if (options.manuallySwaggerUIHtml) {\n return options.manuallySwaggerUIHtml(asset);\n }\n const optionsStrings = renderSwaggerUIOptions(options);\n return `\n <div>\n <div id=\"swagger-ui\"></div>\n ${asset.css.map((url) => html`<link rel=\"stylesheet\" href=\"${url}\" />`)}\n ${asset.js.map((url) => html`<script src=\"${url}\" crossorigin=\"anonymous\"></script>`)}\n <script>\n window.onload = () => {\n window.ui = SwaggerUIBundle({\n dom_id: '#swagger-ui',${optionsStrings},\n })\n }\n </script>\n </div>\n `;\n};\nvar middleware = (options) => async (c) => {\n const title = options?.title ?? \"SwaggerUI\";\n return c.html(\n /* html */\n `\n <html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <meta name=\"description\" content=\"SwaggerUI\" />\n <title>${title}</title>\n </head>\n <body>\n ${SwaggerUI(options)}\n </body>\n </html>\n `\n );\n};\nexport {\n SwaggerUI,\n middleware as swaggerUI\n};\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\nimport util from \"node:util\";\n/* These items copied from Node.js: node/lib/internal/errors.js */\nconst classRegExp = /^([A-Z][a-z0-9]*)+$/;\n// Sorted by a rough estimate on most frequently used entries.\nconst kTypes = [\n \"string\",\n \"function\",\n \"number\",\n \"object\",\n // Accept 'Function' and 'Object' as alternative to the lower cased version.\n \"Function\",\n \"Object\",\n \"boolean\",\n \"bigint\",\n \"symbol\",\n];\n/**\n * Determine the specific type of a value for type-mismatch errors.\n * @param {*} value\n * @returns {string}\n */\nfunction determineSpecificType(value) {\n if (value == null) {\n return \"\" + value;\n }\n if (typeof value === \"function\" && value.name) {\n return `function ${value.name}`;\n }\n if (typeof value === \"object\") {\n if (value.constructor?.name) {\n return `an instance of ${value.constructor.name}`;\n }\n return `${util.inspect(value, { depth: -1 })}`;\n }\n let inspected = util.inspect(value, { colors: false });\n if (inspected.length > 28) {\n inspected = `${inspected.slice(0, 25)}...`;\n }\n return `type ${typeof value} (${inspected})`;\n}\n// The following classes are adaptations of a subset of the ERR_* classes\n// declared in Node.js in the file - node/lib/internal/errors.js.\nexport class ERR_HTTP_BODY_NOT_ALLOWED extends Error {\n constructor() {\n super(\"Adding content for this request method or response status is not allowed.\");\n }\n}\nexport class ERR_HTTP_CONTENT_LENGTH_MISMATCH extends Error {\n constructor(actual, expected) {\n super(`Response body's content-length of ${actual} byte(s) does not match the content-length of ${expected} byte(s) set in header`);\n }\n}\nexport class ERR_HTTP_HEADERS_SENT extends Error {\n constructor(arg) {\n super(`Cannot ${arg} headers after they are sent to the client`);\n }\n}\nexport class ERR_INVALID_ARG_VALUE extends TypeError /*, RangeError */ {\n constructor(name, value, reason = \"is invalid\") {\n let inspected = util.inspect(value);\n if (inspected.length > 128) {\n inspected = `${inspected.slice(0, 128)}...`;\n }\n const type = name.includes(\".\") ? \"property\" : \"argument\";\n super(`The ${type} '${name}' ${reason}. Received ${inspected}`);\n }\n}\nexport class ERR_INVALID_CHAR extends TypeError {\n constructor(name, field) {\n let msg = `Invalid character in ${name}`;\n if (field !== undefined) {\n msg += ` [\"${field}\"]`;\n }\n super(msg);\n }\n}\nexport class ERR_HTTP_INVALID_HEADER_VALUE extends TypeError {\n constructor(value, name) {\n super(`Invalid value \"${value}\" for header \"${name}\"`);\n }\n}\nexport class ERR_HTTP_INVALID_STATUS_CODE extends RangeError {\n originalStatusCode;\n constructor(originalStatusCode) {\n super(`Invalid status code: ${originalStatusCode}`);\n this.originalStatusCode = originalStatusCode;\n }\n}\nexport class ERR_HTTP_TRAILER_INVALID extends Error {\n constructor() {\n super(`Trailers are invalid with this transfer encoding`);\n }\n}\nexport class ERR_INVALID_ARG_TYPE extends TypeError {\n constructor(name, expected, actual) {\n // assert(typeof name === 'string', \"'name' must be a string\");\n if (!Array.isArray(expected)) {\n expected = [expected];\n }\n let msg = \"The \";\n if (name.endsWith(\" argument\")) {\n // For cases like 'first argument'\n msg += `${name} `;\n }\n else {\n const type = name.includes(\".\") ? \"property\" : \"argument\";\n msg += `\"${name}\" ${type} `;\n }\n msg += \"must be \";\n const types = [];\n const instances = [];\n const other = [];\n for (const value of expected) {\n // assert(typeof value === 'string',\n // 'All expected entries have to be of type string');\n if (kTypes.includes(value)) {\n types.push(value.toLowerCase());\n }\n else if (classRegExp.exec(value) !== null) {\n instances.push(value);\n }\n else {\n // assert(value !== 'object',\n // 'The value \"object\" should be written as \"Object\"');\n other.push(value);\n }\n }\n // Special handle `object` in case other instances are allowed to outline\n // the differences between each other.\n if (instances.length > 0) {\n const pos = types.indexOf(\"object\");\n if (pos !== -1) {\n types.splice(pos, 1);\n instances.push(\"Object\");\n }\n }\n if (types.length > 0) {\n if (types.length > 2) {\n const last = types.pop();\n msg += `one of type ${types.join(\", \")}, or ${last}`;\n }\n else if (types.length === 2) {\n msg += `one of type ${types[0]} or ${types[1]}`;\n }\n else {\n msg += `of type ${types[0]}`;\n }\n if (instances.length > 0 || other.length > 0)\n msg += \" or \";\n }\n if (instances.length > 0) {\n if (instances.length > 2) {\n const last = instances.pop();\n msg += `an instance of ${instances.join(\", \")}, or ${last}`;\n }\n else {\n msg += `an instance of ${instances[0]}`;\n if (instances.length === 2) {\n msg += ` or ${instances[1]}`;\n }\n }\n if (other.length > 0)\n msg += \" or \";\n }\n if (other.length > 0) {\n if (other.length > 2) {\n const last = other.pop();\n msg += `one of ${other.join(\", \")}, or ${last}`;\n }\n else if (other.length === 2) {\n msg += `one of ${other[0]} or ${other[1]}`;\n }\n else {\n if (other[0].toLowerCase() !== other[0])\n msg += \"an \";\n msg += `${other[0]}`;\n }\n }\n msg += `. Received ${determineSpecificType(actual)}`;\n super(msg);\n }\n}\nexport class ERR_INVALID_HTTP_TOKEN extends TypeError {\n constructor(name, field) {\n super(`${name} must be a valid HTTP token [\"${field}\"]`);\n }\n}\nexport class ERR_METHOD_NOT_IMPLEMENTED extends Error {\n constructor(methodName) {\n super(`The ${methodName} method is not implemented`);\n }\n}\nexport class ERR_STREAM_ALREADY_FINISHED extends Error {\n constructor(methodName) {\n super(`Cannot call ${methodName} after a stream was finished`);\n }\n}\nexport class ERR_STREAM_CANNOT_PIPE extends Error {\n constructor() {\n super(`Cannot pipe, not readable`);\n }\n}\nexport class ERR_STREAM_DESTROYED extends Error {\n constructor(methodName) {\n super(`Cannot call ${methodName} after a stream was destroyed`);\n }\n}\nexport class ERR_STREAM_NULL_VALUES extends TypeError {\n constructor() {\n super(`May not write null values to stream`);\n }\n}\nexport class ERR_STREAM_WRITE_AFTER_END extends Error {\n constructor() {\n super(`write after end`);\n }\n}\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\n// This file modeled after Node.js - node/lib/_http_incoming.js\nimport { Readable } from \"node:stream\";\nimport { ERR_METHOD_NOT_IMPLEMENTED } from \"../utils/errors.js\";\nconst kHeaders = Symbol(\"kHeaders\");\nconst kHeadersDistinct = Symbol(\"kHeadersDistinct\");\nconst kHeadersCount = Symbol(\"kHeadersCount\");\nconst kTrailers = Symbol(\"kTrailers\");\nconst kTrailersDistinct = Symbol(\"kTrailersDistinct\");\nconst kTrailersCount = Symbol(\"kTrailersCount\");\n/**\n * This is an implementation of IncomingMessage from Node.js intended to run in\n * a WinterTC runtime. The 'Readable' interface of this class is wired to a 'Request'\n * object's 'body'.\n *\n * This instance can be used in normal ways, but it does not give access to the\n * underlying socket (because there isn't one. req.socket will always return null).\n *\n * Some code in this class is transplanted/adapted from node/lib/_http_incoming.js\n */\nexport class FetchIncomingMessage extends Readable {\n get socket() {\n // Difference from Node.js -\n // We don't really have a way to support direct access to the socket\n return null;\n }\n set socket(_val) {\n // Difference from Node.js -\n // We don't really have a way to support direct access to the socket\n throw new ERR_METHOD_NOT_IMPLEMENTED(\"socket\");\n }\n httpVersionMajor;\n httpVersionMinor;\n httpVersion;\n complete = false;\n [kHeaders] = null;\n [kHeadersDistinct] = null;\n [kHeadersCount] = 0;\n rawHeaders = [];\n [kTrailers] = null;\n [kTrailersDistinct] = null;\n [kTrailersCount] = 0;\n rawTrailers = [];\n joinDuplicateHeaders = false;\n aborted = false;\n upgrade = false;\n // request (server) only\n url = \"\";\n method;\n // TODO: Support ClientRequest\n // statusCode = null;\n // statusMessage = null;\n // client = socket;\n _consuming;\n _dumped;\n // The underlying ReadableStream\n _stream = null;\n constructor() {\n const streamOptions = {};\n // Difference from Node.js -\n // In Node.js, if the IncomingMessages is associated with a socket then\n // that socket's 'readableHighWaterMark' would be used to set\n // streamOptions.highWaterMark before calling parent constructor.\n super(streamOptions);\n this._readableState.readingMore = true;\n this._consuming = false;\n // Flag for when we decide that this message cannot possibly be\n // read by the user, so there's no point continuing to handle it.\n this._dumped = false;\n }\n get connection() {\n // Difference from Node.js -\n // We don't really have a way to support direct access to the socket\n return null;\n }\n set connection(_socket) {\n // Difference from Node.js -\n // We don't really have a way to support direct access to the socket\n console.error(\"No support for IncomingMessage.connection\");\n }\n get headers() {\n if (!this[kHeaders]) {\n this[kHeaders] = {};\n const src = this.rawHeaders;\n const dst = this[kHeaders];\n for (let n = 0; n < this[kHeadersCount]; n += 2) {\n this._addHeaderLine(src[n], src[n + 1], dst);\n }\n }\n return this[kHeaders];\n }\n set headers(val) {\n this[kHeaders] = val;\n }\n get headersDistinct() {\n if (!this[kHeadersDistinct]) {\n this[kHeadersDistinct] = {};\n const src = this.rawHeaders;\n const dst = this[kHeadersDistinct];\n for (let n = 0; n < this[kHeadersCount]; n += 2) {\n this._addHeaderLineDistinct(src[n], src[n + 1], dst);\n }\n }\n return this[kHeadersDistinct];\n }\n set headersDistinct(val) {\n this[kHeadersDistinct] = val;\n }\n get trailers() {\n if (!this[kTrailers]) {\n this[kTrailers] = {};\n const src = this.rawTrailers;\n const dst = this[kTrailers];\n for (let n = 0; n < this[kTrailersCount]; n += 2) {\n this._addHeaderLine(src[n], src[n + 1], dst);\n }\n }\n return this[kTrailers];\n }\n set trailers(val) {\n this[kTrailers] = val;\n }\n get trailersDistinct() {\n if (!this[kTrailersDistinct]) {\n this[kTrailersDistinct] = {};\n const src = this.rawTrailers;\n const dst = this[kTrailersDistinct];\n for (let n = 0; n < this[kTrailersCount]; n += 2) {\n this._addHeaderLineDistinct(src[n], src[n + 1], dst);\n }\n }\n return this[kTrailersDistinct];\n }\n set trailersDistinct(val) {\n this[kTrailersDistinct] = val;\n }\n setTimeout(msecs, callback) {\n // Difference from Node.js -\n // In Node.js, this is supposed to set the underlying socket to time out\n // after some time and then run a callback.\n // We do nothing here since we don't really have a way to support direct\n // access to the socket.\n return this;\n }\n async _read(n) {\n // As this is an implementation of stream.Readable, we provide a _read()\n // function that pumps the next chunk out of the underlying ReadableStream.\n if (!this._consuming) {\n this._readableState.readingMore = false;\n this._consuming = true;\n }\n // Difference from Node.js -\n // The Node.js implementation will already have its internal buffer\n // filled by the parserOnBody function.\n // For our implementation, we use the ReadableStream instance.\n if (this._stream == null) {\n // For GET and HEAD requests, the stream would be empty.\n // Simply signal that we're done.\n this.complete = true;\n this.push(null);\n return;\n }\n const reader = this._stream.getReader();\n try {\n const data = await reader.read();\n if (data.done) {\n // Done with stream, tell Readable we have no more data;\n this.complete = true;\n this.push(null);\n }\n else {\n this.push(data.value);\n }\n }\n catch (e) {\n this.destroy(e);\n }\n finally {\n reader.releaseLock();\n }\n }\n _destroy(err, cb) {\n if (!this.readableEnded || !this.complete) {\n this.aborted = true;\n this.emit(\"aborted\");\n }\n // Difference from Node.js -\n // Node.js would check for the existence of the socket and do some additional\n // cleanup.\n // By the way, I believe this name 'onError' is misleading, it is called\n // regardless of whether there was an error. The callback is expected to\n // check for the existence of the error to decide whether the result was\n // actually an error.\n setTimeout(onError, 0, this, err, cb);\n }\n _addHeaderLines(headers, n) {\n if (headers?.length) {\n let dest;\n if (this.complete) {\n this.rawTrailers = headers;\n this[kTrailersCount] = n;\n dest = this[kTrailers];\n }\n else {\n this.rawHeaders = headers;\n this[kHeadersCount] = n;\n dest = this[kHeaders];\n }\n if (dest) {\n for (let i = 0; i < n; i += 2) {\n this._addHeaderLine(headers[i], headers[i + 1], dest);\n }\n }\n }\n }\n // Add the given (field, value) pair to the message\n //\n // Per RFC2616, section 4.2 it is acceptable to join multiple instances of the\n // same header with a ', ' if the header in question supports specification of\n // multiple values this way. The one exception to this is the Cookie header,\n // which has multiple values joined with a '; ' instead. If a header's values\n // cannot be joined in either of these ways, we declare the first instance the\n // winner and drop the second. Extended header fields (those beginning with\n // 'x-') are always joined.\n _addHeaderLine(field, value, dest) {\n field = matchKnownFields(field);\n const flag = field.charCodeAt(0);\n if (flag === 0 || flag === 2) {\n field = field.slice(1);\n // Make a delimited list\n if (typeof dest[field] === \"string\") {\n dest[field] += (flag === 0 ? \", \" : \"; \") + value;\n }\n else {\n dest[field] = value;\n }\n }\n else if (flag === 1) {\n // Array header -- only Set-Cookie at the moment\n if (dest[\"set-cookie\"] !== undefined) {\n dest[\"set-cookie\"].push(value);\n }\n else {\n dest[\"set-cookie\"] = [value];\n }\n }\n else if (this.joinDuplicateHeaders) {\n // RFC 9110 https://www.rfc-editor.org/rfc/rfc9110#section-5.2\n // https://github.com/nodejs/node/issues/45699\n // allow authorization multiple fields\n // Make a delimited list\n if (dest[field] === undefined) {\n dest[field] = value;\n }\n else {\n dest[field] += \", \" + value;\n }\n }\n else if (dest[field] === undefined) {\n // Drop duplicates\n dest[field] = value;\n }\n }\n _addHeaderLineDistinct(field, value, dest) {\n field = field.toLowerCase();\n if (!dest[field]) {\n dest[field] = [value];\n }\n else {\n dest[field].push(value);\n }\n }\n // Call this instead of resume() if we want to just\n // dump all the data to /dev/null\n _dump() {\n if (!this._dumped) {\n this._dumped = true;\n // If there is buffered data, it may trigger 'data' events.\n // Remove 'data' event listeners explicitly.\n this.removeAllListeners(\"data\");\n this.resume();\n }\n }\n}\n/* These items copied from Node.js: node/lib/_http_incoming.js, because they are not exported from that file. */\n// This function is used to help avoid the lowercasing of a field name if it\n// matches a 'traditional cased' version of a field name. It then returns the\n// lowercased name to both avoid calling toLowerCase() a second time and to\n// indicate whether the field was a 'no duplicates' field. If a field is not a\n// 'no duplicates' field, a `0` byte is prepended as a flag. The one exception\n// to this is the Set-Cookie header which is indicated by a `1` byte flag, since\n// it is an 'array' field and thus is treated differently in _addHeaderLines().\n// TODO: perhaps http_parser could be returning both raw and lowercased versions\n// of known header names to avoid us having to call toLowerCase() for those\n// headers.\nfunction matchKnownFields(field, lowercased = false) {\n switch (field.length) {\n case 3:\n if (field === \"Age\" || field === \"age\")\n return \"age\";\n break;\n case 4:\n if (field === \"Host\" || field === \"host\")\n return \"host\";\n if (field === \"From\" || field === \"from\")\n return \"from\";\n if (field === \"ETag\" || field === \"etag\")\n return \"etag\";\n if (field === \"Date\" || field === \"date\")\n return \"\\u0000date\";\n if (field === \"Vary\" || field === \"vary\")\n return \"\\u0000vary\";\n break;\n case 6:\n if (field === \"Server\" || field === \"server\")\n return \"server\";\n if (field === \"Cookie\" || field === \"cookie\")\n return \"\\u0002cookie\";\n if (field === \"Origin\" || field === \"origin\")\n return \"\\u0000origin\";\n if (field === \"Expect\" || field === \"expect\")\n return \"\\u0000expect\";\n if (field === \"Accept\" || field === \"accept\")\n return \"\\u0000accept\";\n break;\n case 7:\n if (field === \"Referer\" || field === \"referer\")\n return \"referer\";\n if (field === \"Expires\" || field === \"expires\")\n return \"expires\";\n if (field === \"Upgrade\" || field === \"upgrade\")\n return \"\\u0000upgrade\";\n break;\n case 8:\n if (field === \"Location\" || field === \"location\")\n return \"location\";\n if (field === \"If-Match\" || field === \"if-match\")\n return \"\\u0000if-match\";\n break;\n case 10:\n if (field === \"User-Agent\" || field === \"user-agent\")\n return \"user-agent\";\n if (field === \"Set-Cookie\" || field === \"set-cookie\")\n return \"\\u0001\";\n if (field === \"Connection\" || field === \"connection\")\n return \"\\u0000connection\";\n break;\n case 11:\n if (field === \"Retry-After\" || field === \"retry-after\")\n return \"retry-after\";\n break;\n case 12:\n if (field === \"Content-Type\" || field === \"content-type\")\n return \"content-type\";\n if (field === \"Max-Forwards\" || field === \"max-forwards\")\n return \"max-forwards\";\n break;\n case 13:\n if (field === \"Authorization\" || field === \"authorization\")\n return \"authorization\";\n if (field === \"Last-Modified\" || field === \"last-modified\")\n return \"last-modified\";\n if (field === \"Cache-Control\" || field === \"cache-control\")\n return \"\\u0000cache-control\";\n if (field === \"If-None-Match\" || field === \"if-none-match\")\n return \"\\u0000if-none-match\";\n break;\n case 14:\n if (field === \"Content-Length\" || field === \"content-length\")\n return \"content-length\";\n break;\n case 15:\n if (field === \"Accept-Encoding\" || field === \"accept-encoding\")\n return \"\\u0000accept-encoding\";\n if (field === \"Accept-Language\" || field === \"accept-language\")\n return \"\\u0000accept-language\";\n if (field === \"X-Forwarded-For\" || field === \"x-forwarded-for\")\n return \"\\u0000x-forwarded-for\";\n break;\n case 16:\n if (field === \"Content-Encoding\" || field === \"content-encoding\")\n return \"\\u0000content-encoding\";\n if (field === \"X-Forwarded-Host\" || field === \"x-forwarded-host\")\n return \"\\u0000x-forwarded-host\";\n break;\n case 17:\n if (field === \"If-Modified-Since\" || field === \"if-modified-since\")\n return \"if-modified-since\";\n if (field === \"Transfer-Encoding\" || field === \"transfer-encoding\")\n return \"\\u0000transfer-encoding\";\n if (field === \"X-Forwarded-Proto\" || field === \"x-forwarded-proto\")\n return \"\\u0000x-forwarded-proto\";\n break;\n case 19:\n if (field === \"Proxy-Authorization\" || field === \"proxy-authorization\")\n return \"proxy-authorization\";\n if (field === \"If-Unmodified-Since\" || field === \"if-unmodified-since\")\n return \"if-unmodified-since\";\n break;\n }\n if (lowercased) {\n return \"\\u0000\" + field;\n }\n return matchKnownFields(field.toLowerCase(), true);\n}\nfunction onError(self, error, cb) {\n // This is to keep backward compatible behavior.\n // An error is emitted only if there are listeners attached to the event.\n if (self.listenerCount(\"error\") === 0) {\n cb();\n }\n else {\n cb(error);\n }\n}\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\nimport { ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE } from \"./errors.js\";\n/* These items copied from Node.js: node/lib/internal/validators.js */\nexport function validateString(value, name) {\n if (typeof value !== \"string\")\n throw new ERR_INVALID_ARG_TYPE(name, \"string\", value);\n}\nconst linkValueRegExp = /^(?:<[^>]*>)(?:\\s*;\\s*[^;\"\\s]+(?:=(\")?[^;\"\\s]*\\1)?)*$/;\nexport function validateLinkHeaderFormat(value, name) {\n if (typeof value === \"undefined\" || !linkValueRegExp.exec(value)) {\n throw new ERR_INVALID_ARG_VALUE(name, value, 'must be an array or string of format \"</styles.css>; rel=preload; as=style\"');\n }\n}\nexport function validateLinkHeaderValue(hints) {\n if (typeof hints === \"string\") {\n validateLinkHeaderFormat(hints, \"hints\");\n return hints;\n }\n else if (Array.isArray(hints)) {\n const hintsLength = hints.length;\n let result = \"\";\n if (hintsLength === 0) {\n return result;\n }\n for (let i = 0; i < hintsLength; i++) {\n const link = hints[i];\n validateLinkHeaderFormat(link, \"hints\");\n result += link;\n if (i !== hintsLength - 1) {\n result += \", \";\n }\n }\n return result;\n }\n throw new ERR_INVALID_ARG_VALUE(\"hints\", hints, 'must be an array or string of format \"</styles.css>; rel=preload; as=style\"');\n}\n/* These items copied from Node.js: node/lib/internal/util/types.js */\nexport function isUint8Array(value) {\n return value != null && value[Symbol.toStringTag] === \"Uint8Array\";\n}\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\n/* These items copied from Node.js: node/lib/internal/http.js. */\nexport const kNeedDrain = Symbol(\"kNeedDrain\");\nexport const kOutHeaders = Symbol(\"kOutHeaders\");\n// In Node.js this utcDate is cached for 1 second, for use across\n// all http connections. However, in C@E we just create a new one\n// since we're not able to share this data across separate invocations.\nexport function utcDate() {\n return new Date().toUTCString();\n}\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\n/* These items copied from Node.js: node/lib/internal/streams/state.js. */\nexport function getDefaultHighWaterMark(objectMode) {\n return objectMode ? 16 : 64 * 1024;\n}\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\n/* These items copied from Node.js: node/lib/_http_common.js. */\nconst tokenRegExp = /^[\\^_`a-zA-Z\\-0-9!#$%&'*+.|~]+$/;\n/**\n * Verifies that the given val is a valid HTTP token\n * per the rules defined in RFC 7230\n * See https://tools.ietf.org/html/rfc7230#section-3.2.6\n */\nexport function checkIsHttpToken(val) {\n return tokenRegExp.test(val);\n}\nconst headerCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/;\n/**\n * True if val contains an invalid field-vchar\n * field-value = *( field-content / obs-fold )\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n */\nexport function checkInvalidHeaderChar(val) {\n return headerCharRegex.test(val);\n}\nexport const chunkExpression = /(?:^|\\W)chunked(?:$|\\W)/i;\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\n// This file modeled after Node.js - node/lib/_http_outgoing.js\nimport { Buffer } from \"node:buffer\";\nimport { Writable } from \"node:stream\";\nimport { ERR_HTTP_BODY_NOT_ALLOWED, ERR_HTTP_CONTENT_LENGTH_MISMATCH, ERR_HTTP_HEADERS_SENT, ERR_HTTP_INVALID_HEADER_VALUE, ERR_HTTP_TRAILER_INVALID, ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, ERR_INVALID_CHAR, ERR_INVALID_HTTP_TOKEN, ERR_METHOD_NOT_IMPLEMENTED, ERR_STREAM_ALREADY_FINISHED, ERR_STREAM_CANNOT_PIPE, ERR_STREAM_DESTROYED, ERR_STREAM_NULL_VALUES, ERR_STREAM_WRITE_AFTER_END, } from \"../utils/errors.js\";\nimport { isUint8Array, validateString } from \"../utils/types.js\";\nimport { kNeedDrain, kOutHeaders, utcDate } from \"./internal-http.js\";\nimport { getDefaultHighWaterMark } from \"./internal-streams-state.js\";\nimport { checkInvalidHeaderChar, checkIsHttpToken, chunkExpression as RE_TE_CHUNKED, } from \"./http-common.js\";\n/* These items copied from Node.js: node/lib/_http_outgoing.js. */\nfunction debug(format) {\n // console.log(\"http \" + format);\n}\nconst kCorked = Symbol(\"corked\");\nconst kChunkedBuffer = Symbol(\"kChunkedBuffer\");\nconst kChunkedLength = Symbol(\"kChunkedLength\");\nconst kUniqueHeaders = Symbol(\"kUniqueHeaders\");\nconst kBytesWritten = Symbol(\"kBytesWritten\");\nconst kErrored = Symbol(\"errored\");\nconst kHighWaterMark = Symbol(\"kHighWaterMark\");\nconst kRejectNonStandardBodyWrites = Symbol(\"kRejectNonStandardBodyWrites\");\nconst nop = () => { };\nconst RE_CONN_CLOSE = /(?:^|\\W)close(?:$|\\W)/i;\n// isCookieField performs a case-insensitive comparison of a provided string\n// against the word \"cookie.\" As of V8 6.6 this is faster than handrolling or\n// using a case-insensitive RegExp.\nfunction isCookieField(s) {\n return s.length === 6 && s.toLowerCase() === \"cookie\";\n}\nfunction isContentDispositionField(s) {\n return s.length === 19 && s.toLowerCase() === \"content-disposition\";\n}\n/**\n * An in-memory buffer that stores the chunks that have been streamed to an\n * OutgoingMessage instance.\n */\nexport class WrittenDataBuffer {\n [kCorked] = 0;\n [kHighWaterMark] = getDefaultHighWaterMark();\n entries = [];\n onWrite;\n constructor(params = {}) {\n this.onWrite = params.onWrite;\n }\n write(data, encoding, callback) {\n this.entries.push({\n data,\n length: data.length,\n encoding,\n callback,\n written: false,\n });\n this._flush();\n return true;\n }\n cork() {\n this[kCorked]++;\n }\n uncork() {\n this[kCorked]--;\n this._flush();\n }\n _flush() {\n if (this[kCorked] <= 0) {\n for (const [index, entry] of this.entries.entries()) {\n if (!entry.written) {\n entry.written = true;\n if (this.onWrite != null) {\n this.onWrite(index, entry);\n }\n if (entry.callback != null) {\n entry.callback.call(undefined);\n }\n }\n }\n }\n }\n get writableLength() {\n return this.entries.reduce((acc, entry) => {\n return acc + (entry.written && entry.length ? entry.length : 0);\n }, 0);\n }\n get writableHighWaterMark() {\n return this[kHighWaterMark];\n }\n get writableCorked() {\n return this[kCorked];\n }\n}\n/**\n * This is an implementation of OutgoingMessage from Node.js intended to run in\n * a WinterTC runtime. The 'Writable' interface of this class is wired to an in-memory\n * buffer.\n *\n * This instance can be used in normal ways, but it does not give access to the\n * underlying socket (because there isn't one. req.socket will always return null).\n *\n * Some code in this class is transplanted/adapted from node/lib/_http_outgoing.js\n */\nexport class FetchOutgoingMessage extends Writable {\n req;\n outputData;\n outputSize;\n // Difference from Node.js -\n // `writtenHeaderBytes` is the number of bytes the header has taken.\n // Since Node.js writes both the headers and body into the same outgoing\n // stream, it helps to keep track of this so that we can skip that many bytes\n // from the beginning of the stream when providing the outgoing stream.\n writtenHeaderBytes = 0;\n _last;\n chunkedEncoding;\n shouldKeepAlive;\n maxRequestsOnConnectionReached;\n _defaultKeepAlive;\n useChunkedEncodingByDefault;\n sendDate;\n _removedConnection;\n _removedContLen;\n _removedTE;\n strictContentLength;\n [kBytesWritten];\n _contentLength;\n _hasBody;\n _trailer;\n [kNeedDrain];\n finished;\n _headerSent;\n [kCorked];\n [kChunkedBuffer];\n [kChunkedLength];\n _closed;\n // Difference from Node.js -\n // In Node.js, this is a socket object.\n // [kSocket]: null;\n _header;\n [kOutHeaders];\n _keepAliveTimeout;\n _maxRequestsPerSocket;\n _onPendingData;\n [kUniqueHeaders];\n [kErrored];\n [kHighWaterMark];\n [kRejectNonStandardBodyWrites];\n _writtenDataBuffer = new WrittenDataBuffer({\n onWrite: this._onDataWritten.bind(this),\n });\n constructor(req, options) {\n super();\n this.req = req;\n // Queue that holds all currently pending data, until the response will be\n // assigned to the socket (until it will its turn in the HTTP pipeline).\n this.outputData = [];\n // `outputSize` is an approximate measure of how much data is queued on this\n // response. `_onPendingData` will be invoked to update similar global\n // per-connection counter. That counter will be used to pause/unpause the\n // TCP socket and HTTP Parser and thus handle the backpressure.\n this.outputSize = 0;\n // Cannot assign to this.writable because it is a readonly property\n // this.writable = true;\n this.destroyed = false;\n this._last = false;\n this.chunkedEncoding = false;\n this.shouldKeepAlive = true;\n this.maxRequestsOnConnectionReached = false;\n this._defaultKeepAlive = true;\n this.useChunkedEncodingByDefault = true;\n this.sendDate = false;\n this._removedConnection = false;\n this._removedContLen = false;\n this._removedTE = false;\n this.strictContentLength = false;\n this[kBytesWritten] = 0;\n this._contentLength = null;\n this._hasBody = true;\n this._trailer = \"\";\n this[kNeedDrain] = false;\n this.finished = false;\n this._headerSent = false;\n this[kCorked] = 0;\n this[kChunkedBuffer] = [];\n this[kChunkedLength] = 0;\n this._closed = false;\n this._header = null;\n this[kOutHeaders] = null;\n this._keepAliveTimeout = 0;\n this._onPendingData = nop;\n this[kErrored] = null;\n this[kHighWaterMark] = options?.highWaterMark ?? getDefaultHighWaterMark();\n this[kRejectNonStandardBodyWrites] =\n options?.rejectNonStandardBodyWrites ?? false;\n this[kUniqueHeaders] = null;\n }\n _renderHeaders() {\n if (this._header) {\n throw new ERR_HTTP_HEADERS_SENT(\"render\");\n }\n const headersMap = this[kOutHeaders];\n const headers = {};\n if (headersMap !== null) {\n const keys = Object.keys(headersMap);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n headers[headersMap[key][0]] = headersMap[key][1];\n }\n }\n return headers;\n }\n cork() {\n // Difference from Node.js -\n // In Node.js, if a socket exists, we would call cork() on the socket instead\n // In our implementation, we do the same to the \"written data buffer\" instead.\n this[kCorked]++;\n if (this._writtenDataBuffer != null) {\n this._writtenDataBuffer.cork();\n }\n }\n uncork() {\n // Difference from Node.js -\n // In Node.js, if a socket exists, we would call uncork() on the socket instead\n // In our implementation, we do the same to the \"written data buffer\" instead.\n this[kCorked]--;\n if (this._writtenDataBuffer != null) {\n this._writtenDataBuffer.uncork();\n }\n if (this[kCorked] || this[kChunkedBuffer].length === 0) {\n return;\n }\n // Difference from Node.js -\n // Chunked transfer encoding doesn't need to use the low-level protocol\n // (with each chunk preceded by its length)\n // All commented out code below is from Node.js used for this purpose.\n // const len = this[kChunkedLength];\n const buf = this[kChunkedBuffer];\n // assert(this.chunkedEncoding);\n // let callbacks: (WriteCallback | undefined)[] | undefined;\n // this._send(len.toString(16), \"latin1\", null);\n // this._send(crlf_buf, null, null);\n for (const { data, encoding, callback } of buf) {\n // this._send(data ?? \"\", encoding, null);\n // if (callback) {\n // callbacks ??= [];\n // callbacks.push(callback);\n // }\n this._send(data ?? \"\", encoding, callback);\n }\n // this._send(\n // crlf_buf,\n // null,\n // callbacks?.length\n // ? (err) => {\n // for (const callback of callbacks) {\n // callback?.(err);\n // }\n // }\n // : null\n // );\n this[kChunkedBuffer].length = 0;\n this[kChunkedLength] = 0;\n }\n setTimeout(msecs, callback) {\n // Difference from Node.js -\n // In Node.js, this is supposed to set the underlying socket to time out\n // after some time and then run a callback.\n // We do nothing here since we don't really have a way to support direct\n // access to the socket.\n return this;\n }\n destroy(error) {\n if (this.destroyed) {\n return this;\n }\n this.destroyed = true;\n this[kErrored] = error;\n // Difference from Node.js -\n // In Node.js, we would also attempt to destroy the underlying socket.\n return this;\n }\n _send(data, encoding, callback, byteLength) {\n // This is a shameful hack to get the headers and first body chunk onto\n // the same packet. Future versions of Node are going to take care of\n // this at a lower level and in a more general way.\n if (!this._headerSent) {\n const header = this._header;\n if (typeof data === \"string\" &&\n (encoding === \"utf8\" || encoding === \"latin1\" || !encoding)) {\n data = header + data;\n }\n else {\n this.outputData.unshift({\n data: header,\n encoding: \"latin1\",\n callback: undefined,\n });\n this.outputSize += header.length;\n this._onPendingData(header.length);\n }\n this._headerSent = true;\n // Difference from Node.js -\n // Parse headers here and trigger _headersSent\n this.writtenHeaderBytes = header.length;\n // Save written headers as object\n const [statusLine, ...headerLines] = this._header.split(\"\\r\\n\");\n const STATUS_LINE_REGEXP = /^HTTP\\/1\\.1 (?<statusCode>\\d+) (?<statusMessage>.*)$/;\n const statusLineResult = STATUS_LINE_REGEXP.exec(statusLine);\n if (statusLineResult == null) {\n throw new Error(\"Unexpected! Status line was \" + statusLine);\n }\n const { statusCode: statusCodeText, statusMessage } = statusLineResult.groups ?? {};\n const statusCode = parseInt(statusCodeText, 10);\n const headers = [];\n for (const headerLine of headerLines) {\n if (headerLine !== \"\") {\n const pos = headerLine.indexOf(\": \");\n const k = headerLine.slice(0, pos);\n const v = headerLine.slice(pos + 2); // Skip the colon and the space\n headers.push([k, v]);\n }\n }\n const event = {\n statusCode,\n statusMessage,\n headers,\n };\n this.emit(\"_headersSent\", event);\n }\n return this._writeRaw(data, encoding, callback, byteLength);\n }\n _writeRaw(data, encoding, callback, size) {\n // Difference from Node.js -\n // In Node.js, we would check for an underlying socket, and if that socket\n // exists and is already destroyed, simply return false.\n if (typeof encoding === \"function\") {\n callback = encoding;\n encoding = null;\n }\n // Difference from Node.js -\n // In Node.js, we would check for an underlying socket, and if that socket\n // exists and is currently writable, it would flush any pending data to the socket and then\n // write the current chunk's data directly into the socket. Afterwards, it would return with the\n // value returned from socket.write().\n // In our implementation, instead we do the same for the \"written data buffer\".\n if (this._writtenDataBuffer != null) {\n // There might be pending data in the this.output buffer.\n if (this.outputData.length) {\n this._flushOutput(this._writtenDataBuffer);\n }\n // Directly write to the buffer.\n return this._writtenDataBuffer.write(data, encoding, callback);\n }\n // Buffer, as long as we're not destroyed.\n this.outputData.push({ data, encoding, callback });\n this.outputSize += data.length;\n this._onPendingData(data.length);\n return this.outputSize < this[kHighWaterMark];\n }\n _onDataWritten(index, entry) {\n const event = { index, entry };\n this.emit(\"_dataWritten\", event);\n }\n _storeHeader(firstLine, headers) {\n // firstLine in the case of request is: 'GET /index.html HTTP/1.1\\r\\n'\n // in the case of response it is: 'HTTP/1.1 200 OK\\r\\n'\n const state = {\n connection: false,\n contLen: false,\n te: false,\n date: false,\n expect: false,\n trailer: false,\n header: firstLine,\n };\n if (headers) {\n if (headers === this[kOutHeaders]) {\n for (const key in headers) {\n const entry = headers[key];\n processHeader(this, state, entry[0], entry[1], false);\n }\n }\n else if (Array.isArray(headers)) {\n if (headers.length && Array.isArray(headers[0])) {\n for (let i = 0; i < headers.length; i++) {\n const entry = headers[i];\n processHeader(this, state, entry[0], entry[1], true);\n }\n }\n else {\n if (headers.length % 2 !== 0) {\n throw new ERR_INVALID_ARG_VALUE(\"headers\", headers);\n }\n for (let n = 0; n < headers.length; n += 2) {\n processHeader(this, state, headers[n], headers[n + 1], true);\n }\n }\n }\n else {\n for (const key in headers) {\n if (headers.hasOwnProperty(key)) {\n const _headers = headers;\n processHeader(this, state, key, _headers[key], true);\n }\n }\n }\n }\n let { header } = state;\n // Date header\n if (this.sendDate && !state.date) {\n header += \"Date: \" + utcDate() + \"\\r\\n\";\n }\n // Force the connection to close when the response is a 204 No Content or\n // a 304 Not Modified and the user has set a \"Transfer-Encoding: chunked\"\n // header.\n //\n // RFC 2616 mandates that 204 and 304 responses MUST NOT have a body but\n // node.js used to send out a zero chunk anyway to accommodate clients\n // that don't have special handling for those responses.\n //\n // It was pointed out that this might confuse reverse proxies to the point\n // of creating security liabilities, so suppress the zero chunk and force\n // the connection to close.\n // NOTE: the \"as any\" here is needed because 'statusCode' is only\n // defined on the subclass but is used here.\n if (this.chunkedEncoding &&\n (this.statusCode === 204 || this.statusCode === 304)) {\n debug(this.statusCode +\n \" response should not use chunked encoding,\" +\n \" closing connection.\");\n this.chunkedEncoding = false;\n this.shouldKeepAlive = false;\n }\n // keep-alive logic\n if (this._removedConnection) {\n // shouldKeepAlive is generally true for HTTP/1.1. In that common case,\n // even if the connection header isn't sent, we still persist by default.\n this._last = !this.shouldKeepAlive;\n }\n else if (!state.connection) {\n // this.agent would only exist on class ClientRequest\n const shouldSendKeepAlive = this.shouldKeepAlive &&\n (state.contLen || this.useChunkedEncodingByDefault); /* || this.agent */\n if (shouldSendKeepAlive && this.maxRequestsOnConnectionReached) {\n header += \"Connection: close\\r\\n\";\n }\n else if (shouldSendKeepAlive) {\n header += \"Connection: keep-alive\\r\\n\";\n if (this._keepAliveTimeout && this._defaultKeepAlive) {\n const timeoutSeconds = Math.floor(this._keepAliveTimeout / 1000);\n let max = \"\";\n if (this._maxRequestsPerSocket && ~~this._maxRequestsPerSocket > 0) {\n max = `, max=${this._maxRequestsPerSocket}`;\n }\n header += `Keep-Alive: timeout=${timeoutSeconds}${max}\\r\\n`;\n }\n }\n else {\n this._last = true;\n header += \"Connection: close\\r\\n\";\n }\n }\n if (!state.contLen && !state.te) {\n if (!this._hasBody) {\n // Make sure we don't end the 0\\r\\n\\r\\n at the end of the message.\n this.chunkedEncoding = false;\n }\n else if (!this.useChunkedEncodingByDefault) {\n this._last = true;\n }\n else if (!state.trailer &&\n !this._removedContLen &&\n typeof this._contentLength === \"number\") {\n header += \"Content-Length: \" + this._contentLength + \"\\r\\n\";\n }\n else if (!this._removedTE) {\n header += \"Transfer-Encoding: chunked\\r\\n\";\n this.chunkedEncoding = true;\n }\n else {\n // We should only be able to get here if both Content-Length and\n // Transfer-Encoding are removed by the user.\n // See: test/parallel/test-http-remove-header-stays-removed.js\n debug(\"Both Content-Length and Transfer-Encoding are removed\");\n // We can't keep alive in this case, because with no header info the body\n // is defined as all data until the connection is closed.\n this._last = true;\n }\n }\n // Test non-chunked message does not have trailer header set,\n // message will be terminated by the first empty line after the\n // header fields, regardless of the header fields present in the\n // message, and thus cannot contain a message body or 'trailers'.\n if (this.chunkedEncoding !== true && state.trailer) {\n throw new ERR_HTTP_TRAILER_INVALID();\n }\n this._header = header + \"\\r\\n\";\n this._headerSent = false;\n // Wait until the first body chunk, or close(), is sent to flush,\n // UNLESS we're sending Expect: 100-continue.\n if (state.expect) {\n this._send(\"\");\n }\n }\n get _headers() {\n console.warn(\"DEP0066: OutgoingMessage.prototype._headers is deprecated\");\n return this.getHeaders();\n }\n set _headers(val) {\n console.warn(\"DEP0066: OutgoingMessage.prototype._headers is deprecated\");\n if (val == null) {\n this[kOutHeaders] = null;\n }\n else if (typeof val === \"object\") {\n const headers = (this[kOutHeaders] = Object.create(null));\n const keys = Object.keys(val);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0; i < keys.length; ++i) {\n const name = keys[i];\n headers[name.toLowerCase()] = [name, val[name]];\n }\n }\n }\n get connection() {\n // Difference from Node.js -\n // Connection is not supported\n return null;\n }\n set connection(_socket) {\n // Difference from Node.js -\n // Connection is not supported\n console.error(\"No support for OutgoingMessage.connection\");\n }\n get socket() {\n // Difference from Node.js -\n // socket is not supported\n return null;\n }\n set socket(_socket) {\n // Difference from Node.js -\n // socket is not supported\n console.error(\"No support for OutgoingMessage.socket\");\n }\n get _headerNames() {\n console.warn(\"DEP0066: OutgoingMessage.prototype._headerNames is deprecated\");\n const headers = this[kOutHeaders];\n if (headers !== null) {\n const out = Object.create(null);\n const keys = Object.keys(headers);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n const val = headers[key][0];\n out[key] = val;\n }\n return out;\n }\n return null;\n }\n set _headerNames(val) {\n console.warn(\"DEP0066: OutgoingMessage.prototype._headerNames is deprecated\");\n if (typeof val === \"object\" && val !== null) {\n const headers = this[kOutHeaders];\n if (!headers)\n return;\n const keys = Object.keys(val);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0; i < keys.length; ++i) {\n const header = headers[keys[i]];\n if (header)\n header[0] = val[keys[i]];\n }\n }\n }\n setHeader(name, value) {\n if (this._header) {\n throw new ERR_HTTP_HEADERS_SENT(\"set\");\n }\n validateHeaderName(name);\n validateHeaderValue(name, value);\n let headers = this[kOutHeaders];\n if (headers === null) {\n this[kOutHeaders] = headers = { __proto__: null };\n }\n headers[name.toLowerCase()] = [name, value];\n return this;\n }\n setHeaders(headers) {\n if (this._header) {\n throw new ERR_HTTP_HEADERS_SENT(\"set\");\n }\n if (!headers ||\n Array.isArray(headers) ||\n typeof headers.keys !== \"function\" ||\n typeof headers.get !== \"function\") {\n throw new ERR_INVALID_ARG_TYPE(\"headers\", [\"Headers\", \"Map\"], headers);\n }\n // Headers object joins multiple cookies with a comma when using\n // the getter to retrieve the value,\n // unless iterating over the headers directly.\n // We also cannot safely split by comma.\n // To avoid setHeader overwriting the previous value we push\n // set-cookie values in array and set them all at once.\n const cookies = [];\n for (const { 0: key, 1: value } of headers) {\n if (key === \"set-cookie\") {\n if (Array.isArray(value)) {\n cookies.push(...value);\n }\n else {\n cookies.push(value);\n }\n continue;\n }\n this.setHeader(key, value);\n }\n if (cookies.length) {\n this.setHeader(\"set-cookie\", cookies);\n }\n return this;\n }\n appendHeader(name, value) {\n if (this._header) {\n throw new ERR_HTTP_HEADERS_SENT(\"append\");\n }\n validateHeaderName(name);\n validateHeaderValue(name, value);\n const field = name.toLowerCase();\n const headers = this[kOutHeaders];\n if (headers === null || !headers[field]) {\n return this.setHeader(name, value);\n }\n // Prepare the field for appending, if required\n if (!Array.isArray(headers[field][1])) {\n headers[field][1] = [headers[field][1]];\n }\n const existingValues = headers[field][1];\n if (Array.isArray(value)) {\n for (let i = 0, length = value.length; i < length; i++) {\n existingValues.push(value[i]);\n }\n }\n else {\n existingValues.push(value);\n }\n return this;\n }\n getHeader(name) {\n validateString(name, \"name\");\n const headers = this[kOutHeaders];\n if (headers === null) {\n return;\n }\n const entry = headers[name.toLowerCase()];\n return entry?.[1];\n }\n getHeaderNames() {\n return this[kOutHeaders] !== null ? Object.keys(this[kOutHeaders]) : [];\n }\n getRawHeaderNames() {\n const headersMap = this[kOutHeaders];\n if (headersMap === null)\n return [];\n const values = Object.values(headersMap);\n const headers = Array(values.length);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0, l = values.length; i < l; i++) {\n headers[i] = values[i][0];\n }\n return headers;\n }\n getHeaders() {\n const headers = this[kOutHeaders];\n const ret = { __proto__: null };\n if (headers) {\n const keys = Object.keys(headers);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n const val = headers[key][1];\n ret[key] = val;\n }\n }\n return ret;\n }\n hasHeader(name) {\n validateString(name, \"name\");\n return (this[kOutHeaders] !== null && !!this[kOutHeaders][name.toLowerCase()]);\n }\n removeHeader(name) {\n validateString(name, \"name\");\n if (this._header) {\n throw new ERR_HTTP_HEADERS_SENT(\"remove\");\n }\n const key = name.toLowerCase();\n switch (key) {\n case \"connection\":\n this._removedConnection = true;\n break;\n case \"content-length\":\n this._removedContLen = true;\n break;\n case \"transfer-encoding\":\n this._removedTE = true;\n break;\n case \"date\":\n this.sendDate = false;\n break;\n }\n if (this[kOutHeaders] !== null) {\n delete this[kOutHeaders][key];\n }\n }\n _implicitHeader() {\n throw new ERR_METHOD_NOT_IMPLEMENTED(\"_implicitHeader()\");\n }\n get headersSent() {\n return !!this._header;\n }\n write(chunk, encoding, callback) {\n if (typeof encoding === \"function\") {\n callback = encoding;\n encoding = null;\n }\n const ret = write_(this, chunk, encoding, callback, false);\n if (!ret) {\n this[kNeedDrain] = true;\n }\n return ret;\n }\n addTrailers(headers) {\n this._trailer = \"\";\n const isArray = Array.isArray(headers);\n const keys = isArray ? [...headers.keys()] : Object.keys(headers);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0, l = keys.length; i < l; i++) {\n let field, value;\n if (isArray) {\n const _headers = headers;\n const key = keys[i];\n field = _headers[key][0];\n value = _headers[key][1];\n }\n else {\n const _headers = headers;\n const key = keys[i];\n field = key;\n value = _headers[key];\n }\n validateHeaderName(field, \"Trailer name\");\n // Check if the field must be sent several times\n if (Array.isArray(value) &&\n value.length > 1 &&\n (!this[kUniqueHeaders] ||\n !this[kUniqueHeaders].has(field.toLowerCase()))) {\n for (let j = 0, l = value.length; j < l; j++) {\n if (checkInvalidHeaderChar(value[j])) {\n debug(`Trailer \"${field}\"[${j}] contains invalid characters`);\n throw new ERR_INVALID_CHAR(\"trailer content\", field);\n }\n this._trailer += field + \": \" + value[j] + \"\\r\\n\";\n }\n }\n else {\n if (Array.isArray(value)) {\n value = value.join(\"; \");\n }\n if (checkInvalidHeaderChar(String(value))) {\n debug(`Trailer \"${field}\" contains invalid characters`);\n throw new ERR_INVALID_CHAR(\"trailer content\", field);\n }\n this._trailer += field + \": \" + value + \"\\r\\n\";\n }\n }\n }\n end(chunk, encoding, callback) {\n if (typeof chunk === \"function\") {\n callback = chunk;\n chunk = null;\n encoding = null;\n }\n else if (typeof encoding === \"function\") {\n callback = encoding;\n encoding = null;\n }\n if (chunk) {\n if (this.finished) {\n onError(this, new ERR_STREAM_WRITE_AFTER_END(), typeof callback !== \"function\" ? nop : callback);\n return this;\n }\n // Difference from Node.js -\n // In Node.js, if a socket exists, we would also call socket.cork() at this point.\n // For our implementation we do the same for the \"written data buffer\"\n if (this._writtenDataBuffer != null) {\n this._writtenDataBuffer.cork();\n }\n write_(this, chunk, encoding, null, true);\n }\n else if (this.finished) {\n if (typeof callback === \"function\") {\n if (!this.writableFinished) {\n this.on(\"finish\", callback);\n }\n else {\n callback(new ERR_STREAM_ALREADY_FINISHED(\"end\"));\n }\n }\n return this;\n }\n else if (!this._header) {\n // Difference from Node.js -\n // In Node.js, if a socket exists, we would also call socket.cork() at this point.\n // For our implementation we do the same for the \"written data buffer\"\n if (this._writtenDataBuffer != null) {\n this._writtenDataBuffer.cork();\n }\n this._contentLength = 0;\n this._implicitHeader();\n }\n if (typeof callback === \"function\")\n this.once(\"finish\", callback);\n if (strictContentLength(this) &&\n this[kBytesWritten] !== this._contentLength) {\n throw new ERR_HTTP_CONTENT_LENGTH_MISMATCH(this[kBytesWritten], this._contentLength);\n }\n const finish = onFinish.bind(undefined, this);\n if (this._hasBody && this.chunkedEncoding) {\n // Difference from Node.js -\n // Chunked transfer encoding doesn't need to use the low-level protocol\n // (with each chunk preceded by its length)\n // So here we just send an empty chunk. Trailers are not supported\n // this._send(\"0\\r\\n\" + this._trailer + \"\\r\\n\", \"latin1\", finish);\n this._send(\"\", \"latin1\", finish);\n }\n else if (!this._headerSent || this.writableLength || chunk) {\n this._send(\"\", \"latin1\", finish);\n }\n else {\n setTimeout(finish, 0);\n }\n // Difference from Node.js -\n // In Node.js, if a socket exists, we would also call socket.uncork() at this point.\n // For our implementation we do the same for the \"written data buffer\"\n if (this._writtenDataBuffer != null) {\n this._writtenDataBuffer.uncork();\n }\n this[kCorked] = 1;\n this.uncork();\n this.finished = true;\n // There is the first message on the outgoing queue, and we've sent\n // everything to the socket.\n debug(\"outgoing message end.\");\n // Difference from Node.js -\n // In Node.js, if a socket exists, and there is no pending output data,\n // we would also call this._finish() at this point.\n // For our implementation we do the same for the \"written data buffer\"\n if (this.outputData.length === 0 && this._writtenDataBuffer != null) {\n this._finish();\n }\n return this;\n }\n _finish() {\n // Difference from Node.js -\n // In Node.js, this function is only called if a socket exists.\n // This function would assert() for a socket and then emit 'prefinish'.\n // For our implementation we do the same for the \"written data buffer\"\n this.emit(\"prefinish\");\n }\n // No _flush() implementation?\n _flush() {\n // Difference from Node.js -\n // In Node.js, this function is only called if a socket exists.\n // For our implementation we do the same for the \"written data buffer\"\n if (this._writtenDataBuffer != null) {\n // There might be remaining data in this.output; write it out\n const ret = this._flushOutput(this._writtenDataBuffer);\n if (this.finished) {\n // This is a queue to the server or client to bring in the next this.\n this._finish();\n }\n else if (ret && this[kNeedDrain]) {\n this[kNeedDrain] = false;\n this.emit(\"drain\");\n }\n }\n }\n _flushOutput(dataBuffer) {\n while (this[kCorked]) {\n this[kCorked]--;\n dataBuffer.cork();\n }\n const outputLength = this.outputData.length;\n if (outputLength <= 0) {\n return undefined;\n }\n const outputData = this.outputData;\n dataBuffer.cork();\n let ret;\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0; i < outputLength; i++) {\n const { data, encoding, callback } = outputData[i]; // Avoid any potential ref to Buffer in new generation from old generation\n outputData[i].data = null;\n ret = dataBuffer.write(data ?? \"\", encoding, callback);\n }\n dataBuffer.uncork();\n this.outputData = [];\n this._onPendingData(-this.outputSize);\n this.outputSize = 0;\n return ret;\n }\n flushHeaders() {\n if (!this._header) {\n this._implicitHeader();\n }\n // Force-flush the headers.\n this._send(\"\");\n }\n pipe(destination) {\n // OutgoingMessage should be write-only. Piping from it is disabled.\n this.emit(\"error\", new ERR_STREAM_CANNOT_PIPE());\n return destination;\n }\n}\nfunction processHeader(self, state, key, value, validate) {\n if (validate) {\n validateHeaderName(key);\n }\n // If key is content-disposition and there is content-length\n // encode the value in latin1\n // https://www.rfc-editor.org/rfc/rfc6266#section-4.3\n // Refs: https://github.com/nodejs/node/pull/46528\n if (isContentDispositionField(key) && self._contentLength) {\n // The value could be an array here\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n value[i] = String(Buffer.from(String(value[i]), \"latin1\"));\n }\n }\n else {\n value = String(Buffer.from(String(value), \"latin1\"));\n }\n }\n if (Array.isArray(value)) {\n if ((value.length < 2 || !isCookieField(key)) &&\n (!self[kUniqueHeaders] || !self[kUniqueHeaders].has(key.toLowerCase()))) {\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0; i < value.length; i++) {\n storeHeader(self, state, key, value[i], validate);\n }\n return;\n }\n value = value.join(\"; \");\n }\n storeHeader(self, state, key, String(value), validate);\n}\nfunction storeHeader(self, state, key, value, validate) {\n if (validate) {\n validateHeaderValue(key, value);\n }\n state.header += key + \": \" + value + \"\\r\\n\";\n matchHeader(self, state, key, value);\n}\nfunction validateHeaderName(name, label) {\n if (typeof name !== \"string\" || !name || !checkIsHttpToken(name)) {\n throw new ERR_INVALID_HTTP_TOKEN(label || \"Header name\", name);\n }\n}\nfunction validateHeaderValue(name, value) {\n if (value === undefined) {\n throw new ERR_HTTP_INVALID_HEADER_VALUE(String(value), name);\n }\n if (checkInvalidHeaderChar(String(value))) {\n debug(`Header \"${name}\" contains invalid characters`);\n throw new ERR_INVALID_CHAR(\"header content\", name);\n }\n}\nfunction matchHeader(self, state, field, value) {\n if (field.length < 4 || field.length > 17)\n return;\n field = field.toLowerCase();\n switch (field) {\n case \"connection\":\n state.connection = true;\n self._removedConnection = false;\n if (RE_CONN_CLOSE.exec(value) !== null)\n self._last = true;\n else\n self.shouldKeepAlive = true;\n break;\n case \"transfer-encoding\":\n state.te = true;\n self._removedTE = false;\n if (RE_TE_CHUNKED.exec(value) !== null)\n self.chunkedEncoding = true;\n break;\n case \"content-length\":\n state.contLen = true;\n self._contentLength = +value;\n self._removedContLen = false;\n break;\n case \"date\":\n case \"expect\":\n case \"trailer\":\n state[field] = true;\n break;\n case \"keep-alive\":\n self._defaultKeepAlive = false;\n break;\n }\n}\n// const crlf_buf = Buffer.from(\"\\r\\n\");\nfunction onError(msg, err, callback) {\n if (msg.destroyed) {\n return;\n }\n // Difference from Node.js -\n // In Node.js, we would check for the existence of a socket. If one exists, we would\n // use that async ID to scope the error.\n // Instead, we do this.\n setTimeout(emitErrorNt, 0, msg, err, callback);\n}\nfunction emitErrorNt(msg, err, callback) {\n callback(err);\n if (typeof msg.emit === \"function\" && !msg.destroyed) {\n msg.emit(\"error\", err);\n }\n}\nfunction strictContentLength(msg) {\n return (msg.strictContentLength &&\n msg._contentLength != null &&\n msg._hasBody &&\n !msg._removedContLen &&\n !msg.chunkedEncoding &&\n !msg.hasHeader(\"transfer-encoding\"));\n}\nfunction write_(msg, chunk, encoding, callback, fromEnd) {\n if (typeof callback !== \"function\") {\n callback = nop;\n }\n if (chunk === null) {\n throw new ERR_STREAM_NULL_VALUES();\n }\n else if (typeof chunk !== \"string\" && !isUint8Array(chunk)) {\n throw new ERR_INVALID_ARG_TYPE(\"chunk\", [\"string\", \"Buffer\", \"Uint8Array\"], chunk);\n }\n let err = undefined;\n if (msg.finished) {\n err = new ERR_STREAM_WRITE_AFTER_END();\n }\n else if (msg.destroyed) {\n err = new ERR_STREAM_DESTROYED(\"write\");\n }\n if (err) {\n if (!msg.destroyed) {\n onError(msg, err, callback);\n }\n else {\n setTimeout(callback, 0, err);\n }\n return false;\n }\n let len = undefined;\n if (msg.strictContentLength) {\n len ??=\n typeof chunk === \"string\"\n ? Buffer.byteLength(chunk, encoding ?? undefined)\n : chunk.byteLength;\n if (strictContentLength(msg) &&\n (fromEnd\n ? msg[kBytesWritten] + len !== msg._contentLength\n : msg[kBytesWritten] + len > (msg._contentLength ?? 0))) {\n throw new ERR_HTTP_CONTENT_LENGTH_MISMATCH(len + msg[kBytesWritten], msg._contentLength);\n }\n msg[kBytesWritten] += len;\n }\n if (!msg._header) {\n if (fromEnd) {\n len ??=\n typeof chunk === \"string\"\n ? Buffer.byteLength(chunk, encoding ?? undefined)\n : chunk.byteLength;\n msg._contentLength = len;\n }\n msg._implicitHeader();\n }\n if (!msg._hasBody) {\n if (msg[kRejectNonStandardBodyWrites]) {\n throw new ERR_HTTP_BODY_NOT_ALLOWED();\n }\n else {\n debug(\"This type of response MUST NOT have a body. \" +\n \"Ignoring write() calls.\");\n setTimeout(callback, 0);\n return true;\n }\n }\n // Difference from Node.js -\n // In Node.js, we would also check at this point if a socket exists and is not corked.\n // If so, we'd cork the socket and then queue up an 'uncork' for the next tick.\n // In our implementation we do the same for \"written data buffer\"\n if (!fromEnd &&\n msg._writtenDataBuffer != null &&\n !msg._writtenDataBuffer.writableCorked) {\n msg._writtenDataBuffer.cork();\n setTimeout(connectionCorkNT, 0, msg._writtenDataBuffer);\n }\n let ret;\n if (msg.chunkedEncoding && chunk.length !== 0) {\n len ??=\n typeof chunk === \"string\"\n ? Buffer.byteLength(chunk, encoding ?? undefined)\n : chunk.byteLength;\n if (msg[kCorked] && msg._headerSent) {\n msg[kChunkedBuffer].push({ data: chunk, encoding, callback });\n msg[kChunkedLength] += len;\n ret = msg[kChunkedLength] < msg[kHighWaterMark];\n }\n else {\n // Difference from Node.js -\n // Chunked transfer encoding doesn't need to use the low-level protocol\n // (with each chunk preceded by its length)\n // msg._send(len.toString(16), \"latin1\", null);\n // msg._send(crlf_buf, null, null);\n // msg._send(chunk, encoding, null, len);\n // ret = msg._send(crlf_buf, null, callback);\n ret = msg._send(chunk, encoding, callback, len);\n }\n }\n else {\n ret = msg._send(chunk, encoding, callback, len);\n }\n debug(\"write ret = \" + ret);\n return ret;\n}\nfunction connectionCorkNT(dataBuffer) {\n dataBuffer.uncork();\n}\nfunction onFinish(outmsg) {\n // Difference from Node.js -\n // In Node.js, if a socket exists and already had an error, we would simply return.\n outmsg.emit(\"finish\");\n}\n// Override some properties this way, because TypeScript won't let us override\n// properties with accessors.\nObject.defineProperties(FetchOutgoingMessage.prototype, {\n errored: {\n get() {\n return this[kErrored];\n },\n },\n closed: {\n get() {\n return this._closed;\n },\n },\n writableFinished: {\n get() {\n // Difference from Node.js -\n // In Node.js, there is one additional requirement --\n // there must be no underlying socket (or its writableLength must be 0).\n // In this implementation we will do the same against \"written data buffer\".\n return (this.finished &&\n this.outputSize === 0 &&\n (this._writtenDataBuffer == null ||\n this._writtenDataBuffer.writableLength === 0));\n },\n },\n writableObjectMode: {\n get() {\n return false;\n },\n },\n writableLength: {\n get() {\n // Difference from Node.js -\n // In Node.js, if a socket exists then that socket's writableLength is added to\n // this value.\n // In this implementation we will do the same against \"written data buffer\".\n return (this.outputSize +\n this[kChunkedLength] +\n (this._writtenDataBuffer != null\n ? this._writtenDataBuffer.writableLength\n : 0));\n },\n },\n writableHighWaterMark: {\n get() {\n // Difference from Node.js -\n // In Node.js, if a socket exists then use that socket's writableHighWaterMark\n // In this implementation we will do the same against \"written data buffer\".\n return this._writtenDataBuffer != null\n ? this._writtenDataBuffer.writableHighWaterMark\n : this[kHighWaterMark];\n },\n },\n writableCorked: {\n get() {\n return this[kCorked];\n },\n },\n writableEnded: {\n get() {\n return this.finished;\n },\n },\n writableNeedDrain: {\n get() {\n return !this.destroyed && !this.finished && this[kNeedDrain];\n },\n },\n});\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\nimport { Buffer } from \"node:buffer\";\nimport { ERR_HTTP_HEADERS_SENT, ERR_HTTP_INVALID_STATUS_CODE, ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, ERR_INVALID_CHAR, ERR_METHOD_NOT_IMPLEMENTED, } from \"../utils/errors.js\";\nimport { FetchOutgoingMessage, } from \"./http-outgoing.js\";\nimport { chunkExpression } from \"./http-common.js\";\nimport { FetchIncomingMessage } from \"./http-incoming.js\";\nimport { kOutHeaders } from \"./internal-http.js\";\nimport { validateLinkHeaderValue } from \"../utils/types.js\";\n/* These items copied from Node.js: node/lib/_http_common.js. */\nconst headerCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/;\n/**\n * True if val contains an invalid field-vchar\n * field-value = *( field-content / obs-fold )\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n */\nfunction checkInvalidHeaderChar(val) {\n return headerCharRegex.test(val);\n}\n// This file modeled after Node.js - node/lib/_http_server.js\nexport const STATUS_CODES = {\n 100: \"Continue\", // RFC 7231 6.2.1\n 101: \"Switching Protocols\", // RFC 7231 6.2.2\n 102: \"Processing\", // RFC 2518 10.1 (obsoleted by RFC 4918)\n 103: \"Early Hints\", // RFC 8297 2\n 200: \"OK\", // RFC 7231 6.3.1\n 201: \"Created\", // RFC 7231 6.3.2\n 202: \"Accepted\", // RFC 7231 6.3.3\n 203: \"Non-Authoritative Information\", // RFC 7231 6.3.4\n 204: \"No Content\", // RFC 7231 6.3.5\n 205: \"Reset Content\", // RFC 7231 6.3.6\n 206: \"Partial Content\", // RFC 7233 4.1\n 207: \"Multi-Status\", // RFC 4918 11.1\n 208: \"Already Reported\", // RFC 5842 7.1\n 226: \"IM Used\", // RFC 3229 10.4.1\n 300: \"Multiple Choices\", // RFC 7231 6.4.1\n 301: \"Moved Permanently\", // RFC 7231 6.4.2\n 302: \"Found\", // RFC 7231 6.4.3\n 303: \"See Other\", // RFC 7231 6.4.4\n 304: \"Not Modified\", // RFC 7232 4.1\n 305: \"Use Proxy\", // RFC 7231 6.4.5\n 307: \"Temporary Redirect\", // RFC 7231 6.4.7\n 308: \"Permanent Redirect\", // RFC 7238 3\n 400: \"Bad Request\", // RFC 7231 6.5.1\n 401: \"Unauthorized\", // RFC 7235 3.1\n 402: \"Payment Required\", // RFC 7231 6.5.2\n 403: \"Forbidden\", // RFC 7231 6.5.3\n 404: \"Not Found\", // RFC 7231 6.5.4\n 405: \"Method Not Allowed\", // RFC 7231 6.5.5\n 406: \"Not Acceptable\", // RFC 7231 6.5.6\n 407: \"Proxy Authentication Required\", // RFC 7235 3.2\n 408: \"Request Timeout\", // RFC 7231 6.5.7\n 409: \"Conflict\", // RFC 7231 6.5.8\n 410: \"Gone\", // RFC 7231 6.5.9\n 411: \"Length Required\", // RFC 7231 6.5.10\n 412: \"Precondition Failed\", // RFC 7232 4.2\n 413: \"Payload Too Large\", // RFC 7231 6.5.11\n 414: \"URI Too Long\", // RFC 7231 6.5.12\n 415: \"Unsupported Media Type\", // RFC 7231 6.5.13\n 416: \"Range Not Satisfiable\", // RFC 7233 4.4\n 417: \"Expectation Failed\", // RFC 7231 6.5.14\n 418: \"I'm a Teapot\", // RFC 7168 2.3.3\n 421: \"Misdirected Request\", // RFC 7540 9.1.2\n 422: \"Unprocessable Entity\", // RFC 4918 11.2\n 423: \"Locked\", // RFC 4918 11.3\n 424: \"Failed Dependency\", // RFC 4918 11.4\n 425: \"Too Early\", // RFC 8470 5.2\n 426: \"Upgrade Required\", // RFC 2817 and RFC 7231 6.5.15\n 428: \"Precondition Required\", // RFC 6585 3\n 429: \"Too Many Requests\", // RFC 6585 4\n 431: \"Request Header Fields Too Large\", // RFC 6585 5\n 451: \"Unavailable For Legal Reasons\", // RFC 7725 3\n 500: \"Internal Server Error\", // RFC 7231 6.6.1\n 501: \"Not Implemented\", // RFC 7231 6.6.2\n 502: \"Bad Gateway\", // RFC 7231 6.6.3\n 503: \"Service Unavailable\", // RFC 7231 6.6.4\n 504: \"Gateway Timeout\", // RFC 7231 6.6.5\n 505: \"HTTP Version Not Supported\", // RFC 7231 6.6.6\n 506: \"Variant Also Negotiates\", // RFC 2295 8.1\n 507: \"Insufficient Storage\", // RFC 4918 11.5\n 508: \"Loop Detected\", // RFC 5842 7.2\n 509: \"Bandwidth Limit Exceeded\",\n 510: \"Not Extended\", // RFC 2774 7\n 511: \"Network Authentication Required\", // RFC 6585 6\n};\n/**\n * This is an implementation of ServerResponse from Node.js intended to run in\n * a WinterTC runtime. The 'Writable' interface of this class is wired to an in-memory\n * buffer. This class also provides a method that creates a Response object that\n * can be handled by the runtime.\n *\n * This instance can be used in normal ways, but it does not give access to the\n * underlying socket (because there isn't one. req.socket will always return null).\n *\n * Some code in this class is transplanted/adapted from node/lib/_httpserver.js\n *\n * NOTE: Node.js doesn't really separate the body from headers, the entire \"stream\"\n * contains the headers and the body. So we provide functions that lets us pull\n * the headers and body out individually at a later time.\n */\nexport class FetchServerResponse extends FetchOutgoingMessage {\n static encoder = new TextEncoder();\n statusCode = 200;\n statusMessage;\n _sent100;\n _expect_continue;\n [kOutHeaders] = null;\n constructor(req, options) {\n super(req, options);\n if (req.method === \"HEAD\") {\n this._hasBody = false;\n }\n // this.req = req; // super() actually does this\n this.sendDate = true;\n this._sent100 = false;\n this._expect_continue = false;\n if (req.httpVersionMajor < 1 || req.httpVersionMinor < 1) {\n this.useChunkedEncodingByDefault =\n chunkExpression.exec(String(req.headers.te)) !== null;\n this.shouldKeepAlive = false;\n }\n // Difference from Node.js -\n // In Node.js, in addition to the above, we would check if an observer is enabled for\n // http, and if it is, we would start performance measurement of server response statistics.\n this.fetchResponse = new Promise((resolve) => {\n let finished = false;\n this.on(\"finish\", () => {\n finished = true;\n });\n const initialDataChunks = [];\n const initialDataWrittenHandler = (e) => {\n if (finished) {\n return;\n }\n initialDataChunks[e.index] = this.dataFromDataWrittenEvent(e);\n };\n this.on(\"_dataWritten\", initialDataWrittenHandler);\n this.on(\"_headersSent\", (e) => {\n this.off(\"_dataWritten\", initialDataWrittenHandler);\n // Convert the response object to a Response object and return it\n const { statusCode, statusMessage, headers } = e;\n resolve(this._toFetchResponse(statusCode, statusMessage, headers, initialDataChunks, finished));\n });\n });\n }\n dataFromDataWrittenEvent(e) {\n const { index, entry } = e;\n let { data, encoding } = entry;\n if (index === 0) {\n if (typeof data !== \"string\") {\n console.error(\"First chunk should be string, not sure what happened.\");\n throw new ERR_INVALID_ARG_TYPE(\"packet.data\", [\"string\", \"Buffer\", \"Uint8Array\"], data);\n }\n // The first X bytes are header material, so we remove it.\n data = data.slice(this.writtenHeaderBytes);\n }\n if (typeof data === \"string\") {\n if (encoding === undefined ||\n encoding === \"utf8\" ||\n encoding === \"utf-8\") {\n data = FetchServerResponse.encoder.encode(data);\n }\n else {\n data = Buffer.from(data, encoding ?? undefined);\n }\n }\n return data ?? Buffer.from([]);\n }\n _finish() {\n // Difference from Node.js -\n // In Node.js, if server response statistics performance is being measured, we would stop it.\n super._finish();\n }\n assignSocket(socket) {\n // Difference from Node.js -\n // Socket is not supported\n throw new ERR_METHOD_NOT_IMPLEMENTED(\"assignSocket\");\n }\n detachSocket(socket) {\n // Difference from Node.js -\n // Socket is not supported\n throw new ERR_METHOD_NOT_IMPLEMENTED(\"detachSocket\");\n }\n writeContinue(callback) {\n this._writeRaw(\"HTTP/1.1 100 Continue\\r\\n\\r\\n\", \"ascii\", callback);\n this._sent100 = true;\n }\n writeProcessing(callback) {\n this._writeRaw(\"HTTP/1.1 102 Processing\\r\\n\\r\\n\", \"ascii\", callback);\n }\n writeEarlyHints(hints, callback) {\n let head = \"HTTP/1.1 103 Early Hints\\r\\n\";\n // Difference from Node.js -\n // In Node.js, we would validate the hints object here.\n // validateObject(hints, 'hints');\n if (hints.link === null || hints.link === undefined) {\n return;\n }\n const link = validateLinkHeaderValue(hints.link);\n if (link.length === 0) {\n return;\n }\n head += \"Link: \" + link + \"\\r\\n\";\n for (const key of Object.keys(hints)) {\n if (key !== \"link\") {\n head += key + \": \" + hints[key] + \"\\r\\n\";\n }\n }\n head += \"\\r\\n\";\n this._writeRaw(head, \"ascii\", callback);\n }\n _implicitHeader() {\n this.writeHead(this.statusCode);\n }\n writeHead(statusCode, reason, obj) {\n if (this._header) {\n throw new ERR_HTTP_HEADERS_SENT(\"write\");\n }\n const originalStatusCode = statusCode;\n statusCode |= 0;\n if (statusCode < 100 || statusCode > 999) {\n throw new ERR_HTTP_INVALID_STATUS_CODE(originalStatusCode);\n }\n if (typeof reason === \"string\") {\n // writeHead(statusCode, reasonPhrase[, headers])\n this.statusMessage = reason;\n }\n else {\n // writeHead(statusCode[, headers])\n this.statusMessage ||= STATUS_CODES[statusCode] || \"unknown\";\n obj ??= reason;\n }\n this.statusCode = statusCode;\n let headers;\n if (this[kOutHeaders]) {\n // Slow-case: when progressive API and header fields are passed.\n let k;\n if (Array.isArray(obj)) {\n if (obj.length % 2 !== 0) {\n throw new ERR_INVALID_ARG_VALUE(\"headers\", obj);\n }\n // Headers in obj should override previous headers but still\n // allow explicit duplicates. To do so, we first remove any\n // existing conflicts, then use appendHeader.\n for (let n = 0; n < obj.length; n += 2) {\n k = obj[n + 0];\n this.removeHeader(String(k));\n }\n for (let n = 0; n < obj.length; n += 2) {\n k = obj[n];\n if (k) {\n this.appendHeader(String(k), obj[n + 1]);\n }\n }\n }\n else if (obj) {\n const keys = Object.keys(obj);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0; i < keys.length; i++) {\n k = keys[i];\n if (k) {\n this.setHeader(k, obj[k]);\n }\n }\n }\n // Only progressive api is used\n headers = this[kOutHeaders];\n }\n else {\n // Only writeHead() called\n headers = obj;\n }\n if (checkInvalidHeaderChar(this.statusMessage)) {\n throw new ERR_INVALID_CHAR(\"statusMessage\");\n }\n const statusLine = `HTTP/1.1 ${statusCode} ${this.statusMessage}\\r\\n`;\n if (statusCode === 204 ||\n statusCode === 304 ||\n (statusCode >= 100 && statusCode <= 199)) {\n // RFC 2616, 10.2.5:\n // The 204 response MUST NOT include a message-body, and thus is always\n // terminated by the first empty line after the header fields.\n // RFC 2616, 10.3.5:\n // The 304 response MUST NOT contain a message-body, and thus is always\n // terminated by the first empty line after the header fields.\n // RFC 2616, 10.1 Informational 1xx:\n // This class of status code indicates a provisional response,\n // consisting only of the Status-Line and optional headers, and is\n // terminated by an empty line.\n this._hasBody = false;\n }\n // Don't keep alive connections where the client expects 100 Continue\n // but we sent a final status; they may put extra bytes on the wire.\n if (this._expect_continue && !this._sent100) {\n this.shouldKeepAlive = false;\n }\n // Convert headers to a compatible type for _storeHeader\n const convertedHeaders = headers && !Array.isArray(headers)\n ? headers\n : headers;\n this._storeHeader(statusLine, convertedHeaders ?? null);\n return this;\n }\n // Docs-only deprecated: DEP0063\n writeHeader = this.writeHead;\n fetchResponse;\n _toFetchResponse(status, statusText, sentHeaders, initialDataChunks, finished) {\n const headers = new Headers();\n for (const [header, value] of sentHeaders) {\n headers.append(header, value);\n }\n const _this = this;\n let body = this._hasBody\n ? new ReadableStream({\n start(controller) {\n for (const dataChunk of initialDataChunks) {\n controller.enqueue(dataChunk);\n }\n if (finished) {\n controller.close();\n }\n else {\n _this.on(\"finish\", () => {\n finished = true;\n controller.close();\n });\n _this.on(\"_dataWritten\", (e) => {\n if (finished) {\n return;\n }\n const data = _this.dataFromDataWrittenEvent(e);\n controller.enqueue(data);\n });\n }\n },\n })\n : null;\n // @ts-expect-error this is (currently) a cloudflare-specific class\n if (body != null && typeof FixedLengthStream !== \"undefined\") {\n const contentLength = parseInt(headers.get(\"content-length\") ?? \"\", 10); // will be NaN if not set\n if (contentLength >= 0) {\n // @ts-expect-error this is (currently) a cloudflare-specific class\n body = body.pipeThrough(new FixedLengthStream(contentLength));\n }\n }\n return new Response(body, {\n status,\n statusText,\n headers,\n });\n }\n}\nexport function toReqRes(req, options) {\n const { createIncomingMessage = () => new FetchIncomingMessage(), createServerResponse = (incoming) => new FetchServerResponse(incoming), ctx, } = options ?? {};\n const incoming = createIncomingMessage(ctx);\n const serverResponse = createServerResponse(incoming, ctx);\n const reqUrl = new URL(req.url);\n const versionMajor = 1;\n const versionMinor = 1;\n incoming.httpVersionMajor = versionMajor;\n incoming.httpVersionMinor = versionMinor;\n incoming.httpVersion = `${versionMajor}.${versionMinor}`;\n incoming.url = reqUrl.pathname + reqUrl.search;\n incoming.upgrade = false;\n const headers = [];\n for (const [headerName, headerValue] of req.headers) {\n headers.push(headerName);\n headers.push(headerValue);\n }\n incoming._addHeaderLines(headers, headers.length);\n incoming.method = req.method;\n incoming._stream = req.body;\n return {\n req: incoming,\n res: serverResponse,\n };\n}\nexport function toFetchResponse(res) {\n if (!(res instanceof FetchServerResponse)) {\n throw new Error(\"toFetchResponse must be called on a ServerResponse generated by toReqRes\");\n }\n return res.fetchResponse;\n}\n","// src/http-exception.ts\nvar HTTPException = class extends Error {\n res;\n status;\n constructor(status = 500, options) {\n super(options?.message, { cause: options?.cause });\n this.res = options?.res;\n this.status = status;\n }\n getResponse() {\n if (this.res) {\n const newResponse = new Response(this.res.body, {\n status: this.status,\n headers: this.res.headers\n });\n return newResponse;\n }\n return new Response(this.message, {\n status: this.status\n });\n }\n};\nexport {\n HTTPException\n};\n","// src/middleware/body-limit/index.ts\nimport { HTTPException } from \"../../http-exception.js\";\nvar ERROR_MESSAGE = \"Payload Too Large\";\nvar BodyLimitError = class extends Error {\n constructor(message) {\n super(message);\n this.name = \"BodyLimitError\";\n }\n};\nvar bodyLimit = (options) => {\n const onError = options.onError || (() => {\n const res = new Response(ERROR_MESSAGE, {\n status: 413\n });\n throw new HTTPException(413, { res });\n });\n const maxSize = options.maxSize;\n return async function bodyLimit2(c, next) {\n if (!c.req.raw.body) {\n return next();\n }\n const hasTransferEncoding = c.req.raw.headers.has(\"transfer-encoding\");\n const hasContentLength = c.req.raw.headers.has(\"content-length\");\n if (hasTransferEncoding && hasContentLength) {\n }\n if (hasContentLength && !hasTransferEncoding) {\n const contentLength = parseInt(c.req.raw.headers.get(\"content-length\") || \"0\", 10);\n return contentLength > maxSize ? onError(c) : next();\n }\n let size = 0;\n const rawReader = c.req.raw.body.getReader();\n const reader = new ReadableStream({\n async start(controller) {\n try {\n for (; ; ) {\n const { done, value } = await rawReader.read();\n if (done) {\n break;\n }\n size += value.length;\n if (size > maxSize) {\n controller.error(new BodyLimitError(ERROR_MESSAGE));\n break;\n }\n controller.enqueue(value);\n }\n } finally {\n controller.close();\n }\n }\n });\n const requestInit = { body: reader, duplex: \"half\" };\n c.req.raw = new Request(c.req.raw, requestInit);\n await next();\n if (c.error instanceof BodyLimitError) {\n c.res = await onError(c);\n }\n };\n};\nexport {\n bodyLimit\n};\n","// src/utils/stream.ts\nvar StreamingApi = class {\n writer;\n encoder;\n writable;\n abortSubscribers = [];\n responseReadable;\n aborted = false;\n closed = false;\n constructor(writable, _readable) {\n this.writable = writable;\n this.writer = writable.getWriter();\n this.encoder = new TextEncoder();\n const reader = _readable.getReader();\n this.abortSubscribers.push(async () => {\n await reader.cancel();\n });\n this.responseReadable = new ReadableStream({\n async pull(controller) {\n const { done, value } = await reader.read();\n done ? controller.close() : controller.enqueue(value);\n },\n cancel: () => {\n this.abort();\n }\n });\n }\n async write(input) {\n try {\n if (typeof input === \"string\") {\n input = this.encoder.encode(input);\n }\n await this.writer.write(input);\n } catch {\n }\n return this;\n }\n async writeln(input) {\n await this.write(input + \"\\n\");\n return this;\n }\n sleep(ms) {\n return new Promise((res) => setTimeout(res, ms));\n }\n async close() {\n try {\n await this.writer.close();\n } catch {\n }\n this.closed = true;\n }\n async pipe(body) {\n this.writer.releaseLock();\n await body.pipeTo(this.writable, { preventClose: true });\n this.writer = this.writable.getWriter();\n }\n onAbort(listener) {\n this.abortSubscribers.push(listener);\n }\n abort() {\n if (!this.aborted) {\n this.aborted = true;\n this.abortSubscribers.forEach((subscriber) => subscriber());\n }\n }\n};\nexport {\n StreamingApi\n};\n","// src/helper/streaming/utils.ts\nvar isOldBunVersion = () => {\n const version = typeof Bun !== \"undefined\" ? Bun.version : void 0;\n if (version === void 0) {\n return false;\n }\n const result = version.startsWith(\"1.1\") || version.startsWith(\"1.0\") || version.startsWith(\"0.\");\n isOldBunVersion = () => result;\n return result;\n};\nexport {\n isOldBunVersion\n};\n","// src/helper/streaming/stream.ts\nimport { StreamingApi } from \"../../utils/stream.js\";\nimport { isOldBunVersion } from \"./utils.js\";\nvar contextStash = /* @__PURE__ */ new WeakMap();\nvar stream = (c, cb, onError) => {\n const { readable, writable } = new TransformStream();\n const stream2 = new StreamingApi(writable, readable);\n if (isOldBunVersion()) {\n c.req.raw.signal.addEventListener(\"abort\", () => {\n if (!stream2.closed) {\n stream2.abort();\n }\n });\n }\n contextStash.set(stream2.responseReadable, c);\n (async () => {\n try {\n await cb(stream2);\n } catch (e) {\n if (e === void 0) {\n } else if (e instanceof Error && onError) {\n await onError(e, stream2);\n } else {\n console.error(e);\n }\n } finally {\n stream2.close();\n }\n })();\n return c.newResponse(stream2.responseReadable);\n};\nexport {\n stream\n};\n","import type { ContextWithMastra } from '@mastra/core/server';\nimport {\n canAccessPublicly,\n checkRules,\n defaultAuthConfig,\n isDevPlaygroundRequest,\n isProtectedPath,\n} from '@mastra/server/auth';\nimport type { Next } from 'hono';\n\nexport const authenticationMiddleware = async (c: ContextWithMastra, next: Next) => {\n const mastra = c.get('mastra');\n const authConfig = mastra.getServer()?.auth;\n const customRouteAuthConfig = c.get('customRouteAuthConfig');\n\n if (!authConfig) {\n // No auth config, skip authentication\n return next();\n }\n\n const path = c.req.path;\n const method = c.req.method;\n const getHeader = (name: string) => c.req.header(name);\n\n if (isDevPlaygroundRequest(path, method, getHeader, authConfig)) {\n // Skip authentication for dev playground requests\n return next();\n }\n\n if (!isProtectedPath(c.req.path, c.req.method, authConfig, customRouteAuthConfig)) {\n return next();\n }\n\n // Skip authentication for public routes\n if (canAccessPublicly(c.req.path, c.req.method, authConfig)) {\n return next();\n }\n\n // Get token from header or query\n const authHeader = c.req.header('Authorization');\n let token: string | null = authHeader ? authHeader.replace('Bearer ', '') : null;\n\n if (!token && c.req.query('apiKey')) {\n token = c.req.query('apiKey') || null;\n }\n\n // Handle missing token\n if (!token) {\n return c.json({ error: 'Authentication required' }, 401);\n }\n\n try {\n // Verify token and get user data\n let user: unknown;\n\n // Client provided verify function\n if (typeof authConfig.authenticateToken === 'function') {\n user = await authConfig.authenticateToken(token, c.req);\n } else {\n throw new Error('No token verification method configured');\n }\n\n if (!user) {\n return c.json({ error: 'Invalid or expired token' }, 401);\n }\n\n // Store user in context\n c.get('requestContext').set('user', user);\n\n return next();\n } catch (err) {\n console.error(err);\n return c.json({ error: 'Invalid or expired token' }, 401);\n }\n};\n\nexport const authorizationMiddleware = async (c: ContextWithMastra, next: Next) => {\n const mastra = c.get('mastra');\n const authConfig = mastra.getServer()?.auth;\n const customRouteAuthConfig = c.get('customRouteAuthConfig');\n\n if (!authConfig) {\n // No auth config, skip authorization\n return next();\n }\n\n const path = c.req.path;\n const method = c.req.method;\n const getHeader = (name: string) => c.req.header(name);\n\n if (isDevPlaygroundRequest(path, method, getHeader, authConfig)) {\n // Skip authorization for dev playground requests\n return next();\n }\n\n if (!isProtectedPath(c.req.path, c.req.method, authConfig, customRouteAuthConfig)) {\n return next();\n }\n\n // Skip for public routes\n if (canAccessPublicly(path, method, authConfig)) {\n return next();\n }\n\n const user = c.get('requestContext').get('user');\n\n if ('authorizeUser' in authConfig && typeof authConfig.authorizeUser === 'function') {\n try {\n const isAuthorized = await authConfig.authorizeUser(user, c.req);\n\n if (isAuthorized) {\n return next();\n }\n\n return c.json({ error: 'Access denied' }, 403);\n } catch (err) {\n console.error(err);\n return c.json({ error: 'Authorization error' }, 500);\n }\n }\n\n // Client-provided authorization function\n if ('authorize' in authConfig && typeof authConfig.authorize === 'function') {\n try {\n const isAuthorized = await authConfig.authorize(path, method, user, c);\n\n if (isAuthorized) {\n return next();\n }\n\n return c.json({ error: 'Access denied' }, 403);\n } catch (err) {\n console.error(err);\n return c.json({ error: 'Authorization error' }, 500);\n }\n }\n\n // Custom rule-based authorization\n if ('rules' in authConfig && authConfig.rules && authConfig.rules.length > 0) {\n const isAuthorized = await checkRules(authConfig.rules, path, method, user);\n\n if (isAuthorized) {\n return next();\n }\n\n return c.json({ error: 'Access denied' }, 403);\n }\n\n // Default rule-based authorization\n if (defaultAuthConfig.rules && defaultAuthConfig.rules.length > 0) {\n const isAuthorized = await checkRules(defaultAuthConfig.rules, path, method, user);\n\n if (isAuthorized) {\n return next();\n }\n }\n\n return c.json({ error: 'Access denied' }, 403);\n};\n","import type { Mastra } from '@mastra/core/mastra';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { Tool } from '@mastra/core/tools';\nimport type { InMemoryTaskStore } from '@mastra/server/a2a/store';\nimport type { MCPHttpTransportResult, MCPSseTransportResult } from '@mastra/server/handlers/mcp';\nimport { MastraServer as MastraServerBase, redactStreamChunk } from '@mastra/server/server-adapter';\nimport type { ServerRoute } from '@mastra/server/server-adapter';\nimport { toReqRes, toFetchResponse } from 'fetch-to-node';\nimport type { Context, HonoRequest, MiddlewareHandler } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { stream } from 'hono/streaming';\n\nimport { authenticationMiddleware, authorizationMiddleware } from './auth-middleware';\n\n// Export type definitions for Hono app configuration\nexport type HonoVariables = {\n mastra: Mastra;\n requestContext: RequestContext;\n tools: Record<string, Tool>;\n abortSignal: AbortSignal;\n taskStore: InMemoryTaskStore;\n customRouteAuthConfig?: Map<string, boolean>;\n playground?: boolean;\n isDev?: boolean;\n};\n\nexport type HonoBindings = {};\n\n/**\n * Generic handler function type compatible across Hono versions.\n * Uses a minimal signature that all Hono middleware handlers satisfy.\n */\ntype HonoRouteHandler = (...args: any[]) => any;\n\n/**\n * Minimal interface representing what MastraServer needs from a Hono app.\n * This allows any Hono app instance to be passed without strict generic matching,\n * avoiding the version mismatch issues that occur with Hono's strict generic types.\n */\nexport interface HonoApp {\n use(path: string, ...handlers: HonoRouteHandler[]): unknown;\n get(path: string, ...handlers: HonoRouteHandler[]): unknown;\n post(path: string, ...handlers: HonoRouteHandler[]): unknown;\n put(path: string, ...handlers: HonoRouteHandler[]): unknown;\n delete(path: string, ...handlers: HonoRouteHandler[]): unknown;\n patch(path: string, ...handlers: HonoRouteHandler[]): unknown;\n all(path: string, ...handlers: HonoRouteHandler[]): unknown;\n}\n\nexport class MastraServer extends MastraServerBase<HonoApp, HonoRequest, Context> {\n createContextMiddleware(): MiddlewareHandler {\n return async (c, next) => {\n // Parse request context from request body and add to context\n\n let bodyRequestContext: Record<string, any> | undefined;\n let paramsRequestContext: Record<string, any> | undefined;\n\n // Parse request context from request body (POST/PUT)\n if (c.req.method === 'POST' || c.req.method === 'PUT') {\n const contentType = c.req.header('content-type');\n if (contentType?.includes('application/json')) {\n try {\n const clonedReq = c.req.raw.clone();\n const body = (await clonedReq.json()) as { requestContext?: Record<string, any> };\n if (body.requestContext) {\n bodyRequestContext = body.requestContext;\n }\n } catch {\n // Body parsing failed, continue without body\n }\n }\n }\n\n // Parse request context from query params (GET)\n if (c.req.method === 'GET') {\n try {\n const encodedRequestContext = c.req.query('requestContext');\n if (encodedRequestContext) {\n // Try JSON first\n try {\n paramsRequestContext = JSON.parse(encodedRequestContext);\n } catch {\n // Fallback to base64(JSON)\n try {\n const json = Buffer.from(encodedRequestContext, 'base64').toString('utf-8');\n paramsRequestContext = JSON.parse(json);\n } catch {\n // ignore if still invalid\n }\n }\n }\n } catch {\n // ignore query parsing errors\n }\n }\n\n const requestContext = this.mergeRequestContext({ paramsRequestContext, bodyRequestContext });\n\n // Add relevant contexts to hono context\n c.set('requestContext', requestContext);\n c.set('mastra', this.mastra);\n c.set('tools', this.tools || {});\n c.set('taskStore', this.taskStore);\n c.set('playground', this.playground === true);\n c.set('isDev', this.isDev === true);\n c.set('abortSignal', c.req.raw.signal);\n c.set('customRouteAuthConfig', this.customRouteAuthConfig);\n\n return next();\n };\n }\n async stream(route: ServerRoute, res: Context, result: { fullStream: ReadableStream }): Promise<any> {\n res.header('Content-Type', 'text/plain');\n res.header('Transfer-Encoding', 'chunked');\n\n const streamFormat = route.streamFormat || 'stream';\n\n return stream(\n res,\n async stream => {\n const readableStream = result instanceof ReadableStream ? result : result.fullStream;\n const reader = readableStream.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n if (value) {\n // Optionally redact sensitive data (system prompts, tool definitions, API keys) before sending to the client\n const shouldRedact = this.streamOptions?.redact ?? true;\n const outputValue = shouldRedact ? redactStreamChunk(value) : value;\n if (streamFormat === 'sse') {\n await stream.write(`data: ${JSON.stringify(outputValue)}\\n\\n`);\n } else {\n await stream.write(JSON.stringify(outputValue) + '\\x1E');\n }\n }\n }\n\n await stream.write('data: [DONE]\\n\\n');\n } catch (error) {\n console.error(error);\n } finally {\n await stream.close();\n }\n },\n async err => {\n console.error(err);\n },\n );\n }\n\n async getParams(\n route: ServerRoute,\n request: HonoRequest,\n ): Promise<{ urlParams: Record<string, string>; queryParams: Record<string, string>; body: unknown }> {\n const urlParams = request.param();\n const queryParams = request.query();\n let body: unknown;\n if (route.method === 'POST' || route.method === 'PUT' || route.method === 'PATCH') {\n try {\n body = await request.json();\n } catch {}\n }\n return { urlParams, queryParams: queryParams as Record<string, string>, body };\n }\n\n async sendResponse(route: ServerRoute, response: Context, result: unknown): Promise<any> {\n if (route.responseType === 'json') {\n return response.json(result as any, 200);\n } else if (route.responseType === 'stream') {\n return this.stream(route, response, result as { fullStream: ReadableStream });\n } else if (route.responseType === 'datastream-response') {\n const fetchResponse = result as globalThis.Response;\n return fetchResponse;\n } else if (route.responseType === 'mcp-http') {\n // MCP Streamable HTTP transport\n const { server, httpPath } = result as MCPHttpTransportResult;\n const { req, res } = toReqRes(response.req.raw);\n\n try {\n await server.startHTTP({\n url: new URL(response.req.url),\n httpPath,\n req,\n res,\n });\n return await toFetchResponse(res);\n } catch {\n if (!res.headersSent) {\n res.writeHead(500, { 'Content-Type': 'application/json' });\n res.end(\n JSON.stringify({\n jsonrpc: '2.0',\n error: { code: -32603, message: 'Internal server error' },\n id: null,\n }),\n );\n return await toFetchResponse(res);\n }\n return await toFetchResponse(res);\n }\n } else if (route.responseType === 'mcp-sse') {\n // MCP SSE transport\n const { server, ssePath, messagePath } = result as MCPSseTransportResult;\n\n try {\n return await server.startHonoSSE({\n url: new URL(response.req.url),\n ssePath,\n messagePath,\n context: response,\n });\n } catch {\n return response.json({ error: 'Error handling MCP SSE request' }, 500);\n }\n } else {\n return response.status(500);\n }\n }\n\n async registerRoute(app: HonoApp, route: ServerRoute, { prefix }: { prefix?: string }): Promise<void> {\n // Determine if body limits should be applied\n const shouldApplyBodyLimit = this.bodyLimitOptions && ['POST', 'PUT', 'PATCH'].includes(route.method.toUpperCase());\n\n // Get the body size limit for this route (route-specific or default)\n const maxSize = route.maxBodySize ?? this.bodyLimitOptions?.maxSize;\n\n // Build middleware array\n const middlewares: MiddlewareHandler[] = [];\n\n if (shouldApplyBodyLimit && maxSize && this.bodyLimitOptions) {\n middlewares.push(\n bodyLimit({\n maxSize,\n onError: this.bodyLimitOptions.onError as any,\n }),\n );\n }\n\n app[route.method.toLowerCase() as 'get' | 'post' | 'put' | 'delete' | 'patch' | 'all'](\n `${prefix}${route.path}`,\n ...middlewares,\n async (c: Context) => {\n const params = await this.getParams(route, c.req);\n\n if (params.queryParams) {\n try {\n params.queryParams = await this.parseQueryParams(route, params.queryParams as Record<string, string>);\n } catch (error) {\n console.error('Error parsing query params', error);\n // Zod validation errors should return 400 Bad Request, not 500\n return c.json(\n {\n error: 'Invalid query parameters',\n details: error instanceof Error ? error.message : 'Unknown error',\n },\n 400,\n );\n }\n }\n\n if (params.body) {\n try {\n params.body = await this.parseBody(route, params.body);\n } catch (error) {\n console.error('Error parsing body:', error instanceof Error ? error.message : String(error));\n // Zod validation errors should return 400 Bad Request, not 500\n return c.json(\n {\n error: 'Invalid request body',\n details: error instanceof Error ? error.message : 'Unknown error',\n },\n 400,\n );\n }\n }\n\n const handlerParams = {\n ...params.urlParams,\n ...params.queryParams,\n ...(typeof params.body === 'object' ? params.body : {}),\n requestContext: c.get('requestContext'),\n mastra: this.mastra,\n tools: c.get('tools'),\n taskStore: c.get('taskStore'),\n abortSignal: c.get('abortSignal'),\n };\n\n try {\n const result = await route.handler(handlerParams);\n return this.sendResponse(route, c, result);\n } catch (error) {\n console.error('Error calling handler', error);\n // Check if it's an HTTPException or MastraError with a status code\n if (error && typeof error === 'object') {\n // Check for direct status property (HTTPException)\n if ('status' in error) {\n const status = (error as any).status;\n return c.json({ error: error instanceof Error ? error.message : 'Unknown error' }, status);\n }\n // Check for MastraError with status in details\n if ('details' in error && error.details && typeof error.details === 'object' && 'status' in error.details) {\n const status = (error.details as any).status;\n return c.json({ error: error instanceof Error ? error.message : 'Unknown error' }, status);\n }\n }\n return c.json({ error: error instanceof Error ? error.message : 'Unknown error' }, 500);\n }\n },\n );\n }\n\n registerContextMiddleware(): void {\n this.app.use('*', this.createContextMiddleware());\n }\n\n registerAuthMiddleware(): void {\n const authConfig = this.mastra.getServer()?.auth;\n if (!authConfig) {\n // No auth config, skip registration\n return;\n }\n\n this.app.use('*', authenticationMiddleware);\n this.app.use('*', authorizationMiddleware);\n }\n}\n","import { sValidator } from '@hono/standard-validator';\nimport { loadVendor as loadVendor$1, toJsonSchema } from '@standard-community/standard-json';\nimport { loadVendor as loadVendor$2, toOpenAPISchema } from '@standard-community/standard-openapi';\n\nconst uniqueSymbol = Symbol(\"openapi\");\nconst ALLOWED_METHODS = [\n \"GET\",\n \"PUT\",\n \"POST\",\n \"DELETE\",\n \"OPTIONS\",\n \"HEAD\",\n \"PATCH\",\n \"TRACE\"\n];\nconst toOpenAPIPath = (path) => path.split(\"/\").map((x) => {\n let tmp = x;\n if (tmp.startsWith(\":\")) {\n const match = tmp.match(/^:([^{?]+)(?:{(.+)})?(\\?)?$/);\n if (match) {\n const paramName = match[1];\n tmp = `{${paramName}}`;\n } else {\n tmp = tmp.slice(1, tmp.length);\n if (tmp.endsWith(\"?\")) tmp = tmp.slice(0, -1);\n tmp = `{${tmp}}`;\n }\n }\n return tmp;\n}).join(\"/\");\nconst capitalize = (word) => word.charAt(0).toUpperCase() + word.slice(1);\nconst generateOperationId = (route) => {\n let operationId = route.method.toLowerCase();\n if (route.path === \"/\") return `${operationId}Index`;\n for (const segment of route.path.split(\"/\")) {\n if (segment.charCodeAt(0) === 123) {\n operationId += `By${capitalize(segment.slice(1, -1))}`;\n } else {\n operationId += capitalize(segment);\n }\n }\n return operationId;\n};\nconst paramKey = (param) => \"$ref\" in param ? param.$ref : `${param.in} ${param.name}`;\nfunction mergeParameters(...params) {\n const merged = params.flatMap((x) => x ?? []).reduce((acc, param) => {\n acc.set(paramKey(param), param);\n return acc;\n }, /* @__PURE__ */ new Map());\n return Array.from(merged.values());\n}\nconst specsByPathContext = /* @__PURE__ */ new Map();\nfunction getPathContext(path) {\n const context = [];\n for (const [key, data] of specsByPathContext) {\n if (data && path.match(key)) {\n context.push(data);\n }\n }\n return context;\n}\nfunction clearSpecsContext() {\n specsByPathContext.clear();\n}\nfunction mergeSpecs(route, ...specs) {\n return specs.reduce(\n (prev, spec) => {\n if (!spec || !prev) return prev;\n for (const [key, value] of Object.entries(spec)) {\n if (value == null) continue;\n if (key in prev && (typeof value === \"object\" || typeof value === \"function\" && key === \"operationId\")) {\n if (Array.isArray(value)) {\n const values = [...prev[key] ?? [], ...value];\n if (key === \"tags\") {\n prev[key] = Array.from(new Set(values));\n } else if (key === \"parameters\") {\n prev[key] = mergeParameters(values);\n } else {\n prev[key] = values;\n }\n } else if (typeof value === \"function\") {\n prev[key] = value(route);\n } else {\n if (key === \"parameters\") {\n prev[key] = mergeParameters(prev[key], value);\n } else {\n prev[key] = {\n ...prev[key],\n ...value\n };\n }\n }\n } else {\n prev[key] = value;\n }\n }\n return prev;\n },\n {\n operationId: generateOperationId(route)\n }\n );\n}\nfunction registerSchemaPath({\n route,\n specs,\n paths\n}) {\n const path = toOpenAPIPath(route.path);\n const method = route.method.toLowerCase();\n if (method === \"all\") {\n if (!specs) return;\n if (specsByPathContext.has(path)) {\n const prev = specsByPathContext.get(path) ?? {};\n specsByPathContext.set(path, mergeSpecs(route, prev, specs));\n } else {\n specsByPathContext.set(path, specs);\n }\n } else {\n const pathContext = getPathContext(path);\n if (!(path in paths)) {\n paths[path] = {};\n }\n if (paths[path]) {\n paths[path][method] = mergeSpecs(\n route,\n ...pathContext,\n paths[path]?.[method],\n specs\n );\n }\n }\n}\nfunction removeExcludedPaths(paths, ctx) {\n const { exclude, excludeStaticFile } = ctx.options;\n const newPaths = {};\n const _exclude = Array.isArray(exclude) ? exclude : [exclude];\n for (const [key, value] of Object.entries(paths)) {\n if (value == null) continue;\n const isExplicitlyExcluded = _exclude.some((x) => {\n if (typeof x === \"string\") return key === x;\n return x.test(key);\n });\n if (isExplicitlyExcluded) continue;\n const isWildcardWithoutParameters = key.includes(\"*\") && !key.includes(\"{\");\n if (isWildcardWithoutParameters) continue;\n if (excludeStaticFile) {\n const hasPathParameters = key.includes(\"{\");\n const lastSegment = key.split(\"/\").pop() || \"\";\n const looksLikeStaticFile = lastSegment.includes(\".\");\n const shouldExcludeAsStaticFile = !hasPathParameters && looksLikeStaticFile;\n if (shouldExcludeAsStaticFile) continue;\n }\n for (const method of Object.keys(value)) {\n const schema = value[method];\n if (schema == null) continue;\n if (key.includes(\"{\")) {\n if (!schema.parameters) schema.parameters = [];\n const pathParameters = key.split(\"/\").filter(\n (x) => x.startsWith(\"{\") && !schema.parameters.find(\n (params) => params.in === \"path\" && params.name === x.slice(1, x.length - 1)\n )\n );\n for (const param of pathParameters) {\n const paramName = param.slice(1, param.length - 1);\n const index = schema.parameters.findIndex(\n (x) => {\n if (\"$ref\" in x) {\n const pos = x.$ref.split(\"/\").pop();\n if (pos) {\n const param2 = ctx.components.parameters?.[pos];\n if (param2 && !(\"$ref\" in param2)) {\n return param2.in === \"path\" && param2.name === paramName;\n }\n }\n return false;\n }\n return x.in === \"path\" && x.name === paramName;\n }\n );\n if (index === -1) {\n schema.parameters.push({\n schema: { type: \"string\" },\n in: \"path\",\n name: paramName,\n required: true\n });\n }\n }\n }\n if (!schema.responses) {\n schema.responses = {\n 200: {}\n };\n }\n }\n newPaths[key] = value;\n }\n return newPaths;\n}\n\nconst DEFAULT_OPTIONS = {\n documentation: {},\n excludeStaticFile: true,\n exclude: [],\n excludeMethods: [\"OPTIONS\"],\n excludeTags: []\n};\nfunction openAPIRouteHandler(hono, options) {\n let specs;\n return async (c) => {\n if (specs) return c.json(specs);\n specs = await generateSpecs(hono, options, c);\n return c.json(specs);\n };\n}\nasync function generateSpecs(hono, options = DEFAULT_OPTIONS, c) {\n const ctx = {\n components: {},\n // @ts-expect-error\n options: {\n ...DEFAULT_OPTIONS,\n ...options\n }\n };\n const _documentation = ctx.options.documentation ?? {};\n clearSpecsContext();\n const paths = await generatePaths(hono, ctx);\n for (const path in paths) {\n for (const method in paths[path]) {\n const isHidden = getHiddenValue({\n valueOrFunc: paths[path][method]?.hide,\n method,\n path,\n c\n });\n if (isHidden) {\n paths[path][method] = void 0;\n }\n }\n }\n const components = mergeComponentsObjects(\n _documentation.components,\n ctx.components\n );\n return {\n openapi: \"3.1.0\",\n ..._documentation,\n tags: _documentation.tags?.filter(\n (tag) => !ctx.options.excludeTags?.includes(tag?.name)\n ),\n info: {\n title: \"Hono Documentation\",\n description: \"Development documentation\",\n version: \"0.0.0\",\n ..._documentation.info\n },\n paths: {\n ...removeExcludedPaths(paths, ctx),\n ..._documentation.paths\n },\n components\n };\n}\nasync function generatePaths(hono, ctx) {\n const paths = {};\n for (const route of hono.routes) {\n const middlewareHandler = route.handler[uniqueSymbol];\n if (!middlewareHandler) {\n if (ctx.options.includeEmptyPaths) {\n registerSchemaPath({\n route,\n paths\n });\n }\n continue;\n }\n const routeMethod = route.method;\n if (routeMethod !== \"ALL\") {\n if (ctx.options.excludeMethods?.includes(routeMethod)) {\n continue;\n }\n if (!ALLOWED_METHODS.includes(routeMethod)) {\n continue;\n }\n }\n const defaultOptionsForThisMethod = ctx.options.defaultOptions?.[routeMethod];\n const { schema: routeSpecs, components = {} } = await getSpec(\n middlewareHandler,\n defaultOptionsForThisMethod\n );\n ctx.components = mergeComponentsObjects(ctx.components, components);\n registerSchemaPath({\n route,\n specs: routeSpecs,\n paths\n });\n }\n return paths;\n}\nfunction getHiddenValue(options) {\n const { valueOrFunc, c, method, path } = options;\n if (valueOrFunc != null) {\n if (typeof valueOrFunc === \"boolean\") {\n return valueOrFunc;\n }\n if (typeof valueOrFunc === \"function\") {\n return valueOrFunc({ c, method, path });\n }\n }\n return false;\n}\nasync function getSpec(middlewareHandler, defaultOptions) {\n if (\"spec\" in middlewareHandler) {\n let components = {};\n const tmp = {\n ...defaultOptions,\n ...middlewareHandler.spec,\n responses: {\n ...defaultOptions?.responses,\n ...middlewareHandler.spec.responses\n }\n };\n if (tmp.responses) {\n for (const key of Object.keys(tmp.responses)) {\n const response = tmp.responses[key];\n if (!response || !(\"content\" in response)) continue;\n for (const contentKey of Object.keys(response.content ?? {})) {\n const raw = response.content?.[contentKey];\n if (!raw) continue;\n if (raw.schema && \"toOpenAPISchema\" in raw.schema) {\n const result2 = await raw.schema.toOpenAPISchema();\n raw.schema = result2.schema;\n if (result2.components) {\n components = mergeComponentsObjects(\n components,\n result2.components\n );\n }\n }\n }\n }\n }\n return { schema: tmp, components };\n }\n const result = await middlewareHandler.toOpenAPISchema();\n const docs = defaultOptions ?? {};\n if (middlewareHandler.target === \"form\" || middlewareHandler.target === \"json\") {\n const media = middlewareHandler.options?.media ?? middlewareHandler.target === \"json\" ? \"application/json\" : \"multipart/form-data\";\n if (!docs.requestBody || !(\"content\" in docs.requestBody) || !docs.requestBody.content) {\n docs.requestBody = {\n content: {\n [media]: {\n schema: result.schema\n }\n }\n };\n } else {\n docs.requestBody.content[media] = {\n schema: result.schema\n };\n }\n } else {\n let parameters = [];\n if (\"$ref\" in result.schema) {\n const ref = result.schema.$ref;\n const pos = ref.split(\"/\").pop();\n if (pos && result.components?.schemas?.[pos]) {\n const schema = result.components.schemas[pos];\n const newParameters = generateParameters(\n middlewareHandler.target,\n schema\n )[0];\n if (!result.components.parameters) {\n result.components.parameters = {};\n }\n result.components.parameters[pos] = newParameters;\n delete result.components.schemas[pos];\n parameters.push({\n $ref: `#/components/parameters/${pos}`\n });\n }\n } else {\n parameters = generateParameters(middlewareHandler.target, result.schema);\n }\n docs.parameters = parameters;\n }\n return { schema: docs, components: result.components };\n}\nfunction generateParameters(target, schema) {\n const parameters = [];\n for (const [key, value] of Object.entries(schema.properties ?? {})) {\n const def = {\n in: target === \"param\" ? \"path\" : target,\n name: key,\n // @ts-expect-error\n schema: value\n };\n const isRequired = schema.required?.includes(key);\n if (isRequired) {\n def.required = true;\n }\n if (def.schema && \"description\" in def.schema && def.schema.description) {\n def.description = def.schema.description;\n def.schema.description = void 0;\n }\n parameters.push(def);\n }\n return parameters;\n}\nfunction mergeComponentsObjects(...components) {\n return components.reduce(\n (prev, component, index) => {\n if (component == null || index === 0) return prev;\n if (prev.schemas && Object.keys(prev.schemas).length > 0 || component.schemas && Object.keys(component.schemas).length > 0) {\n prev.schemas = {\n ...prev.schemas,\n ...component.schemas\n };\n }\n if (prev.parameters && Object.keys(prev.parameters).length > 0 || component.parameters && Object.keys(component.parameters).length > 0) {\n prev.parameters = {\n ...prev.parameters,\n ...component.parameters\n };\n }\n return prev;\n },\n components[0] ?? {}\n );\n}\n\nfunction loadVendor(vendor, fn) {\n if (fn.toJSONSchema) {\n loadVendor$1(vendor, fn.toJSONSchema);\n }\n if (fn.toOpenAPISchema) {\n loadVendor$2(vendor, fn.toOpenAPISchema);\n }\n}\nfunction resolver(schema, userDefinedOptions) {\n return {\n vendor: schema[\"~standard\"].vendor,\n validate: schema[\"~standard\"].validate,\n toJSONSchema: (customOptions) => toJsonSchema(schema, { ...userDefinedOptions, ...customOptions }),\n toOpenAPISchema: (customOptions) => toOpenAPISchema(schema, { ...userDefinedOptions, ...customOptions })\n };\n}\nfunction validator(target, schema, hook, options) {\n const middleware = sValidator(target, schema, hook);\n return Object.assign(middleware, {\n [uniqueSymbol]: {\n target,\n ...resolver(schema, options),\n options\n }\n });\n}\nfunction describeRoute(spec) {\n const middleware = async (_c, next) => {\n await next();\n };\n return Object.assign(middleware, {\n [uniqueSymbol]: {\n spec\n }\n });\n}\nfunction describeResponse(handler, responses, options) {\n const _responses = Object.entries(responses).reduce(\n (acc, [statusCode, response]) => {\n if (response.content) {\n const content = Object.entries(response.content).reduce(\n (contentAcc, [mediaType, media]) => {\n if (media.vSchema) {\n const { vSchema, ...rest } = media;\n contentAcc[mediaType] = {\n ...rest,\n schema: resolver(vSchema, options)\n };\n } else {\n contentAcc[mediaType] = media;\n }\n return contentAcc;\n },\n {}\n );\n acc[statusCode] = { ...response, content };\n } else {\n acc[statusCode] = response;\n }\n return acc;\n },\n {}\n );\n return Object.assign(handler, {\n [uniqueSymbol]: {\n spec: { responses: _responses }\n }\n });\n}\n\nexport { ALLOWED_METHODS, clearSpecsContext, describeResponse, describeRoute, generateSpecs, loadVendor, openAPIRouteHandler, registerSchemaPath, removeExcludedPaths, resolver, uniqueSymbol, validator };\n","import type { Context } from 'hono';\n\nconst clients = new Set<ReadableStreamDefaultController>();\nlet hotReloadDisabled = false;\n\nexport function handleClientsRefresh(c: Context): Response {\n const stream = new ReadableStream({\n start(controller) {\n clients.add(controller);\n controller.enqueue('data: connected\\n\\n');\n\n c.req.raw.signal.addEventListener('abort', () => {\n clients.delete(controller);\n });\n },\n });\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n 'Cache-Control': 'no-cache',\n Connection: 'keep-alive',\n 'Access-Control-Allow-Origin': '*',\n },\n });\n}\n\nexport function handleTriggerClientsRefresh(c: Context) {\n clients.forEach(controller => {\n try {\n controller.enqueue('data: refresh\\n\\n');\n } catch {\n clients.delete(controller);\n }\n });\n return c.json({ success: true, clients: clients.size });\n}\n\n// Functions to control hot reload during template installation\nexport function disableHotReload() {\n hotReloadDisabled = true;\n console.info('🔒 Hot reload disabled for template installation');\n}\n\nexport function enableHotReload() {\n hotReloadDisabled = false;\n console.info('🔓 Hot reload re-enabled after template installation');\n}\n\nexport function isHotReloadDisabled(): boolean {\n return hotReloadDisabled;\n}\n","import type { Context } from 'hono';\nimport { HTTPException } from 'hono/http-exception';\nimport type { ContentfulStatusCode } from 'hono/utils/http-status';\n\nimport type { ApiError } from '../types';\n\n// Helper to handle errors consistently\nexport function handleError(error: unknown, defaultMessage: string): Promise<Response> {\n const apiError = error as ApiError;\n throw new HTTPException((apiError.status || 500) as ContentfulStatusCode, {\n message: apiError.message || defaultMessage,\n cause: apiError.cause,\n });\n}\nexport function errorHandler(err: Error, c: Context, isDev?: boolean): Response {\n if (err instanceof HTTPException) {\n if (isDev) {\n return c.json({ error: err.message, cause: err.cause, stack: err.stack }, err.status);\n }\n return c.json({ error: err.message }, err.status);\n }\n\n c.get('mastra').getLogger().error(err);\n return c.json({ error: 'Internal Server Error' }, 500);\n}\n","import type { Context } from 'hono';\n\n// Health check handler\nexport async function healthHandler(c: Context) {\n return c.json({ success: true }, 200);\n}\n","import type { Mastra } from '@mastra/core/mastra';\nimport type { Context } from 'hono';\n\nimport { handleError } from './error';\n\nexport async function restartAllActiveWorkflowRunsHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n void mastra.restartAllActiveWorkflowRuns();\n\n return c.json({ message: 'Restarting all active workflow runs...' });\n } catch (error) {\n return handleError(error, 'Error restarting active workflow runs');\n }\n}\n","export const html = `\n<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>Welcome to Mastra</title>\n <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/inter-ui/3.19.3/inter.min.css\" />\n <style>\n body {\n margin: 0;\n padding: 0;\n background-color: #0d0d0d;\n color: #ffffff;\n font-family:\n 'Inter',\n -apple-system,\n BlinkMacSystemFont,\n system-ui,\n sans-serif;\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n }\n\n main {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 2rem;\n text-align: center;\n }\n\n h1 {\n font-size: 4rem;\n font-weight: 600;\n margin: 0 0 1rem 0;\n background: linear-gradient(to right, #fff, #ccc);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n line-height: 1.2;\n }\n\n .subtitle {\n color: #9ca3af;\n font-size: 1.25rem;\n max-width: 600px;\n margin: 0 auto 3rem auto;\n line-height: 1.6;\n }\n\n .docs-link {\n background-color: #1a1a1a;\n padding: 1rem 2rem;\n border-radius: 0.5rem;\n display: flex;\n align-items: center;\n gap: 1rem;\n font-family: monospace;\n font-size: 1rem;\n color: #ffffff;\n text-decoration: none;\n transition: background-color 0.2s;\n }\n\n .docs-link:hover {\n background-color: #252525;\n }\n\n .arrow-icon {\n transition: transform 0.2s;\n }\n\n .docs-link:hover .arrow-icon {\n transform: translateX(4px);\n }\n </style>\n </head>\n <body>\n <main>\n <h1>Welcome to Mastra</h1>\n <p class=\"subtitle\">\n Prototype and productionize AI features with a modern JS/TS stack.\n </p>\n\n <a href=\"https://mastra.ai/docs\" class=\"docs-link\">\n Browse the docs\n <svg\n class=\"arrow-icon\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"M5 12h14M12 5l7 7-7 7\" />\n </svg>\n </a>\n </main>\n </body>\n</html>\n`;\n","import { readFile } from 'node:fs/promises';\nimport * as https from 'node:https';\nimport { join } from 'node:path/posix';\nimport { serve } from '@hono/node-server';\nimport { serveStatic } from '@hono/node-server/serve-static';\nimport { swaggerUI } from '@hono/swagger-ui';\nimport type { Mastra } from '@mastra/core/mastra';\nimport { Tool } from '@mastra/core/tools';\nimport { MastraServer } from '@mastra/hono';\nimport type { HonoBindings, HonoVariables } from '@mastra/hono';\nimport { InMemoryTaskStore } from '@mastra/server/a2a/store';\nimport type { Context, MiddlewareHandler } from 'hono';\nimport { Hono } from 'hono';\nimport { cors } from 'hono/cors';\nimport { logger } from 'hono/logger';\nimport { timeout } from 'hono/timeout';\nimport { describeRoute } from 'hono-openapi';\nimport { handleClientsRefresh, handleTriggerClientsRefresh, isHotReloadDisabled } from './handlers/client';\nimport { errorHandler } from './handlers/error';\nimport { healthHandler } from './handlers/health';\nimport { restartAllActiveWorkflowRunsHandler } from './handlers/restart-active-runs';\nimport type { ServerBundleOptions } from './types';\nimport { html } from './welcome.js';\n\n// Use adapter type definitions\ntype Bindings = HonoBindings;\n\ntype Variables = HonoVariables & {\n clients: Set<{ controller: ReadableStreamDefaultController }>;\n};\n\nexport function getToolExports(tools: Record<string, Function>[]) {\n try {\n return tools.reduce((acc, toolModule) => {\n Object.entries(toolModule).forEach(([key, tool]) => {\n if (tool instanceof Tool) {\n acc[key] = tool;\n }\n });\n return acc;\n }, {});\n } catch (err: any) {\n console.error(\n `Failed to import tools\nreason: ${err.message}\n${err.stack.split('\\n').slice(1).join('\\n')}\n `,\n err,\n );\n }\n}\n\nexport async function createHonoServer(\n mastra: Mastra,\n options: ServerBundleOptions = {\n tools: {},\n },\n) {\n // Create typed Hono app\n const app = new Hono<{ Bindings: Bindings; Variables: Variables }>();\n const server = mastra.getServer();\n const a2aTaskStore = new InMemoryTaskStore();\n const routes = server?.apiRoutes;\n\n // Store custom route auth configurations\n const customRouteAuthConfig = new Map<string, boolean>();\n\n if (routes) {\n for (const route of routes) {\n // By default, routes require authentication unless explicitly set to false\n const requiresAuth = route.requiresAuth !== false;\n const routeKey = `${route.method}:${route.path}`;\n customRouteAuthConfig.set(routeKey, requiresAuth);\n }\n }\n\n app.onError((err, c) => errorHandler(err, c, options.isDev));\n\n // Define body limit options\n const bodyLimitOptions = {\n maxSize: server?.bodySizeLimit ?? 4.5 * 1024 * 1024, // 4.5 MB,\n onError: () => ({ error: 'Request body too large' }),\n };\n\n // Create server adapter with all configuration\n const honoServerAdapter = new MastraServer({\n app,\n mastra,\n tools: options.tools,\n taskStore: a2aTaskStore,\n playground: options.playground,\n isDev: options.isDev,\n bodyLimitOptions,\n openapiPath: '/openapi.json',\n customRouteAuthConfig,\n });\n\n // Register context middleware FIRST - this sets mastra, requestContext, tools, taskStore in context\n // Cast needed due to Hono type variance - safe because registerContextMiddleware is generic\n honoServerAdapter.registerContextMiddleware();\n\n // Apply custom server middleware from Mastra instance\n const serverMiddleware = mastra.getServerMiddleware?.();\n\n if (serverMiddleware && serverMiddleware.length > 0) {\n for (const m of serverMiddleware) {\n app.use(m.path, m.handler);\n }\n }\n\n //Global cors config\n if (server?.cors === false) {\n app.use('*', timeout(server?.timeout ?? 3 * 60 * 1000));\n } else {\n const corsConfig = {\n origin: '*',\n allowMethods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'],\n credentials: false,\n maxAge: 3600,\n ...server?.cors,\n allowHeaders: ['Content-Type', 'Authorization', 'x-mastra-client-type', ...(server?.cors?.allowHeaders ?? [])],\n exposeHeaders: ['Content-Length', 'X-Requested-With', ...(server?.cors?.exposeHeaders ?? [])],\n };\n app.use('*', timeout(server?.timeout ?? 3 * 60 * 1000), cors(corsConfig));\n }\n\n // Health check endpoint (before auth middleware so it's publicly accessible)\n app.get(\n '/health',\n describeRoute({\n description: 'Health check endpoint',\n tags: ['system'],\n responses: {\n 200: {\n description: 'Service is healthy',\n },\n },\n }),\n healthHandler,\n );\n\n // Register auth middleware (authentication and authorization)\n // This is handled by the server adapter now\n honoServerAdapter.registerAuthMiddleware();\n\n if (server?.middleware) {\n const normalizedMiddlewares = Array.isArray(server.middleware) ? server.middleware : [server.middleware];\n const middlewares = normalizedMiddlewares.map(middleware => {\n if (typeof middleware === 'function') {\n return {\n path: '*',\n handler: middleware,\n };\n }\n\n return middleware;\n });\n\n for (const middleware of middlewares) {\n app.use(middleware.path, middleware.handler);\n }\n }\n\n if (routes) {\n for (const route of routes) {\n const middlewares: MiddlewareHandler[] = [];\n\n if (route.middleware) {\n middlewares.push(...(Array.isArray(route.middleware) ? route.middleware : [route.middleware]));\n }\n if (route.openapi) {\n middlewares.push(describeRoute(route.openapi));\n }\n\n const handler = 'handler' in route ? route.handler : await route.createHandler({ mastra });\n\n if (route.method === 'GET') {\n app.get(route.path, ...middlewares, handler);\n } else if (route.method === 'POST') {\n app.post(route.path, ...middlewares, handler);\n } else if (route.method === 'PUT') {\n app.put(route.path, ...middlewares, handler);\n } else if (route.method === 'DELETE') {\n app.delete(route.path, ...middlewares, handler);\n } else if (route.method === 'PATCH') {\n app.patch(route.path, ...middlewares, handler);\n } else if (route.method === 'ALL') {\n app.all(route.path, ...middlewares, handler);\n }\n }\n }\n\n if (server?.build?.apiReqLogs) {\n app.use(logger());\n }\n\n // Register adapter routes (adapter was created earlier with configuration)\n // Cast needed due to Hono type variance - safe because registerRoutes is generic\n await honoServerAdapter.registerRoutes();\n\n if (options?.isDev || server?.build?.swaggerUI) {\n app.get(\n '/swagger-ui',\n describeRoute({\n hide: true,\n }),\n swaggerUI({ url: '/openapi.json' }),\n );\n }\n\n if (options?.isDev) {\n app.post(\n '/__restart-active-workflow-runs',\n describeRoute({\n hide: true,\n }),\n restartAllActiveWorkflowRunsHandler,\n );\n }\n\n if (options?.playground) {\n // SSE endpoint for refresh notifications\n app.get(\n '/refresh-events',\n describeRoute({\n hide: true,\n }),\n handleClientsRefresh,\n );\n\n // Trigger refresh for all clients\n app.post(\n '/__refresh',\n describeRoute({\n hide: true,\n }),\n handleTriggerClientsRefresh,\n );\n\n // Check hot reload status\n app.get(\n '/__hot-reload-status',\n describeRoute({\n hide: true,\n }),\n (c: Context) => {\n return c.json({\n disabled: isHotReloadDisabled(),\n timestamp: new Date().toISOString(),\n });\n },\n );\n // Playground routes - these should come after API routes\n // Serve assets with specific MIME types\n app.use('/assets/*', async (c, next) => {\n const path = c.req.path;\n if (path.endsWith('.js')) {\n c.header('Content-Type', 'application/javascript');\n } else if (path.endsWith('.css')) {\n c.header('Content-Type', 'text/css');\n }\n await next();\n });\n\n // Serve static assets from playground directory\n app.use(\n '/assets/*',\n serveStatic({\n root: './playground/assets',\n }),\n );\n }\n\n // Dynamic HTML handler - this must come before static file serving\n app.get('*', async (c, next) => {\n // Skip if it's an API route\n if (\n c.req.path.startsWith('/api/') ||\n c.req.path.startsWith('/swagger-ui') ||\n c.req.path.startsWith('/openapi.json')\n ) {\n return await next();\n }\n\n // Skip if it's an asset file (has extension other than .html)\n const path = c.req.path;\n if (path.includes('.') && !path.endsWith('.html')) {\n return await next();\n }\n\n if (options?.playground) {\n // For HTML routes, serve index.html with dynamic replacements\n let indexHtml = await readFile(join(process.cwd(), './playground/index.html'), 'utf-8');\n\n // Inject the server port information\n const serverOptions = mastra.getServer();\n const port = serverOptions?.port ?? (Number(process.env.PORT) || 4111);\n const hideCloudCta = process.env.MASTRA_HIDE_CLOUD_CTA === 'true';\n const host = serverOptions?.host ?? 'localhost';\n\n indexHtml = indexHtml.replace(`'%%MASTRA_SERVER_HOST%%'`, `'${host}'`);\n indexHtml = indexHtml.replace(`'%%MASTRA_SERVER_PORT%%'`, `'${port}'`);\n indexHtml = indexHtml.replace(`'%%MASTRA_HIDE_CLOUD_CTA%%'`, `'${hideCloudCta}'`);\n\n return c.newResponse(indexHtml, 200, { 'Content-Type': 'text/html' });\n }\n\n return c.newResponse(html, 200, { 'Content-Type': 'text/html' });\n });\n\n if (options?.playground) {\n // Serve extra static files from playground directory (this comes after HTML handler)\n app.use(\n '*',\n serveStatic({\n root: './playground',\n }),\n );\n }\n\n return app;\n}\n\nexport async function createNodeServer(mastra: Mastra, options: ServerBundleOptions = { tools: {} }) {\n const app = await createHonoServer(mastra, options);\n const serverOptions = mastra.getServer();\n\n const key =\n serverOptions?.https?.key ??\n (process.env.MASTRA_HTTPS_KEY ? Buffer.from(process.env.MASTRA_HTTPS_KEY, 'base64') : undefined);\n const cert =\n serverOptions?.https?.cert ??\n (process.env.MASTRA_HTTPS_CERT ? Buffer.from(process.env.MASTRA_HTTPS_CERT, 'base64') : undefined);\n const isHttpsEnabled = Boolean(key && cert);\n\n const host = serverOptions?.host ?? 'localhost';\n const port = serverOptions?.port ?? (Number(process.env.PORT) || 4111);\n const protocol = isHttpsEnabled ? 'https' : 'http';\n\n const server = serve(\n {\n fetch: app.fetch,\n port,\n hostname: serverOptions?.host,\n ...(isHttpsEnabled\n ? {\n createServer: https.createServer,\n serverOptions: {\n key,\n cert,\n },\n }\n : {}),\n },\n () => {\n const logger = mastra.getLogger();\n logger.info(` Mastra API running on port ${protocol}://${host}:${port}/api`);\n if (options?.playground) {\n const studioUrl = `${protocol}://${host}:${port}`;\n logger.info(`👨‍💻 Studio available at ${studioUrl}`);\n }\n\n if (process.send) {\n process.send({\n type: 'server-ready',\n port,\n host,\n });\n }\n },\n );\n\n await mastra.startEventEngine();\n\n return server;\n}\n"]}