elysia 1.2.13 → 1.2.14
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/web-standard/handler.mjs +76 -19
- package/dist/bun/index.d.ts +4 -1
- package/dist/bun/index.js +10 -8
- package/dist/bun/index.js.map +8 -8
- package/dist/cjs/adapter/web-standard/handler.js +76 -19
- package/dist/cjs/compose.js +5 -3
- package/dist/cjs/context.d.ts +1 -1
- package/dist/cjs/index.d.ts +4 -1
- package/dist/cjs/index.js +21 -11
- package/dist/cjs/type-system.d.ts +2 -1
- package/dist/cjs/type-system.js +42 -15
- package/dist/cjs/universal/file.js +4 -4
- package/dist/cjs/utils.js +9 -2
- package/dist/compose.mjs +5 -3
- package/dist/context.d.ts +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.mjs +21 -11
- package/dist/type-system.d.ts +2 -1
- package/dist/type-system.mjs +42 -15
- package/dist/universal/file.mjs +4 -4
- package/dist/utils.mjs +9 -2
- package/package.json +1 -1
|
@@ -58,6 +58,45 @@ const parseSetCookies = (headers, setCookie) => {
|
|
|
58
58
|
}
|
|
59
59
|
return headers;
|
|
60
60
|
};
|
|
61
|
+
const responseToSetHeaders = (response, set2) => {
|
|
62
|
+
if (set2?.headers) {
|
|
63
|
+
if (response) {
|
|
64
|
+
if (hasHeaderShorthand)
|
|
65
|
+
Object.assign(set2.headers, response.headers.toJSON());
|
|
66
|
+
else
|
|
67
|
+
for (const [key, value] of response.headers.entries())
|
|
68
|
+
if (key in set2.headers) set2.headers[key] = value;
|
|
69
|
+
}
|
|
70
|
+
if (set2.status === 200) set2.status = response.status;
|
|
71
|
+
if (set2.headers["content-encoding"])
|
|
72
|
+
delete set2.headers["content-encoding"];
|
|
73
|
+
return set2;
|
|
74
|
+
}
|
|
75
|
+
if (!response)
|
|
76
|
+
return {
|
|
77
|
+
headers: {},
|
|
78
|
+
status: set2?.status ?? 200
|
|
79
|
+
};
|
|
80
|
+
if (hasHeaderShorthand) {
|
|
81
|
+
set2 = {
|
|
82
|
+
// @ts-expect-error
|
|
83
|
+
headers: response.headers.toJSON(),
|
|
84
|
+
status: set2?.status ?? 200
|
|
85
|
+
};
|
|
86
|
+
if (set2.headers["content-encoding"])
|
|
87
|
+
delete set2.headers["content-encoding"];
|
|
88
|
+
return set2;
|
|
89
|
+
}
|
|
90
|
+
set2 = {
|
|
91
|
+
headers: {},
|
|
92
|
+
status: set2?.status ?? 200
|
|
93
|
+
};
|
|
94
|
+
for (const [key, value] of response.headers.entries()) {
|
|
95
|
+
if (key === "content-encoding") continue;
|
|
96
|
+
if (key in set2.headers) set2.headers[key] = value;
|
|
97
|
+
}
|
|
98
|
+
return set2;
|
|
99
|
+
};
|
|
61
100
|
const handleStream = async (generator, set2, request) => {
|
|
62
101
|
let init = generator.next();
|
|
63
102
|
if (init instanceof Promise) init = await init;
|
|
@@ -65,6 +104,20 @@ const handleStream = async (generator, set2, request) => {
|
|
|
65
104
|
if (set2) return mapResponse(init.value, set2, request);
|
|
66
105
|
return mapCompactResponse(init.value, request);
|
|
67
106
|
}
|
|
107
|
+
if (set2?.headers) {
|
|
108
|
+
if (!set2.headers["transfer-encoding"])
|
|
109
|
+
set2.headers["transfer-encoding"] = "chunked";
|
|
110
|
+
if (!set2.headers["content-type"])
|
|
111
|
+
set2.headers["content-type"] = "text/event-stream; charset=utf-8";
|
|
112
|
+
} else {
|
|
113
|
+
set2 = {
|
|
114
|
+
status: 200,
|
|
115
|
+
headers: {
|
|
116
|
+
"content-type": "text/event-stream; charset=utf-8",
|
|
117
|
+
"transfer-encoding": "chunked"
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
}
|
|
68
121
|
return new Response(
|
|
69
122
|
new ReadableStream({
|
|
70
123
|
async start(controller) {
|
|
@@ -125,15 +178,7 @@ const handleStream = async (generator, set2, request) => {
|
|
|
125
178
|
}
|
|
126
179
|
}
|
|
127
180
|
}),
|
|
128
|
-
|
|
129
|
-
...set2,
|
|
130
|
-
headers: {
|
|
131
|
-
// Manually set transfer-encoding for direct response, eg. app.handle, eden
|
|
132
|
-
"transfer-encoding": "chunked",
|
|
133
|
-
"content-type": "text/event-stream; charset=utf-8",
|
|
134
|
-
...set2?.headers
|
|
135
|
-
}
|
|
136
|
-
}
|
|
181
|
+
set2
|
|
137
182
|
);
|
|
138
183
|
};
|
|
139
184
|
async function* streamResponse(response) {
|
|
@@ -231,10 +276,10 @@ const mapResponse = (response, set2, request) => {
|
|
|
231
276
|
response,
|
|
232
277
|
set2
|
|
233
278
|
);
|
|
234
|
-
if (response.headers.get("transfer-encoding") === "chunked")
|
|
279
|
+
if (!response.headers.has("content-length") && response.headers.get("transfer-encoding") === "chunked")
|
|
235
280
|
return handleStream(
|
|
236
281
|
streamResponse(response),
|
|
237
|
-
set2,
|
|
282
|
+
responseToSetHeaders(response, set2),
|
|
238
283
|
request
|
|
239
284
|
);
|
|
240
285
|
return response;
|
|
@@ -269,7 +314,7 @@ const mapResponse = (response, set2, request) => {
|
|
|
269
314
|
) === "chunked")
|
|
270
315
|
return handleStream(
|
|
271
316
|
streamResponse(response),
|
|
272
|
-
set2,
|
|
317
|
+
responseToSetHeaders(response, set2),
|
|
273
318
|
request
|
|
274
319
|
);
|
|
275
320
|
return response;
|
|
@@ -306,9 +351,15 @@ const mapResponse = (response, set2, request) => {
|
|
|
306
351
|
return new Response(response, set2);
|
|
307
352
|
}
|
|
308
353
|
}
|
|
354
|
+
if (response instanceof Response && !response.headers.has("content-length") && response.headers.get("transfer-encoding") === "chunked")
|
|
355
|
+
return handleStream(
|
|
356
|
+
streamResponse(response),
|
|
357
|
+
responseToSetHeaders(response, set2),
|
|
358
|
+
request
|
|
359
|
+
);
|
|
309
360
|
if (
|
|
310
361
|
// @ts-expect-error
|
|
311
|
-
typeof response?.next === "function" || response instanceof ReadableStream
|
|
362
|
+
typeof response?.next === "function" || response instanceof ReadableStream
|
|
312
363
|
)
|
|
313
364
|
return handleStream(response, set2, request);
|
|
314
365
|
return mapCompactResponse(response, request);
|
|
@@ -360,10 +411,10 @@ const mapEarlyResponse = (response, set2, request) => {
|
|
|
360
411
|
response,
|
|
361
412
|
set2
|
|
362
413
|
);
|
|
363
|
-
if (response.headers.get("transfer-encoding") === "chunked")
|
|
414
|
+
if (!response.headers.has("content-length") && response.headers.get("transfer-encoding") === "chunked")
|
|
364
415
|
return handleStream(
|
|
365
416
|
streamResponse(response),
|
|
366
|
-
set2,
|
|
417
|
+
responseToSetHeaders(response, set2),
|
|
367
418
|
request
|
|
368
419
|
);
|
|
369
420
|
return response;
|
|
@@ -398,7 +449,7 @@ const mapEarlyResponse = (response, set2, request) => {
|
|
|
398
449
|
) === "chunked")
|
|
399
450
|
return handleStream(
|
|
400
451
|
streamResponse(response),
|
|
401
|
-
set2,
|
|
452
|
+
responseToSetHeaders(response, set2),
|
|
402
453
|
request
|
|
403
454
|
);
|
|
404
455
|
return response;
|
|
@@ -478,9 +529,11 @@ const mapEarlyResponse = (response, set2, request) => {
|
|
|
478
529
|
}
|
|
479
530
|
});
|
|
480
531
|
case "Response":
|
|
481
|
-
if (response.headers.get("transfer-encoding") === "chunked")
|
|
532
|
+
if (!response.headers.has("content-length") && response.headers.get("transfer-encoding") === "chunked")
|
|
482
533
|
return handleStream(
|
|
483
|
-
streamResponse(response)
|
|
534
|
+
streamResponse(response),
|
|
535
|
+
responseToSetHeaders(response),
|
|
536
|
+
request
|
|
484
537
|
);
|
|
485
538
|
return response;
|
|
486
539
|
case "Promise":
|
|
@@ -581,7 +634,11 @@ const mapCompactResponse = (response, request) => {
|
|
|
581
634
|
});
|
|
582
635
|
case "Response":
|
|
583
636
|
if (response.headers.get("transfer-encoding") === "chunked")
|
|
584
|
-
return handleStream(
|
|
637
|
+
return handleStream(
|
|
638
|
+
streamResponse(response),
|
|
639
|
+
responseToSetHeaders(response),
|
|
640
|
+
request
|
|
641
|
+
);
|
|
585
642
|
return response;
|
|
586
643
|
case "Error":
|
|
587
644
|
return errorToResponse(response);
|
package/dist/bun/index.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { type Sucrose } from './sucrose';
|
|
|
5
5
|
import type { WSLocalHook } from './ws/types';
|
|
6
6
|
import type { ElysiaAdapter } from './adapter/types';
|
|
7
7
|
import type { ListenCallback, Serve, Server } from './universal/server';
|
|
8
|
+
import { PromiseGroup } from './utils';
|
|
8
9
|
import { type DynamicHandler } from './dynamic-handle';
|
|
9
10
|
import { ValidationError, type ParseError, type NotFoundError, type InternalServerError, ElysiaCustomStatusResponse } from './error';
|
|
10
11
|
import type { TraceHandler } from './trace';
|
|
@@ -104,6 +105,7 @@ export default class Elysia<const in out BasePath extends string = '', const in
|
|
|
104
105
|
protected getGlobalRoutes(): InternalRoute[];
|
|
105
106
|
protected inference: Sucrose.Inference;
|
|
106
107
|
private getServer;
|
|
108
|
+
private getParent;
|
|
107
109
|
'~parser': Record<string, BodyHandler<any, any>>;
|
|
108
110
|
private _promisedModules;
|
|
109
111
|
private get promisedModules();
|
|
@@ -998,6 +1000,7 @@ export default class Elysia<const in out BasePath extends string = '', const in
|
|
|
998
1000
|
error: Prettify<Definitions['error'] & LazyLoadElysia['_types']['Definitions']['error']>;
|
|
999
1001
|
typebox: MergeTypeModule<Definitions['typebox'], LazyLoadElysia['_types']['Definitions']['typebox']>;
|
|
1000
1002
|
}, Prettify2<Metadata & LazyLoadElysia['_types']['Metadata']>, BasePath extends `` ? Routes & LazyLoadElysia['_routes'] : Routes & CreateEden<BasePath, LazyLoadElysia['_routes']>, Ephemeral, Prettify2<Volatile & LazyLoadElysia['_ephemeral']>>;
|
|
1003
|
+
private propagatePromiseModules;
|
|
1001
1004
|
private _use;
|
|
1002
1005
|
macro<const NewMacro extends BaseMacroFn>(macro: (route: MacroManager<MergeSchema<Metadata['schema'], MergeSchema<Ephemeral['schema'], Volatile['schema']>>, Singleton & {
|
|
1003
1006
|
derive: Partial<Ephemeral['derive'] & Volatile['derive']>;
|
|
@@ -1743,7 +1746,7 @@ export default class Elysia<const in out BasePath extends string = '', const in
|
|
|
1743
1746
|
/**
|
|
1744
1747
|
* Wait until all lazy loaded modules all load is fully
|
|
1745
1748
|
*/
|
|
1746
|
-
get modules():
|
|
1749
|
+
get modules(): PromiseGroup;
|
|
1747
1750
|
}
|
|
1748
1751
|
export { Elysia };
|
|
1749
1752
|
export { t } from './type-system';
|