elysia 1.4.21 → 1.4.22

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.
@@ -8,184 +8,188 @@ import { mime } from "../../universal/file.mjs";
8
8
  import { isNotEmpty } from "../../utils.mjs";
9
9
  import { Cookie } from "../../cookies.mjs";
10
10
  import { ElysiaCustomStatusResponse } from "../../error.mjs";
11
- const handleElysiaFile = (file, set2 = {
11
+ const handleElysiaFile = (file, set = {
12
12
  headers: {}
13
13
  }) => {
14
14
  const path = file.path, contentType = mime[path.slice(path.lastIndexOf(".") + 1)];
15
- return contentType && (set2.headers["content-type"] = contentType), file.stats && set2.status !== 206 && set2.status !== 304 && set2.status !== 412 && set2.status !== 416 ? file.stats.then((stat) => {
15
+ return contentType && (set.headers["content-type"] = contentType), file.stats && set.status !== 206 && set.status !== 304 && set.status !== 412 && set.status !== 416 ? file.stats.then((stat) => {
16
16
  const size = stat.size;
17
- return size !== void 0 && (set2.headers["content-range"] = `bytes 0-${size - 1}/${size}`, set2.headers["content-length"] = size), handleFile(file.value, set2);
18
- }) : handleFile(file.value, set2);
19
- }, mapResponse = (response, set2, request) => {
20
- if (isNotEmpty(set2.headers) || set2.status !== 200 || set2.cookie)
21
- switch (handleSet(set2), response?.constructor?.name) {
17
+ return size !== void 0 && (set.headers["content-range"] = `bytes 0-${size - 1}/${size}`, set.headers["content-length"] = size), handleFile(file.value, set);
18
+ }) : handleFile(file.value, set);
19
+ }, mapResponse = (response, set, request) => {
20
+ if (isNotEmpty(set.headers) || set.status !== 200 || set.cookie)
21
+ switch (handleSet(set), response?.constructor?.name) {
22
22
  case "String":
23
- return set2.headers["content-type"] = "text/plain", new Response(response, set2);
23
+ return set.headers["content-type"] = "text/plain", new Response(response, set);
24
24
  case "Array":
25
25
  case "Object":
26
- return set2.headers["content-type"] = "application/json", new Response(JSON.stringify(response), set2);
26
+ return set.headers["content-type"] = "application/json", new Response(JSON.stringify(response), set);
27
27
  case "ElysiaFile":
28
- return handleElysiaFile(response, set2);
28
+ return handleElysiaFile(response, set);
29
29
  case "File":
30
- return handleFile(response, set2);
30
+ return handleFile(response, set);
31
31
  case "Blob":
32
- return handleFile(response, set2);
32
+ return handleFile(response, set);
33
33
  case "ElysiaCustomStatusResponse":
34
- return set2.status = response.code, mapResponse(
34
+ return set.status = response.code, mapResponse(
35
35
  response.response,
36
- set2,
36
+ set,
37
37
  request
38
38
  );
39
39
  case void 0:
40
- return response ? new Response(JSON.stringify(response), set2) : new Response("", set2);
40
+ return response ? new Response(JSON.stringify(response), set) : new Response("", set);
41
41
  case "Response":
42
- return handleResponse(response, set2, request);
42
+ return handleResponse(response, set, request);
43
43
  case "Error":
44
- return errorToResponse(response, set2);
44
+ return errorToResponse(response, set);
45
45
  case "Promise":
46
46
  return response.then(
47
- (x) => mapResponse(x, set2, request)
47
+ (x) => mapResponse(x, set, request)
48
48
  );
49
49
  case "Function":
50
- return mapResponse(response(), set2, request);
50
+ return mapResponse(response(), set, request);
51
51
  case "Number":
52
52
  case "Boolean":
53
53
  return new Response(
54
54
  response.toString(),
55
- set2
55
+ set
56
56
  );
57
57
  case "Cookie":
58
- return response instanceof Cookie ? new Response(response.value, set2) : new Response(response?.toString(), set2);
58
+ return response instanceof Cookie ? new Response(response.value, set) : new Response(response?.toString(), set);
59
59
  case "FormData":
60
- return new Response(response, set2);
60
+ return new Response(response, set);
61
61
  default:
62
62
  if (response instanceof Response)
63
- return handleResponse(response, set2, request);
63
+ return handleResponse(response, set, request);
64
64
  if (response instanceof Promise)
65
- return response.then((x) => mapResponse(x, set2));
65
+ return response.then((x) => mapResponse(x, set));
66
66
  if (response instanceof Error)
67
- return errorToResponse(response, set2);
67
+ return errorToResponse(response, set);
68
68
  if (response instanceof ElysiaCustomStatusResponse)
69
- return set2.status = response.code, mapResponse(
69
+ return set.status = response.code, mapResponse(
70
70
  response.response,
71
- set2,
71
+ set,
72
72
  request
73
73
  );
74
74
  if (
75
75
  // @ts-expect-error
76
76
  typeof response?.next == "function" || response instanceof ReadableStream
77
77
  )
78
- return handleStream(response, set2, request);
78
+ return handleStream(response, set, request);
79
79
  if (typeof response?.then == "function")
80
- return response.then((x) => mapResponse(x, set2));
80
+ return response.then(
81
+ (x) => mapResponse(x, set)
82
+ );
81
83
  if (typeof response?.toResponse == "function")
82
- return mapResponse(response.toResponse(), set2);
84
+ return mapResponse(response.toResponse(), set);
83
85
  if ("charCodeAt" in response) {
84
86
  const code = response.charCodeAt(0);
85
87
  if (code === 123 || code === 91)
86
- return set2.headers["Content-Type"] || (set2.headers["Content-Type"] = "application/json"), new Response(
88
+ return set.headers["Content-Type"] || (set.headers["Content-Type"] = "application/json"), new Response(
87
89
  JSON.stringify(response),
88
- set2
90
+ set
89
91
  );
90
92
  }
91
- return new Response(response, set2);
93
+ return new Response(response, set);
92
94
  }
93
95
  return (
94
96
  // @ts-expect-error
95
- typeof response?.next == "function" || response instanceof ReadableStream ? handleStream(response, set2, request) : mapCompactResponse(response, request)
97
+ typeof response?.next == "function" || response instanceof ReadableStream ? handleStream(response, set, request) : mapCompactResponse(response, request)
96
98
  );
97
- }, mapEarlyResponse = (response, set2, request) => {
99
+ }, mapEarlyResponse = (response, set, request) => {
98
100
  if (response != null)
99
- if (isNotEmpty(set2.headers) || set2.status !== 200 || set2.cookie)
100
- switch (handleSet(set2), response?.constructor?.name) {
101
+ if (isNotEmpty(set.headers) || set.status !== 200 || set.cookie)
102
+ switch (handleSet(set), response?.constructor?.name) {
101
103
  case "String":
102
- return set2.headers["content-type"] = "text/plain", new Response(response, set2);
104
+ return set.headers["content-type"] = "text/plain", new Response(response, set);
103
105
  case "Array":
104
106
  case "Object":
105
- return set2.headers["content-type"] = "application/json", new Response(JSON.stringify(response), set2);
107
+ return set.headers["content-type"] = "application/json", new Response(JSON.stringify(response), set);
106
108
  case "ElysiaFile":
107
- return handleElysiaFile(response, set2);
109
+ return handleElysiaFile(response, set);
108
110
  case "File":
109
- return handleFile(response, set2);
111
+ return handleFile(response, set);
110
112
  case "Blob":
111
- return handleFile(response, set2);
113
+ return handleFile(response, set);
112
114
  case "ElysiaCustomStatusResponse":
113
- return set2.status = response.code, mapEarlyResponse(
115
+ return set.status = response.code, mapEarlyResponse(
114
116
  response.response,
115
- set2,
117
+ set,
116
118
  request
117
119
  );
118
120
  case void 0:
119
- return response ? new Response(JSON.stringify(response), set2) : void 0;
121
+ return response ? new Response(JSON.stringify(response), set) : void 0;
120
122
  case "Response":
121
- return handleResponse(response, set2, request);
123
+ return handleResponse(response, set, request);
122
124
  case "Promise":
123
125
  return response.then(
124
- (x) => mapEarlyResponse(x, set2)
126
+ (x) => mapEarlyResponse(x, set)
125
127
  );
126
128
  case "Error":
127
- return errorToResponse(response, set2);
129
+ return errorToResponse(response, set);
128
130
  case "Function":
129
- return mapEarlyResponse(response(), set2);
131
+ return mapEarlyResponse(response(), set);
130
132
  case "Number":
131
133
  case "Boolean":
132
134
  return new Response(
133
135
  response.toString(),
134
- set2
136
+ set
135
137
  );
136
138
  case "FormData":
137
139
  return new Response(response);
138
140
  case "Cookie":
139
- return response instanceof Cookie ? new Response(response.value, set2) : new Response(response?.toString(), set2);
141
+ return response instanceof Cookie ? new Response(response.value, set) : new Response(response?.toString(), set);
140
142
  default:
141
143
  if (response instanceof Response)
142
- return handleResponse(response, set2, request);
144
+ return handleResponse(response, set, request);
143
145
  if (response instanceof Promise)
144
- return response.then((x) => mapEarlyResponse(x, set2));
146
+ return response.then((x) => mapEarlyResponse(x, set));
145
147
  if (response instanceof Error)
146
- return errorToResponse(response, set2);
148
+ return errorToResponse(response, set);
147
149
  if (response instanceof ElysiaCustomStatusResponse)
148
- return set2.status = response.code, mapEarlyResponse(
150
+ return set.status = response.code, mapEarlyResponse(
149
151
  response.response,
150
- set2,
152
+ set,
151
153
  request
152
154
  );
153
155
  if (
154
156
  // @ts-expect-error
155
157
  typeof response?.next == "function" || response instanceof ReadableStream
156
158
  )
157
- return handleStream(response, set2, request);
159
+ return handleStream(response, set, request);
158
160
  if (typeof response?.then == "function")
159
- return response.then((x) => mapEarlyResponse(x, set2));
161
+ return response.then(
162
+ (x) => mapEarlyResponse(x, set)
163
+ );
160
164
  if (typeof response?.toResponse == "function")
161
- return mapEarlyResponse(response.toResponse(), set2);
165
+ return mapEarlyResponse(response.toResponse(), set);
162
166
  if ("charCodeAt" in response) {
163
167
  const code = response.charCodeAt(0);
164
168
  if (code === 123 || code === 91)
165
- return set2.headers["Content-Type"] || (set2.headers["Content-Type"] = "application/json"), new Response(
169
+ return set.headers["Content-Type"] || (set.headers["Content-Type"] = "application/json"), new Response(
166
170
  JSON.stringify(response),
167
- set2
171
+ set
168
172
  );
169
173
  }
170
- return new Response(response, set2);
174
+ return new Response(response, set);
171
175
  }
172
176
  else
173
177
  switch (response?.constructor?.name) {
174
178
  case "String":
175
- return set2.headers["content-type"] = "text/plain", new Response(response);
179
+ return set.headers["content-type"] = "text/plain", new Response(response);
176
180
  case "Array":
177
181
  case "Object":
178
- return set2.headers["content-type"] = "application/json", new Response(JSON.stringify(response), set2);
182
+ return set.headers["content-type"] = "application/json", new Response(JSON.stringify(response), set);
179
183
  case "ElysiaFile":
180
- return handleElysiaFile(response, set2);
184
+ return handleElysiaFile(response, set);
181
185
  case "File":
182
- return handleFile(response, set2);
186
+ return handleFile(response, set);
183
187
  case "Blob":
184
- return handleFile(response, set2);
188
+ return handleFile(response, set);
185
189
  case "ElysiaCustomStatusResponse":
186
- return set2.status = response.code, mapEarlyResponse(
190
+ return set.status = response.code, mapEarlyResponse(
187
191
  response.response,
188
- set2,
192
+ set,
189
193
  request
190
194
  );
191
195
  case void 0:
@@ -198,47 +202,49 @@ const handleElysiaFile = (file, set2 = {
198
202
  return response;
199
203
  case "Promise":
200
204
  return response.then((x) => {
201
- const r = mapEarlyResponse(x, set2);
205
+ const r = mapEarlyResponse(x, set);
202
206
  if (r !== void 0) return r;
203
207
  });
204
208
  case "Error":
205
- return errorToResponse(response, set2);
209
+ return errorToResponse(response, set);
206
210
  case "Function":
207
211
  return mapCompactResponse(response(), request);
208
212
  case "Number":
209
213
  case "Boolean":
210
214
  return new Response(response.toString());
211
215
  case "Cookie":
212
- return response instanceof Cookie ? new Response(response.value, set2) : new Response(response?.toString(), set2);
216
+ return response instanceof Cookie ? new Response(response.value, set) : new Response(response?.toString(), set);
213
217
  case "FormData":
214
218
  return new Response(response);
215
219
  default:
216
220
  if (response instanceof Response) return response;
217
221
  if (response instanceof Promise)
218
- return response.then((x) => mapEarlyResponse(x, set2));
222
+ return response.then((x) => mapEarlyResponse(x, set));
219
223
  if (response instanceof Error)
220
- return errorToResponse(response, set2);
224
+ return errorToResponse(response, set);
221
225
  if (response instanceof ElysiaCustomStatusResponse)
222
- return set2.status = response.code, mapEarlyResponse(
226
+ return set.status = response.code, mapEarlyResponse(
223
227
  response.response,
224
- set2,
228
+ set,
225
229
  request
226
230
  );
227
231
  if (
228
232
  // @ts-expect-error
229
233
  typeof response?.next == "function" || response instanceof ReadableStream
230
234
  )
231
- return handleStream(response, set2, request);
235
+ return handleStream(response, set, request);
232
236
  if (typeof response?.then == "function")
233
- return response.then((x) => mapEarlyResponse(x, set2));
237
+ return response.then(
238
+ (x) => mapEarlyResponse(x, set)
239
+ );
234
240
  if (typeof response?.toResponse == "function")
235
- return mapEarlyResponse(response.toResponse(), set2);
241
+ return mapEarlyResponse(response.toResponse(), set);
236
242
  if ("charCodeAt" in response) {
237
243
  const code = response.charCodeAt(0);
238
244
  if (code === 123 || code === 91)
239
- return set2.headers["Content-Type"] || (set2.headers["Content-Type"] = "application/json"), new Response(
245
+ return set.headers["Content-Type"] || (set.headers["Content-Type"] = "application/json"), new Response(
240
246
  JSON.stringify(response),
241
- set2
247
+ set
242
248
  );
243
249
  }
244
250
  return new Response(response);
@@ -316,7 +322,9 @@ const handleElysiaFile = (file, set2 = {
316
322
  )
317
323
  return handleStream(response, void 0, request);
318
324
  if (typeof response?.then == "function")
319
- return response.then((x) => mapResponse(x, set));
325
+ return response.then(
326
+ (x) => mapCompactResponse(x, request)
327
+ );
320
328
  if (typeof response?.toResponse == "function")
321
329
  return mapCompactResponse(response.toResponse());
322
330
  if ("charCodeAt" in response) {
@@ -330,9 +338,9 @@ const handleElysiaFile = (file, set2 = {
330
338
  }
331
339
  return new Response(response);
332
340
  }
333
- }, errorToResponse = (error, set2) => {
341
+ }, errorToResponse = (error, set) => {
334
342
  if (typeof error?.toResponse == "function") {
335
- const raw = error.toResponse(), targetSet = set2 ?? { headers: {}, status: 200, redirect: "" }, apply = (resolved) => (resolved instanceof Response && (targetSet.status = resolved.status), mapResponse(resolved, targetSet));
343
+ const raw = error.toResponse(), targetSet = set ?? { headers: {}, status: 200, redirect: "" }, apply = (resolved) => (resolved instanceof Response && (targetSet.status = resolved.status), mapResponse(resolved, targetSet));
336
344
  return typeof raw?.then == "function" ? raw.then(apply) : apply(raw);
337
345
  }
338
346
  return new Response(
@@ -342,8 +350,8 @@ const handleElysiaFile = (file, set2 = {
342
350
  cause: error?.cause
343
351
  }),
344
352
  {
345
- status: set2?.status !== 200 ? set2?.status ?? 500 : 500,
346
- headers: set2?.headers
353
+ status: set?.status !== 200 ? set?.status ?? 500 : 500,
354
+ headers: set?.headers
347
355
  }
348
356
  );
349
357
  }, createStaticHandler = (handle, hooks, setHeaders = {}) => {