h3 0.7.1 → 0.7.4

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
@@ -85,8 +85,9 @@ function handleCacheHeaders(event, opts) {
85
85
  opts.cacheControls?.push(`max-age=${+opts.maxAge}`, `s-maxage=${+opts.maxAge}`);
86
86
  }
87
87
  if (opts.modifiedTime) {
88
+ const modifiedTime = new Date(opts.modifiedTime);
88
89
  const ifModifiedSince = event.req.headers["if-modified-since"];
89
- event.res.setHeader("Last-Modified", +opts.modifiedTime + "");
90
+ event.res.setHeader("Last-Modified", modifiedTime.toUTCString());
90
91
  if (ifModifiedSince) {
91
92
  if (new Date(ifModifiedSince) >= opts.modifiedTime) {
92
93
  cacheMatched = true;
@@ -473,7 +474,11 @@ function createRouter() {
473
474
  routes[path] = route = { handlers: {} };
474
475
  _router.insert(path, route);
475
476
  }
476
- route.handlers[method] = toEventHandler(handler);
477
+ if (Array.isArray(method)) {
478
+ method.forEach((m) => addRoute(path, handler, m));
479
+ } else {
480
+ route.handlers[method] = toEventHandler(handler);
481
+ }
477
482
  return router;
478
483
  };
479
484
  router.use = router.add = (path, handler, method) => addRoute(path, handler, method || "all");
package/dist/index.d.ts CHANGED
@@ -12,12 +12,13 @@ interface H3Event {
12
12
  declare type CompatibilityEvent = H3Event | IncomingMessage;
13
13
  declare type _JSONValue<T = string | number | boolean> = T | T[] | Record<string, T>;
14
14
  declare type JSONValue = _JSONValue<_JSONValue>;
15
- declare type H3Response = void | JSONValue | Buffer;
16
- interface EventHandler {
15
+ declare type _H3Response = void | JSONValue | Buffer;
16
+ declare type H3Response = _H3Response | Promise<_H3Response>;
17
+ interface EventHandler<T extends H3Response = H3Response> {
17
18
  '__is_handler__'?: true;
18
- (event: CompatibilityEvent): H3Response | Promise<H3Response>;
19
+ (event: CompatibilityEvent): T;
19
20
  }
20
- declare function defineEventHandler(handler: EventHandler): EventHandler;
21
+ declare function defineEventHandler<T extends H3Response = H3Response>(handler: EventHandler<T>): EventHandler<T>;
21
22
  declare const eventHandler: typeof defineEventHandler;
22
23
  declare type LazyEventHandler = () => EventHandler | Promise<EventHandler>;
23
24
  declare function defineLazyEventHandler(factory: LazyEventHandler): EventHandler;
@@ -52,7 +53,7 @@ declare type PromisifiedHandler = Handler<Promise<any>>;
52
53
  declare type Middleware = (req: IncomingMessage, res: ServerResponse, next: (err?: Error) => any) => any;
53
54
  declare type LazyHandler = () => Handler | Promise<Handler>;
54
55
  declare type Encoding = false | 'ascii' | 'utf8' | 'utf-8' | 'utf16le' | 'ucs2' | 'ucs-2' | 'base64' | 'latin1' | 'binary' | 'hex';
55
- declare type HTTPMethod = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'CONNECT' | 'OPTIONS' | 'TRACE';
56
+ declare type HTTPMethod = 'GET' | 'HEAD' | 'PATCH' | 'POST' | 'PUT' | 'DELETE' | 'CONNECT' | 'OPTIONS' | 'TRACE';
56
57
 
57
58
  interface Layer {
58
59
  route: string;
@@ -90,7 +91,7 @@ interface AppOptions {
90
91
  }
91
92
  declare function createApp(options?: AppOptions): App;
92
93
  declare function use(app: App, arg1: string | Handler | InputLayer | InputLayer[], arg2?: Handler | Partial<InputLayer> | Handler[] | Middleware | Middleware[], arg3?: Partial<InputLayer>): App;
93
- declare function createAppEventHandler(stack: Stack, options: AppOptions): EventHandler;
94
+ declare function createAppEventHandler(stack: Stack, options: AppOptions): EventHandler<Promise<void>>;
94
95
 
95
96
  /**
96
97
  * H3 Runtime Error
@@ -162,7 +163,7 @@ declare function useRawBody(event: CompatibilityEvent, encoding?: Encoding): Enc
162
163
  declare function useBody<T = any>(event: CompatibilityEvent): Promise<T>;
163
164
 
164
165
  interface CacheConditions {
165
- modifiedTime?: Date;
166
+ modifiedTime?: string | Date;
166
167
  maxAge?: number;
167
168
  etag?: string;
168
169
  cacheControls?: string[];
@@ -233,7 +234,7 @@ declare function isStream(data: any): any;
233
234
  declare function sendStream(event: CompatibilityEvent, data: any): Promise<void>;
234
235
 
235
236
  declare type RouterMethod = Lowercase<HTTPMethod>;
236
- declare type RouterUse = (path: string, handler: CompatibilityEventHandler, method?: RouterMethod) => Router;
237
+ declare type RouterUse = (path: string, handler: CompatibilityEventHandler, method?: RouterMethod | RouterMethod[]) => Router;
237
238
  declare type AddRouteShortcuts = Record<RouterMethod, RouterUse>;
238
239
  interface Router extends AddRouteShortcuts {
239
240
  add: RouterUse;
@@ -242,4 +243,4 @@ interface Router extends AddRouteShortcuts {
242
243
  }
243
244
  declare function createRouter(): Router;
244
245
 
245
- export { AddRouteShortcuts, App, AppOptions, AppUse, CacheConditions, CompatibilityEvent, CompatibilityEventHandler, DynamicEventHandler, Encoding, EventHandler, H3Error, H3Event, H3Response, HTTPMethod, Handler, IncomingMessage, InputLayer, InputStack, JSONValue, Layer, LazyEventHandler, LazyHandler, MIMES, Matcher, Middleware, NodeHandler, PromisifiedHandler, Router, RouterMethod, RouterUse, ServerResponse, Stack, _JSONValue, appendHeader, assertMethod, callHandler, createApp, createAppEventHandler, createError, createEvent, createRouter, defaultContentType, defineEventHandler, defineHandle, defineHandler, defineLazyEventHandler, defineLazyHandler, defineMiddleware, deleteCookie, dynamicEventHandler, eventHandler, handleCacheHeaders, isError, isEvent, isEventHandler, isMethod, isStream, lazyEventHandler, lazyHandle, promisifyHandle, promisifyHandler, send, sendError, sendRedirect, sendStream, setCookie, toEventHandler, use, useBase, useBody, useCookie, useCookies, useMethod, useQuery, useRawBody };
246
+ export { AddRouteShortcuts, App, AppOptions, AppUse, CacheConditions, CompatibilityEvent, CompatibilityEventHandler, DynamicEventHandler, Encoding, EventHandler, H3Error, H3Event, H3Response, HTTPMethod, Handler, IncomingMessage, InputLayer, InputStack, JSONValue, Layer, LazyEventHandler, LazyHandler, MIMES, Matcher, Middleware, NodeHandler, PromisifiedHandler, Router, RouterMethod, RouterUse, ServerResponse, Stack, appendHeader, assertMethod, callHandler, createApp, createAppEventHandler, createError, createEvent, createRouter, defaultContentType, defineEventHandler, defineHandle, defineHandler, defineLazyEventHandler, defineLazyHandler, defineMiddleware, deleteCookie, dynamicEventHandler, eventHandler, handleCacheHeaders, isError, isEvent, isEventHandler, isMethod, isStream, lazyEventHandler, lazyHandle, promisifyHandle, promisifyHandler, send, sendError, sendRedirect, sendStream, setCookie, toEventHandler, use, useBase, useBody, useCookie, useCookies, useMethod, useQuery, useRawBody };
package/dist/index.mjs CHANGED
@@ -77,8 +77,9 @@ function handleCacheHeaders(event, opts) {
77
77
  opts.cacheControls?.push(`max-age=${+opts.maxAge}`, `s-maxage=${+opts.maxAge}`);
78
78
  }
79
79
  if (opts.modifiedTime) {
80
+ const modifiedTime = new Date(opts.modifiedTime);
80
81
  const ifModifiedSince = event.req.headers["if-modified-since"];
81
- event.res.setHeader("Last-Modified", +opts.modifiedTime + "");
82
+ event.res.setHeader("Last-Modified", modifiedTime.toUTCString());
82
83
  if (ifModifiedSince) {
83
84
  if (new Date(ifModifiedSince) >= opts.modifiedTime) {
84
85
  cacheMatched = true;
@@ -465,7 +466,11 @@ function createRouter() {
465
466
  routes[path] = route = { handlers: {} };
466
467
  _router.insert(path, route);
467
468
  }
468
- route.handlers[method] = toEventHandler(handler);
469
+ if (Array.isArray(method)) {
470
+ method.forEach((m) => addRoute(path, handler, m));
471
+ } else {
472
+ route.handlers[method] = toEventHandler(handler);
473
+ }
469
474
  return router;
470
475
  };
471
476
  router.use = router.add = (path, handler, method) => addRoute(path, handler, method || "all");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "h3",
3
- "version": "0.7.1",
3
+ "version": "0.7.4",
4
4
  "description": "Tiny JavaScript Server",
5
5
  "repository": "unjs/h3",
6
6
  "license": "MIT",
@@ -19,9 +19,9 @@
19
19
  ],
20
20
  "dependencies": {
21
21
  "cookie-es": "^0.5.0",
22
- "destr": "^1.1.0",
22
+ "destr": "^1.1.1",
23
23
  "radix3": "^0.1.1",
24
- "ufo": "^0.7.11"
24
+ "ufo": "^0.8.3"
25
25
  },
26
26
  "devDependencies": {
27
27
  "0x": "latest",
@@ -35,7 +35,7 @@
35
35
  "connect": "latest",
36
36
  "eslint": "latest",
37
37
  "express": "latest",
38
- "get-port": "^5.0.0",
38
+ "get-port": "^5.1.1",
39
39
  "jiti": "latest",
40
40
  "listhen": "latest",
41
41
  "standard-version": "latest",
@@ -44,7 +44,7 @@
44
44
  "unbuild": "latest",
45
45
  "vitest": "latest"
46
46
  },
47
- "packageManager": "pnpm@6.32.3",
47
+ "packageManager": "pnpm@6.32.7",
48
48
  "scripts": {
49
49
  "build": "unbuild",
50
50
  "dev": "vitest",