h3 1.15.1 → 1.15.2

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
@@ -62,7 +62,7 @@ class H3Error extends Error {
62
62
  if (this.statusMessage) {
63
63
  obj.statusMessage = sanitizeStatusMessage(this.statusMessage);
64
64
  }
65
- if (this.data !== undefined) {
65
+ if (this.data !== void 0) {
66
66
  obj.data = this.data;
67
67
  }
68
68
  return obj;
@@ -114,10 +114,10 @@ function createError(input) {
114
114
  );
115
115
  }
116
116
  }
117
- if (input.fatal !== undefined) {
117
+ if (input.fatal !== void 0) {
118
118
  err.fatal = input.fatal;
119
119
  }
120
- if (input.unhandled !== undefined) {
120
+ if (input.unhandled !== void 0) {
121
121
  err.unhandled = input.unhandled;
122
122
  }
123
123
  return err;
@@ -142,7 +142,7 @@ function sendError(event, error, debug) {
142
142
  const _code = Number.parseInt(h3Error.statusCode);
143
143
  setResponseStatus(event, _code, h3Error.statusMessage);
144
144
  event.node.res.setHeader("content-type", MIMES.json);
145
- event.node.res.end(JSON.stringify(responseBody, undefined, 2));
145
+ event.node.res.end(JSON.stringify(responseBody, void 0, 2));
146
146
  }
147
147
  function isError(input) {
148
148
  return input?.constructor?.__h3_error__ === true;
@@ -410,12 +410,15 @@ function readRawBody(event, encoding = "utf8") {
410
410
  if (_resolved instanceof URLSearchParams) {
411
411
  return Buffer.from(_resolved.toString());
412
412
  }
413
+ if (_resolved instanceof FormData) {
414
+ return new Response(_resolved).bytes().then((uint8arr) => Buffer.from(uint8arr));
415
+ }
413
416
  return Buffer.from(_resolved);
414
417
  });
415
418
  return encoding ? promise2.then((buff) => buff.toString(encoding)) : promise2;
416
419
  }
417
420
  if (!Number.parseInt(event.node.req.headers["content-length"] || "") && !String(event.node.req.headers["transfer-encoding"] ?? "").split(",").map((e) => e.trim()).filter(Boolean).includes("chunked")) {
418
- return Promise.resolve(undefined);
421
+ return Promise.resolve(void 0);
419
422
  }
420
423
  const promise = event.node.req[RawBodySymbol] = new Promise(
421
424
  (resolve, reject) => {
@@ -510,7 +513,7 @@ function getRequestWebStream(event) {
510
513
  }
511
514
  function _parseJSON(body = "", strict) {
512
515
  if (!body) {
513
- return undefined;
516
+ return void 0;
514
517
  }
515
518
  try {
516
519
  return destr__default(body, { strict });
@@ -541,14 +544,14 @@ function _parseURLEncodedBody(body) {
541
544
  function handleCacheHeaders(event, opts) {
542
545
  const cacheControls = ["public", ...opts.cacheControls || []];
543
546
  let cacheMatched = false;
544
- if (opts.maxAge !== undefined) {
547
+ if (opts.maxAge !== void 0) {
545
548
  cacheControls.push(`max-age=${+opts.maxAge}`, `s-maxage=${+opts.maxAge}`);
546
549
  }
547
550
  if (opts.modifiedTime) {
548
551
  const modifiedTime = new Date(opts.modifiedTime);
549
552
  const ifModifiedSince = event.node.req.headers["if-modified-since"];
550
553
  event.node.res.setHeader("last-modified", modifiedTime.toUTCString());
551
- if (ifModifiedSince && new Date(ifModifiedSince) >= opts.modifiedTime) {
554
+ if (ifModifiedSince && new Date(ifModifiedSince) >= modifiedTime) {
552
555
  cacheMatched = true;
553
556
  }
554
557
  }
@@ -593,14 +596,7 @@ function sanitizeStatusCode(statusCode, defaultStatusCode = 200) {
593
596
  }
594
597
 
595
598
  function getDistinctCookieKey(name, opts) {
596
- return [
597
- name,
598
- opts.domain || "",
599
- opts.path || "/",
600
- Boolean(opts.secure),
601
- Boolean(opts.httpOnly),
602
- Boolean(opts.sameSite)
603
- ].join(";");
599
+ return [name, opts.domain || "", opts.path || "/"].join(";");
604
600
  }
605
601
 
606
602
  function parseCookies(event) {
@@ -708,7 +704,7 @@ function serializeIterableValue(value) {
708
704
  }
709
705
  case "function":
710
706
  case "undefined": {
711
- return undefined;
707
+ return void 0;
712
708
  }
713
709
  case "object": {
714
710
  if (value instanceof Uint8Array) {
@@ -981,9 +977,9 @@ function sendIterable(event, iterable, options) {
981
977
  new ReadableStream({
982
978
  async pull(controller) {
983
979
  const { value, done } = await iterator.next();
984
- if (value !== undefined) {
980
+ if (value !== void 0) {
985
981
  const chunk = serializer(value);
986
- if (chunk !== undefined) {
982
+ if (chunk !== void 0) {
987
983
  controller.enqueue(chunk);
988
984
  }
989
985
  }
@@ -1161,7 +1157,7 @@ async function proxyRequest(event, target, opts = {}) {
1161
1157
  body = getRequestWebStream(event);
1162
1158
  duplex = "half";
1163
1159
  } else {
1164
- body = await readRawBody(event, false).catch(() => undefined);
1160
+ body = await readRawBody(event, false).catch(() => void 0);
1165
1161
  }
1166
1162
  }
1167
1163
  const method = opts.fetchOptions?.method || event.method;
@@ -1241,7 +1237,7 @@ async function sendProxy(event, target, opts = {}) {
1241
1237
  if (opts.onResponse) {
1242
1238
  await opts.onResponse(event, response);
1243
1239
  }
1244
- if (response._data !== undefined) {
1240
+ if (response._data !== void 0) {
1245
1241
  return response._data;
1246
1242
  }
1247
1243
  if (event.handled) {
@@ -1315,8 +1311,9 @@ function mergeHeaders(defaults, ...inputs) {
1315
1311
  }
1316
1312
  const merged = new Headers(defaults);
1317
1313
  for (const input of _inputs) {
1318
- for (const [key, value] of Object.entries(input)) {
1319
- if (value !== undefined) {
1314
+ const entries = Array.isArray(input) ? input : typeof input.entries === "function" ? input.entries() : Object.entries(input);
1315
+ for (const [key, value] of entries) {
1316
+ if (value !== void 0) {
1320
1317
  merged.set(key, value);
1321
1318
  }
1322
1319
  }
@@ -1433,7 +1430,7 @@ async function updateSession(event, config, update) {
1433
1430
  const sealed = await sealSession(event, config);
1434
1431
  setCookie(event, sessionName, sealed, {
1435
1432
  ...DEFAULT_COOKIE,
1436
- expires: config.maxAge ? new Date(session.createdAt + config.maxAge * 1e3) : undefined,
1433
+ expires: config.maxAge ? new Date(session.createdAt + config.maxAge * 1e3) : void 0,
1437
1434
  ...config.cookie
1438
1435
  });
1439
1436
  }
@@ -1519,7 +1516,7 @@ function setEventStreamHeaders(event) {
1519
1516
  setResponseHeaders(event, headers);
1520
1517
  }
1521
1518
  function isHttp2Request(event) {
1522
- return getHeader(event, ":path") !== undefined && getHeader(event, ":method") !== undefined;
1519
+ return getHeader(event, ":path") !== void 0 && getHeader(event, ":method") !== void 0;
1523
1520
  }
1524
1521
 
1525
1522
  class EventStream {
@@ -1609,7 +1606,7 @@ class EventStream {
1609
1606
  }
1610
1607
  if (this._unsentData?.length) {
1611
1608
  await this._writer.write(this._encoder.encode(this._unsentData));
1612
- this._unsentData = undefined;
1609
+ this._unsentData = void 0;
1613
1610
  }
1614
1611
  }
1615
1612
  /**
@@ -1719,7 +1716,7 @@ async function serveStatic(event, options) {
1719
1716
  if (meta.encoding && !getResponseHeader(event, "content-encoding")) {
1720
1717
  setResponseHeader(event, "content-encoding", meta.encoding);
1721
1718
  }
1722
- if (meta.size !== undefined && meta.size > 0 && !getResponseHeader(event, "content-length")) {
1719
+ if (meta.size !== void 0 && meta.size > 0 && !getResponseHeader(event, "content-length")) {
1723
1720
  setResponseHeader(event, "content-length", meta.size);
1724
1721
  }
1725
1722
  if (event.method === "HEAD") {
@@ -1861,7 +1858,7 @@ function defineEventHandler(handler) {
1861
1858
  return _handler;
1862
1859
  }
1863
1860
  function _normalizeArray(input) {
1864
- return input ? Array.isArray(input) ? input : [input] : undefined;
1861
+ return input ? Array.isArray(input) ? input : [input] : void 0;
1865
1862
  }
1866
1863
  async function _callHandler(event, handler, hooks) {
1867
1864
  if (hooks.onRequest) {
@@ -1991,7 +1988,7 @@ function use(app, arg1, arg2, arg3) {
1991
1988
  return app;
1992
1989
  }
1993
1990
  function createAppEventHandler(stack, options) {
1994
- const spacing = options.debug ? 2 : undefined;
1991
+ const spacing = options.debug ? 2 : void 0;
1995
1992
  return eventHandler(async (event) => {
1996
1993
  event.node.req.originalUrl = event.node.req.originalUrl || event.node.req.url || "/";
1997
1994
  const _reqPath = event._path || event.node.req.url || "/";
@@ -2014,8 +2011,8 @@ function createAppEventHandler(stack, options) {
2014
2011
  event._path = _layerPath;
2015
2012
  event.node.req.url = _layerPath;
2016
2013
  const val = await layer.handler(event);
2017
- const _body = val === undefined ? undefined : await val;
2018
- if (_body !== undefined) {
2014
+ const _body = val === void 0 ? void 0 : await val;
2015
+ if (_body !== void 0) {
2019
2016
  const _response = { body: _body };
2020
2017
  if (options.onBeforeResponse) {
2021
2018
  event._onBeforeResponseCalled = true;
@@ -2031,7 +2028,7 @@ function createAppEventHandler(stack, options) {
2031
2028
  if (event.handled) {
2032
2029
  if (options.onAfterResponse) {
2033
2030
  event._onAfterResponseCalled = true;
2034
- await options.onAfterResponse(event, undefined);
2031
+ await options.onAfterResponse(event, void 0);
2035
2032
  }
2036
2033
  return;
2037
2034
  }
@@ -2044,7 +2041,7 @@ function createAppEventHandler(stack, options) {
2044
2041
  }
2045
2042
  if (options.onAfterResponse) {
2046
2043
  event._onAfterResponseCalled = true;
2047
- await options.onAfterResponse(event, undefined);
2044
+ await options.onAfterResponse(event, void 0);
2048
2045
  }
2049
2046
  });
2050
2047
  }
@@ -2059,7 +2056,7 @@ function createResolver(stack) {
2059
2056
  continue;
2060
2057
  }
2061
2058
  _layerPath = path.slice(layer.route.length) || "/";
2062
- if (layer.match && !layer.match(_layerPath, undefined)) {
2059
+ if (layer.match && !layer.match(_layerPath, void 0)) {
2063
2060
  continue;
2064
2061
  }
2065
2062
  let res = { route: layer.route, handler: layer.handler };
@@ -2086,7 +2083,7 @@ function normalizeLayer(input) {
2086
2083
  if (input.lazy) {
2087
2084
  handler = lazyEventHandler(handler);
2088
2085
  } else if (!isEventHandler(handler)) {
2089
- handler = toEventHandler(handler, undefined, input.route);
2086
+ handler = toEventHandler(handler, void 0, input.route);
2090
2087
  }
2091
2088
  return {
2092
2089
  route: ufo.withoutTrailingSlash(input.route),
@@ -2125,7 +2122,7 @@ function handleHandlerResponse(event, val, jsonSpace) {
2125
2122
  return send(event, val, MIMES.html);
2126
2123
  }
2127
2124
  if (valType === "object" || valType === "boolean" || valType === "number") {
2128
- return send(event, JSON.stringify(val, undefined, jsonSpace), MIMES.json);
2125
+ return send(event, JSON.stringify(val, void 0, jsonSpace), MIMES.json);
2129
2126
  }
2130
2127
  if (valType === "bigint") {
2131
2128
  return send(event, val.toString(), MIMES.json);
@@ -2183,7 +2180,7 @@ function createRouter(opts = {}) {
2183
2180
  addRoute(path, handler, m);
2184
2181
  }
2185
2182
  } else {
2186
- route.handlers[method] = toEventHandler(handler, undefined, path);
2183
+ route.handlers[method] = toEventHandler(handler, void 0, path);
2187
2184
  }
2188
2185
  return router;
2189
2186
  };
@@ -2253,7 +2250,7 @@ function createRouter(opts = {}) {
2253
2250
  const params = match.matched.params || {};
2254
2251
  event.context.params = params;
2255
2252
  return Promise.resolve(match.handler(event)).then((res) => {
2256
- if (res === undefined && isPreemptive) {
2253
+ if (res === void 0 && isPreemptive) {
2257
2254
  return null;
2258
2255
  }
2259
2256
  return res;
@@ -2345,7 +2342,7 @@ function callNodeListener(handler, req, res) {
2345
2342
  res.off("close", next);
2346
2343
  res.off("error", next);
2347
2344
  }
2348
- return err ? reject(createError(err)) : resolve(undefined);
2345
+ return err ? reject(createError(err)) : resolve(void 0);
2349
2346
  };
2350
2347
  try {
2351
2348
  const returned = handler(req, res, next);
@@ -2445,7 +2442,7 @@ function _normalizeUnenvHeaders(input) {
2445
2442
  for (const _value of value) {
2446
2443
  headers.push([key, _value]);
2447
2444
  }
2448
- } else if (value !== undefined) {
2445
+ } else if (value !== void 0) {
2449
2446
  headers.push([key, String(value)]);
2450
2447
  }
2451
2448
  }
package/dist/index.d.cts CHANGED
@@ -331,7 +331,7 @@ declare class H3Error<DataT = unknown> extends Error {
331
331
  constructor(message: string, opts?: {
332
332
  cause?: unknown;
333
333
  });
334
- toJSON(): Pick<H3Error<DataT>, "data" | "statusCode" | "statusMessage" | "message">;
334
+ toJSON(): Pick<H3Error<DataT>, "message" | "statusCode" | "statusMessage" | "data">;
335
335
  }
336
336
  /**
337
337
  * Creates a new `Error` that can be used to handle both internal and runtime errors.
@@ -1392,4 +1392,5 @@ declare function toPlainHandler(app: App): PlainHandler;
1392
1392
  /** @experimental */
1393
1393
  declare function fromPlainHandler(handler: PlainHandler): EventHandler<EventHandlerRequest, Promise<unknown>>;
1394
1394
 
1395
- export { type AddRouteShortcuts, type App, type AppOptions, type AppUse, type CacheConditions, type CreateRouterOptions, type Duplex, type DynamicEventHandler, type Encoding, type EventHandler, type EventHandlerObject, type EventHandlerRequest, type EventHandlerResolver, type EventHandlerResponse, type EventStream, type EventStreamMessage, type EventStreamOptions, type H3CorsOptions, H3Error, H3Event, type H3EventContext, H3Headers, H3Response, type HTTPHeaderName, type HTTPMethod, type InferEventInput, type InputLayer, type InputStack, type Layer, type LazyEventHandler, MIMES, type Matcher, type MimeType, type MultiPartData, type NodeEventContext, type NodeListener, type NodeMiddleware, type NodePromisifiedHandler, type PlainHandler, type PlainRequest, type PlainResponse, type ProxyOptions, type RequestFingerprintOptions, type RequestHeaders, type RouteNode, type Router, type RouterMethod, type RouterUse, type ServeStaticOptions, type Session, type SessionConfig, type SessionData, type Stack, type StaticAssetMeta, type StatusCode, type TypedHeaders, type ValidateFunction, type ValidateResult, type WebEventContext, type WebHandler, type WebSocketOptions, type _RequestMiddleware, type _ResponseMiddleware, appendCorsHeaders, appendCorsPreflightHeaders, appendHeader, appendHeaders, appendResponseHeader, appendResponseHeaders, assertMethod, callNodeListener, clearResponseHeaders, clearSession, createApp, createAppEventHandler, createError, createEvent, createEventStream, createRouter, defaultContentType, defineEventHandler, defineLazyEventHandler, defineNodeListener, defineNodeMiddleware, defineRequestMiddleware, defineResponseMiddleware, defineWebSocket, defineWebSocketHandler, deleteCookie, dynamicEventHandler, eventHandler, fetchWithEvent, fromNodeMiddleware, fromPlainHandler, fromWebHandler, getCookie, getHeader, getHeaders, getMethod, getProxyRequestHeaders, getQuery, getRequestFingerprint, getRequestHeader, getRequestHeaders, getRequestHost, getRequestIP, getRequestPath, getRequestProtocol, getRequestURL, getRequestWebStream, getResponseHeader, getResponseHeaders, getResponseStatus, getResponseStatusText, getRouterParam, getRouterParams, getSession, getValidatedQuery, getValidatedRouterParams, handleCacheHeaders, handleCors, isCorsOriginAllowed, isError, isEvent, isEventHandler, isMethod, isPreflightRequest, isStream, isWebResponse, lazyEventHandler, parseCookies, promisifyNodeListener, proxyRequest, readBody, readFormData, readMultipartFormData, readRawBody, readValidatedBody, removeResponseHeader, sanitizeStatusCode, sanitizeStatusMessage, sealSession, send, sendError, sendIterable, sendNoContent, sendProxy, sendRedirect, sendStream, sendWebResponse, serveStatic, setCookie, setHeader, setHeaders, setResponseHeader, setResponseHeaders, setResponseStatus, splitCookiesString, toEventHandler, toNodeListener, toPlainHandler, toWebHandler, toWebRequest, unsealSession, updateSession, use, useBase, useSession, writeEarlyHints };
1395
+ export { H3Error, H3Event, H3Headers, H3Response, MIMES, appendCorsHeaders, appendCorsPreflightHeaders, appendHeader, appendHeaders, appendResponseHeader, appendResponseHeaders, assertMethod, callNodeListener, clearResponseHeaders, clearSession, createApp, createAppEventHandler, createError, createEvent, createEventStream, createRouter, defaultContentType, defineEventHandler, defineLazyEventHandler, defineNodeListener, defineNodeMiddleware, defineRequestMiddleware, defineResponseMiddleware, defineWebSocket, defineWebSocketHandler, deleteCookie, dynamicEventHandler, eventHandler, fetchWithEvent, fromNodeMiddleware, fromPlainHandler, fromWebHandler, getCookie, getHeader, getHeaders, getMethod, getProxyRequestHeaders, getQuery, getRequestFingerprint, getRequestHeader, getRequestHeaders, getRequestHost, getRequestIP, getRequestPath, getRequestProtocol, getRequestURL, getRequestWebStream, getResponseHeader, getResponseHeaders, getResponseStatus, getResponseStatusText, getRouterParam, getRouterParams, getSession, getValidatedQuery, getValidatedRouterParams, handleCacheHeaders, handleCors, isCorsOriginAllowed, isError, isEvent, isEventHandler, isMethod, isPreflightRequest, isStream, isWebResponse, lazyEventHandler, parseCookies, promisifyNodeListener, proxyRequest, readBody, readFormData, readMultipartFormData, readRawBody, readValidatedBody, removeResponseHeader, sanitizeStatusCode, sanitizeStatusMessage, sealSession, send, sendError, sendIterable, sendNoContent, sendProxy, sendRedirect, sendStream, sendWebResponse, serveStatic, setCookie, setHeader, setHeaders, setResponseHeader, setResponseHeaders, setResponseStatus, splitCookiesString, toEventHandler, toNodeListener, toPlainHandler, toWebHandler, toWebRequest, unsealSession, updateSession, use, useBase, useSession, writeEarlyHints };
1396
+ export type { AddRouteShortcuts, App, AppOptions, AppUse, CacheConditions, CreateRouterOptions, Duplex, DynamicEventHandler, Encoding, EventHandler, EventHandlerObject, EventHandlerRequest, EventHandlerResolver, EventHandlerResponse, EventStream, EventStreamMessage, EventStreamOptions, H3CorsOptions, H3EventContext, HTTPHeaderName, HTTPMethod, InferEventInput, InputLayer, InputStack, Layer, LazyEventHandler, Matcher, MimeType, MultiPartData, NodeEventContext, NodeListener, NodeMiddleware, NodePromisifiedHandler, PlainHandler, PlainRequest, PlainResponse, ProxyOptions, RequestFingerprintOptions, RequestHeaders, RouteNode, Router, RouterMethod, RouterUse, ServeStaticOptions, Session, SessionConfig, SessionData, Stack, StaticAssetMeta, StatusCode, TypedHeaders, ValidateFunction, ValidateResult, WebEventContext, WebHandler, WebSocketOptions, _RequestMiddleware, _ResponseMiddleware };
package/dist/index.d.mts CHANGED
@@ -331,7 +331,7 @@ declare class H3Error<DataT = unknown> extends Error {
331
331
  constructor(message: string, opts?: {
332
332
  cause?: unknown;
333
333
  });
334
- toJSON(): Pick<H3Error<DataT>, "data" | "statusCode" | "statusMessage" | "message">;
334
+ toJSON(): Pick<H3Error<DataT>, "message" | "statusCode" | "statusMessage" | "data">;
335
335
  }
336
336
  /**
337
337
  * Creates a new `Error` that can be used to handle both internal and runtime errors.
@@ -1392,4 +1392,5 @@ declare function toPlainHandler(app: App): PlainHandler;
1392
1392
  /** @experimental */
1393
1393
  declare function fromPlainHandler(handler: PlainHandler): EventHandler<EventHandlerRequest, Promise<unknown>>;
1394
1394
 
1395
- export { type AddRouteShortcuts, type App, type AppOptions, type AppUse, type CacheConditions, type CreateRouterOptions, type Duplex, type DynamicEventHandler, type Encoding, type EventHandler, type EventHandlerObject, type EventHandlerRequest, type EventHandlerResolver, type EventHandlerResponse, type EventStream, type EventStreamMessage, type EventStreamOptions, type H3CorsOptions, H3Error, H3Event, type H3EventContext, H3Headers, H3Response, type HTTPHeaderName, type HTTPMethod, type InferEventInput, type InputLayer, type InputStack, type Layer, type LazyEventHandler, MIMES, type Matcher, type MimeType, type MultiPartData, type NodeEventContext, type NodeListener, type NodeMiddleware, type NodePromisifiedHandler, type PlainHandler, type PlainRequest, type PlainResponse, type ProxyOptions, type RequestFingerprintOptions, type RequestHeaders, type RouteNode, type Router, type RouterMethod, type RouterUse, type ServeStaticOptions, type Session, type SessionConfig, type SessionData, type Stack, type StaticAssetMeta, type StatusCode, type TypedHeaders, type ValidateFunction, type ValidateResult, type WebEventContext, type WebHandler, type WebSocketOptions, type _RequestMiddleware, type _ResponseMiddleware, appendCorsHeaders, appendCorsPreflightHeaders, appendHeader, appendHeaders, appendResponseHeader, appendResponseHeaders, assertMethod, callNodeListener, clearResponseHeaders, clearSession, createApp, createAppEventHandler, createError, createEvent, createEventStream, createRouter, defaultContentType, defineEventHandler, defineLazyEventHandler, defineNodeListener, defineNodeMiddleware, defineRequestMiddleware, defineResponseMiddleware, defineWebSocket, defineWebSocketHandler, deleteCookie, dynamicEventHandler, eventHandler, fetchWithEvent, fromNodeMiddleware, fromPlainHandler, fromWebHandler, getCookie, getHeader, getHeaders, getMethod, getProxyRequestHeaders, getQuery, getRequestFingerprint, getRequestHeader, getRequestHeaders, getRequestHost, getRequestIP, getRequestPath, getRequestProtocol, getRequestURL, getRequestWebStream, getResponseHeader, getResponseHeaders, getResponseStatus, getResponseStatusText, getRouterParam, getRouterParams, getSession, getValidatedQuery, getValidatedRouterParams, handleCacheHeaders, handleCors, isCorsOriginAllowed, isError, isEvent, isEventHandler, isMethod, isPreflightRequest, isStream, isWebResponse, lazyEventHandler, parseCookies, promisifyNodeListener, proxyRequest, readBody, readFormData, readMultipartFormData, readRawBody, readValidatedBody, removeResponseHeader, sanitizeStatusCode, sanitizeStatusMessage, sealSession, send, sendError, sendIterable, sendNoContent, sendProxy, sendRedirect, sendStream, sendWebResponse, serveStatic, setCookie, setHeader, setHeaders, setResponseHeader, setResponseHeaders, setResponseStatus, splitCookiesString, toEventHandler, toNodeListener, toPlainHandler, toWebHandler, toWebRequest, unsealSession, updateSession, use, useBase, useSession, writeEarlyHints };
1395
+ export { H3Error, H3Event, H3Headers, H3Response, MIMES, appendCorsHeaders, appendCorsPreflightHeaders, appendHeader, appendHeaders, appendResponseHeader, appendResponseHeaders, assertMethod, callNodeListener, clearResponseHeaders, clearSession, createApp, createAppEventHandler, createError, createEvent, createEventStream, createRouter, defaultContentType, defineEventHandler, defineLazyEventHandler, defineNodeListener, defineNodeMiddleware, defineRequestMiddleware, defineResponseMiddleware, defineWebSocket, defineWebSocketHandler, deleteCookie, dynamicEventHandler, eventHandler, fetchWithEvent, fromNodeMiddleware, fromPlainHandler, fromWebHandler, getCookie, getHeader, getHeaders, getMethod, getProxyRequestHeaders, getQuery, getRequestFingerprint, getRequestHeader, getRequestHeaders, getRequestHost, getRequestIP, getRequestPath, getRequestProtocol, getRequestURL, getRequestWebStream, getResponseHeader, getResponseHeaders, getResponseStatus, getResponseStatusText, getRouterParam, getRouterParams, getSession, getValidatedQuery, getValidatedRouterParams, handleCacheHeaders, handleCors, isCorsOriginAllowed, isError, isEvent, isEventHandler, isMethod, isPreflightRequest, isStream, isWebResponse, lazyEventHandler, parseCookies, promisifyNodeListener, proxyRequest, readBody, readFormData, readMultipartFormData, readRawBody, readValidatedBody, removeResponseHeader, sanitizeStatusCode, sanitizeStatusMessage, sealSession, send, sendError, sendIterable, sendNoContent, sendProxy, sendRedirect, sendStream, sendWebResponse, serveStatic, setCookie, setHeader, setHeaders, setResponseHeader, setResponseHeaders, setResponseStatus, splitCookiesString, toEventHandler, toNodeListener, toPlainHandler, toWebHandler, toWebRequest, unsealSession, updateSession, use, useBase, useSession, writeEarlyHints };
1396
+ export type { AddRouteShortcuts, App, AppOptions, AppUse, CacheConditions, CreateRouterOptions, Duplex, DynamicEventHandler, Encoding, EventHandler, EventHandlerObject, EventHandlerRequest, EventHandlerResolver, EventHandlerResponse, EventStream, EventStreamMessage, EventStreamOptions, H3CorsOptions, H3EventContext, HTTPHeaderName, HTTPMethod, InferEventInput, InputLayer, InputStack, Layer, LazyEventHandler, Matcher, MimeType, MultiPartData, NodeEventContext, NodeListener, NodeMiddleware, NodePromisifiedHandler, PlainHandler, PlainRequest, PlainResponse, ProxyOptions, RequestFingerprintOptions, RequestHeaders, RouteNode, Router, RouterMethod, RouterUse, ServeStaticOptions, Session, SessionConfig, SessionData, Stack, StaticAssetMeta, StatusCode, TypedHeaders, ValidateFunction, ValidateResult, WebEventContext, WebHandler, WebSocketOptions, _RequestMiddleware, _ResponseMiddleware };
package/dist/index.d.ts CHANGED
@@ -331,7 +331,7 @@ declare class H3Error<DataT = unknown> extends Error {
331
331
  constructor(message: string, opts?: {
332
332
  cause?: unknown;
333
333
  });
334
- toJSON(): Pick<H3Error<DataT>, "data" | "statusCode" | "statusMessage" | "message">;
334
+ toJSON(): Pick<H3Error<DataT>, "message" | "statusCode" | "statusMessage" | "data">;
335
335
  }
336
336
  /**
337
337
  * Creates a new `Error` that can be used to handle both internal and runtime errors.
@@ -1392,4 +1392,5 @@ declare function toPlainHandler(app: App): PlainHandler;
1392
1392
  /** @experimental */
1393
1393
  declare function fromPlainHandler(handler: PlainHandler): EventHandler<EventHandlerRequest, Promise<unknown>>;
1394
1394
 
1395
- export { type AddRouteShortcuts, type App, type AppOptions, type AppUse, type CacheConditions, type CreateRouterOptions, type Duplex, type DynamicEventHandler, type Encoding, type EventHandler, type EventHandlerObject, type EventHandlerRequest, type EventHandlerResolver, type EventHandlerResponse, type EventStream, type EventStreamMessage, type EventStreamOptions, type H3CorsOptions, H3Error, H3Event, type H3EventContext, H3Headers, H3Response, type HTTPHeaderName, type HTTPMethod, type InferEventInput, type InputLayer, type InputStack, type Layer, type LazyEventHandler, MIMES, type Matcher, type MimeType, type MultiPartData, type NodeEventContext, type NodeListener, type NodeMiddleware, type NodePromisifiedHandler, type PlainHandler, type PlainRequest, type PlainResponse, type ProxyOptions, type RequestFingerprintOptions, type RequestHeaders, type RouteNode, type Router, type RouterMethod, type RouterUse, type ServeStaticOptions, type Session, type SessionConfig, type SessionData, type Stack, type StaticAssetMeta, type StatusCode, type TypedHeaders, type ValidateFunction, type ValidateResult, type WebEventContext, type WebHandler, type WebSocketOptions, type _RequestMiddleware, type _ResponseMiddleware, appendCorsHeaders, appendCorsPreflightHeaders, appendHeader, appendHeaders, appendResponseHeader, appendResponseHeaders, assertMethod, callNodeListener, clearResponseHeaders, clearSession, createApp, createAppEventHandler, createError, createEvent, createEventStream, createRouter, defaultContentType, defineEventHandler, defineLazyEventHandler, defineNodeListener, defineNodeMiddleware, defineRequestMiddleware, defineResponseMiddleware, defineWebSocket, defineWebSocketHandler, deleteCookie, dynamicEventHandler, eventHandler, fetchWithEvent, fromNodeMiddleware, fromPlainHandler, fromWebHandler, getCookie, getHeader, getHeaders, getMethod, getProxyRequestHeaders, getQuery, getRequestFingerprint, getRequestHeader, getRequestHeaders, getRequestHost, getRequestIP, getRequestPath, getRequestProtocol, getRequestURL, getRequestWebStream, getResponseHeader, getResponseHeaders, getResponseStatus, getResponseStatusText, getRouterParam, getRouterParams, getSession, getValidatedQuery, getValidatedRouterParams, handleCacheHeaders, handleCors, isCorsOriginAllowed, isError, isEvent, isEventHandler, isMethod, isPreflightRequest, isStream, isWebResponse, lazyEventHandler, parseCookies, promisifyNodeListener, proxyRequest, readBody, readFormData, readMultipartFormData, readRawBody, readValidatedBody, removeResponseHeader, sanitizeStatusCode, sanitizeStatusMessage, sealSession, send, sendError, sendIterable, sendNoContent, sendProxy, sendRedirect, sendStream, sendWebResponse, serveStatic, setCookie, setHeader, setHeaders, setResponseHeader, setResponseHeaders, setResponseStatus, splitCookiesString, toEventHandler, toNodeListener, toPlainHandler, toWebHandler, toWebRequest, unsealSession, updateSession, use, useBase, useSession, writeEarlyHints };
1395
+ export { H3Error, H3Event, H3Headers, H3Response, MIMES, appendCorsHeaders, appendCorsPreflightHeaders, appendHeader, appendHeaders, appendResponseHeader, appendResponseHeaders, assertMethod, callNodeListener, clearResponseHeaders, clearSession, createApp, createAppEventHandler, createError, createEvent, createEventStream, createRouter, defaultContentType, defineEventHandler, defineLazyEventHandler, defineNodeListener, defineNodeMiddleware, defineRequestMiddleware, defineResponseMiddleware, defineWebSocket, defineWebSocketHandler, deleteCookie, dynamicEventHandler, eventHandler, fetchWithEvent, fromNodeMiddleware, fromPlainHandler, fromWebHandler, getCookie, getHeader, getHeaders, getMethod, getProxyRequestHeaders, getQuery, getRequestFingerprint, getRequestHeader, getRequestHeaders, getRequestHost, getRequestIP, getRequestPath, getRequestProtocol, getRequestURL, getRequestWebStream, getResponseHeader, getResponseHeaders, getResponseStatus, getResponseStatusText, getRouterParam, getRouterParams, getSession, getValidatedQuery, getValidatedRouterParams, handleCacheHeaders, handleCors, isCorsOriginAllowed, isError, isEvent, isEventHandler, isMethod, isPreflightRequest, isStream, isWebResponse, lazyEventHandler, parseCookies, promisifyNodeListener, proxyRequest, readBody, readFormData, readMultipartFormData, readRawBody, readValidatedBody, removeResponseHeader, sanitizeStatusCode, sanitizeStatusMessage, sealSession, send, sendError, sendIterable, sendNoContent, sendProxy, sendRedirect, sendStream, sendWebResponse, serveStatic, setCookie, setHeader, setHeaders, setResponseHeader, setResponseHeaders, setResponseStatus, splitCookiesString, toEventHandler, toNodeListener, toPlainHandler, toWebHandler, toWebRequest, unsealSession, updateSession, use, useBase, useSession, writeEarlyHints };
1396
+ export type { AddRouteShortcuts, App, AppOptions, AppUse, CacheConditions, CreateRouterOptions, Duplex, DynamicEventHandler, Encoding, EventHandler, EventHandlerObject, EventHandlerRequest, EventHandlerResolver, EventHandlerResponse, EventStream, EventStreamMessage, EventStreamOptions, H3CorsOptions, H3EventContext, HTTPHeaderName, HTTPMethod, InferEventInput, InputLayer, InputStack, Layer, LazyEventHandler, Matcher, MimeType, MultiPartData, NodeEventContext, NodeListener, NodeMiddleware, NodePromisifiedHandler, PlainHandler, PlainRequest, PlainResponse, ProxyOptions, RequestFingerprintOptions, RequestHeaders, RouteNode, Router, RouterMethod, RouterUse, ServeStaticOptions, Session, SessionConfig, SessionData, Stack, StaticAssetMeta, StatusCode, TypedHeaders, ValidateFunction, ValidateResult, WebEventContext, WebHandler, WebSocketOptions, _RequestMiddleware, _ResponseMiddleware };
package/dist/index.mjs CHANGED
@@ -55,7 +55,7 @@ class H3Error extends Error {
55
55
  if (this.statusMessage) {
56
56
  obj.statusMessage = sanitizeStatusMessage(this.statusMessage);
57
57
  }
58
- if (this.data !== undefined) {
58
+ if (this.data !== void 0) {
59
59
  obj.data = this.data;
60
60
  }
61
61
  return obj;
@@ -107,10 +107,10 @@ function createError(input) {
107
107
  );
108
108
  }
109
109
  }
110
- if (input.fatal !== undefined) {
110
+ if (input.fatal !== void 0) {
111
111
  err.fatal = input.fatal;
112
112
  }
113
- if (input.unhandled !== undefined) {
113
+ if (input.unhandled !== void 0) {
114
114
  err.unhandled = input.unhandled;
115
115
  }
116
116
  return err;
@@ -135,7 +135,7 @@ function sendError(event, error, debug) {
135
135
  const _code = Number.parseInt(h3Error.statusCode);
136
136
  setResponseStatus(event, _code, h3Error.statusMessage);
137
137
  event.node.res.setHeader("content-type", MIMES.json);
138
- event.node.res.end(JSON.stringify(responseBody, undefined, 2));
138
+ event.node.res.end(JSON.stringify(responseBody, void 0, 2));
139
139
  }
140
140
  function isError(input) {
141
141
  return input?.constructor?.__h3_error__ === true;
@@ -403,12 +403,15 @@ function readRawBody(event, encoding = "utf8") {
403
403
  if (_resolved instanceof URLSearchParams) {
404
404
  return Buffer.from(_resolved.toString());
405
405
  }
406
+ if (_resolved instanceof FormData) {
407
+ return new Response(_resolved).bytes().then((uint8arr) => Buffer.from(uint8arr));
408
+ }
406
409
  return Buffer.from(_resolved);
407
410
  });
408
411
  return encoding ? promise2.then((buff) => buff.toString(encoding)) : promise2;
409
412
  }
410
413
  if (!Number.parseInt(event.node.req.headers["content-length"] || "") && !String(event.node.req.headers["transfer-encoding"] ?? "").split(",").map((e) => e.trim()).filter(Boolean).includes("chunked")) {
411
- return Promise.resolve(undefined);
414
+ return Promise.resolve(void 0);
412
415
  }
413
416
  const promise = event.node.req[RawBodySymbol] = new Promise(
414
417
  (resolve, reject) => {
@@ -503,7 +506,7 @@ function getRequestWebStream(event) {
503
506
  }
504
507
  function _parseJSON(body = "", strict) {
505
508
  if (!body) {
506
- return undefined;
509
+ return void 0;
507
510
  }
508
511
  try {
509
512
  return destr(body, { strict });
@@ -534,14 +537,14 @@ function _parseURLEncodedBody(body) {
534
537
  function handleCacheHeaders(event, opts) {
535
538
  const cacheControls = ["public", ...opts.cacheControls || []];
536
539
  let cacheMatched = false;
537
- if (opts.maxAge !== undefined) {
540
+ if (opts.maxAge !== void 0) {
538
541
  cacheControls.push(`max-age=${+opts.maxAge}`, `s-maxage=${+opts.maxAge}`);
539
542
  }
540
543
  if (opts.modifiedTime) {
541
544
  const modifiedTime = new Date(opts.modifiedTime);
542
545
  const ifModifiedSince = event.node.req.headers["if-modified-since"];
543
546
  event.node.res.setHeader("last-modified", modifiedTime.toUTCString());
544
- if (ifModifiedSince && new Date(ifModifiedSince) >= opts.modifiedTime) {
547
+ if (ifModifiedSince && new Date(ifModifiedSince) >= modifiedTime) {
545
548
  cacheMatched = true;
546
549
  }
547
550
  }
@@ -586,14 +589,7 @@ function sanitizeStatusCode(statusCode, defaultStatusCode = 200) {
586
589
  }
587
590
 
588
591
  function getDistinctCookieKey(name, opts) {
589
- return [
590
- name,
591
- opts.domain || "",
592
- opts.path || "/",
593
- Boolean(opts.secure),
594
- Boolean(opts.httpOnly),
595
- Boolean(opts.sameSite)
596
- ].join(";");
592
+ return [name, opts.domain || "", opts.path || "/"].join(";");
597
593
  }
598
594
 
599
595
  function parseCookies(event) {
@@ -701,7 +697,7 @@ function serializeIterableValue(value) {
701
697
  }
702
698
  case "function":
703
699
  case "undefined": {
704
- return undefined;
700
+ return void 0;
705
701
  }
706
702
  case "object": {
707
703
  if (value instanceof Uint8Array) {
@@ -974,9 +970,9 @@ function sendIterable(event, iterable, options) {
974
970
  new ReadableStream({
975
971
  async pull(controller) {
976
972
  const { value, done } = await iterator.next();
977
- if (value !== undefined) {
973
+ if (value !== void 0) {
978
974
  const chunk = serializer(value);
979
- if (chunk !== undefined) {
975
+ if (chunk !== void 0) {
980
976
  controller.enqueue(chunk);
981
977
  }
982
978
  }
@@ -1154,7 +1150,7 @@ async function proxyRequest(event, target, opts = {}) {
1154
1150
  body = getRequestWebStream(event);
1155
1151
  duplex = "half";
1156
1152
  } else {
1157
- body = await readRawBody(event, false).catch(() => undefined);
1153
+ body = await readRawBody(event, false).catch(() => void 0);
1158
1154
  }
1159
1155
  }
1160
1156
  const method = opts.fetchOptions?.method || event.method;
@@ -1234,7 +1230,7 @@ async function sendProxy(event, target, opts = {}) {
1234
1230
  if (opts.onResponse) {
1235
1231
  await opts.onResponse(event, response);
1236
1232
  }
1237
- if (response._data !== undefined) {
1233
+ if (response._data !== void 0) {
1238
1234
  return response._data;
1239
1235
  }
1240
1236
  if (event.handled) {
@@ -1308,8 +1304,9 @@ function mergeHeaders(defaults, ...inputs) {
1308
1304
  }
1309
1305
  const merged = new Headers(defaults);
1310
1306
  for (const input of _inputs) {
1311
- for (const [key, value] of Object.entries(input)) {
1312
- if (value !== undefined) {
1307
+ const entries = Array.isArray(input) ? input : typeof input.entries === "function" ? input.entries() : Object.entries(input);
1308
+ for (const [key, value] of entries) {
1309
+ if (value !== void 0) {
1313
1310
  merged.set(key, value);
1314
1311
  }
1315
1312
  }
@@ -1426,7 +1423,7 @@ async function updateSession(event, config, update) {
1426
1423
  const sealed = await sealSession(event, config);
1427
1424
  setCookie(event, sessionName, sealed, {
1428
1425
  ...DEFAULT_COOKIE,
1429
- expires: config.maxAge ? new Date(session.createdAt + config.maxAge * 1e3) : undefined,
1426
+ expires: config.maxAge ? new Date(session.createdAt + config.maxAge * 1e3) : void 0,
1430
1427
  ...config.cookie
1431
1428
  });
1432
1429
  }
@@ -1512,7 +1509,7 @@ function setEventStreamHeaders(event) {
1512
1509
  setResponseHeaders(event, headers);
1513
1510
  }
1514
1511
  function isHttp2Request(event) {
1515
- return getHeader(event, ":path") !== undefined && getHeader(event, ":method") !== undefined;
1512
+ return getHeader(event, ":path") !== void 0 && getHeader(event, ":method") !== void 0;
1516
1513
  }
1517
1514
 
1518
1515
  class EventStream {
@@ -1602,7 +1599,7 @@ class EventStream {
1602
1599
  }
1603
1600
  if (this._unsentData?.length) {
1604
1601
  await this._writer.write(this._encoder.encode(this._unsentData));
1605
- this._unsentData = undefined;
1602
+ this._unsentData = void 0;
1606
1603
  }
1607
1604
  }
1608
1605
  /**
@@ -1712,7 +1709,7 @@ async function serveStatic(event, options) {
1712
1709
  if (meta.encoding && !getResponseHeader(event, "content-encoding")) {
1713
1710
  setResponseHeader(event, "content-encoding", meta.encoding);
1714
1711
  }
1715
- if (meta.size !== undefined && meta.size > 0 && !getResponseHeader(event, "content-length")) {
1712
+ if (meta.size !== void 0 && meta.size > 0 && !getResponseHeader(event, "content-length")) {
1716
1713
  setResponseHeader(event, "content-length", meta.size);
1717
1714
  }
1718
1715
  if (event.method === "HEAD") {
@@ -1854,7 +1851,7 @@ function defineEventHandler(handler) {
1854
1851
  return _handler;
1855
1852
  }
1856
1853
  function _normalizeArray(input) {
1857
- return input ? Array.isArray(input) ? input : [input] : undefined;
1854
+ return input ? Array.isArray(input) ? input : [input] : void 0;
1858
1855
  }
1859
1856
  async function _callHandler(event, handler, hooks) {
1860
1857
  if (hooks.onRequest) {
@@ -1984,7 +1981,7 @@ function use(app, arg1, arg2, arg3) {
1984
1981
  return app;
1985
1982
  }
1986
1983
  function createAppEventHandler(stack, options) {
1987
- const spacing = options.debug ? 2 : undefined;
1984
+ const spacing = options.debug ? 2 : void 0;
1988
1985
  return eventHandler(async (event) => {
1989
1986
  event.node.req.originalUrl = event.node.req.originalUrl || event.node.req.url || "/";
1990
1987
  const _reqPath = event._path || event.node.req.url || "/";
@@ -2007,8 +2004,8 @@ function createAppEventHandler(stack, options) {
2007
2004
  event._path = _layerPath;
2008
2005
  event.node.req.url = _layerPath;
2009
2006
  const val = await layer.handler(event);
2010
- const _body = val === undefined ? undefined : await val;
2011
- if (_body !== undefined) {
2007
+ const _body = val === void 0 ? void 0 : await val;
2008
+ if (_body !== void 0) {
2012
2009
  const _response = { body: _body };
2013
2010
  if (options.onBeforeResponse) {
2014
2011
  event._onBeforeResponseCalled = true;
@@ -2024,7 +2021,7 @@ function createAppEventHandler(stack, options) {
2024
2021
  if (event.handled) {
2025
2022
  if (options.onAfterResponse) {
2026
2023
  event._onAfterResponseCalled = true;
2027
- await options.onAfterResponse(event, undefined);
2024
+ await options.onAfterResponse(event, void 0);
2028
2025
  }
2029
2026
  return;
2030
2027
  }
@@ -2037,7 +2034,7 @@ function createAppEventHandler(stack, options) {
2037
2034
  }
2038
2035
  if (options.onAfterResponse) {
2039
2036
  event._onAfterResponseCalled = true;
2040
- await options.onAfterResponse(event, undefined);
2037
+ await options.onAfterResponse(event, void 0);
2041
2038
  }
2042
2039
  });
2043
2040
  }
@@ -2052,7 +2049,7 @@ function createResolver(stack) {
2052
2049
  continue;
2053
2050
  }
2054
2051
  _layerPath = path.slice(layer.route.length) || "/";
2055
- if (layer.match && !layer.match(_layerPath, undefined)) {
2052
+ if (layer.match && !layer.match(_layerPath, void 0)) {
2056
2053
  continue;
2057
2054
  }
2058
2055
  let res = { route: layer.route, handler: layer.handler };
@@ -2079,7 +2076,7 @@ function normalizeLayer(input) {
2079
2076
  if (input.lazy) {
2080
2077
  handler = lazyEventHandler(handler);
2081
2078
  } else if (!isEventHandler(handler)) {
2082
- handler = toEventHandler(handler, undefined, input.route);
2079
+ handler = toEventHandler(handler, void 0, input.route);
2083
2080
  }
2084
2081
  return {
2085
2082
  route: withoutTrailingSlash(input.route),
@@ -2118,7 +2115,7 @@ function handleHandlerResponse(event, val, jsonSpace) {
2118
2115
  return send(event, val, MIMES.html);
2119
2116
  }
2120
2117
  if (valType === "object" || valType === "boolean" || valType === "number") {
2121
- return send(event, JSON.stringify(val, undefined, jsonSpace), MIMES.json);
2118
+ return send(event, JSON.stringify(val, void 0, jsonSpace), MIMES.json);
2122
2119
  }
2123
2120
  if (valType === "bigint") {
2124
2121
  return send(event, val.toString(), MIMES.json);
@@ -2176,7 +2173,7 @@ function createRouter(opts = {}) {
2176
2173
  addRoute(path, handler, m);
2177
2174
  }
2178
2175
  } else {
2179
- route.handlers[method] = toEventHandler(handler, undefined, path);
2176
+ route.handlers[method] = toEventHandler(handler, void 0, path);
2180
2177
  }
2181
2178
  return router;
2182
2179
  };
@@ -2246,7 +2243,7 @@ function createRouter(opts = {}) {
2246
2243
  const params = match.matched.params || {};
2247
2244
  event.context.params = params;
2248
2245
  return Promise.resolve(match.handler(event)).then((res) => {
2249
- if (res === undefined && isPreemptive) {
2246
+ if (res === void 0 && isPreemptive) {
2250
2247
  return null;
2251
2248
  }
2252
2249
  return res;
@@ -2338,7 +2335,7 @@ function callNodeListener(handler, req, res) {
2338
2335
  res.off("close", next);
2339
2336
  res.off("error", next);
2340
2337
  }
2341
- return err ? reject(createError(err)) : resolve(undefined);
2338
+ return err ? reject(createError(err)) : resolve(void 0);
2342
2339
  };
2343
2340
  try {
2344
2341
  const returned = handler(req, res, next);
@@ -2438,7 +2435,7 @@ function _normalizeUnenvHeaders(input) {
2438
2435
  for (const _value of value) {
2439
2436
  headers.push([key, _value]);
2440
2437
  }
2441
- } else if (value !== undefined) {
2438
+ } else if (value !== void 0) {
2442
2439
  headers.push([key, String(value)]);
2443
2440
  }
2444
2441
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "h3",
3
- "version": "1.15.1",
3
+ "version": "1.15.2",
4
4
  "description": "Minimal H(TTP) framework built for high performance and portability.",
5
5
  "repository": "unjs/h3",
6
6
  "license": "MIT",
@@ -34,42 +34,42 @@
34
34
  },
35
35
  "dependencies": {
36
36
  "cookie-es": "^1.2.2",
37
- "crossws": "^0.3.3",
37
+ "crossws": "^0.3.4",
38
38
  "defu": "^6.1.4",
39
- "destr": "^2.0.3",
39
+ "destr": "^2.0.5",
40
40
  "iron-webcrypto": "^1.2.1",
41
41
  "node-mock-http": "^1.0.0",
42
42
  "radix3": "^1.1.2",
43
- "ufo": "^1.5.4",
43
+ "ufo": "^1.6.1",
44
44
  "uncrypto": "^0.1.3"
45
45
  },
46
46
  "devDependencies": {
47
47
  "0x": "^5.8.0",
48
- "@types/express": "^5.0.0",
49
- "@types/node": "^22.13.1",
50
- "@types/supertest": "^6.0.2",
51
- "@vitest/coverage-v8": "^3.0.5",
48
+ "@types/express": "^5.0.1",
49
+ "@types/node": "^22.15.2",
50
+ "@types/supertest": "^6.0.3",
51
+ "@vitest/coverage-v8": "^3.1.2",
52
52
  "autocannon": "^8.0.0",
53
- "automd": "^0.3.12",
54
- "changelogen": "^0.5.7",
53
+ "automd": "^0.4.0",
54
+ "changelogen": "^0.6.1",
55
55
  "connect": "^3.7.0",
56
- "eslint": "^9.19.0",
56
+ "eslint": "^9.25.1",
57
57
  "eslint-config-unjs": "^0.4.2",
58
- "express": "^4.21.2",
58
+ "express": "^5.1.0",
59
59
  "get-port": "^7.1.0",
60
- "h3": "^1.14.0",
60
+ "h3": "^1.15.1",
61
61
  "jiti": "^2.4.2",
62
62
  "listhen": "^1.9.0",
63
63
  "node-fetch-native": "^1.6.6",
64
- "prettier": "^3.4.2",
65
- "react": "^19.0.0",
66
- "react-dom": "^19.0.0",
67
- "supertest": "^7.0.0",
68
- "typescript": "^5.7.3",
69
- "unbuild": "^3.3.1",
70
- "undici": "^7.3.0",
71
- "vitest": "^3.0.5",
72
- "zod": "^3.24.1"
64
+ "prettier": "^3.5.3",
65
+ "react": "^19.1.0",
66
+ "react-dom": "^19.1.0",
67
+ "supertest": "^7.1.0",
68
+ "typescript": "^5.8.3",
69
+ "unbuild": "^3.5.0",
70
+ "undici": "^7.8.0",
71
+ "vitest": "^3.1.2",
72
+ "zod": "^3.24.3"
73
73
  },
74
74
  "packageManager": "pnpm@10.2.0"
75
75
  }