elysia 1.4.26 → 1.4.28

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.
@@ -23,7 +23,9 @@ const createNativeStaticHandler = (handle, hooks, set) => {
23
23
  if (typeof handle == "function" || handle instanceof Blob) return;
24
24
  if ((0, import_index.isHTMLBundle)(handle)) return () => handle;
25
25
  const response = (0, import_handler.mapResponse)(
26
- handle instanceof Response ? handle.clone() : handle instanceof Promise ? handle.then((x) => x instanceof Response ? x.clone() : x) : handle,
26
+ handle instanceof Response ? handle.clone() : handle instanceof Promise ? handle.then(
27
+ (x) => x instanceof Response ? x.clone() : (0, import_index.isHTMLBundle)(x) ? () => x : x
28
+ ) : handle,
27
29
  set ?? {
28
30
  headers: {}
29
31
  }
@@ -31,8 +33,8 @@ const createNativeStaticHandler = (handle, hooks, set) => {
31
33
  if (!hooks.parse?.length && !hooks.transform?.length && !hooks.beforeHandle?.length && !hooks.afterHandle?.length)
32
34
  return response instanceof Promise ? response.then((response2) => {
33
35
  if (response2)
34
- return response2.headers.has("content-type") || response2.headers.append("content-type", "text/plain"), response2.clone();
35
- }) : (response.headers.has("content-type") || response.headers.append("content-type", "text/plain"), () => response.clone());
36
+ return response2.clone();
37
+ }) : () => response.clone();
36
38
  };
37
39
  // Annotate the CommonJS export names for ESM import in node:
