h3 0.8.1 → 0.8.3
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/index.cjs +34 -9
- package/dist/index.d.ts +3 -3
- package/dist/index.mjs +34 -9
- package/package.json +5 -5
package/dist/index.cjs
CHANGED
|
@@ -155,6 +155,9 @@ function readRawBody(event, encoding = "utf-8") {
|
|
|
155
155
|
if ("body" in event.req) {
|
|
156
156
|
return Promise.resolve(event.req.body);
|
|
157
157
|
}
|
|
158
|
+
if (!parseInt(event.req.headers["content-length"] || "")) {
|
|
159
|
+
return Promise.resolve(void 0);
|
|
160
|
+
}
|
|
158
161
|
const promise = event.req[RawBodySymbol] = new Promise((resolve, reject) => {
|
|
159
162
|
const bodyData = [];
|
|
160
163
|
event.req.on("error", (err) => {
|
|
@@ -284,21 +287,43 @@ function sendStream(event, data) {
|
|
|
284
287
|
data.on("error", (error) => reject(createError(error)));
|
|
285
288
|
});
|
|
286
289
|
}
|
|
287
|
-
|
|
290
|
+
const noop = () => {
|
|
291
|
+
};
|
|
292
|
+
function writeEarlyHints(event, hints, cb = noop) {
|
|
288
293
|
if (!event.res.socket && !("writeEarlyHints" in event.res)) {
|
|
289
|
-
|
|
290
|
-
callback();
|
|
291
|
-
}
|
|
294
|
+
cb();
|
|
292
295
|
return;
|
|
293
296
|
}
|
|
297
|
+
if (typeof hints === "string" || Array.isArray(hints)) {
|
|
298
|
+
hints = { link: hints };
|
|
299
|
+
}
|
|
300
|
+
if (hints.link) {
|
|
301
|
+
hints.link = Array.isArray(hints.link) ? hints.link : hints.link.split(",");
|
|
302
|
+
hints.link = hints.link.map((l) => l.trim().replace(/; crossorigin/g, ""));
|
|
303
|
+
}
|
|
294
304
|
if ("writeEarlyHints" in event.res) {
|
|
295
|
-
return event.res.writeEarlyHints(
|
|
305
|
+
return event.res.writeEarlyHints(hints, cb);
|
|
306
|
+
}
|
|
307
|
+
const headers = Object.entries(hints).map((e) => [e[0].toLowerCase(), e[1]]);
|
|
308
|
+
if (!headers.length) {
|
|
309
|
+
cb();
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
let hint = "HTTP/1.1 103 Early Hints";
|
|
313
|
+
if (hints.link) {
|
|
314
|
+
hint += `\r
|
|
315
|
+
Link: ${hints.link.join(", ")}`;
|
|
316
|
+
}
|
|
317
|
+
for (const [header, value] of headers) {
|
|
318
|
+
if (header === "link") {
|
|
319
|
+
continue;
|
|
320
|
+
}
|
|
321
|
+
hint += `\r
|
|
322
|
+
${header}: ${value}`;
|
|
296
323
|
}
|
|
297
|
-
|
|
298
|
-
event.res.socket.write(`HTTP/1.1 103 Early Hints\r
|
|
299
|
-
Link: ${_links.join("\r\n")}\r
|
|
324
|
+
event.res.socket.write(`${hint}\r
|
|
300
325
|
\r
|
|
301
|
-
`, "utf-8",
|
|
326
|
+
`, "utf-8", cb);
|
|
302
327
|
}
|
|
303
328
|
|
|
304
329
|
function parseCookies(event) {
|
package/dist/index.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ declare type LazyEventHandler = () => EventHandler | Promise<EventHandler>;
|
|
|
16
16
|
|
|
17
17
|
declare type NodeListener = (req: IncomingMessage, res: ServerResponse) => void;
|
|
18
18
|
declare type NodePromisifiedHandler = (req: IncomingMessage, res: ServerResponse) => Promise<any>;
|
|
19
|
-
declare type NodeMiddleware = (req: IncomingMessage, res: ServerResponse, next
|
|
19
|
+
declare type NodeMiddleware = (req: IncomingMessage, res: ServerResponse, next: (err?: Error) => any) => any;
|
|
20
20
|
declare const defineNodeListener: (handler: NodeListener) => NodeListener;
|
|
21
21
|
declare const defineNodeMiddleware: (middleware: NodeMiddleware) => NodeMiddleware;
|
|
22
22
|
declare function fromNodeMiddleware(handler: NodeListener | NodeMiddleware): EventHandler;
|
|
@@ -159,7 +159,7 @@ declare function useBase(base: string, handler: EventHandler): EventHandler;
|
|
|
159
159
|
*
|
|
160
160
|
* @return {String|Buffer} Encoded raw string or raw Buffer of the body
|
|
161
161
|
*/
|
|
162
|
-
declare function readRawBody(event: H3Event, encoding?: Encoding): Encoding extends false ? Buffer : Promise<string | Buffer>;
|
|
162
|
+
declare function readRawBody(event: H3Event, encoding?: Encoding): Encoding extends false ? Buffer : Promise<string | Buffer | undefined>;
|
|
163
163
|
/** @deprecated Use `h3.readRawBody` */
|
|
164
164
|
declare const useRawBody: typeof readRawBody;
|
|
165
165
|
/**
|
|
@@ -270,7 +270,7 @@ declare function appendResponseHeader(event: H3Event, name: string, value: strin
|
|
|
270
270
|
declare const appendHeader: typeof appendResponseHeader;
|
|
271
271
|
declare function isStream(data: any): any;
|
|
272
272
|
declare function sendStream(event: H3Event, data: any): Promise<void>;
|
|
273
|
-
declare function writeEarlyHints(event: H3Event,
|
|
273
|
+
declare function writeEarlyHints(event: H3Event, hints: string | string[] | Record<string, string | string[]>, cb?: () => void): void;
|
|
274
274
|
|
|
275
275
|
declare type RouterMethod = Lowercase<HTTPMethod>;
|
|
276
276
|
declare type RouterUse = (path: string, handler: EventHandler, method?: RouterMethod | RouterMethod[]) => Router;
|
package/dist/index.mjs
CHANGED
|
@@ -153,6 +153,9 @@ function readRawBody(event, encoding = "utf-8") {
|
|
|
153
153
|
if ("body" in event.req) {
|
|
154
154
|
return Promise.resolve(event.req.body);
|
|
155
155
|
}
|
|
156
|
+
if (!parseInt(event.req.headers["content-length"] || "")) {
|
|
157
|
+
return Promise.resolve(void 0);
|
|
158
|
+
}
|
|
156
159
|
const promise = event.req[RawBodySymbol] = new Promise((resolve, reject) => {
|
|
157
160
|
const bodyData = [];
|
|
158
161
|
event.req.on("error", (err) => {
|
|
@@ -282,21 +285,43 @@ function sendStream(event, data) {
|
|
|
282
285
|
data.on("error", (error) => reject(createError(error)));
|
|
283
286
|
});
|
|
284
287
|
}
|
|
285
|
-
|
|
288
|
+
const noop = () => {
|
|
289
|
+
};
|
|
290
|
+
function writeEarlyHints(event, hints, cb = noop) {
|
|
286
291
|
if (!event.res.socket && !("writeEarlyHints" in event.res)) {
|
|
287
|
-
|
|
288
|
-
callback();
|
|
289
|
-
}
|
|
292
|
+
cb();
|
|
290
293
|
return;
|
|
291
294
|
}
|
|
295
|
+
if (typeof hints === "string" || Array.isArray(hints)) {
|
|
296
|
+
hints = { link: hints };
|
|
297
|
+
}
|
|
298
|
+
if (hints.link) {
|
|
299
|
+
hints.link = Array.isArray(hints.link) ? hints.link : hints.link.split(",");
|
|
300
|
+
hints.link = hints.link.map((l) => l.trim().replace(/; crossorigin/g, ""));
|
|
301
|
+
}
|
|
292
302
|
if ("writeEarlyHints" in event.res) {
|
|
293
|
-
return event.res.writeEarlyHints(
|
|
303
|
+
return event.res.writeEarlyHints(hints, cb);
|
|
304
|
+
}
|
|
305
|
+
const headers = Object.entries(hints).map((e) => [e[0].toLowerCase(), e[1]]);
|
|
306
|
+
if (!headers.length) {
|
|
307
|
+
cb();
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
let hint = "HTTP/1.1 103 Early Hints";
|
|
311
|
+
if (hints.link) {
|
|
312
|
+
hint += `\r
|
|
313
|
+
Link: ${hints.link.join(", ")}`;
|
|
314
|
+
}
|
|
315
|
+
for (const [header, value] of headers) {
|
|
316
|
+
if (header === "link") {
|
|
317
|
+
continue;
|
|
318
|
+
}
|
|
319
|
+
hint += `\r
|
|
320
|
+
${header}: ${value}`;
|
|
294
321
|
}
|
|
295
|
-
|
|
296
|
-
event.res.socket.write(`HTTP/1.1 103 Early Hints\r
|
|
297
|
-
Link: ${_links.join("\r\n")}\r
|
|
322
|
+
event.res.socket.write(`${hint}\r
|
|
298
323
|
\r
|
|
299
|
-
`, "utf-8",
|
|
324
|
+
`, "utf-8", cb);
|
|
300
325
|
}
|
|
301
326
|
|
|
302
327
|
function parseCookies(event) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "h3",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.3",
|
|
4
4
|
"description": "Tiny JavaScript Server",
|
|
5
5
|
"repository": "unjs/h3",
|
|
6
6
|
"license": "MIT",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"cookie-es": "^0.5.0",
|
|
24
24
|
"destr": "^1.1.1",
|
|
25
25
|
"radix3": "^0.2.1",
|
|
26
|
-
"ufo": "^0.8.
|
|
26
|
+
"ufo": "^0.8.6"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"0x": "^5.4.1",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"@types/supertest": "^2.0.12",
|
|
34
34
|
"@vitest/coverage-c8": "^0.24.3",
|
|
35
35
|
"autocannon": "^7.10.0",
|
|
36
|
-
"changelogen": "^0.3.
|
|
36
|
+
"changelogen": "^0.3.5",
|
|
37
37
|
"connect": "^3.7.0",
|
|
38
38
|
"eslint": "^8.25.0",
|
|
39
39
|
"express": "^4.18.2",
|
|
@@ -42,10 +42,10 @@
|
|
|
42
42
|
"listhen": "^0.3.4",
|
|
43
43
|
"supertest": "^6.3.0",
|
|
44
44
|
"typescript": "^4.8.4",
|
|
45
|
-
"unbuild": "^0.9.
|
|
45
|
+
"unbuild": "^0.9.4",
|
|
46
46
|
"vitest": "^0.24.3"
|
|
47
47
|
},
|
|
48
|
-
"packageManager": "pnpm@7.13.
|
|
48
|
+
"packageManager": "pnpm@7.13.5",
|
|
49
49
|
"scripts": {
|
|
50
50
|
"build": "unbuild",
|
|
51
51
|
"dev": "vitest",
|