elysia 1.4.21 → 1.4.23

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 (47) hide show
  1. package/dist/adapter/bun/compose.js +1 -1
  2. package/dist/adapter/bun/compose.mjs +1 -1
  3. package/dist/adapter/bun/handler-native.js +1 -1
  4. package/dist/adapter/bun/handler-native.mjs +1 -1
  5. package/dist/adapter/bun/handler.js +113 -84
  6. package/dist/adapter/bun/handler.mjs +113 -84
  7. package/dist/adapter/bun/index.js +1 -1
  8. package/dist/adapter/bun/index.mjs +1 -1
  9. package/dist/adapter/cloudflare-worker/index.d.ts +0 -1
  10. package/dist/adapter/cloudflare-worker/index.js +2 -16
  11. package/dist/adapter/cloudflare-worker/index.mjs +1 -14
  12. package/dist/adapter/utils.d.ts +5 -3
  13. package/dist/adapter/utils.js +44 -43
  14. package/dist/adapter/utils.mjs +42 -43
  15. package/dist/adapter/web-standard/handler.d.ts +4 -2
  16. package/dist/adapter/web-standard/handler.js +118 -86
  17. package/dist/adapter/web-standard/handler.mjs +118 -86
  18. package/dist/adapter/web-standard/index.js +50 -3
  19. package/dist/adapter/web-standard/index.mjs +50 -3
  20. package/dist/bun/index.js +91 -45
  21. package/dist/bun/index.js.map +20 -21
  22. package/dist/compose.js +28 -22
  23. package/dist/compose.mjs +29 -22
  24. package/dist/dynamic-handle.js +124 -33
  25. package/dist/dynamic-handle.mjs +124 -32
  26. package/dist/error.d.ts +7 -11
  27. package/dist/error.js +5 -8
  28. package/dist/error.mjs +5 -8
  29. package/dist/index.d.ts +6 -6
  30. package/dist/index.js +1 -1
  31. package/dist/index.mjs +1 -1
  32. package/dist/schema.d.ts +2 -1
  33. package/dist/schema.js +28 -2
  34. package/dist/schema.mjs +27 -2
  35. package/dist/sucrose.d.ts +3 -3
  36. package/dist/sucrose.js +7 -7
  37. package/dist/sucrose.mjs +5 -6
  38. package/dist/type-system/index.js +1 -1
  39. package/dist/type-system/index.mjs +1 -1
  40. package/dist/types.d.ts +3 -3
  41. package/dist/universal/utils.d.ts +1 -0
  42. package/dist/universal/utils.js +14 -0
  43. package/dist/universal/utils.mjs +13 -0
  44. package/dist/utils.d.ts +10 -1
  45. package/dist/utils.js +9 -8
  46. package/dist/utils.mjs +9 -7
  47. package/package.json +2 -2
@@ -24,7 +24,7 @@ const allocateIf = (value, condition) => condition ? value : "", createContext =
24
24
  const defaultHeaders = app.setHeaders, hasTrace = !!app.event.trace?.length;
25
25
  hasTrace && (fnLiteral += `const id=randomId()
26
26
  `);
27
- const isDynamic = /[:*]/.test(route.path), getQi = `const u=request.url,s=u.indexOf('/',${app.config.handler?.standardHostname ?? !0 ? 11 : 7}),qi=u.indexOf('?', s + 1)
27
+ const isDynamic = /[:*]/.test(route.path), getQi = `const u=request.url,s=u.indexOf('/',${app.config.handler?.standardHostname ?? !0 ? 11 : 7}),qi=u.indexOf('?',s+1)
28
28
  `, needsQuery = inference.query || !!route.hooks.query || !!route.hooks.standaloneValidator?.find(
29
29
  (x) => x.query
30
30
  ) || app.event.request?.length;
@@ -9,7 +9,7 @@ const allocateIf = (value, condition) => condition ? value : "", createContext =
9
9
  const defaultHeaders = app.setHeaders, hasTrace = !!app.event.trace?.length;
10
10
  hasTrace && (fnLiteral += `const id=randomId()
11
11
  `);
12
- const isDynamic = /[:*]/.test(route.path), getQi = `const u=request.url,s=u.indexOf('/',${app.config.handler?.standardHostname ?? !0 ? 11 : 7}),qi=u.indexOf('?', s + 1)
12
+ const isDynamic = /[:*]/.test(route.path), getQi = `const u=request.url,s=u.indexOf('/',${app.config.handler?.standardHostname ?? !0 ? 11 : 7}),qi=u.indexOf('?',s+1)
13
13
  `, needsQuery = inference.query || !!route.hooks.query || !!route.hooks.standaloneValidator?.find(
14
14
  (x) => x.query
15
15
  ) || app.event.request?.length;