38
40
  0 && (module.exports = {
@@ -4,7 +4,9 @@ const createNativeStaticHandler = (handle, hooks, set) => {
4
4
  if (typeof handle == "function" || handle instanceof Blob) return;
5
5
  if (isHTMLBundle(handle)) return () => handle;
6
6
  const response = mapResponse(
7
- handle instanceof Response ? handle.clone() : handle instanceof Promise ? handle.then((x) => x instanceof Response ? x.clone() : x) : handle,
7
+ handle instanceof Response ? handle.clone() : handle instanceof Promise ? handle.then(
8
+ (x) => x instanceof Response ? x.clone() : isHTMLBundle(x) ? () => x : x
9
+ ) : handle,
8
10
  set ?? {
9
11
  headers: {}
10
12
  }
@@ -12,8 +14,8 @@ const createNativeStaticHandler = (handle, hooks, set) => {
12
14
  if (!hooks.parse?.length && !hooks.transform?.length && !hooks.beforeHandle?.length && !hooks.afterHandle?.length)
13
15
  return response instanceof Promise ? response.then((response2) => {
14
16
  if (response2)
15
- return response2.headers.has("content-type") || response2.headers.append("content-type", "text/plain"), response2.clone();
16
- }) : (response.headers.has("content-type") || response.headers.append("content-type", "text/plain"), () => response.clone());
17
+ return response2.clone();
18
+ }) : () => response.clone();
17
19
  };
18
20
  export {
19
21
  createNativeStaticHandler
@@ -30,13 +30,13 @@ const mapResponse = (response, set, request) => {
30
30
  return new Response(response, set);
31
31
  case "Array":
32
32
  case "Object":
33
- return set.headers["content-type"] = "application/json", new Response(JSON.stringify(response), set);
33
+ return Response.json(response, set);
34
34
  case "ElysiaFile":
35
- return (0, import_utils.handleFile)(response.value, set);
35
+ return (0, import_utils.handleFile)(response.value, set, request);
36
36
  case "File":
37
- return (0, import_utils.handleFile)(response, set);
37
+ return (0, import_utils.handleFile)(response, set, request);
38
38
  case "Blob":
39
- return (0, import_utils.handleFile)(response, set);
39
+ return (0, import_utils.handleFile)(response, set, request);
40
40
  case "ElysiaCustomStatusResponse":
41
41
  return set.status = response.code, mapResponse(
42
42
  response.response,
@@ -44,7 +44,7 @@ const mapResponse = (response, set, request) => {
44
44
  request
45
45
  );
46
46
  case void 0:
47
- return response ? new Response(JSON.stringify(response), set) : new Response("", set);
47
+ return response ? Response.json(response, set) : new Response("", set);
48
48
  case "Response":
49
49
  return handleResponse(response, set, request);
50
50
  case "Error":
@@ -88,20 +88,13 @@ const mapResponse = (response, set, request) => {
88
88
  (x) => mapResponse(x, set)
89
89
  );
90
90
  if (Array.isArray(response))
91
- return new Response(JSON.stringify(response), {
92
- headers: {
93
- "Content-Type": "application/json"
94
- }
95
- });
91
+ return Response.json(response);
96
92
  if (typeof response?.toResponse == "function")
97
93
  return mapResponse(response.toResponse(), set);
98
94
  if ("charCodeAt" in response) {
99
95
  const code = response.charCodeAt(0);
100
96
  if (code === 123 || code === 91)
101
- return set.headers["Content-Type"] || (set.headers["Content-Type"] = "application/json"), new Response(
102
- JSON.stringify(response),
103
- set
104
- );
97
+ return Response.json(response, set);
105
98
  }
106
99
  return new Response(response, set);
107
100
  }
@@ -117,13 +110,13 @@ const mapResponse = (response, set, request) => {
117
110
  return new Response(response, set);
118
111
  case "Array":
119
112
  case "Object":
120
- return set.headers["content-type"] = "application/json", new Response(JSON.stringify(response), set);
113
+ return Response.json(response, set);
121
114
  case "ElysiaFile":
122
- return (0, import_utils.handleFile)(response.value, set);
115
+ return (0, import_utils.handleFile)(response.value, set, request);
123
116
  case "File":
124
- return (0, import_utils.handleFile)(response, set);
117
+ return (0, import_utils.handleFile)(response, set, request);
125
118
  case "Blob":
126
- return (0, import_utils.handleFile)(response, set);
119
+ return (0, import_utils.handleFile)(response, set, request);
127
120
  case "ElysiaCustomStatusResponse":
128
121
  return set.status = response.code, mapEarlyResponse(
129
122
  response.response,
@@ -131,7 +124,7 @@ const mapResponse = (response, set, request) => {
131
124
  request
132
125
  );
133
126
  case void 0:
134
- return response ? new Response(JSON.stringify(response), set) : void 0;
127
+ return response ? Response.json(response, set) : void 0;
135
128
  case "Response":
136
129
  return handleResponse(response, set, request);
137
130
  case "Promise":
@@ -177,18 +170,11 @@ const mapResponse = (response, set, request) => {
177
170
  if (typeof response?.toResponse == "function")
178
171
  return mapEarlyResponse(response.toResponse(), set);
179
172
  if (Array.isArray(response))
180
- return new Response(JSON.stringify(response), {
181
- headers: {
182
- "Content-Type": "application/json"
183
- }
184
- });
173
+ return Response.json(response);
185
174
  if ("charCodeAt" in response) {
186
175
  const code = response.charCodeAt(0);
187
176
  if (code === 123 || code === 91)
188
- return set.headers["Content-Type"] || (set.headers["Content-Type"] = "application/json"), new Response(
189
- JSON.stringify(response),
190
- set
191
- );
177
+ return Response.json(response, set);
192
178
  }
193
179
  return new Response(response, set);
194
180
  }
@@ -198,13 +184,13 @@ const mapResponse = (response, set, request) => {
198
184
  return new Response(response);
199
185
  case "Array":
200
186
  case "Object":
201
- return set.headers["content-type"] = "application/json", new Response(JSON.stringify(response), set);
187
+ return Response.json(response, set);
202
188
  case "ElysiaFile":
203
- return (0, import_utils.handleFile)(response.value, set);
189
+ return (0, import_utils.handleFile)(response.value, set, request);
204
190
  case "File":
205
- return (0, import_utils.handleFile)(response, set);
191
+ return (0, import_utils.handleFile)(response, set, request);
206
192
  case "Blob":
207
- return (0, import_utils.handleFile)(response, set);
193
+ return (0, import_utils.handleFile)(response, set, request);
208
194
  case "ElysiaCustomStatusResponse":
209
195
  return set.status = response.code, mapEarlyResponse(
210
196
  response.response,
@@ -212,11 +198,7 @@ const mapResponse = (response, set, request) => {
212
198
  request
213
199
  );
214
200
  case void 0:
215
- return response ? new Response(JSON.stringify(response), {
216
- headers: {
217
- "content-type": "application/json"
218
- }
219
- }) : new Response("");
201
+ return response ? Response.json(response) : new Response("");
220
202
  case "Response":
221
203
  return response;
222
204
  case "Promise":
@@ -259,18 +241,11 @@ const mapResponse = (response, set, request) => {
259
241
  if (typeof response?.toResponse == "function")
260
242
  return mapEarlyResponse(response.toResponse(), set);
261
243
  if (Array.isArray(response))
262
- return new Response(JSON.stringify(response), {
263
- headers: {
264
- "Content-Type": "application/json"
265
- }
266
- });
244
+ return Response.json(response);
267
245
  if ("charCodeAt" in response) {
268
246
  const code = response.charCodeAt(0);
269
247
  if (code === 123 || code === 91)
270
- return set.headers["Content-Type"] || (set.headers["Content-Type"] = "application/json"), new Response(
271
- JSON.stringify(response),
272
- set
273
- );
248
+ return Response.json(response, set);
274
249
  }
275
250
  return new Response(response);
276
251
  }
@@ -280,17 +255,13 @@ const mapResponse = (response, set, request) => {
280
255
  return new Response(response);
281
256
  case "Object":
282
257
  case "Array":
283
- return new Response(JSON.stringify(response), {
284
- headers: {
285
- "Content-Type": "application/json"
286
- }
287
- });
258
+ return Response.json(response);
288
259
  case "ElysiaFile":
289
- return (0, import_utils.handleFile)(response.value);
260
+ return (0, import_utils.handleFile)(response.value, void 0, request);
290
261
  case "File":
291
- return (0, import_utils.handleFile)(response);
262
+ return (0, import_utils.handleFile)(response, void 0, request);
292
263
  case "Blob":
293
- return (0, import_utils.handleFile)(response);
264
+ return (0, import_utils.handleFile)(response, void 0, request);
294
265
  case "ElysiaCustomStatusResponse":
295
266
  return mapResponse(
296
267
  response.response,
@@ -300,11 +271,7 @@ const mapResponse = (response, set, request) => {
300
271
  }
301
272
  );
302
273
  case void 0:
303
- return response ? new Response(JSON.stringify(response), {
304
- headers: {
305
- "content-type": "application/json"
306
- }
307
- }) : new Response("");
274
+ return response ? Response.json(response) : new Response("");
308
275
  case "Response":
309
276
  return response;
310
277
  case "Error":
@@ -348,20 +315,11 @@ const mapResponse = (response, set, request) => {
348
315
  );
349
316
  if (typeof response?.toResponse == "function")
350
317
  return mapCompactResponse(response.toResponse());
351
- if (Array.isArray(response))
352
- return new Response(JSON.stringify(response), {
353
- headers: {
354
- "Content-Type": "application/json"
355
- }
356
- });
318
+ if (Array.isArray(response)) return Response.json(response);
357
319
  if ("charCodeAt" in response) {
358
320
  const code = response.charCodeAt(0);
359
321
  if (code === 123 || code === 91)
360
- return new Response(JSON.stringify(response), {
361
- headers: {
362
- "Content-Type": "application/json"
363
- }
364
- });
322
+ return Response.json(response);
365
323
  }
366
324
  return new Response(response);
367
325
  }
@@ -370,12 +328,12 @@ const mapResponse = (response, set, request) => {
370
328
  const raw = error.toResponse(), targetSet = set ?? { headers: {}, status: 200, redirect: "" }, apply = (resolved) => (resolved instanceof Response && (targetSet.status = resolved.status), mapResponse(resolved, targetSet));
371
329
  return typeof raw?.then == "function" ? raw.then(apply) : apply(raw);
372
330
  }
373
- return new Response(
374
- JSON.stringify({
331
+ return Response.json(
332
+ {
375
333
  name: error?.name,
376
334
  message: error?.message,
377
335
  cause: error?.cause
378
- }),
336
+ },
379
337
  {
380
338
  status: set?.status !== 200 ? set?.status ?? 500 : 500,
381
339
  headers: set?.headers
@@ -14,13 +14,13 @@ const mapResponse = (response, set, request) => {
14
14
  return new Response(response, set);
15
15
  case "Array":
16
16
  case "Object":
17
- return set.headers["content-type"] = "application/json", new Response(JSON.stringify(response), set);
17
+ return Response.json(response, set);
18
18
  case "ElysiaFile":
19
- return handleFile(response.value, set);
19
+ return handleFile(response.value, set, request);
20
20
  case "File":
21
- return handleFile(response, set);
21
+ return handleFile(response, set, request);
22
22
  case "Blob":
23
- return handleFile(response, set);
23
+ return handleFile(response, set, request);
24
24
  case "ElysiaCustomStatusResponse":
25
25
  return set.status = response.code, mapResponse(
26
26
  response.response,
@@ -28,7 +28,7 @@ const mapResponse = (response, set, request) => {
28
28
  request
29
29
  );
30
30
  case void 0:
31
- return response ? new Response(JSON.stringify(response), set) : new Response("", set);
31
+ return response ? Response.json(response, set) : new Response("", set);
32
32
  case "Response":
33
33
  return handleResponse(response, set, request);
34
34
  case "Error":
@@ -72,20 +72,13 @@ const mapResponse = (response, set, request) => {
72
72
  (x) => mapResponse(x, set)
73
73
  );
74
74
  if (Array.isArray(response))
75
- return new Response(JSON.stringify(response), {
76
- headers: {
77
- "Content-Type": "application/json"
78
- }
79
- });
75
+ return Response.json(response);
80
76
  if (typeof response?.toResponse == "function")
81
77
  return mapResponse(response.toResponse(), set);
82
78
  if ("charCodeAt" in response) {
83
79
  const code = response.charCodeAt(0);
84
80
  if (code === 123 || code === 91)
85
- return set.headers["Content-Type"] || (set.headers["Content-Type"] = "application/json"), new Response(
86
- JSON.stringify(response),
87
- set
88
- );
81
+ return Response.json(response, set);
89
82
  }
90
83
  return new Response(response, set);
91
84
  }
@@ -101,13 +94,13 @@ const mapResponse = (response, set, request) => {
101
94
  return new Response(response, set);
102
95
  case "Array":
103
96
  case "Object":
104
- return set.headers["content-type"] = "application/json", new Response(JSON.stringify(response), set);
97
+ return Response.json(response, set);
105
98
  case "ElysiaFile":
106
- return handleFile(response.value, set);
99
+ return handleFile(response.value, set, request);
107
100
  case "File":
108
- return handleFile(response, set);
101
+ return handleFile(response, set, request);
109
102
  case "Blob":
110
- return handleFile(response, set);
103
+ return handleFile(response, set, request);
111
104
  case "ElysiaCustomStatusResponse":
112
105
  return set.status = response.code, mapEarlyResponse(
113
106
  response.response,
@@ -115,7 +108,7 @@ const mapResponse = (response, set, request) => {
115
108
  request
116
109
  );
117
110
  case void 0:
118
- return response ? new Response(JSON.stringify(response), set) : void 0;
111
+ return response ? Response.json(response, set) : void 0;
119
112
  case "Response":
120
113
  return handleResponse(response, set, request);
121
114
  case "Promise":
@@ -161,18 +154,11 @@ const mapResponse = (response, set, request) => {
161
154
  if (typeof response?.toResponse == "function")
162
155
  return mapEarlyResponse(response.toResponse(), set);
163
156
  if (Array.isArray(response))
164
- return new Response(JSON.stringify(response), {
165
- headers: {
166
- "Content-Type": "application/json"
167
- }
168
- });
157
+ return Response.json(response);
169
158
  if ("charCodeAt" in response) {
170
159
  const code = response.charCodeAt(0);
171
160
  if (code === 123 || code === 91)
172
- return set.headers["Content-Type"] || (set.headers["Content-Type"] = "application/json"), new Response(
173
- JSON.stringify(response),
174
- set
175
- );
161
+ return Response.json(response, set);
176
162
  }
177
163
  return new Response(response, set);
178
164
  }
@@ -182,13 +168,13 @@ const mapResponse = (response, set, request) => {
182
168
  return new Response(response);
183
169
  case "Array":
184
170
  case "Object":
185
- return set.headers["content-type"] = "application/json", new Response(JSON.stringify(response), set);
171
+ return Response.json(response, set);
186
172
  case "ElysiaFile":
187
- return handleFile(response.value, set);
173
+ return handleFile(response.value, set, request);
188
174
  case "File":
189
- return handleFile(response, set);
175
+ return handleFile(response, set, request);
190
176
  case "Blob":
191
- return handleFile(response, set);
177
+ return handleFile(response, set, request);
192
178
  case "ElysiaCustomStatusResponse":
193
179
  return set.status = response.code, mapEarlyResponse(
194
180
  response.response,
@@ -196,11 +182,7 @@ const mapResponse = (response, set, request) => {
196
182
  request
197
183
  );
198
184
  case void 0:
199
- return response ? new Response(JSON.stringify(response), {
200
- headers: {
201
- "content-type": "application/json"
202
- }
203
- }) : new Response("");
185
+ return response ? Response.json(response) : new Response("");
204
186
  case "Response":
205
187
  return response;
206
188
  case "Promise":
@@ -243,18 +225,11 @@ const mapResponse = (response, set, request) => {
243
225
  if (typeof response?.toResponse == "function")
244
226
  return mapEarlyResponse(response.toResponse(), set);
245
227
  if (Array.isArray(response))
246
- return new Response(JSON.stringify(response), {
247
- headers: {
248
- "Content-Type": "application/json"
249
- }
250
- });
228
+ return Response.json(response);
251
229
  if ("charCodeAt" in response) {
252
230
  const code = response.charCodeAt(0);
253
231
  if (code === 123 || code === 91)
254
- return set.headers["Content-Type"] || (set.headers["Content-Type"] = "application/json"), new Response(
255
- JSON.stringify(response),
256
- set
257
- );
232
+ return Response.json(response, set);
258
233
  }
259
234
  return new Response(response);
260
235
  }
@@ -264,17 +239,13 @@ const mapResponse = (response, set, request) => {
264
239
  return new Response(response);
265
240
  case "Object":
266
241
  case "Array":
267
- return new Response(JSON.stringify(response), {
268
- headers: {
269
- "Content-Type": "application/json"
270
- }
271
- });
242
+ return Response.json(response);
272
243
  case "ElysiaFile":
273
- return handleFile(response.value);
244
+ return handleFile(response.value, void 0, request);
274
245
  case "File":
275
- return handleFile(response);
246
+ return handleFile(response, void 0, request);
276
247
  case "Blob":
277
- return handleFile(response);
248
+ return handleFile(response, void 0, request);
278
249
  case "ElysiaCustomStatusResponse":
279
250
  return mapResponse(
280
251
  response.response,
@@ -284,11 +255,7 @@ const mapResponse = (response, set, request) => {
284
255
  }
285
256
  );
286
257
  case void 0:
287
- return response ? new Response(JSON.stringify(response), {
288
- headers: {
289
- "content-type": "application/json"
290
- }
291
- }) : new Response("");
258
+ return response ? Response.json(response) : new Response("");
292
259
  case "Response":
293
260
  return response;
294
261
  case "Error":
@@ -332,20 +299,11 @@ const mapResponse = (response, set, request) => {
332
299
  );
333
300
  if (typeof response?.toResponse == "function")
334
301
  return mapCompactResponse(response.toResponse());
335
- if (Array.isArray(response))
336
- return new Response(JSON.stringify(response), {
337
- headers: {
338
- "Content-Type": "application/json"
339
- }
340
- });
302
+ if (Array.isArray(response)) return Response.json(response);
341
303
  if ("charCodeAt" in response) {
342
304
  const code = response.charCodeAt(0);
343
305
  if (code === 123 || code === 91)
344
- return new Response(JSON.stringify(response), {
345
- headers: {
346
- "Content-Type": "application/json"
347
- }
348
- });
306
+ return Response.json(response);
349
307
  }
350
308
  return new Response(response);
351
309
  }
@@ -354,12 +312,12 @@ const mapResponse = (response, set, request) => {
354
312
  const raw = error.toResponse(), targetSet = set ?? { headers: {}, status: 200, redirect: "" }, apply = (resolved) => (resolved instanceof Response && (targetSet.status = resolved.status), mapResponse(resolved, targetSet));
355
313
  return typeof raw?.then == "function" ? raw.then(apply) : apply(raw);
356
314
  }
357
- return new Response(
358
- JSON.stringify({
315
+ return Response.json(
316
+ {
359
317
  name: error?.name,
360
318
  message: error?.message,
361
319
  cause: error?.cause
362
- }),
320
+ },
363
321
  {
364
322
  status: set?.status !== 200 ? set?.status ?? 500 : 500,
365
323
  headers: set?.headers
@@ -91,7 +91,7 @@ const optionalParam = /:.+?\?(?=\/|$)/, getPossibleParams = (path) => {
91
91
  return r1;
92
92
  }, removeTrailingPath = (routes) => {
93
93
  for (const key of Object.keys(routes))
94
- key.charCodeAt(key.length - 1) === 47 && (routes[key.slice(0, -1)] = routes[key], delete routes[key]);
94
+ key.length > 1 && key.charCodeAt(key.length - 1) === 47 && (routes[key.slice(0, -1)] = routes[key], delete routes[key]);
95
95
  return routes;
96
96
  }, BunAdapter = {
97
97
  ...import_web_standard.WebStandardAdapter,
@@ -94,7 +94,7 @@ const optionalParam = /:.+?\?(?=\/|$)/, getPossibleParams = (path) => {
94
94
  return r1;
95
95
  }, removeTrailingPath = (routes) => {
96
96
  for (const key of Object.keys(routes))
97
- key.charCodeAt(key.length - 1) === 47 && (routes[key.slice(0, -1)] = routes[key], delete routes[key]);
97
+ key.length > 1 && key.charCodeAt(key.length - 1) === 47 && (routes[key.slice(0, -1)] = routes[key], delete routes[key]);
98
98
  return routes;
99
99
  }, BunAdapter = {
100
100
  ...WebStandardAdapter,
@@ -1,9 +1,9 @@
1
1
  import { StatusMap } from '../utils';
2
2
  import type { Context } from '../context';
3
- export declare const handleFile: (response: File | Blob, set?: Context["set"]) => Response;
3
+ export declare const handleFile: (response: File | Blob, set?: Context["set"], request?: Request) => Response;
4
4
  export declare const parseSetCookies: (headers: Headers, setCookie: string[]) => Headers;
5
5
  export declare const responseToSetHeaders: (response: Response, set?: Context["set"]) => {
6
- headers: import("..").HTTPHeaders;
6
+ headers: import("../types").HTTPHeaders;
7
7
  status?: number | keyof StatusMap;
8
8
  redirect?: string;
9
9
  cookie?: Record<string, import("../cookies").ElysiaCookie>;