@jeffreycao/copilot-api 1.8.0 → 1.9.0-beta.0

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 (49) hide show
  1. package/dist/GptEncoding-TiCgsNrQ.js +887 -0
  2. package/dist/GptEncoding-TiCgsNrQ.js.map +1 -0
  3. package/dist/{auth-C9jquVrb.js → auth-DCB53u05.js} +6 -6
  4. package/dist/{auth-C9jquVrb.js.map → auth-DCB53u05.js.map} +1 -1
  5. package/dist/{check-usage-Ct5MACB6.js → check-usage-iKUAIfc_.js} +6 -6
  6. package/dist/{check-usage-Ct5MACB6.js.map → check-usage-iKUAIfc_.js.map} +1 -1
  7. package/dist/chunk-BZ41Y9eH.js +39 -0
  8. package/dist/cl100k_base-kiDWemr-.js +101375 -0
  9. package/dist/cl100k_base-kiDWemr-.js.map +1 -0
  10. package/dist/{config-BQvWqYh_.js → config-D3dkAXQE.js} +3 -3
  11. package/dist/{config-BQvWqYh_.js.map → config-D3dkAXQE.js.map} +1 -1
  12. package/dist/{debug-DcC7ZPH0.js → debug-CUx-7_jF.js} +4 -4
  13. package/dist/{debug-DcC7ZPH0.js.map → debug-CUx-7_jF.js.map} +1 -1
  14. package/dist/dist-B3jIqeb6.js +961 -0
  15. package/dist/dist-B3jIqeb6.js.map +1 -0
  16. package/dist/dist-CSEoNgAt.js +334 -0
  17. package/dist/dist-CSEoNgAt.js.map +1 -0
  18. package/dist/main.js +26 -5
  19. package/dist/main.js.map +1 -1
  20. package/dist/o200k_base-BlrOP1Jc.js +204726 -0
  21. package/dist/o200k_base-BlrOP1Jc.js.map +1 -0
  22. package/dist/p50k_base-DA6KYT1Z.js +11 -0
  23. package/dist/p50k_base-DA6KYT1Z.js.map +1 -0
  24. package/dist/p50k_base-tS38LhIO.js +50483 -0
  25. package/dist/p50k_base-tS38LhIO.js.map +1 -0
  26. package/dist/p50k_edit-BlA1HcF4.js +11 -0
  27. package/dist/p50k_edit-BlA1HcF4.js.map +1 -0
  28. package/dist/{paths-Cla6y5eD.js → paths-DvrimVju.js} +2 -2
  29. package/dist/{paths-Cla6y5eD.js.map → paths-DvrimVju.js.map} +1 -1
  30. package/dist/prompt-CyV2d7YW.js +850 -0
  31. package/dist/prompt-CyV2d7YW.js.map +1 -0
  32. package/dist/r50k_base-CaCWe6-8.js +50466 -0
  33. package/dist/r50k_base-CaCWe6-8.js.map +1 -0
  34. package/dist/registry-B_2v83L7.js +797 -0
  35. package/dist/registry-B_2v83L7.js.map +1 -0
  36. package/dist/{server-CsVIHpFX.js → server-BGqhE4N_.js} +1647 -45
  37. package/dist/server-BGqhE4N_.js.map +1 -0
  38. package/dist/start-Cxl5pgll.js +27379 -0
  39. package/dist/start-Cxl5pgll.js.map +1 -0
  40. package/dist/{token-D1pIdFn1.js → token-BCdEIfN_.js} +12 -6
  41. package/dist/token-BCdEIfN_.js.map +1 -0
  42. package/dist/{utils-BOfWR1uT.js → utils-DXuuBUT_.js} +14 -6
  43. package/dist/utils-DXuuBUT_.js.map +1 -0
  44. package/package.json +1 -1
  45. package/dist/server-CsVIHpFX.js.map +0 -1
  46. package/dist/start-BpU8ZccW.js +0 -268
  47. package/dist/start-BpU8ZccW.js.map +0 -1
  48. package/dist/token-D1pIdFn1.js.map +0 -1
  49. package/dist/utils-BOfWR1uT.js.map +0 -1
@@ -1,16 +1,1368 @@
1
- import { PATHS } from "./paths-Cla6y5eD.js";
2
- import { COMPACT_AUTO_CONTINUE, COMPACT_REQUEST, HTTPError, cacheModels, compactAutoContinuePromptStarts, compactMessageSections, compactSummaryPromptStart, compactSystemPromptStarts, compactTextOnlyGuard, copilotBaseUrl, copilotHeaders, forwardError, generateRequestIdFromPayload, getCopilotUsage, getRootSessionId, getUUID, isNullish, parseUserIdMetadata, prepareForCompact, prepareInteractionHeaders, prepareMessageProxyHeaders, requestContext, resolveTraceId, sleep, state } from "./utils-BOfWR1uT.js";
3
- import { getAnthropicApiKey, getClaudeTokenMultiplier, getConfig, getExtraPromptForModel, getProviderConfig, getReasoningEffortForModel, getSmallModel, isMessagesApiEnabled, isResponsesApiContextManagementModel, isResponsesApiWebSearchEnabled } from "./config-BQvWqYh_.js";
4
- import consola from "consola";
1
+ import { consola } from "./dist-B3jIqeb6.js";
2
+ import { PATHS } from "./paths-DvrimVju.js";
3
+ import { COMPACT_AUTO_CONTINUE, COMPACT_REQUEST, HTTPError, cacheModels, compactAutoContinuePromptStarts, compactMessageSections, compactSummaryPromptStart, compactSystemPromptStarts, compactTextOnlyGuard, copilotBaseUrl, copilotHeaders, forwardError, generateRequestIdFromPayload, getCopilotUsage, getRootSessionId, getUUID, isNullish, parseUserIdMetadata, prepareForCompact, prepareInteractionHeaders, prepareMessageProxyHeaders, requestContext, resolveTraceId, sleep, state } from "./utils-DXuuBUT_.js";
4
+ import { getAnthropicApiKey, getClaudeTokenMultiplier, getConfig, getExtraPromptForModel, getProviderConfig, getReasoningEffortForModel, getSmallModel, isMessagesApiEnabled, isResponsesApiContextManagementModel, isResponsesApiWebSearchEnabled } from "./config-D3dkAXQE.js";
5
+ import util from "node:util";
5
6
  import path from "node:path";
6
- import { Hono } from "hono";
7
- import { cors } from "hono/cors";
8
- import { logger } from "hono/logger";
9
7
  import fs, { readFileSync } from "node:fs";
10
- import { streamSSE } from "hono/streaming";
11
- import util from "node:util";
12
- import { events } from "fetch-event-stream";
13
8
 
