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.
- package/dist/adapter/bun/compose.js +1 -1
- package/dist/adapter/bun/compose.mjs +1 -1
- package/dist/adapter/bun/handler.js +87 -84
- package/dist/adapter/bun/handler.mjs +87 -84
- package/dist/adapter/bun/index.js +1 -1
- package/dist/adapter/bun/index.mjs +1 -1
- package/dist/adapter/utils.d.ts +3 -3
- package/dist/adapter/utils.js +11 -9
- package/dist/adapter/utils.mjs +11 -9
- package/dist/adapter/web-standard/handler.d.ts +4 -2
- package/dist/adapter/web-standard/handler.js +94 -86
- package/dist/adapter/web-standard/handler.mjs +94 -86
- package/dist/bun/index.js +10 -10
- package/dist/bun/index.js.map +13 -13
- package/dist/compose.js +11 -3
- package/dist/compose.mjs +11 -3
- package/dist/dynamic-handle.js +2 -1
- package/dist/dynamic-handle.mjs +2 -1
- package/dist/error.d.ts +7 -11
- package/dist/error.js +2 -5
- package/dist/error.mjs +2 -5
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/type-system/index.js +1 -1
- package/dist/type-system/index.mjs +1 -1
- package/dist/utils.js +2 -2
- package/dist/utils.mjs +2 -2
- package/package.json +1 -1
|
@@ -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,
|
|
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 && (
|
|
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 && (
|
|
18
|
-
}) : handleFile(file.value,
|
|
19
|
-
}, mapResponse = (response,
|
|
20
|
-
if (isNotEmpty(
|
|
21
|
-
switch (handleSet(
|
|
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
|
|
23
|
+
return set.headers["content-type"] = "text/plain", new Response(response, set);
|
|
24
24
|
case "Array":
|
|
25
25
|
case "Object":
|
|
26
|
-
return
|
|
26
|
+
return set.headers["content-type"] = "application/json", new Response(JSON.stringify(response), set);
|
|
27
27
|
case "ElysiaFile":
|
|
28
|
-
return handleElysiaFile(response,
|
|
28
|
+
return handleElysiaFile(response, set);
|
|
29
29
|
case "File":
|
|
30
|
-
return handleFile(response,
|
|
30
|
+
return handleFile(response, set);
|
|
31
31
|
case "Blob":
|
|
32
|
-
return handleFile(response,
|
|
32
|
+
return handleFile(response, set);
|
|
33
33
|
case "ElysiaCustomStatusResponse":
|
|
34
|
-
return
|
|
34
|
+
return set.status = response.code, mapResponse(
|
|
35
35
|
response.response,
|
|
36
|
-
|
|
36
|
+
set,
|
|
37
37
|
request
|
|
38
38
|
);
|
|
39
39
|
case void 0:
|
|
40
|
-
return response ? new Response(JSON.stringify(response),
|
|
40
|
+
return response ? new Response(JSON.stringify(response), set) : new Response("", set);
|
|
41
41
|
case "Response":
|
|
42
|
-
return handleResponse(response,
|
|
42
|
+
return handleResponse(response, set, request);
|
|
43
43
|
case "Error":
|
|
44
|
-
return errorToResponse(response,
|
|
44
|
+
return errorToResponse(response, set);
|
|
45
45
|
case "Promise":
|
|
46
46
|
return response.then(
|
|
47
|
-
(x) => mapResponse(x,
|
|
47
|
+
(x) => mapResponse(x, set, request)
|
|
48
48
|
);
|
|
49
49
|
case "Function":
|
|
50
|
-
return mapResponse(response(),
|
|
50
|
+
return mapResponse(response(), set, request);
|
|
51
51
|
case "Number":
|
|
52
52
|
case "Boolean":
|
|
53
53
|
return new Response(
|
|
54
54
|
response.toString(),
|
|
55
|
-
|
|
55
|
+
set
|
|
56
56
|
);
|
|
57
57
|
case "Cookie":
|
|
58
|
-
return response instanceof Cookie ? new Response(response.value,
|
|
58
|
+
return response instanceof Cookie ? new Response(response.value, set) : new Response(response?.toString(), set);
|
|
59
59
|
case "FormData":
|
|
60
|
-
return new Response(response,
|
|
60
|
+
return new Response(response, set);
|
|
61
61
|
default:
|
|
62
62
|
if (response instanceof Response)
|
|
63
|
-
return handleResponse(response,
|
|
63
|
+
return handleResponse(response, set, request);
|
|
64
64
|
if (response instanceof Promise)
|
|
65
|
-
return response.then((x) => mapResponse(x,
|
|
65
|
+
return response.then((x) => mapResponse(x, set));
|
|
66
66
|
if (response instanceof Error)
|
|
67
|
-
return errorToResponse(response,
|
|
67
|
+
return errorToResponse(response, set);
|
|
68
68
|
if (response instanceof ElysiaCustomStatusResponse)
|
|
69
|
-
return
|
|
69
|
+
return set.status = response.code, mapResponse(
|
|
70
70
|
response.response,
|
|
71
|
-
|
|
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,
|
|
78
|
+
return handleStream(response, set, request);
|
|
79
79
|
if (typeof response?.then == "function")
|
|
80
|
-
return response.then(
|
|
80
|
+
return response.then(
|
|
81
|
+
(x) => mapResponse(x, set)
|
|
82
|
+
);
|
|
81
83
|
if (typeof response?.toResponse == "function")
|
|
82
|
-
return mapResponse(response.toResponse(),
|
|
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
|
|
88
|
+
return set.headers["Content-Type"] || (set.headers["Content-Type"] = "application/json"), new Response(
|
|
87
89
|
JSON.stringify(response),
|
|
88
|
-
|
|
90
|
+
set
|
|
89
91
|
);
|
|
90
92
|
}
|
|
91
|
-
return new Response(response,
|
|
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,
|
|
97
|
+
typeof response?.next == "function" || response instanceof ReadableStream ? handleStream(response, set, request) : mapCompactResponse(response, request)
|
|
96
98
|
);
|
|
97
|
-
}, mapEarlyResponse = (response,
|
|
99
|
+
}, mapEarlyResponse = (response, set, request) => {
|
|
98
100
|
if (response != null)
|
|
99
|
-
if (isNotEmpty(
|
|
100
|
-
switch (handleSet(
|
|
101
|
+
if (isNotEmpty(set.headers) || set.status !== 200 || set.cookie)
|
|
102
|
+
switch (handleSet(set), response?.constructor?.name) {
|
|
101
103
|
case "String":
|
|
102
|
-
return
|
|
104
|
+
return set.headers["content-type"] = "text/plain", new Response(response, set);
|
|
103
105
|
case "Array":
|
|
104
106
|
case "Object":
|
|
105
|
-
return
|
|
107
|
+
return set.headers["content-type"] = "application/json", new Response(JSON.stringify(response), set);
|
|
106
108
|
case "ElysiaFile":
|
|
107
|
-
return handleElysiaFile(response,
|
|
109
|
+
return handleElysiaFile(response, set);
|
|
108
110
|
case "File":
|
|
109
|
-
return handleFile(response,
|
|
111
|
+
return handleFile(response, set);
|
|
110
112
|
case "Blob":
|
|
111
|
-
return handleFile(response,
|
|
113
|
+
return handleFile(response, set);
|
|
112
114
|
case "ElysiaCustomStatusResponse":
|
|
113
|
-
return
|
|
115
|
+
return set.status = response.code, mapEarlyResponse(
|
|
114
116
|
response.response,
|
|
115
|
-
|
|
117
|
+
set,
|
|
116
118
|
request
|
|
117
119
|
);
|
|
118
120
|
case void 0:
|
|
119
|
-
return response ? new Response(JSON.stringify(response),
|
|
121
|
+
return response ? new Response(JSON.stringify(response), set) : void 0;
|
|
120
122
|
case "Response":
|
|
121
|
-
return handleResponse(response,
|
|
123
|
+
return handleResponse(response, set, request);
|
|
122
124
|
case "Promise":
|
|
123
125
|
return response.then(
|
|
124
|
-
(x) => mapEarlyResponse(x,
|
|
126
|
+
(x) => mapEarlyResponse(x, set)
|
|
125
127
|
);
|
|
126
128
|
case "Error":
|
|
127
|
-
return errorToResponse(response,
|
|
129
|
+
return errorToResponse(response, set);
|
|
128
130
|
case "Function":
|
|
129
|
-
return mapEarlyResponse(response(),
|
|
131
|
+
return mapEarlyResponse(response(), set);
|
|
130
132
|
case "Number":
|
|
131
133
|
case "Boolean":
|
|
132
134
|
return new Response(
|
|
133
135
|
response.toString(),
|
|
134
|
-
|
|
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,
|
|
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,
|
|
144
|
+
return handleResponse(response, set, request);
|
|
143
145
|
if (response instanceof Promise)
|
|
144
|
-
return response.then((x) => mapEarlyResponse(x,
|
|
146
|
+
return response.then((x) => mapEarlyResponse(x, set));
|
|
145
147
|
if (response instanceof Error)
|
|
146
|
-
return errorToResponse(response,
|
|
148
|
+
return errorToResponse(response, set);
|
|
147
149
|
if (response instanceof ElysiaCustomStatusResponse)
|
|
148
|
-
return
|
|
150
|
+
return set.status = response.code, mapEarlyResponse(
|
|
149
151
|
response.response,
|
|
150
|
-
|
|
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,
|
|
159
|
+
return handleStream(response, set, request);
|
|
158
160
|
if (typeof response?.then == "function")
|
|
159
|
-
return response.then(
|
|
161
|
+
return response.then(
|
|
162
|
+
(x) => mapEarlyResponse(x, set)
|
|
163
|
+
);
|
|
160
164
|
if (typeof response?.toResponse == "function")
|
|
161
|
-
return mapEarlyResponse(response.toResponse(),
|
|
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
|
|
169
|
+
return set.headers["Content-Type"] || (set.headers["Content-Type"] = "application/json"), new Response(
|
|
166
170
|
JSON.stringify(response),
|
|
167
|
-
|
|
171
|
+
set
|
|
168
172
|
);
|
|
169
173
|
}
|
|
170
|
-
return new Response(response,
|
|
174
|
+
return new Response(response, set);
|
|
171
175
|
}
|
|
172
176
|
else
|
|
173
177
|
switch (response?.constructor?.name) {
|
|
174
178
|
case "String":
|
|
175
|
-
return
|
|
179
|
+
return set.headers["content-type"] = "text/plain", new Response(response);
|
|
176
180
|
case "Array":
|
|
177
181
|
case "Object":
|
|
178
|
-
return
|
|
182
|
+
return set.headers["content-type"] = "application/json", new Response(JSON.stringify(response), set);
|
|
179
183
|
case "ElysiaFile":
|
|
180
|
-
return handleElysiaFile(response,
|
|
184
|
+
return handleElysiaFile(response, set);
|
|
181
185
|
case "File":
|
|
182
|
-
return handleFile(response,
|
|
186
|
+
return handleFile(response, set);
|
|
183
187
|
case "Blob":
|
|
184
|
-
return handleFile(response,
|
|
188
|
+
return handleFile(response, set);
|
|
185
189
|
case "ElysiaCustomStatusResponse":
|
|
186
|
-
return
|
|
190
|
+
return set.status = response.code, mapEarlyResponse(
|
|
187
191
|
response.response,
|
|
188
|
-
|
|
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,
|
|
205
|
+
const r = mapEarlyResponse(x, set);
|
|
202
206
|
if (r !== void 0) return r;
|
|
203
207
|
});
|
|
204
208
|
case "Error":
|
|
205
|
-
return errorToResponse(response,
|
|
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,
|
|
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,
|
|
222
|
+
return response.then((x) => mapEarlyResponse(x, set));
|
|
219
223
|
if (response instanceof Error)
|
|
220
|
-
return errorToResponse(response,
|
|
224
|
+
return errorToResponse(response, set);
|
|
221
225
|
if (response instanceof ElysiaCustomStatusResponse)
|
|
222
|
-
return
|
|
226
|
+
return set.status = response.code, mapEarlyResponse(
|
|
223
227
|
response.response,
|
|
224
|
-
|
|
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,
|
|
235
|
+
return handleStream(response, set, request);
|
|
232
236
|
if (typeof response?.then == "function")
|
|
233
|
-
return response.then(
|
|
237
|
+
return response.then(
|
|
238
|
+
(x) => mapEarlyResponse(x, set)
|
|
239
|
+
);
|
|
234
240
|
if (typeof response?.toResponse == "function")
|
|
235
|
-
return mapEarlyResponse(response.toResponse(),
|
|
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
|
|
245
|
+
return set.headers["Content-Type"] || (set.headers["Content-Type"] = "application/json"), new Response(
|
|
240
246
|
JSON.stringify(response),
|
|
241
|
-
|
|
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(
|
|
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,
|
|
341
|
+
}, errorToResponse = (error, set) => {
|
|
334
342
|
if (typeof error?.toResponse == "function") {
|
|
335
|
-
const raw = error.toResponse(), 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:
|
|
346
|
-
headers:
|
|
353
|
+
status: set?.status !== 200 ? set?.status ?? 500 : 500,
|
|
354
|
+
headers: set?.headers
|
|
347
355
|
}
|
|
348
356
|
);
|
|
349
357
|
}, createStaticHandler = (handle, hooks, setHeaders = {}) => {
|