h3 1.15.3 → 1.15.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/README.md CHANGED
@@ -33,11 +33,11 @@ H3 (pronounced as /eɪtʃθriː/, like h-3) is a minimal h(ttp) framework built
33
33
 
34
34
  <!-- automd:contributors license=MIT author="pi0" -->
35
35
 
36
- Published under the [MIT](https://github.com/unjs/h3/blob/main/LICENSE) license.
37
- Made by [@pi0](https://github.com/pi0) and [community](https://github.com/unjs/h3/graphs/contributors) 💛
36
+ Published under the [MIT](https://github.com/h3js/h3/blob/main/LICENSE) license.
37
+ Made by [@pi0](https://github.com/pi0) and [community](https://github.com/h3js/h3/graphs/contributors) 💛
38
38
  <br><br>
39
- <a href="https://github.com/unjs/h3/graphs/contributors">
40
- <img src="https://contrib.rocks/image?repo=unjs/h3" />
39
+ <a href="https://github.com/h3js/h3/graphs/contributors">
40
+ <img src="https://contrib.rocks/image?repo=h3js/h3" />
41
41
  </a>
42
42
 
43
43
  <!-- /automd -->
package/dist/index.cjs CHANGED
@@ -315,7 +315,8 @@ function getRequestHeader(event, name) {
315
315
  const getHeader = getRequestHeader;
316
316
  function getRequestHost(event, opts = {}) {
317
317
  if (opts.xForwardedHost) {
318
- const xForwardedHost = event.node.req.headers["x-forwarded-host"];
318
+ const _header = event.node.req.headers["x-forwarded-host"];
319
+ const xForwardedHost = (_header || "").split(",").shift()?.trim();
319
320
  if (xForwardedHost) {
320
321
  return xForwardedHost;
321
322
  }
@@ -417,7 +418,9 @@ function readRawBody(event, encoding = "utf8") {
417
418
  });
418
419
  return encoding ? promise2.then((buff) => buff.toString(encoding)) : promise2;
419
420
  }
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")) {
421
+ if (!Number.parseInt(event.node.req.headers["content-length"] || "") && !/\bchunked\b/i.test(
422
+ String(event.node.req.headers["transfer-encoding"] ?? "")
423
+ )) {
421
424
  return Promise.resolve(void 0);
422
425
  }
423
426
  const promise = event.node.req[RawBodySymbol] = new Promise(
@@ -1439,11 +1442,16 @@ async function updateSession(event, config, update) {
1439
1442
  async function sealSession(event, config) {
1440
1443
  const sessionName = config.name || DEFAULT_NAME;
1441
1444
  const session = event.context.sessions?.[sessionName] || await getSession(event, config);
1442
- const sealed = await ironWebcrypto.seal(config.crypto || crypto__default, session, config.password, {
1443
- ...ironWebcrypto.defaults,
1444
- ttl: config.maxAge ? config.maxAge * 1e3 : 0,
1445
- ...config.seal
1446
- });
1445
+ const sealed = await ironWebcrypto.seal(
1446
+ config.crypto || crypto__default,
1447
+ session,
1448
+ config.password,
1449
+ {
1450
+ ...ironWebcrypto.defaults,
1451
+ ttl: config.maxAge ? config.maxAge * 1e3 : 0,
1452
+ ...config.seal
1453
+ }
1454
+ );
1447
1455
  return sealed;
1448
1456
  }
1449
1457
  async function unsealSession(_event, config, sealed) {
package/dist/index.d.cts CHANGED
@@ -117,6 +117,12 @@ interface Session<T extends SessionDataT = SessionDataT> {
117
117
  data: SessionData<T>;
118
118
  [getSessionPromise]?: Promise<Session<T>>;
119
119
  }
120
+ interface SessionManager<T extends SessionDataT = SessionDataT> {
121
+ readonly id: string | undefined;
122
+ readonly data: SessionData<T>;
123
+ update: (update: SessionUpdate<T>) => Promise<SessionManager<T>>;
124
+ clear: () => Promise<SessionManager<T>>;
125
+ }
120
126
  interface SessionConfig {
121
127
  /** Private key used to encrypt session tokens */
122
128
  password: string;
@@ -145,12 +151,7 @@ type CompatEvent = {
145
151
  /**
146
152
  * Create a session manager for the current request.
147
153
  */
148
- declare function useSession<T extends SessionDataT = SessionDataT>(event: H3Event | CompatEvent, config: SessionConfig): Promise<{
149
- readonly id: any;
150
- readonly data: T;
151
- update: (update: SessionUpdate<T>) => Promise</*elided*/ any>;
152
- clear: () => Promise</*elided*/ any>;
153
- }>;
154
+ declare function useSession<T extends SessionDataT = SessionDataT>(event: H3Event | CompatEvent, config: SessionConfig): Promise<SessionManager<T>>;
154
155
  /**
155
156
  * Get the session for the current request.
156
157
  */
@@ -1393,4 +1394,4 @@ declare function toPlainHandler(app: App): PlainHandler;
1393
1394
  declare function fromPlainHandler(handler: PlainHandler): EventHandler<EventHandlerRequest, Promise<unknown>>;
1394
1395
 
1395
1396
  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 };
1397
+ 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, SessionManager, Stack, StaticAssetMeta, StatusCode, TypedHeaders, ValidateFunction, ValidateResult, WebEventContext, WebHandler, WebSocketOptions, _RequestMiddleware, _ResponseMiddleware };
package/dist/index.d.mts CHANGED
@@ -117,6 +117,12 @@ interface Session<T extends SessionDataT = SessionDataT> {
117
117
  data: SessionData<T>;
118
118
  [getSessionPromise]?: Promise<Session<T>>;
119
119
  }
120
+ interface SessionManager<T extends SessionDataT = SessionDataT> {
121
+ readonly id: string | undefined;
122
+ readonly data: SessionData<T>;
123
+ update: (update: SessionUpdate<T>) => Promise<SessionManager<T>>;
124
+ clear: () => Promise<SessionManager<T>>;
125
+ }
120
126
  interface SessionConfig {
121
127
  /** Private key used to encrypt session tokens */
122
128
  password: string;
@@ -145,12 +151,7 @@ type CompatEvent = {
145
151
  /**
146
152
  * Create a session manager for the current request.
147
153
  */
148
- declare function useSession<T extends SessionDataT = SessionDataT>(event: H3Event | CompatEvent, config: SessionConfig): Promise<{
149
- readonly id: any;
150
- readonly data: T;
151
- update: (update: SessionUpdate<T>) => Promise</*elided*/ any>;
152
- clear: () => Promise</*elided*/ any>;
153
- }>;
154
+ declare function useSession<T extends SessionDataT = SessionDataT>(event: H3Event | CompatEvent, config: SessionConfig): Promise<SessionManager<T>>;
154
155
  /**
155
156
  * Get the session for the current request.
156
157
  */
@@ -1393,4 +1394,4 @@ declare function toPlainHandler(app: App): PlainHandler;
1393
1394
  declare function fromPlainHandler(handler: PlainHandler): EventHandler<EventHandlerRequest, Promise<unknown>>;
1394
1395
 
1395
1396
  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 };
1397
+ 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, SessionManager, Stack, StaticAssetMeta, StatusCode, TypedHeaders, ValidateFunction, ValidateResult, WebEventContext, WebHandler, WebSocketOptions, _RequestMiddleware, _ResponseMiddleware };
package/dist/index.d.ts CHANGED
@@ -117,6 +117,12 @@ interface Session<T extends SessionDataT = SessionDataT> {
117
117
  data: SessionData<T>;
118
118
  [getSessionPromise]?: Promise<Session<T>>;
119
119
  }
120
+ interface SessionManager<T extends SessionDataT = SessionDataT> {
121
+ readonly id: string | undefined;
122
+ readonly data: SessionData<T>;
123
+ update: (update: SessionUpdate<T>) => Promise<SessionManager<T>>;
124
+ clear: () => Promise<SessionManager<T>>;
125
+ }
120
126
  interface SessionConfig {
121
127
  /** Private key used to encrypt session tokens */
122
128
  password: string;
@@ -145,12 +151,7 @@ type CompatEvent = {
145
151
  /**
146
152
  * Create a session manager for the current request.
147
153
  */
148
- declare function useSession<T extends SessionDataT = SessionDataT>(event: H3Event | CompatEvent, config: SessionConfig): Promise<{
149
- readonly id: any;
150
- readonly data: T;
151
- update: (update: SessionUpdate<T>) => Promise</*elided*/ any>;
152
- clear: () => Promise</*elided*/ any>;
153
- }>;
154
+ declare function useSession<T extends SessionDataT = SessionDataT>(event: H3Event | CompatEvent, config: SessionConfig): Promise<SessionManager<T>>;
154
155
  /**
155
156
  * Get the session for the current request.
156
157
  */
@@ -1393,4 +1394,4 @@ declare function toPlainHandler(app: App): PlainHandler;
1393
1394
  declare function fromPlainHandler(handler: PlainHandler): EventHandler<EventHandlerRequest, Promise<unknown>>;
1394
1395
 
1395
1396
  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 };
1397
+ 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, SessionManager, Stack, StaticAssetMeta, StatusCode, TypedHeaders, ValidateFunction, ValidateResult, WebEventContext, WebHandler, WebSocketOptions, _RequestMiddleware, _ResponseMiddleware };
package/dist/index.mjs CHANGED
@@ -308,7 +308,8 @@ function getRequestHeader(event, name) {
308
308
  const getHeader = getRequestHeader;
309
309
  function getRequestHost(event, opts = {}) {
310
310
  if (opts.xForwardedHost) {
311
- const xForwardedHost = event.node.req.headers["x-forwarded-host"];
311
+ const _header = event.node.req.headers["x-forwarded-host"];
312
+ const xForwardedHost = (_header || "").split(",").shift()?.trim();
312
313
  if (xForwardedHost) {
313
314
  return xForwardedHost;
314
315
  }
@@ -410,7 +411,9 @@ function readRawBody(event, encoding = "utf8") {
410
411
  });
411
412
  return encoding ? promise2.then((buff) => buff.toString(encoding)) : promise2;
412
413
  }
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")) {
414
+ if (!Number.parseInt(event.node.req.headers["content-length"] || "") && !/\bchunked\b/i.test(
415
+ String(event.node.req.headers["transfer-encoding"] ?? "")
416
+ )) {
414
417
  return Promise.resolve(void 0);
415
418
  }
416
419
  const promise = event.node.req[RawBodySymbol] = new Promise(
@@ -1432,11 +1435,16 @@ async function updateSession(event, config, update) {
1432
1435
  async function sealSession(event, config) {
1433
1436
  const sessionName = config.name || DEFAULT_NAME;
1434
1437
  const session = event.context.sessions?.[sessionName] || await getSession(event, config);
1435
- const sealed = await seal(config.crypto || crypto, session, config.password, {
1436
- ...defaults,
1437
- ttl: config.maxAge ? config.maxAge * 1e3 : 0,
1438
- ...config.seal
1439
- });
1438
+ const sealed = await seal(
1439
+ config.crypto || crypto,
1440
+ session,
1441
+ config.password,
1442
+ {
1443
+ ...defaults,
1444
+ ttl: config.maxAge ? config.maxAge * 1e3 : 0,
1445
+ ...config.seal
1446
+ }
1447
+ );
1440
1448
  return sealed;
1441
1449
  }
1442
1450
  async function unsealSession(_event, config, sealed) {
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "h3",
3
- "version": "1.15.3",
3
+ "version": "1.15.5",
4
4
  "description": "Minimal H(TTP) framework built for high performance and portability.",
5
- "repository": "unjs/h3",
5
+ "repository": "h3js/h3",
6
6
  "license": "MIT",
7
7
  "sideEffects": false,
8
8
  "exports": {
@@ -24,52 +24,55 @@
24
24
  "dev": "vitest",
25
25
  "lint": "eslint --cache . && prettier -c src test playground examples docs",
26
26
  "lint:fix": "eslint --cache . --fix && prettier -c src test playground examples docs -w",
27
+ "prepack": "pnpm build",
27
28
  "play": "listhen -w ./playground/app.ts",
28
29
  "profile": "0x -o -D .profile -P 'autocannon -c 100 -p 10 -d 40 http://localhost:$PORT' ./playground/server.cjs",
29
- "release": "pnpm test && pnpm build && changelogen --release --publish --publishTag latest && git push --follow-tags",
30
- "test": "pnpm lint && vitest --run --coverage"
30
+ "release": "pnpm test && pnpm build && changelogen --release --publish --publishTag 1x && git push --follow-tags",
31
+ "test": "pnpm lint && vitest --run --coverage && pnpm test:types",
32
+ "test:types": "tsgo --noEmit"
31
33
  },
32
34
  "resolutions": {
33
35
  "h3": "^1.14.0"
34
36
  },
35
37
  "dependencies": {
36
38
  "cookie-es": "^1.2.2",
37
- "crossws": "^0.3.4",
39
+ "crossws": "^0.3.5",
38
40
  "defu": "^6.1.4",
39
41
  "destr": "^2.0.5",
40
42
  "iron-webcrypto": "^1.2.1",
41
- "node-mock-http": "^1.0.0",
43
+ "node-mock-http": "^1.0.4",
42
44
  "radix3": "^1.1.2",
43
- "ufo": "^1.6.1",
45
+ "ufo": "^1.6.3",
44
46
  "uncrypto": "^0.1.3"
45
47
  },
46
48
  "devDependencies": {
47
- "0x": "^5.8.0",
48
- "@types/express": "^5.0.1",
49
- "@types/node": "^22.15.2",
49
+ "0x": "^6.0.0",
50
+ "@types/express": "^5.0.6",
51
+ "@types/node": "^25.0.8",
50
52
  "@types/supertest": "^6.0.3",
51
- "@vitest/coverage-v8": "^3.1.2",
53
+ "@typescript/native-preview": "7.0.0-dev.20260115.1",
54
+ "@vitest/coverage-v8": "^4.0.17",
52
55
  "autocannon": "^8.0.0",
53
- "automd": "^0.4.0",
54
- "changelogen": "^0.6.1",
56
+ "automd": "^0.4.2",
57
+ "changelogen": "^0.6.2",
55
58
  "connect": "^3.7.0",
56
- "eslint": "^9.25.1",
57
- "eslint-config-unjs": "^0.4.2",
58
- "express": "^5.1.0",
59
+ "eslint": "^9.39.2",
60
+ "eslint-config-unjs": "^0.6.2",
61
+ "express": "^5.2.1",
59
62
  "get-port": "^7.1.0",
60
- "h3": "^1.15.1",
61
- "jiti": "^2.4.2",
63
+ "h3": "^2.0.1-rc.8",
64
+ "jiti": "^2.6.1",
62
65
  "listhen": "^1.9.0",
63
- "node-fetch-native": "^1.6.6",
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"
66
+ "node-fetch-native": "^1.6.7",
67
+ "prettier": "^3.8.0",
68
+ "react": "^19.2.3",
69
+ "react-dom": "^19.2.3",
70
+ "supertest": "^7.2.2",
71
+ "typescript": "^5.9.3",
72
+ "unbuild": "^3.6.1",
73
+ "undici": "^7.18.2",
74
+ "vitest": "^4.0.17",
75
+ "zod": "^4.3.5"
73
76
  },
74
- "packageManager": "pnpm@10.2.0"
77
+ "packageManager": "pnpm@10.28.0"
75
78
  }