9
+ //#region node_modules/hono/dist/compose.js
10
+ var compose = (middleware, onError, onNotFound) => {
11
+ return (context, next) => {
12
+ let index = -1;
13
+ return dispatch(0);
14
+ async function dispatch(i) {
15
+ if (i <= index) throw new Error("next() called multiple times");
16
+ index = i;
17
+ let res;
18
+ let isError = false;
19
+ let handler;
20
+ if (middleware[i]) {
21
+ handler = middleware[i][0][0];
22
+ context.req.routeIndex = i;
23
+ } else handler = i === middleware.length && next || void 0;
24
+ if (handler) try {
25
+ res = await handler(context, () => dispatch(i + 1));
26
+ } catch (err) {
27
+ if (err instanceof Error && onError) {
28
+ context.error = err;
29
+ res = await onError(err, context);
30
+ isError = true;
31
+ } else throw err;
32
+ }
33
+ else if (context.finalized === false && onNotFound) res = await onNotFound(context);
34
+ if (res && (context.finalized === false || isError)) context.res = res;
35
+ return context;
36
+ }
37
+ };
38
+ };
39
+
40
+ //#endregion
41
+ //#region node_modules/hono/dist/request/constants.js
42
+ var GET_MATCH_RESULT = Symbol();
43
+
44
+ //#endregion
45
+ //#region node_modules/hono/dist/utils/body.js
46
+ var parseBody = async (request, options = /* @__PURE__ */ Object.create(null)) => {
47
+ const { all = false, dot = false } = options;
48
+ const contentType = (request instanceof HonoRequest ? request.raw.headers : request.headers).get("Content-Type");
49
+ if (contentType?.startsWith("multipart/form-data") || contentType?.startsWith("application/x-www-form-urlencoded")) return parseFormData(request, {
50
+ all,
51
+ dot
52
+ });
53
+ return {};
54
+ };
55
+ async function parseFormData(request, options) {
56
+ const formData = await request.formData();
57
+ if (formData) return convertFormDataToBodyData(formData, options);
58
+ return {};
59
+ }
60
+ function convertFormDataToBodyData(formData, options) {
61
+ const form = /* @__PURE__ */ Object.create(null);
62
+ formData.forEach((value, key) => {
63
+ if (!(options.all || key.endsWith("[]"))) form[key] = value;
64
+ else handleParsingAllValues(form, key, value);
65
+ });
66
+ if (options.dot) Object.entries(form).forEach(([key, value]) => {
67
+ if (key.includes(".")) {
68
+ handleParsingNestedValues(form, key, value);
69
+ delete form[key];
70
+ }
71
+ });
72
+ return form;
73
+ }
74
+ var handleParsingAllValues = (form, key, value) => {
75
+ if (form[key] !== void 0) if (Array.isArray(form[key])) form[key].push(value);
76
+ else form[key] = [form[key], value];
77
+ else if (!key.endsWith("[]")) form[key] = value;
78
+ else form[key] = [value];
79
+ };
80
+ var handleParsingNestedValues = (form, key, value) => {
81
+ let nestedForm = form;
82
+ const keys = key.split(".");
83
+ keys.forEach((key2, index) => {
84
+ if (index === keys.length - 1) nestedForm[key2] = value;
85
+ else {
86
+ if (!nestedForm[key2] || typeof nestedForm[key2] !== "object" || Array.isArray(nestedForm[key2]) || nestedForm[key2] instanceof File) nestedForm[key2] = /* @__PURE__ */ Object.create(null);
87
+ nestedForm = nestedForm[key2];
88
+ }
89
+ });
90
+ };
91
+
92
+ //#endregion
93
+ //#region node_modules/hono/dist/utils/url.js
94
+ var splitPath = (path$1) => {
95
+ const paths = path$1.split("/");
96
+ if (paths[0] === "") paths.shift();
97
+ return paths;
98
+ };
99
+ var splitRoutingPath = (routePath) => {
100
+ const { groups, path: path$1 } = extractGroupsFromPath(routePath);
101
+ const paths = splitPath(path$1);
102
+ return replaceGroupMarks(paths, groups);
103
+ };
104
+ var extractGroupsFromPath = (path$1) => {
105
+ const groups = [];
106
+ path$1 = path$1.replace(/\{[^}]+\}/g, (match, index) => {
107
+ const mark = `@${index}`;
108
+ groups.push([mark, match]);
109
+ return mark;
110
+ });
111
+ return {
112
+ groups,
113
+ path: path$1
114
+ };
115
+ };
116
+ var replaceGroupMarks = (paths, groups) => {
117
+ for (let i = groups.length - 1; i >= 0; i--) {
118
+ const [mark] = groups[i];
119
+ for (let j = paths.length - 1; j >= 0; j--) if (paths[j].includes(mark)) {
120
+ paths[j] = paths[j].replace(mark, groups[i][1]);
121
+ break;
122
+ }
123
+ }
124
+ return paths;
125
+ };
126
+ var patternCache = {};
127
+ var getPattern = (label, next) => {
128
+ if (label === "*") return "*";
129
+ const match = label.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);
130
+ if (match) {
131
+ const cacheKey = `${label}#${next}`;
132
+ if (!patternCache[cacheKey]) if (match[2]) patternCache[cacheKey] = next && next[0] !== ":" && next[0] !== "*" ? [
133
+ cacheKey,
134
+ match[1],
135
+ /* @__PURE__ */ new RegExp(`^${match[2]}(?=/${next})`)
136
+ ] : [
137
+ label,
138
+ match[1],
139
+ /* @__PURE__ */ new RegExp(`^${match[2]}$`)
140
+ ];
141
+ else patternCache[cacheKey] = [
142
+ label,
143
+ match[1],
144
+ true
145
+ ];
146
+ return patternCache[cacheKey];
147
+ }
148
+ return null;
149
+ };
150
+ var tryDecode = (str, decoder) => {
151
+ try {
152
+ return decoder(str);
153
+ } catch {
154
+ return str.replace(/(?:%[0-9A-Fa-f]{2})+/g, (match) => {
155
+ try {
156
+ return decoder(match);
157
+ } catch {
158
+ return match;
159
+ }
160
+ });
161
+ }
162
+ };
163
+ var tryDecodeURI = (str) => tryDecode(str, decodeURI);
164
+ var getPath = (request) => {
165
+ const url = request.url;
166
+ const start = url.indexOf("/", url.indexOf(":") + 4);
167
+ let i = start;
168
+ for (; i < url.length; i++) {
169
+ const charCode = url.charCodeAt(i);
170
+ if (charCode === 37) {
171
+ const queryIndex = url.indexOf("?", i);
172
+ const path$1 = url.slice(start, queryIndex === -1 ? void 0 : queryIndex);
173
+ return tryDecodeURI(path$1.includes("%25") ? path$1.replace(/%25/g, "%2525") : path$1);
174
+ } else if (charCode === 63) break;
175
+ }
176
+ return url.slice(start, i);
177
+ };
178
+ var getPathNoStrict = (request) => {
179
+ const result = getPath(request);
180
+ return result.length > 1 && result.at(-1) === "/" ? result.slice(0, -1) : result;
181
+ };
182
+ var mergePath = (base, sub, ...rest) => {
183
+ if (rest.length) sub = mergePath(sub, ...rest);
184
+ return `${base?.[0] === "/" ? "" : "/"}${base}${sub === "/" ? "" : `${base?.at(-1) === "/" ? "" : "/"}${sub?.[0] === "/" ? sub.slice(1) : sub}`}`;
185
+ };
186
+ var checkOptionalParameter = (path$1) => {
187
+ if (path$1.charCodeAt(path$1.length - 1) !== 63 || !path$1.includes(":")) return null;
188
+ const segments = path$1.split("/");
189
+ const results = [];
190
+ let basePath = "";
191
+ segments.forEach((segment) => {
192
+ if (segment !== "" && !/\:/.test(segment)) basePath += "/" + segment;
193
+ else if (/\:/.test(segment)) if (/\?/.test(segment)) {
194
+ if (results.length === 0 && basePath === "") results.push("/");
195
+ else results.push(basePath);
196
+ const optionalSegment = segment.replace("?", "");
197
+ basePath += "/" + optionalSegment;
198
+ results.push(basePath);
199
+ } else basePath += "/" + segment;
200
+ });
201
+ return results.filter((v, i, a) => a.indexOf(v) === i);
202
+ };
203
+ var _decodeURI = (value) => {
204
+ if (!/[%+]/.test(value)) return value;
205
+ if (value.indexOf("+") !== -1) value = value.replace(/\+/g, " ");
206
+ return value.indexOf("%") !== -1 ? tryDecode(value, decodeURIComponent_) : value;
207
+ };
208
+ var _getQueryParam = (url, key, multiple) => {
209
+ let encoded;
210
+ if (!multiple && key && !/[%+]/.test(key)) {
211
+ let keyIndex2 = url.indexOf(`?${key}`, 8);
212
+ if (keyIndex2 === -1) keyIndex2 = url.indexOf(`&${key}`, 8);
213
+ while (keyIndex2 !== -1) {
214
+ const trailingKeyCode = url.charCodeAt(keyIndex2 + key.length + 1);
215
+ if (trailingKeyCode === 61) {
216
+ const valueIndex = keyIndex2 + key.length + 2;
217
+ const endIndex = url.indexOf("&", valueIndex);
218
+ return _decodeURI(url.slice(valueIndex, endIndex === -1 ? void 0 : endIndex));
219
+ } else if (trailingKeyCode == 38 || isNaN(trailingKeyCode)) return "";
220
+ keyIndex2 = url.indexOf(`&${key}`, keyIndex2 + 1);
221
+ }
222
+ encoded = /[%+]/.test(url);
223
+ if (!encoded) return;
224
+ }
225
+ const results = {};
226
+ encoded ??= /[%+]/.test(url);
227
+ let keyIndex = url.indexOf("?", 8);
228
+ while (keyIndex !== -1) {
229
+ const nextKeyIndex = url.indexOf("&", keyIndex + 1);
230
+ let valueIndex = url.indexOf("=", keyIndex);
231
+ if (valueIndex > nextKeyIndex && nextKeyIndex !== -1) valueIndex = -1;
232
+ let name = url.slice(keyIndex + 1, valueIndex === -1 ? nextKeyIndex === -1 ? void 0 : nextKeyIndex : valueIndex);
233
+ if (encoded) name = _decodeURI(name);
234
+ keyIndex = nextKeyIndex;
235
+ if (name === "") continue;
236
+ let value;
237
+ if (valueIndex === -1) value = "";
238
+ else {
239
+ value = url.slice(valueIndex + 1, nextKeyIndex === -1 ? void 0 : nextKeyIndex);
240
+ if (encoded) value = _decodeURI(value);
241
+ }
242
+ if (multiple) {
243
+ if (!(results[name] && Array.isArray(results[name]))) results[name] = [];
244
+ results[name].push(value);
245
+ } else results[name] ??= value;
246
+ }
247
+ return key ? results[key] : results;
248
+ };
249
+ var getQueryParam = _getQueryParam;
250
+ var getQueryParams = (url, key) => {
251
+ return _getQueryParam(url, key, true);
252
+ };
253
+ var decodeURIComponent_ = decodeURIComponent;
254
+
255
+ //#endregion
256
+ //#region node_modules/hono/dist/request.js
257
+ var tryDecodeURIComponent = (str) => tryDecode(str, decodeURIComponent_);
258
+ var HonoRequest = class {
259
+ raw;
260
+ #validatedData;
261
+ #matchResult;
262
+ routeIndex = 0;
263
+ path;
264
+ bodyCache = {};
265
+ constructor(request, path$1 = "/", matchResult = [[]]) {
266
+ this.raw = request;
267
+ this.path = path$1;
268
+ this.#matchResult = matchResult;
269
+ this.#validatedData = {};
270
+ }
271
+ param(key) {
272
+ return key ? this.#getDecodedParam(key) : this.#getAllDecodedParams();
273
+ }
274
+ #getDecodedParam(key) {
275
+ const paramKey = this.#matchResult[0][this.routeIndex][1][key];
276
+ const param = this.#getParamValue(paramKey);
277
+ return param && /\%/.test(param) ? tryDecodeURIComponent(param) : param;
278
+ }
279
+ #getAllDecodedParams() {
280
+ const decoded = {};
281
+ const keys = Object.keys(this.#matchResult[0][this.routeIndex][1]);
282
+ for (const key of keys) {
283
+ const value = this.#getParamValue(this.#matchResult[0][this.routeIndex][1][key]);
284
+ if (value !== void 0) decoded[key] = /\%/.test(value) ? tryDecodeURIComponent(value) : value;
285
+ }
286
+ return decoded;
287
+ }
288
+ #getParamValue(paramKey) {
289
+ return this.#matchResult[1] ? this.#matchResult[1][paramKey] : paramKey;
290
+ }
291
+ query(key) {
292
+ return getQueryParam(this.url, key);
293
+ }
294
+ queries(key) {
295
+ return getQueryParams(this.url, key);
296
+ }
297
+ header(name) {
298
+ if (name) return this.raw.headers.get(name) ?? void 0;
299
+ const headerData = {};
300
+ this.raw.headers.forEach((value, key) => {
301
+ headerData[key] = value;
302
+ });
303
+ return headerData;
304
+ }
305
+ async parseBody(options) {
306
+ return this.bodyCache.parsedBody ??= await parseBody(this, options);
307
+ }
308
+ #cachedBody = (key) => {
309
+ const { bodyCache, raw: raw$1 } = this;
310
+ const cachedBody = bodyCache[key];
311
+ if (cachedBody) return cachedBody;
312
+ const anyCachedKey = Object.keys(bodyCache)[0];
313
+ if (anyCachedKey) return bodyCache[anyCachedKey].then((body) => {
314
+ if (anyCachedKey === "json") body = JSON.stringify(body);
315
+ return new Response(body)[key]();
316
+ });
317
+ return bodyCache[key] = raw$1[key]();
318
+ };
319
+ json() {
320
+ return this.#cachedBody("text").then((text) => JSON.parse(text));
321
+ }
322
+ text() {
323
+ return this.#cachedBody("text");
324
+ }
325
+ arrayBuffer() {
326
+ return this.#cachedBody("arrayBuffer");
327
+ }
328
+ blob() {
329
+ return this.#cachedBody("blob");
330
+ }
331
+ formData() {
332
+ return this.#cachedBody("formData");
333
+ }
334
+ addValidatedData(target, data) {
335
+ this.#validatedData[target] = data;
336
+ }
337
+ valid(target) {
338
+ return this.#validatedData[target];
339
+ }
340
+ get url() {
341
+ return this.raw.url;
342
+ }
343
+ get method() {
344
+ return this.raw.method;
345
+ }
346
+ get [GET_MATCH_RESULT]() {
347
+ return this.#matchResult;
348
+ }
349
+ get matchedRoutes() {
350
+ return this.#matchResult[0].map(([[, route]]) => route);
351
+ }
352
+ get routePath() {
353
+ return this.#matchResult[0].map(([[, route]]) => route)[this.routeIndex].path;
354
+ }
355
+ };
356
+
357
+ //#endregion
358
+ //#region node_modules/hono/dist/utils/html.js
359
+ var HtmlEscapedCallbackPhase = {
360
+ Stringify: 1,
361
+ BeforeStream: 2,
362
+ Stream: 3
363
+ };
364
+ var raw = (value, callbacks) => {
365
+ const escapedString = new String(value);
366
+ escapedString.isEscaped = true;
367
+ escapedString.callbacks = callbacks;
368
+ return escapedString;
369
+ };
370
+ var resolveCallback = async (str, phase, preserveCallbacks, context, buffer) => {
371
+ if (typeof str === "object" && !(str instanceof String)) {
372
+ if (!(str instanceof Promise)) str = str.toString();
373
+ if (str instanceof Promise) str = await str;
374
+ }
375
+ const callbacks = str.callbacks;
376
+ if (!callbacks?.length) return Promise.resolve(str);
377
+ if (buffer) buffer[0] += str;
378
+ else buffer = [str];
379
+ const resStr = Promise.all(callbacks.map((c) => c({
380
+ phase,
381
+ buffer,
382
+ context
383
+ }))).then((res) => Promise.all(res.filter(Boolean).map((str2) => resolveCallback(str2, phase, false, context, buffer))).then(() => buffer[0]));
384
+ if (preserveCallbacks) return raw(await resStr, callbacks);
385
+ else return resStr;
386
+ };
387
+
388
+ //#endregion
389
+ //#region node_modules/hono/dist/context.js
390
+ var TEXT_PLAIN = "text/plain; charset=UTF-8";
391
+ var setDefaultContentType = (contentType, headers) => {
392
+ return {
393
+ "Content-Type": contentType,
394
+ ...headers
395
+ };
396
+ };
397
+ var Context = class {
398
+ #rawRequest;
399
+ #req;
400
+ env = {};
401
+ #var;
402
+ finalized = false;
403
+ error;
404
+ #status;
405
+ #executionCtx;
406
+ #res;
407
+ #layout;
408
+ #renderer;
409
+ #notFoundHandler;
410
+ #preparedHeaders;
411
+ #matchResult;
412
+ #path;
413
+ constructor(req, options) {
414
+ this.#rawRequest = req;
415
+ if (options) {
416
+ this.#executionCtx = options.executionCtx;
417
+ this.env = options.env;
418
+ this.#notFoundHandler = options.notFoundHandler;
419
+ this.#path = options.path;
420
+ this.#matchResult = options.matchResult;
421
+ }
422
+ }
423
+ get req() {
424
+ this.#req ??= new HonoRequest(this.#rawRequest, this.#path, this.#matchResult);
425
+ return this.#req;
426
+ }
427
+ get event() {
428
+ if (this.#executionCtx && "respondWith" in this.#executionCtx) return this.#executionCtx;
429
+ else throw Error("This context has no FetchEvent");
430
+ }
431
+ get executionCtx() {
432
+ if (this.#executionCtx) return this.#executionCtx;
433
+ else throw Error("This context has no ExecutionContext");
434
+ }
435
+ get res() {
436
+ return this.#res ||= new Response(null, { headers: this.#preparedHeaders ??= new Headers() });
437
+ }
438
+ set res(_res) {
439
+ if (this.#res && _res) {
440
+ _res = new Response(_res.body, _res);
441
+ for (const [k, v] of this.#res.headers.entries()) {
442
+ if (k === "content-type") continue;
443
+ if (k === "set-cookie") {
444
+ const cookies = this.#res.headers.getSetCookie();
445
+ _res.headers.delete("set-cookie");
446
+ for (const cookie of cookies) _res.headers.append("set-cookie", cookie);
447
+ } else _res.headers.set(k, v);
448
+ }
449
+ }
450
+ this.#res = _res;
451
+ this.finalized = true;
452
+ }
453
+ render = (...args) => {
454
+ this.#renderer ??= (content) => this.html(content);
455
+ return this.#renderer(...args);
456
+ };
457
+ setLayout = (layout) => this.#layout = layout;
458
+ getLayout = () => this.#layout;
459
+ setRenderer = (renderer) => {
460
+ this.#renderer = renderer;
461
+ };
462
+ header = (name, value, options) => {
463
+ if (this.finalized) this.#res = new Response(this.#res.body, this.#res);
464
+ const headers = this.#res ? this.#res.headers : this.#preparedHeaders ??= new Headers();
465
+ if (value === void 0) headers.delete(name);
466
+ else if (options?.append) headers.append(name, value);
467
+ else headers.set(name, value);
468
+ };
469
+ status = (status) => {
470
+ this.#status = status;
471
+ };
472
+ set = (key, value) => {
473
+ this.#var ??= /* @__PURE__ */ new Map();
474
+ this.#var.set(key, value);
475
+ };
476
+ get = (key) => {
477
+ return this.#var ? this.#var.get(key) : void 0;
478
+ };
479
+ get var() {
480
+ if (!this.#var) return {};
481
+ return Object.fromEntries(this.#var);
482
+ }
483
+ #newResponse(data, arg, headers) {
484
+ const responseHeaders = this.#res ? new Headers(this.#res.headers) : this.#preparedHeaders ?? new Headers();
485
+ if (typeof arg === "object" && "headers" in arg) {
486
+ const argHeaders = arg.headers instanceof Headers ? arg.headers : new Headers(arg.headers);
487
+ for (const [key, value] of argHeaders) if (key.toLowerCase() === "set-cookie") responseHeaders.append(key, value);
488
+ else responseHeaders.set(key, value);
489
+ }
490
+ if (headers) for (const [k, v] of Object.entries(headers)) if (typeof v === "string") responseHeaders.set(k, v);
491
+ else {
492
+ responseHeaders.delete(k);
493
+ for (const v2 of v) responseHeaders.append(k, v2);
494
+ }
495
+ const status = typeof arg === "number" ? arg : arg?.status ?? this.#status;
496
+ return new Response(data, {
497
+ status,
498
+ headers: responseHeaders
499
+ });
500
+ }
501
+ newResponse = (...args) => this.#newResponse(...args);
502
+ body = (data, arg, headers) => this.#newResponse(data, arg, headers);
503
+ text = (text, arg, headers) => {
504
+ return !this.#preparedHeaders && !this.#status && !arg && !headers && !this.finalized ? new Response(text) : this.#newResponse(text, arg, setDefaultContentType(TEXT_PLAIN, headers));
505
+ };
506
+ json = (object, arg, headers) => {
507
+ return this.#newResponse(JSON.stringify(object), arg, setDefaultContentType("application/json", headers));
508
+ };
509
+ html = (html, arg, headers) => {
510
+ const res = (html2) => this.#newResponse(html2, arg, setDefaultContentType("text/html; charset=UTF-8", headers));
511
+ return typeof html === "object" ? resolveCallback(html, HtmlEscapedCallbackPhase.Stringify, false, {}).then(res) : res(html);
512
+ };
513
+ redirect = (location, status) => {
514
+ const locationString = String(location);
515
+ this.header("Location", !/[^\x00-\xFF]/.test(locationString) ? locationString : encodeURI(locationString));
516
+ return this.newResponse(null, status ?? 302);
517
+ };
518
+ notFound = () => {
519
+ this.#notFoundHandler ??= () => new Response();
520
+ return this.#notFoundHandler(this);
521
+ };
522
+ };
523
+
524
+ //#endregion
525
+ //#region node_modules/hono/dist/router.js
526
+ var METHOD_NAME_ALL = "ALL";
527
+ var METHOD_NAME_ALL_LOWERCASE = "all";
528
+ var METHODS = [
529
+ "get",
530
+ "post",
531
+ "put",
532
+ "delete",
533
+ "options",
534
+ "patch"
535
+ ];
536
+ var MESSAGE_MATCHER_IS_ALREADY_BUILT = "Can not add a route since the matcher is already built.";
537
+ var UnsupportedPathError = class extends Error {};
538
+
539
+ //#endregion
540
+ //#region node_modules/hono/dist/utils/constants.js
541
+ var COMPOSED_HANDLER = "__COMPOSED_HANDLER";
542
+
543
+ //#endregion
544
+ //#region node_modules/hono/dist/hono-base.js
545
+ var notFoundHandler = (c) => {
546
+ return c.text("404 Not Found", 404);
547
+ };
548
+ var errorHandler = (err, c) => {
549
+ if ("getResponse" in err) {
550
+ const res = err.getResponse();
551
+ return c.newResponse(res.body, res);
552
+ }
553
+ console.error(err);
554
+ return c.text("Internal Server Error", 500);
555
+ };
556
+ var Hono$1 = class {
557
+ get;
558
+ post;
559
+ put;
560
+ delete;
561
+ options;
562
+ patch;
563
+ all;
564
+ on;
565
+ use;
566
+ router;
567
+ getPath;
568
+ _basePath = "/";
569
+ #path = "/";
570
+ routes = [];
571
+ constructor(options = {}) {
572
+ [...METHODS, METHOD_NAME_ALL_LOWERCASE].forEach((method) => {
573
+ this[method] = (args1, ...args) => {
574
+ if (typeof args1 === "string") this.#path = args1;
575
+ else this.#addRoute(method, this.#path, args1);
576
+ args.forEach((handler) => {
577
+ this.#addRoute(method, this.#path, handler);
578
+ });
579
+ return this;
580
+ };
581
+ });
582
+ this.on = (method, path$1, ...handlers) => {
583
+ for (const p of [path$1].flat()) {
584
+ this.#path = p;
585
+ for (const m of [method].flat()) handlers.map((handler) => {
586
+ this.#addRoute(m.toUpperCase(), this.#path, handler);
587
+ });
588
+ }
589
+ return this;
590
+ };
591
+ this.use = (arg1, ...handlers) => {
592
+ if (typeof arg1 === "string") this.#path = arg1;
593
+ else {
594
+ this.#path = "*";
595
+ handlers.unshift(arg1);
596
+ }
597
+ handlers.forEach((handler) => {
598
+ this.#addRoute(METHOD_NAME_ALL, this.#path, handler);
599
+ });
600
+ return this;
601
+ };
602
+ const { strict,...optionsWithoutStrict } = options;
603
+ Object.assign(this, optionsWithoutStrict);
604
+ this.getPath = strict ?? true ? options.getPath ?? getPath : getPathNoStrict;
605
+ }
606
+ #clone() {
607
+ const clone = new Hono$1({
608
+ router: this.router,
609
+ getPath: this.getPath
610
+ });
611
+ clone.errorHandler = this.errorHandler;
612
+ clone.#notFoundHandler = this.#notFoundHandler;
613
+ clone.routes = this.routes;
614
+ return clone;
615
+ }
616
+ #notFoundHandler = notFoundHandler;
617
+ errorHandler = errorHandler;
618
+ route(path$1, app) {
619
+ const subApp = this.basePath(path$1);
620
+ app.routes.map((r) => {
621
+ let handler;
622
+ if (app.errorHandler === errorHandler) handler = r.handler;
623
+ else {
624
+ handler = async (c, next) => (await compose([], app.errorHandler)(c, () => r.handler(c, next))).res;
625
+ handler[COMPOSED_HANDLER] = r.handler;
626
+ }
627
+ subApp.#addRoute(r.method, r.path, handler);
628
+ });
629
+ return this;
630
+ }
631
+ basePath(path$1) {
632
+ const subApp = this.#clone();
633
+ subApp._basePath = mergePath(this._basePath, path$1);
634
+ return subApp;
635
+ }
636
+ onError = (handler) => {
637
+ this.errorHandler = handler;
638
+ return this;
639
+ };
640
+ notFound = (handler) => {
641
+ this.#notFoundHandler = handler;
642
+ return this;
643
+ };
644
+ mount(path$1, applicationHandler, options) {
645
+ let replaceRequest;
646
+ let optionHandler;
647
+ if (options) if (typeof options === "function") optionHandler = options;
648
+ else {
649
+ optionHandler = options.optionHandler;
650
+ if (options.replaceRequest === false) replaceRequest = (request) => request;
651
+ else replaceRequest = options.replaceRequest;
652
+ }
653
+ const getOptions = optionHandler ? (c) => {
654
+ const options2 = optionHandler(c);
655
+ return Array.isArray(options2) ? options2 : [options2];
656
+ } : (c) => {
657
+ let executionContext = void 0;
658
+ try {
659
+ executionContext = c.executionCtx;
660
+ } catch {}
661
+ return [c.env, executionContext];
662
+ };
663
+ replaceRequest ||= (() => {
664
+ const mergedPath = mergePath(this._basePath, path$1);
665
+ const pathPrefixLength = mergedPath === "/" ? 0 : mergedPath.length;
666
+ return (request) => {
667
+ const url = new URL(request.url);
668
+ url.pathname = url.pathname.slice(pathPrefixLength) || "/";
669
+ return new Request(url, request);
670
+ };
671
+ })();
672
+ const handler = async (c, next) => {
673
+ const res = await applicationHandler(replaceRequest(c.req.raw), ...getOptions(c));
674
+ if (res) return res;
675
+ await next();
676
+ };
677
+ this.#addRoute(METHOD_NAME_ALL, mergePath(path$1, "*"), handler);
678
+ return this;
679
+ }
680
+ #addRoute(method, path$1, handler) {
681
+ method = method.toUpperCase();
682
+ path$1 = mergePath(this._basePath, path$1);
683
+ const r = {
684
+ basePath: this._basePath,
685
+ path: path$1,
686
+ method,
687
+ handler
688
+ };
689
+ this.router.add(method, path$1, [handler, r]);
690
+ this.routes.push(r);
691
+ }
692
+ #handleError(err, c) {
693
+ if (err instanceof Error) return this.errorHandler(err, c);
694
+ throw err;
695
+ }
696
+ #dispatch(request, executionCtx, env, method) {
697
+ if (method === "HEAD") return (async () => new Response(null, await this.#dispatch(request, executionCtx, env, "GET")))();
698
+ const path$1 = this.getPath(request, { env });
699
+ const matchResult = this.router.match(method, path$1);
700
+ const c = new Context(request, {
701
+ path: path$1,
702
+ matchResult,
703
+ env,
704
+ executionCtx,
705
+ notFoundHandler: this.#notFoundHandler
706
+ });
707
+ if (matchResult[0].length === 1) {
708
+ let res;
709
+ try {
710
+ res = matchResult[0][0][0][0](c, async () => {
711
+ c.res = await this.#notFoundHandler(c);
712
+ });
713
+ } catch (err) {
714
+ return this.#handleError(err, c);
715
+ }
716
+ return res instanceof Promise ? res.then((resolved) => resolved || (c.finalized ? c.res : this.#notFoundHandler(c))).catch((err) => this.#handleError(err, c)) : res ?? this.#notFoundHandler(c);
717
+ }
718
+ const composed = compose(matchResult[0], this.errorHandler, this.#notFoundHandler);
719
+ return (async () => {
720
+ try {
721
+ const context = await composed(c);
722
+ if (!context.finalized) throw new Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");
723
+ return context.res;
724
+ } catch (err) {
725
+ return this.#handleError(err, c);
726
+ }
727
+ })();
728
+ }
729
+ fetch = (request, ...rest) => {
730
+ return this.#dispatch(request, rest[1], rest[0], request.method);
731
+ };
732
+ request = (input, requestInit, Env, executionCtx) => {
733
+ if (input instanceof Request) return this.fetch(requestInit ? new Request(input, requestInit) : input, Env, executionCtx);
734
+ input = input.toString();
735
+ return this.fetch(new Request(/^https?:\/\//.test(input) ? input : `http://localhost${mergePath("/", input)}`, requestInit), Env, executionCtx);
736
+ };
737
+ fire = () => {
738
+ addEventListener("fetch", (event) => {
739
+ event.respondWith(this.#dispatch(event.request, event, void 0, event.request.method));
740
+ });
741
+ };
742
+ };
743
+
744
+ //#endregion
745
+ //#region node_modules/hono/dist/router/reg-exp-router/node.js
746
+ var LABEL_REG_EXP_STR = "[^/]+";
747
+ var ONLY_WILDCARD_REG_EXP_STR = ".*";
748
+ var TAIL_WILDCARD_REG_EXP_STR = "(?:|/.*)";
749
+ var PATH_ERROR = Symbol();
750
+ var regExpMetaChars = /* @__PURE__ */ new Set(".\\+*[^]$()");
751
+ function compareKey(a, b) {
752
+ if (a.length === 1) return b.length === 1 ? a < b ? -1 : 1 : -1;
753
+ if (b.length === 1) return 1;
754
+ if (a === ONLY_WILDCARD_REG_EXP_STR || a === TAIL_WILDCARD_REG_EXP_STR) return 1;
755
+ else if (b === ONLY_WILDCARD_REG_EXP_STR || b === TAIL_WILDCARD_REG_EXP_STR) return -1;
756
+ if (a === LABEL_REG_EXP_STR) return 1;
757
+ else if (b === LABEL_REG_EXP_STR) return -1;
758
+ return a.length === b.length ? a < b ? -1 : 1 : b.length - a.length;
759
+ }
760
+ var Node$1 = class {
761
+ #index;
762
+ #varIndex;
763
+ #children = /* @__PURE__ */ Object.create(null);
764
+ insert(tokens, index, paramMap, context, pathErrorCheckOnly) {
765
+ if (tokens.length === 0) {
766
+ if (this.#index !== void 0) throw PATH_ERROR;
767
+ if (pathErrorCheckOnly) return;
768
+ this.#index = index;
769
+ return;
770
+ }
771
+ const [token, ...restTokens] = tokens;
772
+ const pattern = token === "*" ? restTokens.length === 0 ? [
773
+ "",
774
+ "",
775
+ ONLY_WILDCARD_REG_EXP_STR
776
+ ] : [
777
+ "",
778
+ "",
779
+ LABEL_REG_EXP_STR
780
+ ] : token === "/*" ? [
781
+ "",
782
+ "",
783
+ TAIL_WILDCARD_REG_EXP_STR
784
+ ] : token.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);
785
+ let node;
786
+ if (pattern) {
787
+ const name = pattern[1];
788
+ let regexpStr = pattern[2] || LABEL_REG_EXP_STR;
789
+ if (name && pattern[2]) {
790
+ if (regexpStr === ".*") throw PATH_ERROR;
791
+ regexpStr = regexpStr.replace(/^\((?!\?:)(?=[^)]+\)$)/, "(?:");
792
+ if (/\((?!\?:)/.test(regexpStr)) throw PATH_ERROR;
793
+ }
794
+ node = this.#children[regexpStr];
795
+ if (!node) {
796
+ if (Object.keys(this.#children).some((k) => k !== ONLY_WILDCARD_REG_EXP_STR && k !== TAIL_WILDCARD_REG_EXP_STR)) throw PATH_ERROR;
797
+ if (pathErrorCheckOnly) return;
798
+ node = this.#children[regexpStr] = new Node$1();
799
+ if (name !== "") node.#varIndex = context.varIndex++;
800
+ }
801
+ if (!pathErrorCheckOnly && name !== "") paramMap.push([name, node.#varIndex]);
802
+ } else {
803
+ node = this.#children[token];
804
+ if (!node) {
805
+ if (Object.keys(this.#children).some((k) => k.length > 1 && k !== ONLY_WILDCARD_REG_EXP_STR && k !== TAIL_WILDCARD_REG_EXP_STR)) throw PATH_ERROR;
806
+ if (pathErrorCheckOnly) return;
807
+ node = this.#children[token] = new Node$1();
808
+ }
809
+ }
810
+ node.insert(restTokens, index, paramMap, context, pathErrorCheckOnly);
811
+ }
812
+ buildRegExpStr() {
813
+ const strList = Object.keys(this.#children).sort(compareKey).map((k) => {
814
+ const c = this.#children[k];
815
+ return (typeof c.#varIndex === "number" ? `(${k})@${c.#varIndex}` : regExpMetaChars.has(k) ? `\\${k}` : k) + c.buildRegExpStr();
816
+ });
817
+ if (typeof this.#index === "number") strList.unshift(`#${this.#index}`);
818
+ if (strList.length === 0) return "";
819
+ if (strList.length === 1) return strList[0];
820
+ return "(?:" + strList.join("|") + ")";
821
+ }
822
+ };
823
+
824
+ //#endregion
825
+ //#region node_modules/hono/dist/router/reg-exp-router/trie.js
826
+ var Trie = class {
827
+ #context = { varIndex: 0 };
828
+ #root = new Node$1();
829
+ insert(path$1, index, pathErrorCheckOnly) {
830
+ const paramAssoc = [];
831
+ const groups = [];
832
+ for (let i = 0;;) {
833
+ let replaced = false;
834
+ path$1 = path$1.replace(/\{[^}]+\}/g, (m) => {
835
+ const mark = `@\\${i}`;
836
+ groups[i] = [mark, m];
837
+ i++;
838
+ replaced = true;
839
+ return mark;
840
+ });
841
+ if (!replaced) break;
842
+ }
843
+ const tokens = path$1.match(/(?::[^\/]+)|(?:\/\*$)|./g) || [];
844
+ for (let i = groups.length - 1; i >= 0; i--) {
845
+ const [mark] = groups[i];
846
+ for (let j = tokens.length - 1; j >= 0; j--) if (tokens[j].indexOf(mark) !== -1) {
847
+ tokens[j] = tokens[j].replace(mark, groups[i][1]);
848
+ break;
849
+ }
850
+ }
851
+ this.#root.insert(tokens, index, paramAssoc, this.#context, pathErrorCheckOnly);
852
+ return paramAssoc;
853
+ }
854
+ buildRegExp() {
855
+ let regexp = this.#root.buildRegExpStr();
856
+ if (regexp === "") return [
857
+ /^$/,
858
+ [],
859
+ []
860
+ ];
861
+ let captureIndex = 0;
862
+ const indexReplacementMap = [];
863
+ const paramReplacementMap = [];
864
+ regexp = regexp.replace(/#(\d+)|@(\d+)|\.\*\$/g, (_, handlerIndex, paramIndex) => {
865
+ if (handlerIndex !== void 0) {
866
+ indexReplacementMap[++captureIndex] = Number(handlerIndex);
867
+ return "$()";
868
+ }
869
+ if (paramIndex !== void 0) {
870
+ paramReplacementMap[Number(paramIndex)] = ++captureIndex;
871
+ return "";
872
+ }
873
+ return "";
874
+ });
875
+ return [
876
+ /* @__PURE__ */ new RegExp(`^${regexp}`),
877
+ indexReplacementMap,
878
+ paramReplacementMap
879
+ ];
880
+ }
881
+ };
882
+
883
+ //#endregion
884
+ //#region node_modules/hono/dist/router/reg-exp-router/router.js
885
+ var emptyParam = [];
886
+ var nullMatcher = [
887
+ /^$/,
888
+ [],
889
+ /* @__PURE__ */ Object.create(null)
890
+ ];
891
+ var wildcardRegExpCache = /* @__PURE__ */ Object.create(null);
892
+ function buildWildcardRegExp(path$1) {
893
+ return wildcardRegExpCache[path$1] ??= /* @__PURE__ */ new RegExp(path$1 === "*" ? "" : `^${path$1.replace(/\/\*$|([.\\+*[^\]$()])/g, (_, metaChar) => metaChar ? `\\${metaChar}` : "(?:|/.*)")}$`);
894
+ }
895
+ function clearWildcardRegExpCache() {
896
+ wildcardRegExpCache = /* @__PURE__ */ Object.create(null);
897
+ }
898
+ function buildMatcherFromPreprocessedRoutes(routes) {
899
+ const trie = new Trie();
900
+ const handlerData = [];
901
+ if (routes.length === 0) return nullMatcher;
902
+ const routesWithStaticPathFlag = routes.map((route) => [!/\*|\/:/.test(route[0]), ...route]).sort(([isStaticA, pathA], [isStaticB, pathB]) => isStaticA ? 1 : isStaticB ? -1 : pathA.length - pathB.length);
903
+ const staticMap = /* @__PURE__ */ Object.create(null);
904
+ for (let i = 0, j = -1, len = routesWithStaticPathFlag.length; i < len; i++) {
905
+ const [pathErrorCheckOnly, path$1, handlers] = routesWithStaticPathFlag[i];
906
+ if (pathErrorCheckOnly) staticMap[path$1] = [handlers.map(([h]) => [h, /* @__PURE__ */ Object.create(null)]), emptyParam];
907
+ else j++;
908
+ let paramAssoc;
909
+ try {
910
+ paramAssoc = trie.insert(path$1, j, pathErrorCheckOnly);
911
+ } catch (e) {
912
+ throw e === PATH_ERROR ? new UnsupportedPathError(path$1) : e;
913
+ }
914
+ if (pathErrorCheckOnly) continue;
915
+ handlerData[j] = handlers.map(([h, paramCount]) => {
916
+ const paramIndexMap = /* @__PURE__ */ Object.create(null);
917
+ paramCount -= 1;
918
+ for (; paramCount >= 0; paramCount--) {
919
+ const [key, value] = paramAssoc[paramCount];
920
+ paramIndexMap[key] = value;
921
+ }
922
+ return [h, paramIndexMap];
923
+ });
924
+ }
925
+ const [regexp, indexReplacementMap, paramReplacementMap] = trie.buildRegExp();
926
+ for (let i = 0, len = handlerData.length; i < len; i++) for (let j = 0, len2 = handlerData[i].length; j < len2; j++) {
927
+ const map = handlerData[i][j]?.[1];
928
+ if (!map) continue;
929
+ const keys = Object.keys(map);
930
+ for (let k = 0, len3 = keys.length; k < len3; k++) map[keys[k]] = paramReplacementMap[map[keys[k]]];
931
+ }
932
+ const handlerMap = [];
933
+ for (const i in indexReplacementMap) handlerMap[i] = handlerData[indexReplacementMap[i]];
934
+ return [
935
+ regexp,
936
+ handlerMap,
937
+ staticMap
938
+ ];
939
+ }
940
+ function findMiddleware(middleware, path$1) {
941
+ if (!middleware) return;
942
+ for (const k of Object.keys(middleware).sort((a, b) => b.length - a.length)) if (buildWildcardRegExp(k).test(path$1)) return [...middleware[k]];
943
+ }
944
+ var RegExpRouter = class {
945
+ name = "RegExpRouter";
946
+ #middleware;
947
+ #routes;
948
+ constructor() {
949
+ this.#middleware = { [METHOD_NAME_ALL]: /* @__PURE__ */ Object.create(null) };
950
+ this.#routes = { [METHOD_NAME_ALL]: /* @__PURE__ */ Object.create(null) };
951
+ }
952
+ add(method, path$1, handler) {
953
+ const middleware = this.#middleware;
954
+ const routes = this.#routes;
955
+ if (!middleware || !routes) throw new Error(MESSAGE_MATCHER_IS_ALREADY_BUILT);
956
+ if (!middleware[method]) [middleware, routes].forEach((handlerMap) => {
957
+ handlerMap[method] = /* @__PURE__ */ Object.create(null);
958
+ Object.keys(handlerMap[METHOD_NAME_ALL]).forEach((p) => {
959
+ handlerMap[method][p] = [...handlerMap[METHOD_NAME_ALL][p]];
960
+ });
961
+ });
962
+ if (path$1 === "/*") path$1 = "*";
963
+ const paramCount = (path$1.match(/\/:/g) || []).length;
964
+ if (/\*$/.test(path$1)) {
965
+ const re = buildWildcardRegExp(path$1);
966
+ if (method === METHOD_NAME_ALL) Object.keys(middleware).forEach((m) => {
967
+ middleware[m][path$1] ||= findMiddleware(middleware[m], path$1) || findMiddleware(middleware[METHOD_NAME_ALL], path$1) || [];
968
+ });
969
+ else middleware[method][path$1] ||= findMiddleware(middleware[method], path$1) || findMiddleware(middleware[METHOD_NAME_ALL], path$1) || [];
970
+ Object.keys(middleware).forEach((m) => {
971
+ if (method === METHOD_NAME_ALL || method === m) Object.keys(middleware[m]).forEach((p) => {
972
+ re.test(p) && middleware[m][p].push([handler, paramCount]);
973
+ });
974
+ });
975
+ Object.keys(routes).forEach((m) => {
976
+ if (method === METHOD_NAME_ALL || method === m) Object.keys(routes[m]).forEach((p) => re.test(p) && routes[m][p].push([handler, paramCount]));
977
+ });
978
+ return;
979
+ }
980
+ const paths = checkOptionalParameter(path$1) || [path$1];
981
+ for (let i = 0, len = paths.length; i < len; i++) {
982
+ const path2 = paths[i];
983
+ Object.keys(routes).forEach((m) => {
984
+ if (method === METHOD_NAME_ALL || method === m) {
985
+ routes[m][path2] ||= [...findMiddleware(middleware[m], path2) || findMiddleware(middleware[METHOD_NAME_ALL], path2) || []];
986
+ routes[m][path2].push([handler, paramCount - len + i + 1]);
987
+ }
988
+ });
989
+ }
990
+ }
991
+ match(method, path$1) {
992
+ clearWildcardRegExpCache();
993
+ const matchers = this.#buildAllMatchers();
994
+ this.match = (method2, path2) => {
995
+ const matcher = matchers[method2] || matchers[METHOD_NAME_ALL];
996
+ const staticMatch = matcher[2][path2];
997
+ if (staticMatch) return staticMatch;
998
+ const match = path2.match(matcher[0]);
999
+ if (!match) return [[], emptyParam];
1000
+ const index = match.indexOf("", 1);
1001
+ return [matcher[1][index], match];
1002
+ };
1003
+ return this.match(method, path$1);
1004
+ }
1005
+ #buildAllMatchers() {
1006
+ const matchers = /* @__PURE__ */ Object.create(null);
1007
+ Object.keys(this.#routes).concat(Object.keys(this.#middleware)).forEach((method) => {
1008
+ matchers[method] ||= this.#buildMatcher(method);
1009
+ });
1010
+ this.#middleware = this.#routes = void 0;
1011
+ return matchers;
1012
+ }
1013
+ #buildMatcher(method) {
1014
+ const routes = [];
1015
+ let hasOwnRoute = method === METHOD_NAME_ALL;
1016
+ [this.#middleware, this.#routes].forEach((r) => {
1017
+ const ownRoute = r[method] ? Object.keys(r[method]).map((path$1) => [path$1, r[method][path$1]]) : [];
1018
+ if (ownRoute.length !== 0) {
1019
+ hasOwnRoute ||= true;
1020
+ routes.push(...ownRoute);
1021
+ } else if (method !== METHOD_NAME_ALL) routes.push(...Object.keys(r[METHOD_NAME_ALL]).map((path$1) => [path$1, r[METHOD_NAME_ALL][path$1]]));
1022
+ });
1023
+ if (!hasOwnRoute) return null;
1024
+ else return buildMatcherFromPreprocessedRoutes(routes);
1025
+ }
1026
+ };
1027
+
1028
+ //#endregion
1029
+ //#region node_modules/hono/dist/router/smart-router/router.js
1030
+ var SmartRouter = class {
1031
+ name = "SmartRouter";
1032
+ #routers = [];
1033
+ #routes = [];
1034
+ constructor(init) {
1035
+ this.#routers = init.routers;
1036
+ }
1037
+ add(method, path$1, handler) {
1038
+ if (!this.#routes) throw new Error(MESSAGE_MATCHER_IS_ALREADY_BUILT);
1039
+ this.#routes.push([
1040
+ method,
1041
+ path$1,
1042
+ handler
1043
+ ]);
1044
+ }
1045
+ match(method, path$1) {
1046
+ if (!this.#routes) throw new Error("Fatal error");
1047
+ const routers = this.#routers;
1048
+ const routes = this.#routes;
1049
+ const len = routers.length;
1050
+ let i = 0;
1051
+ let res;
1052
+ for (; i < len; i++) {
1053
+ const router = routers[i];
1054
+ try {
1055
+ for (let i2 = 0, len2 = routes.length; i2 < len2; i2++) router.add(...routes[i2]);
1056
+ res = router.match(method, path$1);
1057
+ } catch (e) {
1058
+ if (e instanceof UnsupportedPathError) continue;
1059
+ throw e;
1060
+ }
1061
+ this.match = router.match.bind(router);
1062
+ this.#routers = [router];
1063
+ this.#routes = void 0;
1064
+ break;
1065
+ }
1066
+ if (i === len) throw new Error("Fatal error");
1067
+ this.name = `SmartRouter + ${this.activeRouter.name}`;
1068
+ return res;
1069
+ }
1070
+ get activeRouter() {
1071
+ if (this.#routes || this.#routers.length !== 1) throw new Error("No active router has been determined yet.");
1072
+ return this.#routers[0];
1073
+ }
1074
+ };
1075
+
1076
+ //#endregion
1077
+ //#region node_modules/hono/dist/router/trie-router/node.js
1078
+ var emptyParams = /* @__PURE__ */ Object.create(null);
1079
+ var Node = class {
1080
+ #methods;
1081
+ #children;
1082
+ #patterns;
1083
+ #order = 0;
1084
+ #params = emptyParams;
1085
+ constructor(method, handler, children) {
1086
+ this.#children = children || /* @__PURE__ */ Object.create(null);
1087
+ this.#methods = [];
1088
+ if (method && handler) {
1089
+ const m = /* @__PURE__ */ Object.create(null);
1090
+ m[method] = {
1091
+ handler,
1092
+ possibleKeys: [],
1093
+ score: 0
1094
+ };
1095
+ this.#methods = [m];
1096
+ }
1097
+ this.#patterns = [];
1098
+ }
1099
+ insert(method, path$1, handler) {
1100
+ this.#order = ++this.#order;
1101
+ let curNode = this;
1102
+ const parts = splitRoutingPath(path$1);
1103
+ const possibleKeys = [];
1104
+ for (let i = 0, len = parts.length; i < len; i++) {
1105
+ const p = parts[i];
1106
+ const nextP = parts[i + 1];
1107
+ const pattern = getPattern(p, nextP);
1108
+ const key = Array.isArray(pattern) ? pattern[0] : p;
1109
+ if (key in curNode.#children) {
1110
+ curNode = curNode.#children[key];
1111
+ if (pattern) possibleKeys.push(pattern[1]);
1112
+ continue;
1113
+ }
1114
+ curNode.#children[key] = new Node();
1115
+ if (pattern) {
1116
+ curNode.#patterns.push(pattern);
1117
+ possibleKeys.push(pattern[1]);
1118
+ }
1119
+ curNode = curNode.#children[key];
1120
+ }
1121
+ curNode.#methods.push({ [method]: {
1122
+ handler,
1123
+ possibleKeys: possibleKeys.filter((v, i, a) => a.indexOf(v) === i),
1124
+ score: this.#order
1125
+ } });
1126
+ return curNode;
1127
+ }
1128
+ #getHandlerSets(node, method, nodeParams, params) {
1129
+ const handlerSets = [];
1130
+ for (let i = 0, len = node.#methods.length; i < len; i++) {
1131
+ const m = node.#methods[i];
1132
+ const handlerSet = m[method] || m[METHOD_NAME_ALL];
1133
+ const processedSet = {};
1134
+ if (handlerSet !== void 0) {
1135
+ handlerSet.params = /* @__PURE__ */ Object.create(null);
1136
+ handlerSets.push(handlerSet);
1137
+ if (nodeParams !== emptyParams || params && params !== emptyParams) for (let i2 = 0, len2 = handlerSet.possibleKeys.length; i2 < len2; i2++) {
1138
+ const key = handlerSet.possibleKeys[i2];
1139
+ const processed = processedSet[handlerSet.score];
1140
+ handlerSet.params[key] = params?.[key] && !processed ? params[key] : nodeParams[key] ?? params?.[key];
1141
+ processedSet[handlerSet.score] = true;
1142
+ }
1143
+ }
1144
+ }
1145
+ return handlerSets;
1146
+ }
1147
+ search(method, path$1) {
1148
+ const handlerSets = [];
1149
+ this.#params = emptyParams;
1150
+ let curNodes = [this];
1151
+ const parts = splitPath(path$1);
1152
+ const curNodesQueue = [];
1153
+ for (let i = 0, len = parts.length; i < len; i++) {
1154
+ const part = parts[i];
1155
+ const isLast = i === len - 1;
1156
+ const tempNodes = [];
1157
+ for (let j = 0, len2 = curNodes.length; j < len2; j++) {
1158
+ const node = curNodes[j];
1159
+ const nextNode = node.#children[part];
1160
+ if (nextNode) {
1161
+ nextNode.#params = node.#params;
1162
+ if (isLast) {
1163
+ if (nextNode.#children["*"]) handlerSets.push(...this.#getHandlerSets(nextNode.#children["*"], method, node.#params));
1164
+ handlerSets.push(...this.#getHandlerSets(nextNode, method, node.#params));
1165
+ } else tempNodes.push(nextNode);
1166
+ }
1167
+ for (let k = 0, len3 = node.#patterns.length; k < len3; k++) {
1168
+ const pattern = node.#patterns[k];
1169
+ const params = node.#params === emptyParams ? {} : { ...node.#params };
1170
+ if (pattern === "*") {
1171
+ const astNode = node.#children["*"];
1172
+ if (astNode) {
1173
+ handlerSets.push(...this.#getHandlerSets(astNode, method, node.#params));
1174
+ astNode.#params = params;
1175
+ tempNodes.push(astNode);
1176
+ }
1177
+ continue;
1178
+ }
1179
+ const [key, name, matcher] = pattern;
1180
+ if (!part && !(matcher instanceof RegExp)) continue;
1181
+ const child = node.#children[key];
1182
+ const restPathString = parts.slice(i).join("/");
1183
+ if (matcher instanceof RegExp) {
1184
+ const m = matcher.exec(restPathString);
1185
+ if (m) {
1186
+ params[name] = m[0];
1187
+ handlerSets.push(...this.#getHandlerSets(child, method, node.#params, params));
1188
+ if (Object.keys(child.#children).length) {
1189
+ child.#params = params;
1190
+ const componentCount = m[0].match(/\//)?.length ?? 0;
1191
+ (curNodesQueue[componentCount] ||= []).push(child);
1192
+ }
1193
+ continue;
1194
+ }
1195
+ }
1196
+ if (matcher === true || matcher.test(part)) {
1197
+ params[name] = part;
1198
+ if (isLast) {
1199
+ handlerSets.push(...this.#getHandlerSets(child, method, params, node.#params));
1200
+ if (child.#children["*"]) handlerSets.push(...this.#getHandlerSets(child.#children["*"], method, params, node.#params));
1201
+ } else {
1202
+ child.#params = params;
1203
+ tempNodes.push(child);
1204
+ }
1205
+ }
1206
+ }
1207
+ }
1208
+ curNodes = tempNodes.concat(curNodesQueue.shift() ?? []);
1209
+ }
1210
+ if (handlerSets.length > 1) handlerSets.sort((a, b) => {
1211
+ return a.score - b.score;
1212
+ });
1213
+ return [handlerSets.map(({ handler, params }) => [handler, params])];
1214
+ }
1215
+ };
1216
+
1217
+ //#endregion
1218
+ //#region node_modules/hono/dist/router/trie-router/router.js
1219
+ var TrieRouter = class {
1220
+ name = "TrieRouter";
1221
+ #node;
1222
+ constructor() {
1223
+ this.#node = new Node();
1224
+ }
1225
+ add(method, path$1, handler) {
1226
+ const results = checkOptionalParameter(path$1);
1227
+ if (results) {
1228
+ for (let i = 0, len = results.length; i < len; i++) this.#node.insert(method, results[i], handler);
1229
+ return;
1230
+ }
1231
+ this.#node.insert(method, path$1, handler);
1232
+ }
1233
+ match(method, path$1) {
1234
+ return this.#node.search(method, path$1);
1235
+ }
1236
+ };
1237
+
1238
+ //#endregion
1239
+ //#region node_modules/hono/dist/hono.js
1240
+ var Hono = class extends Hono$1 {
1241
+ constructor(options = {}) {
1242
+ super(options);
1243
+ this.router = options.router ?? new SmartRouter({ routers: [new RegExpRouter(), new TrieRouter()] });
1244
+ }
1245
+ };
1246
+
1247
+ //#endregion
1248
+ //#region node_modules/hono/dist/middleware/cors/index.js
1249
+ var cors = (options) => {
1250
+ const opts = {
1251
+ origin: "*",
1252
+ allowMethods: [
1253
+ "GET",
1254
+ "HEAD",
1255
+ "PUT",
1256
+ "POST",
1257
+ "DELETE",
1258
+ "PATCH"
1259
+ ],
1260
+ allowHeaders: [],
1261
+ exposeHeaders: [],
1262
+ ...options
1263
+ };
1264
+ const findAllowOrigin = ((optsOrigin) => {
1265
+ if (typeof optsOrigin === "string") if (optsOrigin === "*") return () => optsOrigin;
1266
+ else return (origin) => optsOrigin === origin ? origin : null;
1267
+ else if (typeof optsOrigin === "function") return optsOrigin;
1268
+ else return (origin) => optsOrigin.includes(origin) ? origin : null;
1269
+ })(opts.origin);
1270
+ const findAllowMethods = ((optsAllowMethods) => {
1271
+ if (typeof optsAllowMethods === "function") return optsAllowMethods;
1272
+ else if (Array.isArray(optsAllowMethods)) return () => optsAllowMethods;
1273
+ else return () => [];
1274
+ })(opts.allowMethods);
1275
+ return async function cors2(c, next) {
1276
+ function set(key, value) {
1277
+ c.res.headers.set(key, value);
1278
+ }
1279
+ const allowOrigin = await findAllowOrigin(c.req.header("origin") || "", c);
1280
+ if (allowOrigin) set("Access-Control-Allow-Origin", allowOrigin);
1281
+ if (opts.origin !== "*") {
1282
+ const existingVary = c.req.header("Vary");
1283
+ if (existingVary) set("Vary", existingVary);
1284
+ else set("Vary", "Origin");
1285
+ }
1286
+ if (opts.credentials) set("Access-Control-Allow-Credentials", "true");
1287
+ if (opts.exposeHeaders?.length) set("Access-Control-Expose-Headers", opts.exposeHeaders.join(","));
1288
+ if (c.req.method === "OPTIONS") {
1289
+ if (opts.maxAge != null) set("Access-Control-Max-Age", opts.maxAge.toString());
1290
+ const allowMethods = await findAllowMethods(c.req.header("origin") || "", c);
1291
+ if (allowMethods.length) set("Access-Control-Allow-Methods", allowMethods.join(","));
1292
+ let headers = opts.allowHeaders;
1293
+ if (!headers?.length) {
1294
+ const requestHeaders = c.req.header("Access-Control-Request-Headers");
1295
+ if (requestHeaders) headers = requestHeaders.split(/\s*,\s*/);
1296
+ }
1297
+ if (headers?.length) {
1298
+ set("Access-Control-Allow-Headers", headers.join(","));
1299
+ c.res.headers.append("Vary", "Access-Control-Request-Headers");
1300
+ }
1301
+ c.res.headers.delete("Content-Length");
1302
+ c.res.headers.delete("Content-Type");
1303
+ return new Response(null, {
1304
+ headers: c.res.headers,
1305
+ status: 204,
1306
+ statusText: "No Content"
1307
+ });
1308
+ }
1309
+ await next();
1310
+ };
1311
+ };
1312
+
1313
+ //#endregion
1314
+ //#region node_modules/hono/dist/utils/color.js
1315
+ function getColorEnabled() {
1316
+ const { process: process$1, Deno } = globalThis;
1317
+ return !(typeof Deno?.noColor === "boolean" ? Deno.noColor : process$1 !== void 0 ? "NO_COLOR" in process$1?.env : false);
1318
+ }
1319
+ async function getColorEnabledAsync() {
1320
+ const { navigator } = globalThis;
1321
+ const cfWorkers = "cloudflare:workers";
1322
+ return !(navigator !== void 0 && navigator.userAgent === "Cloudflare-Workers" ? await (async () => {
1323
+ try {
1324
+ return "NO_COLOR" in ((await import(cfWorkers)).env ?? {});
1325
+ } catch {
1326
+ return false;
1327
+ }
1328
+ })() : !getColorEnabled());
1329
+ }
1330
+
1331
+ //#endregion
1332
+ //#region node_modules/hono/dist/middleware/logger/index.js
1333
+ var humanize = (times) => {
1334
+ const [delimiter, separator] = [",", "."];
1335
+ return times.map((v) => v.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1" + delimiter)).join(separator);
1336
+ };
1337
+ var time = (start) => {
1338
+ const delta = Date.now() - start;
1339
+ return humanize([delta < 1e3 ? delta + "ms" : Math.round(delta / 1e3) + "s"]);
1340
+ };
1341
+ var colorStatus = async (status) => {
1342
+ if (await getColorEnabledAsync()) switch (status / 100 | 0) {
1343
+ case 5: return `\x1B[31m${status}\x1B[0m`;
1344
+ case 4: return `\x1B[33m${status}\x1B[0m`;
1345
+ case 3: return `\x1B[36m${status}\x1B[0m`;
1346
+ case 2: return `\x1B[32m${status}\x1B[0m`;
1347
+ }
1348
+ return `${status}`;
1349
+ };
1350
+ async function log(fn, prefix, method, path$1, status = 0, elapsed) {
1351
+ const out = prefix === "<--" ? `${prefix} ${method} ${path$1}` : `${prefix} ${method} ${path$1} ${await colorStatus(status)} ${elapsed}`;
1352
+ fn(out);
1353
+ }
1354
+ var logger = (fn = console.log) => {
1355
+ return async function logger2(c, next) {
1356
+ const { method, url } = c.req;
1357
+ const path$1 = url.slice(url.indexOf("/", 8));
1358
+ await log(fn, "<--", method, path$1);
1359
+ const start = Date.now();
1360
+ await next();
1361
+ await log(fn, "-->", method, path$1, c.res.status, time(start));
1362
+ };
1363
+ };
1364
+
1365
+ //#endregion
14
1366
  //#region src/lib/request-auth.ts
15
1367
  function normalizeApiKeys(apiKeys) {
16
1368
  if (!Array.isArray(apiKeys)) {
@@ -73,6 +1425,130 @@ const traceIdMiddleware = async (c, next) => {
73
1425
  });
74
1426
  };
75
1427
 
1428
+ //#endregion
1429
+ //#region node_modules/hono/dist/utils/stream.js
1430
+ var StreamingApi = class {
1431
+ writer;
1432
+ encoder;
1433
+ writable;
1434
+ abortSubscribers = [];
1435
+ responseReadable;
1436
+ aborted = false;
1437
+ closed = false;
1438
+ constructor(writable, _readable) {
1439
+ this.writable = writable;
1440
+ this.writer = writable.getWriter();
1441
+ this.encoder = new TextEncoder();
1442
+ const reader = _readable.getReader();
1443
+ this.abortSubscribers.push(async () => {
1444
+ await reader.cancel();
1445
+ });
1446
+ this.responseReadable = new ReadableStream({
1447
+ async pull(controller) {
1448
+ const { done, value } = await reader.read();
1449
+ done ? controller.close() : controller.enqueue(value);
1450
+ },
1451
+ cancel: () => {
1452
+ this.abort();
1453
+ }
1454
+ });
1455
+ }
1456
+ async write(input) {
1457
+ try {
1458
+ if (typeof input === "string") input = this.encoder.encode(input);
1459
+ await this.writer.write(input);
1460
+ } catch {}
1461
+ return this;
1462
+ }
1463
+ async writeln(input) {
1464
+ await this.write(input + "\n");
1465
+ return this;
1466
+ }
1467
+ sleep(ms) {
1468
+ return new Promise((res) => setTimeout(res, ms));
1469
+ }
1470
+ async close() {
1471
+ try {
1472
+ await this.writer.close();
1473
+ } catch {}
1474
+ this.closed = true;
1475
+ }
1476
+ async pipe(body) {
1477
+ this.writer.releaseLock();
1478
+ await body.pipeTo(this.writable, { preventClose: true });
1479
+ this.writer = this.writable.getWriter();
1480
+ }
1481
+ onAbort(listener) {
1482
+ this.abortSubscribers.push(listener);
1483
+ }
1484
+ abort() {
1485
+ if (!this.aborted) {
1486
+ this.aborted = true;
1487
+ this.abortSubscribers.forEach((subscriber) => subscriber());
1488
+ }
1489
+ }
1490
+ };
1491
+
1492
+ //#endregion
1493
+ //#region node_modules/hono/dist/helper/streaming/utils.js
1494
+ var isOldBunVersion = () => {
1495
+ const version = typeof Bun !== "undefined" ? Bun.version : void 0;
1496
+ if (version === void 0) return false;
1497
+ const result = version.startsWith("1.1") || version.startsWith("1.0") || version.startsWith("0.");
1498
+ isOldBunVersion = () => result;
1499
+ return result;
1500
+ };
1501
+
1502
+ //#endregion
1503
+ //#region node_modules/hono/dist/helper/streaming/sse.js
1504
+ var SSEStreamingApi = class extends StreamingApi {
1505
+ constructor(writable, readable) {
1506
+ super(writable, readable);
1507
+ }
1508
+ async writeSSE(message) {
1509
+ const dataLines = (await resolveCallback(message.data, HtmlEscapedCallbackPhase.Stringify, false, {})).split("\n").map((line) => {
1510
+ return `data: ${line}`;
1511
+ }).join("\n");
1512
+ const sseData = [
1513
+ message.event && `event: ${message.event}`,
1514
+ dataLines,
1515
+ message.id && `id: ${message.id}`,
1516
+ message.retry && `retry: ${message.retry}`
1517
+ ].filter(Boolean).join("\n") + "\n\n";
1518
+ await this.write(sseData);
1519
+ }
1520
+ };
1521
+ var run = async (stream$1, cb, onError) => {
1522
+ try {
1523
+ await cb(stream$1);
1524
+ } catch (e) {
1525
+ if (e instanceof Error && onError) {
1526
+ await onError(e, stream$1);
1527
+ await stream$1.writeSSE({
1528
+ event: "error",
1529
+ data: e.message
1530
+ });
1531
+ } else console.error(e);
1532
+ } finally {
1533
+ stream$1.close();
1534
+ }
1535
+ };
1536
+ var contextStash = /* @__PURE__ */ new WeakMap();
1537
+ var streamSSE = (c, cb, onError) => {
1538
+ const { readable, writable } = new TransformStream();
1539
+ const stream$1 = new SSEStreamingApi(writable, readable);
1540
+ if (isOldBunVersion()) c.req.raw.signal.addEventListener("abort", () => {
1541
+ if (!stream$1.closed) stream$1.abort();
1542
+ });
1543
+ contextStash.set(stream$1.responseReadable, c);
1544
+ c.header("Transfer-Encoding", "chunked");
1545
+ c.header("Content-Type", "text/event-stream");
1546
+ c.header("Cache-Control", "no-cache");
1547
+ c.header("Connection", "keep-alive");
1548
+ run(stream$1, cb, onError);
1549
+ return c.newResponse(stream$1.responseReadable);
1550
+ };
1551
+
76
1552
  //#endregion
77
1553
  //#region src/lib/approval.ts
78
1554
  const awaitApproval = async () => {
@@ -127,9 +1603,9 @@ const maybeUnref = (timer) => {
127
1603
  const flushBuffer = (filePath) => {
128
1604
  const buffer = logBuffers.get(filePath);
129
1605
  if (!buffer || buffer.length === 0) return;
130
- const stream = getLogStream(filePath);
1606
+ const stream$1 = getLogStream(filePath);
131
1607
  const content = buffer.join("\n") + "\n";
132
- stream.write(content, (error) => {
1608
+ stream$1.write(content, (error) => {
133
1609
  if (error) console.warn("Failed to write handler log", error);
134
1610
  });
135
1611
  logBuffers.set(filePath, []);
@@ -147,7 +1623,7 @@ const cleanup = () => {
147
1623
  cleanupInterval = void 0;
148
1624
  }
149
1625
  flushAllBuffers();
150
- for (const stream of logStreams.values()) stream.end();
1626
+ for (const stream$1 of logStreams.values()) stream$1.end();
151
1627
  logStreams.clear();
152
1628
  logBuffers.clear();
153
1629
  };
@@ -172,16 +1648,16 @@ const initializeLoggerRuntime = () => {
172
1648
  };
173
1649
  const getLogStream = (filePath) => {
174
1650
  initializeLoggerRuntime();
175
- let stream = logStreams.get(filePath);
176
- if (!stream || stream.destroyed) {
177
- stream = fs.createWriteStream(filePath, { flags: "a" });
178
- logStreams.set(filePath, stream);
179
- stream.on("error", (error) => {
1651
+ let stream$1 = logStreams.get(filePath);
1652
+ if (!stream$1 || stream$1.destroyed) {
1653
+ stream$1 = fs.createWriteStream(filePath, { flags: "a" });
1654
+ logStreams.set(filePath, stream$1);
1655
+ stream$1.on("error", (error) => {
180
1656
  console.warn("Log stream error", error);
181
1657
  logStreams.delete(filePath);
182
1658
  });
183
1659
  }
184
- return stream;
1660
+ return stream$1;
185
1661
  };
186
1662
  const appendLine = (filePath, line) => {
187
1663
  let buffer = logBuffers.get(filePath);
@@ -248,6 +1724,132 @@ async function checkRateLimit(state$1) {
248
1724
  consola.info("Rate limit wait completed, proceeding with request");
249
1725
  }
250
1726
 
1727
+ //#endregion
1728
+ //#region node_modules/fetch-event-stream/esm/deps/jsr.io/@std/streams/0.221.0/text_line_stream.js
1729
+ /**
1730
+ * Transform a stream into a stream where each chunk is divided by a newline,
1731
+ * be it `\n` or `\r\n`. `\r` can be enabled via the `allowCR` option.
1732
+ *
1733
+ * @example
1734
+ * ```ts
1735
+ * import { TextLineStream } from "@std/streams/text-line-stream";
1736
+ *
1737
+ * const res = await fetch("https://example.com");
1738
+ * const lines = res.body!
1739
+ * .pipeThrough(new TextDecoderStream())
1740
+ * .pipeThrough(new TextLineStream());
1741
+ * ```
1742
+ */
1743
+ var TextLineStream = class extends TransformStream {
1744
+ #currentLine = "";
1745
+ /** Constructs a new instance. */
1746
+ constructor(options = { allowCR: false }) {
1747
+ super({
1748
+ transform: (chars, controller) => {
1749
+ chars = this.#currentLine + chars;
1750
+ while (true) {
1751
+ const lfIndex = chars.indexOf("\n");
1752
+ const crIndex = options.allowCR ? chars.indexOf("\r") : -1;
1753
+ if (crIndex !== -1 && crIndex !== chars.length - 1 && (lfIndex === -1 || lfIndex - 1 > crIndex)) {
1754
+ controller.enqueue(chars.slice(0, crIndex));
1755
+ chars = chars.slice(crIndex + 1);
1756
+ continue;
1757
+ }
1758
+ if (lfIndex === -1) break;
1759
+ const endIndex = chars[lfIndex - 1] === "\r" ? lfIndex - 1 : lfIndex;
1760
+ controller.enqueue(chars.slice(0, endIndex));
1761
+ chars = chars.slice(lfIndex + 1);
1762
+ }
1763
+ this.#currentLine = chars;
1764
+ },
1765
+ flush: (controller) => {
1766
+ if (this.#currentLine === "") return;
1767
+ const currentLine = options.allowCR && this.#currentLine.endsWith("\r") ? this.#currentLine.slice(0, -1) : this.#currentLine;
1768
+ controller.enqueue(currentLine);
1769
+ }
1770
+ });
1771
+ }
1772
+ };
1773
+
1774
+ //#endregion
1775
+ //#region node_modules/fetch-event-stream/esm/utils.js
1776
+ function stream(input) {
1777
+ let decoder = new TextDecoderStream();
1778
+ let split$1 = new TextLineStream({ allowCR: true });
1779
+ return input.pipeThrough(decoder).pipeThrough(split$1);
1780
+ }
1781
+ function split(input) {
1782
+ let match = /[:]\s*/.exec(input);
1783
+ let idx = match && match.index;
1784
+ if (idx) return [input.substring(0, idx), input.substring(idx + match[0].length)];
1785
+ }
1786
+
1787
+ //#endregion
1788
+ //#region node_modules/fetch-event-stream/esm/mod.js
1789
+ /**
1790
+ * Convert a `Response` body containing Server Sent Events (SSE) into an Async Iterator that yields {@linkcode ServerSentEventMessage} objects.
1791
+ *
1792
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events}
1793
+ *
1794
+ * @example
1795
+ * ```js
1796
+ * // Optional
1797
+ * let abort = new AbortController;
1798
+ *
1799
+ * // Manually fetch a Response
1800
+ * let res = await fetch('https://...', {
1801
+ * method: 'POST',
1802
+ * signal: abort.signal,
1803
+ * headers: {
1804
+ * 'api-key': 'token <value>',
1805
+ * 'content-type': 'application/json',
1806
+ * },
1807
+ * body: JSON.stringify({
1808
+ * stream: true, // <- hypothetical
1809
+ * // ...
1810
+ * })
1811
+ * });
1812
+ *
1813
+ * if (res.ok) {
1814
+ * let stream = events(res, abort.signal);
1815
+ * for await (let event of stream) {
1816
+ * console.log('<<', event.data);
1817
+ * }
1818
+ * }
1819
+ * ```
1820
+ */
1821
+ async function* events(res, signal) {
1822
+ if (!res.body) return;
1823
+ let iter = stream(res.body);
1824
+ let line, reader = iter.getReader();
1825
+ let event;
1826
+ for (;;) {
1827
+ if (signal && signal.aborted) return reader.cancel();
1828
+ line = await reader.read();
1829
+ if (line.done) return;
1830
+ if (!line.value) {
1831
+ if (event) yield event;
1832
+ event = void 0;
1833
+ continue;
1834
+ }
1835
+ let [field, value] = split(line.value) || [];
1836
+ if (!field) continue;
1837
+ if (field === "data") {
1838
+ event ||= {};
1839
+ event[field] = event[field] ? event[field] + "\n" + value : value;
1840
+ } else if (field === "event") {
1841
+ event ||= {};
1842
+ event[field] = value;
1843
+ } else if (field === "id") {
1844
+ event ||= {};
1845
+ event[field] = +value || value;
1846
+ } else if (field === "retry") {
1847
+ event ||= {};
1848
+ event[field] = +value || void 0;
1849
+ }
1850
+ }
1851
+ }
1852
+
251
1853
  //#endregion
252
1854
  //#region src/lib/copilot-rate-limit.ts
253
1855
  const copilotRateLimitTypes = ["session", "weekly"];
@@ -361,10 +1963,10 @@ async function handleCompletion$1(c) {
361
1963
  return c.json(response);
362
1964
  }
363
1965
  logger$6.debug("Streaming response");
364
- return streamSSE(c, async (stream) => {
1966
+ return streamSSE(c, async (stream$1) => {
365
1967
  for await (const chunk of response) {
366
1968
  debugJson(logger$6, "Streaming chunk:", chunk);
367
- await stream.writeSSE(chunk);
1969
+ await stream$1.writeSSE(chunk);
368
1970
  }
369
1971
  });
370
1972
  }
@@ -410,11 +2012,11 @@ embeddingRoutes.post("/", async (c) => {
410
2012
  //#endregion
411
2013
  //#region src/lib/tokenizer.ts
412
2014
  const ENCODING_MAP = {
413
- o200k_base: () => import("gpt-tokenizer/encoding/o200k_base"),
414
- cl100k_base: () => import("gpt-tokenizer/encoding/cl100k_base"),
415
- p50k_base: () => import("gpt-tokenizer/encoding/p50k_base"),
416
- p50k_edit: () => import("gpt-tokenizer/encoding/p50k_edit"),
417
- r50k_base: () => import("gpt-tokenizer/encoding/r50k_base")
2015
+ o200k_base: () => import("./o200k_base-BlrOP1Jc.js"),
2016
+ cl100k_base: () => import("./cl100k_base-kiDWemr-.js"),
2017
+ p50k_base: () => import("./p50k_base-DA6KYT1Z.js"),
2018
+ p50k_edit: () => import("./p50k_edit-BlA1HcF4.js"),
2019
+ r50k_base: () => import("./r50k_base-CaCWe6-8.js")
418
2020
  };
419
2021
  const encodingCache = /* @__PURE__ */ new Map();
420
2022
  /**
@@ -1057,11 +2659,11 @@ const encodeCompactionCarrierSignature = (compaction) => {
1057
2659
  };
1058
2660
  const decodeCompactionCarrierSignature = (signature) => {
1059
2661
  if (signature.startsWith(COMPACTION_SIGNATURE_PREFIX)) {
1060
- const raw = signature.slice(4);
1061
- const separatorIndex = raw.indexOf(COMPACTION_SIGNATURE_SEPARATOR);
1062
- if (separatorIndex <= 0 || separatorIndex === raw.length - 1) return;
1063
- const encrypted_content = raw.slice(0, separatorIndex);
1064
- const id = raw.slice(separatorIndex + 1);
2662
+ const raw$1 = signature.slice(4);
2663
+ const separatorIndex = raw$1.indexOf(COMPACTION_SIGNATURE_SEPARATOR);
2664
+ if (separatorIndex <= 0 || separatorIndex === raw$1.length - 1) return;
2665
+ const encrypted_content = raw$1.slice(0, separatorIndex);
2666
+ const id = raw$1.slice(separatorIndex + 1);
1065
2667
  if (!encrypted_content) return;
1066
2668
  return {
1067
2669
  id,
@@ -2506,7 +4108,7 @@ const handleWithChatCompletions = async (c, anthropicPayload, options) => {
2506
4108
  return c.json(anthropicResponse);
2507
4109
  }
2508
4110
  logger$7.debug("Streaming response from Copilot");
2509
- return streamSSE(c, async (stream) => {
4111
+ return streamSSE(c, async (stream$1) => {
2510
4112
  const streamState = {
2511
4113
  messageStartSent: false,
2512
4114
  contentBlockIndex: 0,
@@ -2523,7 +4125,7 @@ const handleWithChatCompletions = async (c, anthropicPayload, options) => {
2523
4125
  for (const event of events$1) {
2524
4126
  const eventData = JSON.stringify(event);
2525
4127
  debugLazy(logger$7, () => ["Translated Anthropic event:", eventData]);
2526
- await stream.writeSSE({
4128
+ await stream$1.writeSSE({
2527
4129
  event: event.type,
2528
4130
  data: eventData
2529
4131
  });
@@ -2548,11 +4150,11 @@ const handleWithResponsesApi = async (c, anthropicPayload, options) => {
2548
4150
  });
2549
4151
  if (responsesPayload.stream && isAsyncIterable$1(response)) {
2550
4152
  logger$7.debug("Streaming response from Copilot (Responses API)");
2551
- return streamSSE(c, async (stream) => {
4153
+ return streamSSE(c, async (stream$1) => {
2552
4154
  const streamState = createResponsesStreamState();
2553
4155
  for await (const chunk of response) {
2554
4156
  if (chunk.event === "ping") {
2555
- await stream.writeSSE({
4157
+ await stream$1.writeSSE({
2556
4158
  event: "ping",
2557
4159
  data: "{\"type\":\"ping\"}"
2558
4160
  });
@@ -2565,7 +4167,7 @@ const handleWithResponsesApi = async (c, anthropicPayload, options) => {
2565
4167
  for (const event of events$1) {
2566
4168
  const eventData = JSON.stringify(event);
2567
4169
  debugLazy(logger$7, () => ["Translated Anthropic event:", eventData]);
2568
- await stream.writeSSE({
4170
+ await stream$1.writeSSE({
2569
4171
  event: event.type,
2570
4172
  data: eventData
2571
4173
  });
@@ -2578,7 +4180,7 @@ const handleWithResponsesApi = async (c, anthropicPayload, options) => {
2578
4180
  if (!streamState.messageCompleted) {
2579
4181
  logger$7.warn("Responses stream ended without completion; sending error event");
2580
4182
  const errorEvent = buildErrorEvent("Responses stream ended without completion");
2581
- await stream.writeSSE({
4183
+ await stream$1.writeSSE({
2582
4184
  event: errorEvent.type,
2583
4185
  data: JSON.stringify(errorEvent)
2584
4186
  });
@@ -2605,14 +4207,14 @@ const handleWithMessagesApi = async (c, anthropicPayload, options) => {
2605
4207
  });
2606
4208
  if (isAsyncIterable$1(response)) {
2607
4209
  logger$7.debug("Streaming response from Copilot (Messages API)");
2608
- return streamSSE(c, async (stream) => {
4210
+ return streamSSE(c, async (stream$1) => {
2609
4211
  for await (const event of response) {
2610
4212
  const eventName = event.event;
2611
4213
  const data = event.data ?? "";
2612
4214
  if (data === "[DONE]") break;
2613
4215
  if (!data) continue;
2614
4216
  debugLazy(logger$7, () => ["Messages raw stream event:", data]);
2615
- await stream.writeSSE({
4217
+ await stream$1.writeSSE({
2616
4218
  event: eventName,
2617
4219
  data
2618
4220
  });
@@ -2918,12 +4520,12 @@ async function handleProviderMessages(c) {
2918
4520
  const contentType = upstreamResponse.headers.get("content-type") ?? "";
2919
4521
  if (Boolean(payload.stream) && contentType.includes("text/event-stream")) {
2920
4522
  logger$3.debug("provider.messages.streaming");
2921
- return streamSSE(c, async (stream) => {
4523
+ return streamSSE(c, async (stream$1) => {
2922
4524
  for await (const chunk of events(upstreamResponse)) {
2923
4525
  logger$3.debug("provider.messages.raw_stream_event:", chunk.data);
2924
4526
  const eventName = chunk.event;
2925
4527
  if (eventName === "ping") {
2926
- await stream.writeSSE({
4528
+ await stream$1.writeSSE({
2927
4529
  event: "ping",
2928
4530
  data: "{\"type\":\"ping\"}"
2929
4531
  });
@@ -2943,7 +4545,7 @@ async function handleProviderMessages(c) {
2943
4545
  originalData: data
2944
4546
  });
2945
4547
  }
2946
- await stream.writeSSE({
4548
+ await stream$1.writeSSE({
2947
4549
  event: eventName,
2948
4550
  data
2949
4551
  });
@@ -3083,12 +4685,12 @@ const handleResponses = async (c) => {
3083
4685
  });
3084
4686
  if (isStreamingRequested(payload) && isAsyncIterable(response)) {
3085
4687
  logger$1.debug("Forwarding native Responses stream");
3086
- return streamSSE(c, async (stream) => {
4688
+ return streamSSE(c, async (stream$1) => {
3087
4689
  const idTracker = createStreamIdTracker();
3088
4690
  for await (const chunk of response) {
3089
4691
  debugJson(logger$1, "Responses stream chunk:", chunk);
3090
4692
  const processedData = fixStreamIds(chunk.data ?? "", chunk.event, idTracker);
3091
- await stream.writeSSE({
4693
+ await stream$1.writeSSE({
3092
4694
  id: chunk.id,
3093
4695
  event: chunk.event,
3094
4696
  data: processedData
@@ -3222,4 +4824,4 @@ server.route("/:provider/v1/models", providerModelRoutes);
3222
4824
 
3223
4825
  //#endregion
3224
4826
  export { server };
3225
- //# sourceMappingURL=server-CsVIHpFX.js.map
4827
+ //# sourceMappingURL=server-BGqhE4N_.js.map