@@ -23,7 +23,7 @@ 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,
26
+ handle instanceof Response ? handle.clone() : handle instanceof Promise ? handle.then((x) => x instanceof Response ? x.clone() : x) : handle,
27
27
  set ?? {
28
28
  headers: {}
29
29
  }
@@ -4,7 +4,7 @@ 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,
7
+ handle instanceof Response ? handle.clone() : handle instanceof Promise ? handle.then((x) => x instanceof Response ? x.clone() : x) : handle,
8
8
  set ?? {
9
9
  headers: {}
10
10
  }
@@ -23,161 +23,174 @@ __export(handler_exports, {
23
23
  });
24
24
  module.exports = __toCommonJS(handler_exports);
25
25
  var import_utils = require('../utils.js'), import_utils2 = require('../../utils.js'), import_cookies = require('../../cookies.js'), import_error = require('../../error.js');
26
- const mapResponse = (response, set2, request) => {
27
- if ((0, import_utils2.isNotEmpty)(set2.headers) || set2.status !== 200 || set2.cookie)
28
- switch ((0, import_utils.handleSet)(set2), response?.constructor?.name) {
26
+ const mapResponse = (response, set, request) => {
27
+ if ((0, import_utils2.isNotEmpty)(set.headers) || set.status !== 200 || set.cookie)
28
+ switch ((0, import_utils.handleSet)(set), response?.constructor?.name) {
29
29
  case "String":
30
- return new Response(response, set2);
30
+ return new Response(response, set);
31
31
  case "Array":
32
32
  case "Object":
33
- return set2.headers["content-type"] = "application/json", new Response(JSON.stringify(response), set2);
33
+ return set.headers["content-type"] = "application/json", new Response(JSON.stringify(response), set);
34
34
  case "ElysiaFile":
35
- return (0, import_utils.handleFile)(
36
- response.value,
37
- set2
38
- );
35
+ return (0, import_utils.handleFile)(response.value, set);
39
36
  case "File":
40
- return (0, import_utils.handleFile)(response, set2);
37
+ return (0, import_utils.handleFile)(response, set);
41
38
  case "Blob":
42
- return (0, import_utils.handleFile)(response, set2);
39
+ return (0, import_utils.handleFile)(response, set);
43
40
  case "ElysiaCustomStatusResponse":
44
- return set2.status = response.code, mapResponse(
41
+ return set.status = response.code, mapResponse(
45
42
  response.response,
46
- set2,
43
+ set,
47
44
  request
48
45
  );
49
46
  case void 0:
50
- return response ? new Response(JSON.stringify(response), set2) : new Response("", set2);
47
+ return response ? new Response(JSON.stringify(response), set) : new Response("", set);
51
48
  case "Response":
52
- return handleResponse(response, set2, request);
49
+ return handleResponse(response, set, request);
53
50
  case "Error":
54
- return errorToResponse(response, set2);
51
+ return errorToResponse(response, set);
55
52
  case "Promise":
56
53
  return response.then(
57
- (x) => mapResponse(x, set2, request)
54
+ (x) => mapResponse(x, set, request)
58
55
  );
59
56
  case "Function":
60
- return mapResponse(response(), set2, request);
57
+ return mapResponse(response(), set, request);
61
58
  case "Number":
62
59
  case "Boolean":
63
60
  return new Response(
64
61
  response.toString(),
65
- set2
62
+ set
66
63
  );
67
64
  case "Cookie":
68
- return response instanceof import_cookies.Cookie ? new Response(response.value, set2) : new Response(response?.toString(), set2);
65
+ return response instanceof import_cookies.Cookie ? new Response(response.value, set) : new Response(response?.toString(), set);
69
66
  case "FormData":
70
- return new Response(response, set2);
67
+ return new Response(response, set);
71
68
  default:
72
69
  if (response instanceof Response)
73
- return handleResponse(response, set2, request);
70
+ return handleResponse(response, set, request);
74
71
  if (response instanceof Promise)
75
- return response.then((x) => mapResponse(x, set2));
72
+ return response.then((x) => mapResponse(x, set));
76
73
  if (response instanceof Error)
77
- return errorToResponse(response, set2);
74
+ return errorToResponse(response, set);
78
75
  if (response instanceof import_error.ElysiaCustomStatusResponse)
79
- return set2.status = response.code, mapResponse(
76
+ return set.status = response.code, mapResponse(
80
77
  response.response,
81
- set2,
78
+ set,
82
79
  request
83
80
  );
84
81
  if (
85
82
  // @ts-expect-error
86
83
  typeof response?.next == "function" || response instanceof ReadableStream
87
84
  )
88
- return handleStream(response, set2, request);
85
+ return handleStream(response, set, request);
89
86
  if (typeof response?.then == "function")
90
- return response.then((x) => mapResponse(x, set2));
87
+ return response.then(
88
+ (x) => mapResponse(x, set)
89
+ );
90
+ if (Array.isArray(response))
91
+ return new Response(JSON.stringify(response), {
92
+ headers: {
93
+ "Content-Type": "application/json"
94
+ }
95
+ });
91
96
  if (typeof response?.toResponse == "function")
92
- return mapResponse(response.toResponse(), set2);
97
+ return mapResponse(response.toResponse(), set);
93
98
  if ("charCodeAt" in response) {
94
99
  const code = response.charCodeAt(0);
95
100
  if (code === 123 || code === 91)
96
- return set2.headers["Content-Type"] || (set2.headers["Content-Type"] = "application/json"), new Response(
101
+ return set.headers["Content-Type"] || (set.headers["Content-Type"] = "application/json"), new Response(
97
102
  JSON.stringify(response),
98
- set2
103
+ set
99
104
  );
100
105
  }
101
- return new Response(response, set2);
106
+ return new Response(response, set);
102
107
  }
103
108
  return (
104
109
  // @ts-expect-error
105
- typeof response?.next == "function" || response instanceof ReadableStream ? handleStream(response, set2, request) : mapCompactResponse(response, request)
110
+ typeof response?.next == "function" || response instanceof ReadableStream ? handleStream(response, set, request) : mapCompactResponse(response, request)
106
111
  );
107
- }, mapEarlyResponse = (response, set2, request) => {
112
+ }, mapEarlyResponse = (response, set, request) => {
108
113
  if (response != null)
109
- if ((0, import_utils2.isNotEmpty)(set2.headers) || set2.status !== 200 || set2.cookie)
110
- switch ((0, import_utils.handleSet)(set2), response?.constructor?.name) {
114
+ if ((0, import_utils2.isNotEmpty)(set.headers) || set.status !== 200 || set.cookie)
115
+ switch ((0, import_utils.handleSet)(set), response?.constructor?.name) {
111
116
  case "String":
112
- return new Response(response, set2);
117
+ return new Response(response, set);
113
118
  case "Array":
114
119
  case "Object":
115
- return set2.headers["content-type"] = "application/json", new Response(JSON.stringify(response), set2);
120
+ return set.headers["content-type"] = "application/json", new Response(JSON.stringify(response), set);
116
121
  case "ElysiaFile":
117
- return (0, import_utils.handleFile)(response.value, set2);
122
+ return (0, import_utils.handleFile)(response.value, set);
118
123
  case "File":
119
- return (0, import_utils.handleFile)(response, set2);
124
+ return (0, import_utils.handleFile)(response, set);
120
125
  case "Blob":
121
- return (0, import_utils.handleFile)(response, set2);
126
+ return (0, import_utils.handleFile)(response, set);
122
127
  case "ElysiaCustomStatusResponse":
123
- return set2.status = response.code, mapEarlyResponse(
128
+ return set.status = response.code, mapEarlyResponse(
124
129
  response.response,
125
- set2,
130
+ set,
126
131
  request
127
132
  );
128
133
  case void 0:
129
- return response ? new Response(JSON.stringify(response), set2) : void 0;
134
+ return response ? new Response(JSON.stringify(response), set) : void 0;
130
135
  case "Response":
131
- return handleResponse(response, set2, request);
136
+ return handleResponse(response, set, request);
132
137
  case "Promise":
133
138
  return response.then(
134
- (x) => mapEarlyResponse(x, set2)
139
+ (x) => mapEarlyResponse(x, set)
135
140
  );
136
141
  case "Error":
137
- return errorToResponse(response, set2);
142
+ return errorToResponse(response, set);
138
143
  case "Function":
139
- return mapEarlyResponse(response(), set2);
144
+ return mapEarlyResponse(response(), set);
140
145
  case "Number":
141
146
  case "Boolean":
142
147
  return new Response(
143
148
  response.toString(),
144
- set2
149
+ set
145
150
  );
146
151
  case "FormData":
147
152
  return new Response(response);
148
153
  case "Cookie":
149
- return response instanceof import_cookies.Cookie ? new Response(response.value, set2) : new Response(response?.toString(), set2);
154
+ return response instanceof import_cookies.Cookie ? new Response(response.value, set) : new Response(response?.toString(), set);
150
155
  default:
151
156
  if (response instanceof Response)
152
- return handleResponse(response, set2, request);
157
+ return handleResponse(response, set, request);
153
158
  if (response instanceof Promise)
154
- return response.then((x) => mapEarlyResponse(x, set2));
159
+ return response.then((x) => mapEarlyResponse(x, set));
155
160
  if (response instanceof Error)
156
- return errorToResponse(response, set2);
161
+ return errorToResponse(response, set);
157
162
  if (response instanceof import_error.ElysiaCustomStatusResponse)
158
- return set2.status = response.code, mapEarlyResponse(
163
+ return set.status = response.code, mapEarlyResponse(
159
164
  response.response,
160
- set2,
165
+ set,
161
166
  request
162
167
  );
163
168
  if (
164
169
  // @ts-expect-error
165
170
  typeof response?.next == "function" || response instanceof ReadableStream
166
171
  )
167
- return handleStream(response, set2, request);
172
+ return handleStream(response, set, request);
168
173
  if (typeof response?.then == "function")
169
- return response.then((x) => mapEarlyResponse(x, set2));
174
+ return response.then(
175
+ (x) => mapEarlyResponse(x, set)
176
+ );
170
177
  if (typeof response?.toResponse == "function")
171
- return mapEarlyResponse(response.toResponse(), set2);
178
+ return mapEarlyResponse(response.toResponse(), set);
179
+ if (Array.isArray(response))
180
+ return new Response(JSON.stringify(response), {
181
+ headers: {
182
+ "Content-Type": "application/json"
183
+ }
184
+ });
172
185
  if ("charCodeAt" in response) {
173
186
  const code = response.charCodeAt(0);
174
187
  if (code === 123 || code === 91)
175
- return set2.headers["Content-Type"] || (set2.headers["Content-Type"] = "application/json"), new Response(
188
+ return set.headers["Content-Type"] || (set.headers["Content-Type"] = "application/json"), new Response(
176
189
  JSON.stringify(response),
177
- set2
190
+ set
178
191
  );
179
192
  }
180
- return new Response(response, set2);
193
+ return new Response(response, set);
181
194
  }
182
195
  else
183
196
  switch (response?.constructor?.name) {
@@ -185,17 +198,17 @@ const mapResponse = (response, set2, request) => {
185
198
  return new Response(response);
186
199
  case "Array":
187
200
  case "Object":
188
- return set2.headers["content-type"] = "application/json", new Response(JSON.stringify(response), set2);
201
+ return set.headers["content-type"] = "application/json", new Response(JSON.stringify(response), set);
189
202
  case "ElysiaFile":
190
- return (0, import_utils.handleFile)(response.value, set2);
203
+ return (0, import_utils.handleFile)(response.value, set);
191
204
  case "File":
192
- return (0, import_utils.handleFile)(response, set2);
205
+ return (0, import_utils.handleFile)(response, set);
193
206
  case "Blob":
194
- return (0, import_utils.handleFile)(response, set2);
207
+ return (0, import_utils.handleFile)(response, set);
195
208
  case "ElysiaCustomStatusResponse":
196
- return set2.status = response.code, mapEarlyResponse(
209
+ return set.status = response.code, mapEarlyResponse(
197
210
  response.response,
198
- set2,
211
+ set,
199
212
  request
200
213
  );
201
214
  case void 0:
@@ -208,47 +221,55 @@ const mapResponse = (response, set2, request) => {
208
221
  return response;
209
222
  case "Promise":
210
223
  return response.then((x) => {
211
- const r = mapEarlyResponse(x, set2);
224
+ const r = mapEarlyResponse(x, set);
212
225
  if (r !== void 0) return r;
213
226
  });
214
227
  case "Error":
215
- return errorToResponse(response, set2);
228
+ return errorToResponse(response, set);
216
229
  case "Function":
217
230
  return mapCompactResponse(response(), request);
218
231
  case "Number":
219
232
  case "Boolean":
220
233
  return new Response(response.toString());
221
234
  case "Cookie":
222
- return response instanceof import_cookies.Cookie ? new Response(response.value, set2) : new Response(response?.toString(), set2);
235
+ return response instanceof import_cookies.Cookie ? new Response(response.value, set) : new Response(response?.toString(), set);
223
236
  case "FormData":
224
237
  return new Response(response);
225
238
  default:
226
239
  if (response instanceof Response) return response;
227
240
  if (response instanceof Promise)
228
- return response.then((x) => mapEarlyResponse(x, set2));
241
+ return response.then((x) => mapEarlyResponse(x, set));
229
242
  if (response instanceof Error)
230
- return errorToResponse(response, set2);
243
+ return errorToResponse(response, set);
231
244
  if (response instanceof import_error.ElysiaCustomStatusResponse)
232
- return set2.status = response.code, mapEarlyResponse(
245
+ return set.status = response.code, mapEarlyResponse(
233
246
  response.response,
234
- set2,
247
+ set,
235
248
  request
236
249
  );
237
250
  if (
238
251
  // @ts-expect-error
239
252
  typeof response?.next == "function" || response instanceof ReadableStream
240
253
  )
241
- return handleStream(response, set2, request);
254
+ return handleStream(response, set, request);
242
255
  if (typeof response?.then == "function")
243
- return response.then((x) => mapEarlyResponse(x, set2));
256
+ return response.then(
257
+ (x) => mapEarlyResponse(x, set)
258
+ );
244
259
  if (typeof response?.toResponse == "function")
245
- return mapEarlyResponse(response.toResponse(), set2);
260
+ return mapEarlyResponse(response.toResponse(), set);
261
+ if (Array.isArray(response))
262
+ return new Response(JSON.stringify(response), {
263
+ headers: {
264
+ "Content-Type": "application/json"
265
+ }
266
+ });
246
267
  if ("charCodeAt" in response) {
247
268
  const code = response.charCodeAt(0);
248
269
  if (code === 123 || code === 91)
249
- return set2.headers["Content-Type"] || (set2.headers["Content-Type"] = "application/json"), new Response(
270
+ return set.headers["Content-Type"] || (set.headers["Content-Type"] = "application/json"), new Response(
250
271
  JSON.stringify(response),
251
- set2
272
+ set
252
273
  );
253
274
  }
254
275
  return new Response(response);
@@ -322,9 +343,17 @@ const mapResponse = (response, set2, request) => {
322
343
  )
323
344
  return handleStream(response, void 0, request);
324
345
  if (typeof response?.then == "function")
325
- return response.then((x) => mapResponse(x, set));
346
+ return response.then(
347
+ (x) => mapCompactResponse(x, request)
348
+ );
326
349
  if (typeof response?.toResponse == "function")
327
350
  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
+ });
328
357
  if ("charCodeAt" in response) {
329
358
  const code = response.charCodeAt(0);
330
359
  if (code === 123 || code === 91)
@@ -336,9 +365,9 @@ const mapResponse = (response, set2, request) => {
336
365
  }
337
366
  return new Response(response);
338
367
  }
339
- }, errorToResponse = (error, set2) => {
368
+ }, errorToResponse = (error, set) => {
340
369
  if (typeof error?.toResponse == "function") {
341
- const raw = error.toResponse(), targetSet = set2 ?? { headers: {}, status: 200, redirect: "" }, apply = (resolved) => (resolved instanceof Response && (targetSet.status = resolved.status), mapResponse(resolved, targetSet));
370
+ const raw = error.toResponse(), targetSet = set ?? { headers: {}, status: 200, redirect: "" }, apply = (resolved) => (resolved instanceof Response && (targetSet.status = resolved.status), mapResponse(resolved, targetSet));
342
371
  return typeof raw?.then == "function" ? raw.then(apply) : apply(raw);
343
372
  }
344
373
  return new Response(
@@ -348,8 +377,8 @@ const mapResponse = (response, set2, request) => {
348
377
  cause: error?.cause
349
378
  }),
350
379
  {
351
- status: set2?.status !== 200 ? set2?.status ?? 500 : 500,
352
- headers: set2?.headers
380
+ status: set?.status !== 200 ? set?.status ?? 500 : 500,
381
+ headers: set?.headers
353
382
  }
354
383
  );
355
384
  }, createStaticHandler = (handle, hooks, setHeaders = {}) => {