h3 0.8.4 → 0.8.5

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 CHANGED
@@ -133,7 +133,12 @@ function assertMethod(event, expected, allowHead) {
133
133
  }
134
134
  }
135
135
  function getRequestHeaders(event) {
136
- return event.req.headers;
136
+ const _headers = {};
137
+ for (const key in event.req.headers) {
138
+ const val = event.req.headers[key];
139
+ _headers[key] = Array.isArray(val) ? val.filter(Boolean).join(", ") : val;
140
+ }
141
+ return _headers;
137
142
  }
138
143
  const getHeaders = getRequestHeaders;
139
144
  function getRequestHeader(event, name) {
@@ -290,7 +295,7 @@ function sendStream(event, data) {
290
295
  const noop = () => {
291
296
  };
292
297
  function writeEarlyHints(event, hints, cb = noop) {
293
- if (!event.res.socket && !("writeEarlyHints" in event.res)) {
298
+ if (!event.res.socket) {
294
299
  cb();
295
300
  return;
296
301
  }
@@ -299,10 +304,6 @@ function writeEarlyHints(event, hints, cb = noop) {
299
304
  }
300
305
  if (hints.link) {
301
306
  hints.link = Array.isArray(hints.link) ? hints.link : hints.link.split(",");
302
- hints.link = hints.link.map((l) => l.trim().replace(/; crossorigin/g, ""));
303
- }
304
- if ("writeEarlyHints" in event.res) {
305
- return event.res.writeEarlyHints(hints, cb);
306
307
  }
307
308
  const headers = Object.entries(hints).map((e) => [e[0].toLowerCase(), e[1]]);
308
309
  if (!headers.length) {
package/dist/index.d.ts CHANGED
@@ -13,6 +13,9 @@ interface EventHandler<T = any> {
13
13
  (event: H3Event): EventHandlerResponse<T>;
14
14
  }
15
15
  declare type LazyEventHandler = () => EventHandler | Promise<EventHandler>;
16
+ declare type RequestHeaders = {
17
+ [name: string]: string | undefined;
18
+ };
16
19
 
17
20
  declare type NodeListener = (req: IncomingMessage, res: ServerResponse) => void;
18
21
  declare type NodePromisifiedHandler = (req: IncomingMessage, res: ServerResponse) => Promise<any>;
@@ -250,9 +253,9 @@ declare function getMethod(event: H3Event, defaultMethod?: HTTPMethod): HTTPMeth
250
253
  declare const useMethod: typeof getMethod;
251
254
  declare function isMethod(event: H3Event, expected: HTTPMethod | HTTPMethod[], allowHead?: boolean): boolean;
252
255
  declare function assertMethod(event: H3Event, expected: HTTPMethod | HTTPMethod[], allowHead?: boolean): void;
253
- declare function getRequestHeaders(event: H3Event): H3Event['req']['headers'];
256
+ declare function getRequestHeaders(event: H3Event): RequestHeaders;
254
257
  declare const getHeaders: typeof getRequestHeaders;
255
- declare function getRequestHeader(event: H3Event, name: string): H3Event['req']['headers'][string];
258
+ declare function getRequestHeader(event: H3Event, name: string): RequestHeaders[string];
256
259
  declare const getHeader: typeof getRequestHeader;
257
260
 
258
261
  declare function send(event: H3Event, data?: any, type?: string): Promise<void>;
@@ -285,4 +288,4 @@ interface CreateRouterOptions {
285
288
  }
286
289
  declare function createRouter(opts?: CreateRouterOptions): Router;
287
290
 
288
- export { AddRouteShortcuts, App, AppOptions, AppUse, CacheConditions, CreateRouterOptions, DynamicEventHandler, Encoding, EventHandler, EventHandlerResponse, H3Error, H3Event, H3EventContext, H3Headers, H3Response, HTTPMethod, InputLayer, InputStack, Layer, LazyEventHandler, MIMES, Matcher, NodeListener, NodeMiddleware, NodePromisifiedHandler, Router, RouterMethod, RouterUse, Stack, appendHeader, appendHeaders, appendResponseHeader, appendResponseHeaders, assertMethod, callNodeListener, createApp, createAppEventHandler, createError, createEvent, createRouter, defaultContentType, defineEventHandler, defineLazyEventHandler, defineNodeListener, defineNodeMiddleware, deleteCookie, dynamicEventHandler, eventHandler, fromNodeMiddleware, getCookie, getHeader, getHeaders, getMethod, getQuery, getRequestHeader, getRequestHeaders, getResponseHeader, getResponseHeaders, getRouterParam, getRouterParams, handleCacheHeaders, isError, isEvent, isEventHandler, isMethod, isStream, lazyEventHandler, parseCookies, promisifyNodeListener, readBody, readRawBody, send, sendError, sendRedirect, sendStream, setCookie, setHeader, setHeaders, setResponseHeader, setResponseHeaders, toEventHandler, toNodeListener, use, useBase, useBody, useCookie, useCookies, useMethod, useQuery, useRawBody, writeEarlyHints };
291
+ export { AddRouteShortcuts, App, AppOptions, AppUse, CacheConditions, CreateRouterOptions, DynamicEventHandler, Encoding, EventHandler, EventHandlerResponse, H3Error, H3Event, H3EventContext, H3Headers, H3Response, HTTPMethod, InputLayer, InputStack, Layer, LazyEventHandler, MIMES, Matcher, NodeListener, NodeMiddleware, NodePromisifiedHandler, RequestHeaders, Router, RouterMethod, RouterUse, Stack, appendHeader, appendHeaders, appendResponseHeader, appendResponseHeaders, assertMethod, callNodeListener, createApp, createAppEventHandler, createError, createEvent, createRouter, defaultContentType, defineEventHandler, defineLazyEventHandler, defineNodeListener, defineNodeMiddleware, deleteCookie, dynamicEventHandler, eventHandler, fromNodeMiddleware, getCookie, getHeader, getHeaders, getMethod, getQuery, getRequestHeader, getRequestHeaders, getResponseHeader, getResponseHeaders, getRouterParam, getRouterParams, handleCacheHeaders, isError, isEvent, isEventHandler, isMethod, isStream, lazyEventHandler, parseCookies, promisifyNodeListener, readBody, readRawBody, send, sendError, sendRedirect, sendStream, setCookie, setHeader, setHeaders, setResponseHeader, setResponseHeaders, toEventHandler, toNodeListener, use, useBase, useBody, useCookie, useCookies, useMethod, useQuery, useRawBody, writeEarlyHints };
package/dist/index.mjs CHANGED
@@ -131,7 +131,12 @@ function assertMethod(event, expected, allowHead) {
131
131
  }
132
132
  }
133
133
  function getRequestHeaders(event) {
134
- return event.req.headers;
134
+ const _headers = {};
135
+ for (const key in event.req.headers) {
136
+ const val = event.req.headers[key];
137
+ _headers[key] = Array.isArray(val) ? val.filter(Boolean).join(", ") : val;
138
+ }
139
+ return _headers;
135
140
  }
136
141
  const getHeaders = getRequestHeaders;
137
142
  function getRequestHeader(event, name) {
@@ -288,7 +293,7 @@ function sendStream(event, data) {
288
293
  const noop = () => {
289
294
  };
290
295
  function writeEarlyHints(event, hints, cb = noop) {
291
- if (!event.res.socket && !("writeEarlyHints" in event.res)) {
296
+ if (!event.res.socket) {
292
297
  cb();
293
298
  return;
294
299
  }
@@ -297,10 +302,6 @@ function writeEarlyHints(event, hints, cb = noop) {
297
302
  }
298
303
  if (hints.link) {
299
304
  hints.link = Array.isArray(hints.link) ? hints.link : hints.link.split(",");
300
- hints.link = hints.link.map((l) => l.trim().replace(/; crossorigin/g, ""));
301
- }
302
- if ("writeEarlyHints" in event.res) {
303
- return event.res.writeEarlyHints(hints, cb);
304
305
  }
305
306
  const headers = Object.entries(hints).map((e) => [e[0].toLowerCase(), e[1]]);
306
307
  if (!headers.length) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "h3",
3
- "version": "0.8.4",
3
+ "version": "0.8.5",
4
4
  "description": "Tiny JavaScript Server",
5
5
  "repository": "unjs/h3",
6
6
  "license": "MIT",
@@ -21,7 +21,7 @@
21
21
  ],
22
22
  "dependencies": {
23
23
  "cookie-es": "^0.5.0",
24
- "destr": "^1.1.1",
24
+ "destr": "^1.2.0",
25
25
  "radix3": "^0.2.1",
26
26
  "ufo": "^0.8.6"
27
27
  },
@@ -52,7 +52,7 @@
52
52
  "lint": "eslint --ext ts,mjs,cjs .",
53
53
  "play": "jiti ./playground/index.ts",
54
54
  "profile": "0x -o -D .profile -P 'autocannon -c 100 -p 10 -d 40 http://localhost:$PORT' ./playground/server.cjs",
55
- "release": "pnpm test && pnpm test && pnpm build && changelogen --release && pnpm publish && git push --follow-tags",
55
+ "release": "pnpm test && pnpm build && changelogen --release && pnpm publish && git push --follow-tags",
56
56
  "test": "pnpm lint && vitest run --coverage"
57
57
  }
58
58
  }