hono 4.12.4 → 4.12.6

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.
Files changed (203) hide show
  1. package/dist/adapter/aws-lambda/handler.js +2 -2
  2. package/dist/adapter/lambda-edge/handler.js +2 -1
  3. package/dist/cjs/adapter/aws-lambda/conninfo.js +0 -1
  4. package/dist/cjs/adapter/aws-lambda/handler.js +2 -3
  5. package/dist/cjs/adapter/aws-lambda/index.js +0 -1
  6. package/dist/cjs/adapter/aws-lambda/types.js +0 -1
  7. package/dist/cjs/adapter/bun/conninfo.js +0 -1
  8. package/dist/cjs/adapter/bun/index.js +0 -1
  9. package/dist/cjs/adapter/bun/serve-static.js +0 -1
  10. package/dist/cjs/adapter/bun/server.js +0 -1
  11. package/dist/cjs/adapter/bun/ssg.js +0 -1
  12. package/dist/cjs/adapter/bun/websocket.js +0 -1
  13. package/dist/cjs/adapter/cloudflare-pages/conninfo.js +0 -1
  14. package/dist/cjs/adapter/cloudflare-pages/handler.js +0 -1
  15. package/dist/cjs/adapter/cloudflare-pages/index.js +0 -1
  16. package/dist/cjs/adapter/cloudflare-workers/conninfo.js +0 -1
  17. package/dist/cjs/adapter/cloudflare-workers/index.js +0 -1
  18. package/dist/cjs/adapter/cloudflare-workers/serve-static-module.js +0 -1
  19. package/dist/cjs/adapter/cloudflare-workers/serve-static.js +0 -1
  20. package/dist/cjs/adapter/cloudflare-workers/utils.js +0 -1
  21. package/dist/cjs/adapter/cloudflare-workers/websocket.js +0 -1
  22. package/dist/cjs/adapter/deno/conninfo.js +0 -1
  23. package/dist/cjs/adapter/deno/deno.d.js +0 -1
  24. package/dist/cjs/adapter/deno/index.js +0 -1
  25. package/dist/cjs/adapter/deno/serve-static.js +0 -1
  26. package/dist/cjs/adapter/deno/ssg.js +0 -1
  27. package/dist/cjs/adapter/deno/websocket.js +0 -1
  28. package/dist/cjs/adapter/lambda-edge/conninfo.js +0 -1
  29. package/dist/cjs/adapter/lambda-edge/handler.js +2 -2
  30. package/dist/cjs/adapter/lambda-edge/index.js +0 -1
  31. package/dist/cjs/adapter/netlify/conninfo.js +0 -1
  32. package/dist/cjs/adapter/netlify/handler.js +0 -1
  33. package/dist/cjs/adapter/netlify/index.js +0 -1
  34. package/dist/cjs/adapter/netlify/mod.js +0 -1
  35. package/dist/cjs/adapter/service-worker/handler.js +0 -1
  36. package/dist/cjs/adapter/service-worker/index.js +0 -1
  37. package/dist/cjs/adapter/service-worker/types.js +0 -1
  38. package/dist/cjs/adapter/vercel/conninfo.js +0 -1
  39. package/dist/cjs/adapter/vercel/handler.js +0 -1
  40. package/dist/cjs/adapter/vercel/index.js +0 -1
  41. package/dist/cjs/client/client.js +0 -1
  42. package/dist/cjs/client/fetch-result-please.js +0 -1
  43. package/dist/cjs/client/index.js +0 -1
  44. package/dist/cjs/client/types.js +0 -1
  45. package/dist/cjs/client/utils.js +0 -1
  46. package/dist/cjs/compose.js +0 -1
  47. package/dist/cjs/context.js +0 -1
  48. package/dist/cjs/helper/accepts/accepts.js +0 -1
  49. package/dist/cjs/helper/accepts/index.js +0 -1
  50. package/dist/cjs/helper/adapter/index.js +0 -1
  51. package/dist/cjs/helper/conninfo/index.js +0 -1
  52. package/dist/cjs/helper/conninfo/types.js +0 -1
  53. package/dist/cjs/helper/cookie/index.js +0 -1
  54. package/dist/cjs/helper/css/common.js +0 -1
  55. package/dist/cjs/helper/css/index.js +0 -1
  56. package/dist/cjs/helper/dev/index.js +0 -1
  57. package/dist/cjs/helper/factory/index.js +0 -1
  58. package/dist/cjs/helper/html/index.js +0 -1
  59. package/dist/cjs/helper/proxy/index.js +0 -1
  60. package/dist/cjs/helper/route/index.js +0 -1
  61. package/dist/cjs/helper/ssg/index.js +0 -1
  62. package/dist/cjs/helper/ssg/middleware.js +0 -1
  63. package/dist/cjs/helper/ssg/plugins.js +0 -1
  64. package/dist/cjs/helper/ssg/ssg.js +0 -1
  65. package/dist/cjs/helper/ssg/utils.js +0 -1
  66. package/dist/cjs/helper/streaming/index.js +0 -1
  67. package/dist/cjs/helper/streaming/sse.js +0 -1
  68. package/dist/cjs/helper/streaming/stream.js +0 -1
  69. package/dist/cjs/helper/streaming/text.js +0 -1
  70. package/dist/cjs/helper/streaming/utils.js +0 -1
  71. package/dist/cjs/helper/testing/index.js +0 -1
  72. package/dist/cjs/helper/websocket/index.js +0 -1
  73. package/dist/cjs/hono-base.js +0 -1
  74. package/dist/cjs/hono.js +0 -1
  75. package/dist/cjs/http-exception.js +0 -1
  76. package/dist/cjs/index.js +0 -1
  77. package/dist/cjs/jsx/base.js +0 -1
  78. package/dist/cjs/jsx/children.js +0 -1
  79. package/dist/cjs/jsx/components.js +0 -1
  80. package/dist/cjs/jsx/constants.js +0 -1
  81. package/dist/cjs/jsx/context.js +0 -1
  82. package/dist/cjs/jsx/dom/client.js +0 -1
  83. package/dist/cjs/jsx/dom/components.js +0 -1
  84. package/dist/cjs/jsx/dom/context.js +0 -1
  85. package/dist/cjs/jsx/dom/css.js +0 -1
  86. package/dist/cjs/jsx/dom/hooks/index.js +0 -1
  87. package/dist/cjs/jsx/dom/index.js +0 -1
  88. package/dist/cjs/jsx/dom/intrinsic-element/components.js +40 -10
  89. package/dist/cjs/jsx/dom/jsx-dev-runtime.js +0 -1
  90. package/dist/cjs/jsx/dom/jsx-runtime.js +0 -1
  91. package/dist/cjs/jsx/dom/render.js +0 -1
  92. package/dist/cjs/jsx/dom/server.js +0 -1
  93. package/dist/cjs/jsx/dom/utils.js +0 -1
  94. package/dist/cjs/jsx/hooks/index.js +0 -1
  95. package/dist/cjs/jsx/index.js +0 -1
  96. package/dist/cjs/jsx/intrinsic-element/common.js +13 -3
  97. package/dist/cjs/jsx/intrinsic-element/components.js +18 -12
  98. package/dist/cjs/jsx/intrinsic-elements.js +0 -1
  99. package/dist/cjs/jsx/jsx-dev-runtime.js +0 -1
  100. package/dist/cjs/jsx/jsx-runtime.js +0 -1
  101. package/dist/cjs/jsx/streaming.js +13 -4
  102. package/dist/cjs/jsx/types.js +0 -1
  103. package/dist/cjs/jsx/utils.js +0 -1
  104. package/dist/cjs/middleware/basic-auth/index.js +0 -1
  105. package/dist/cjs/middleware/bearer-auth/index.js +0 -1
  106. package/dist/cjs/middleware/body-limit/index.js +0 -1
  107. package/dist/cjs/middleware/cache/index.js +0 -1
  108. package/dist/cjs/middleware/combine/index.js +0 -1
  109. package/dist/cjs/middleware/compress/index.js +0 -1
  110. package/dist/cjs/middleware/context-storage/index.js +0 -1
  111. package/dist/cjs/middleware/cors/index.js +0 -1
  112. package/dist/cjs/middleware/csrf/index.js +0 -1
  113. package/dist/cjs/middleware/etag/digest.js +0 -1
  114. package/dist/cjs/middleware/etag/index.js +0 -1
  115. package/dist/cjs/middleware/ip-restriction/index.js +0 -1
  116. package/dist/cjs/middleware/jsx-renderer/index.js +1 -1
  117. package/dist/cjs/middleware/jwk/index.js +0 -1
  118. package/dist/cjs/middleware/jwk/jwk.js +0 -1
  119. package/dist/cjs/middleware/jwt/index.js +0 -1
  120. package/dist/cjs/middleware/jwt/jwt.js +0 -1
  121. package/dist/cjs/middleware/language/index.js +0 -1
  122. package/dist/cjs/middleware/language/language.js +0 -1
  123. package/dist/cjs/middleware/logger/index.js +0 -1
  124. package/dist/cjs/middleware/method-override/index.js +0 -1
  125. package/dist/cjs/middleware/powered-by/index.js +0 -1
  126. package/dist/cjs/middleware/pretty-json/index.js +0 -1
  127. package/dist/cjs/middleware/request-id/index.js +0 -1
  128. package/dist/cjs/middleware/request-id/request-id.js +0 -1
  129. package/dist/cjs/middleware/secure-headers/index.js +0 -1
  130. package/dist/cjs/middleware/secure-headers/permissions-policy.js +0 -1
  131. package/dist/cjs/middleware/secure-headers/secure-headers.js +0 -1
  132. package/dist/cjs/middleware/serve-static/index.js +0 -1
  133. package/dist/cjs/middleware/serve-static/path.js +0 -1
  134. package/dist/cjs/middleware/timeout/index.js +0 -1
  135. package/dist/cjs/middleware/timing/index.js +0 -1
  136. package/dist/cjs/middleware/timing/timing.js +0 -1
  137. package/dist/cjs/middleware/trailing-slash/index.js +0 -1
  138. package/dist/cjs/preset/quick.js +0 -1
  139. package/dist/cjs/preset/tiny.js +0 -1
  140. package/dist/cjs/request/constants.js +0 -1
  141. package/dist/cjs/request.js +0 -1
  142. package/dist/cjs/router/linear-router/index.js +0 -1
  143. package/dist/cjs/router/linear-router/router.js +0 -1
  144. package/dist/cjs/router/pattern-router/index.js +0 -1
  145. package/dist/cjs/router/pattern-router/router.js +0 -1
  146. package/dist/cjs/router/reg-exp-router/index.js +0 -1
  147. package/dist/cjs/router/reg-exp-router/matcher.js +0 -1
  148. package/dist/cjs/router/reg-exp-router/node.js +0 -1
  149. package/dist/cjs/router/reg-exp-router/prepared-router.js +0 -1
  150. package/dist/cjs/router/reg-exp-router/router.js +0 -1
  151. package/dist/cjs/router/reg-exp-router/trie.js +0 -1
  152. package/dist/cjs/router/smart-router/index.js +0 -1
  153. package/dist/cjs/router/smart-router/router.js +0 -1
  154. package/dist/cjs/router/trie-router/index.js +0 -1
  155. package/dist/cjs/router/trie-router/node.js +0 -1
  156. package/dist/cjs/router/trie-router/router.js +0 -1
  157. package/dist/cjs/router.js +0 -1
  158. package/dist/cjs/types.js +0 -1
  159. package/dist/cjs/utils/accept.js +188 -29
  160. package/dist/cjs/utils/basic-auth.js +0 -1
  161. package/dist/cjs/utils/body.js +0 -1
  162. package/dist/cjs/utils/buffer.js +0 -1
  163. package/dist/cjs/utils/color.js +0 -1
  164. package/dist/cjs/utils/compress.js +0 -1
  165. package/dist/cjs/utils/concurrent.js +0 -1
  166. package/dist/cjs/utils/constants.js +0 -1
  167. package/dist/cjs/utils/cookie.js +0 -1
  168. package/dist/cjs/utils/crypto.js +0 -1
  169. package/dist/cjs/utils/encode.js +0 -1
  170. package/dist/cjs/utils/filepath.js +0 -1
  171. package/dist/cjs/utils/handler.js +0 -1
  172. package/dist/cjs/utils/headers.js +0 -1
  173. package/dist/cjs/utils/html.js +0 -1
  174. package/dist/cjs/utils/http-status.js +0 -1
  175. package/dist/cjs/utils/ipaddr.js +0 -1
  176. package/dist/cjs/utils/jwt/index.js +0 -1
  177. package/dist/cjs/utils/jwt/jwa.js +0 -1
  178. package/dist/cjs/utils/jwt/jws.js +0 -1
  179. package/dist/cjs/utils/jwt/jwt.js +11 -6
  180. package/dist/cjs/utils/jwt/types.js +0 -1
  181. package/dist/cjs/utils/jwt/utf8.js +0 -1
  182. package/dist/cjs/utils/mime.js +0 -1
  183. package/dist/cjs/utils/stream.js +0 -1
  184. package/dist/cjs/utils/types.js +0 -1
  185. package/dist/cjs/utils/url.js +0 -1
  186. package/dist/cjs/validator/index.js +0 -1
  187. package/dist/cjs/validator/utils.js +0 -1
  188. package/dist/cjs/validator/validator.js +0 -1
  189. package/dist/jsx/dom/intrinsic-element/components.js +47 -10
  190. package/dist/jsx/intrinsic-element/common.js +10 -1
  191. package/dist/jsx/intrinsic-element/components.js +24 -12
  192. package/dist/jsx/streaming.js +13 -3
  193. package/dist/middleware/jsx-renderer/index.js +1 -0
  194. package/dist/tsconfig.build.tsbuildinfo +1 -0
  195. package/dist/types/adapter/aws-lambda/handler.d.ts +2 -2
  196. package/dist/types/jsx/intrinsic-element/common.d.ts +3 -0
  197. package/dist/types/jsx/types.d.ts +1 -1
  198. package/dist/types/middleware/jsx-renderer/index.d.ts +1 -1
  199. package/dist/types/request.d.ts +1 -1
  200. package/dist/types/utils/accept.d.ts +0 -5
  201. package/dist/utils/accept.js +188 -28
  202. package/dist/utils/jwt/jwt.js +11 -5
  203. package/package.json +4 -3
@@ -1,30 +1,197 @@
1
1
  // src/utils/accept.ts
2
- var parseAccept = (acceptHeader) => {
3
- if (!acceptHeader) {
4
- return [];
2
+ var isWhitespace = (char) => char === 32 || char === 9 || char === 10 || char === 13;
3
+ var consumeWhitespace = (acceptHeader, startIndex) => {
4
+ while (startIndex < acceptHeader.length) {
5
+ if (!isWhitespace(acceptHeader.charCodeAt(startIndex))) {
6
+ break;
7
+ }
8
+ startIndex++;
9
+ }
10
+ return startIndex;
11
+ };
12
+ var ignoreTrailingWhitespace = (acceptHeader, startIndex) => {
13
+ while (startIndex > 0) {
14
+ if (!isWhitespace(acceptHeader.charCodeAt(startIndex - 1))) {
15
+ break;
16
+ }
17
+ startIndex--;
18
+ }
19
+ return startIndex;
20
+ };
21
+ var skipInvalidParam = (acceptHeader, startIndex) => {
22
+ while (startIndex < acceptHeader.length) {
23
+ const char = acceptHeader.charCodeAt(startIndex);
24
+ if (char === 59) {
25
+ return [startIndex + 1, true];
26
+ }
27
+ if (char === 44) {
28
+ return [startIndex + 1, false];
29
+ }
30
+ startIndex++;
31
+ }
32
+ return [startIndex, false];
33
+ };
34
+ var skipInvalidAcceptValue = (acceptHeader, startIndex) => {
35
+ let i = startIndex;
36
+ let inQuotes = false;
37
+ while (i < acceptHeader.length) {
38
+ const char = acceptHeader.charCodeAt(i);
39
+ if (inQuotes && char === 92) {
40
+ i++;
41
+ } else if (char === 34) {
42
+ inQuotes = !inQuotes;
43
+ } else if (!inQuotes && char === 44) {
44
+ return i + 1;
45
+ }
46
+ i++;
47
+ }
48
+ return i;
49
+ };
50
+ var getNextParam = (acceptHeader, startIndex) => {
51
+ startIndex = consumeWhitespace(acceptHeader, startIndex);
52
+ let i = startIndex;
53
+ let key;
54
+ let value;
55
+ let hasNext = false;
56
+ while (i < acceptHeader.length) {
57
+ const char = acceptHeader.charCodeAt(i);
58
+ if (char === 61) {
59
+ key = acceptHeader.slice(startIndex, ignoreTrailingWhitespace(acceptHeader, i));
60
+ i++;
61
+ break;
62
+ }
63
+ if (char === 59) {
64
+ return [i + 1, void 0, void 0, true];
65
+ }
66
+ if (char === 44) {
67
+ return [i + 1, void 0, void 0, false];
68
+ }
69
+ i++;
70
+ }
71
+ if (key === void 0) {
72
+ return [i, void 0, void 0, false];
73
+ }
74
+ i = consumeWhitespace(acceptHeader, i);
75
+ if (acceptHeader.charCodeAt(i) === 61) {
76
+ const skipResult = skipInvalidParam(acceptHeader, i + 1);
77
+ return [skipResult[0], key, void 0, skipResult[1]];
78
+ }
79
+ let inQuotes = false;
80
+ const paramStartIndex = i;
81
+ while (i < acceptHeader.length) {
82
+ const char = acceptHeader.charCodeAt(i);
83
+ if (inQuotes && char === 92) {
84
+ i++;
85
+ } else if (char === 34) {
86
+ if (inQuotes) {
87
+ let nextIndex = consumeWhitespace(acceptHeader, i + 1);
88
+ const nextChar = acceptHeader.charCodeAt(nextIndex);
89
+ if (nextIndex < acceptHeader.length && !(nextChar === 59 || nextChar === 44)) {
90
+ const skipResult = skipInvalidParam(acceptHeader, nextIndex);
91
+ return [skipResult[0], key, void 0, skipResult[1]];
92
+ }
93
+ value = acceptHeader.slice(paramStartIndex + 1, i);
94
+ if (value.includes("\\")) {
95
+ value = value.replace(/\\(.)/g, "$1");
96
+ }
97
+ if (nextChar === 44) {
98
+ return [nextIndex + 1, key, value, false];
99
+ }
100
+ if (nextChar === 59) {
101
+ hasNext = true;
102
+ nextIndex++;
103
+ }
104
+ i = nextIndex;
105
+ break;
106
+ }
107
+ inQuotes = true;
108
+ } else if (!inQuotes && (char === 59 || char === 44)) {
109
+ value = acceptHeader.slice(paramStartIndex, ignoreTrailingWhitespace(acceptHeader, i));
110
+ if (char === 59) {
111
+ hasNext = true;
112
+ }
113
+ i++;
114
+ break;
115
+ }
116
+ i++;
5
117
  }
6
- const acceptValues = acceptHeader.split(",").map((value, index) => ({ value, index }));
7
- return acceptValues.map(parseAcceptValue).filter((item) => Boolean(item)).sort(sortByQualityAndIndex).map(({ type, params, q }) => ({ type, params, q }));
118
+ return [
119
+ i,
120
+ key,
121
+ value ?? acceptHeader.slice(paramStartIndex, ignoreTrailingWhitespace(acceptHeader, i)),
122
+ hasNext
123
+ ];
8
124
  };
9
- var parseAcceptValueRegex = /;(?=(?:(?:[^"]*"){2})*[^"]*$)/;
10
- var parseAcceptValue = ({ value, index }) => {
11
- const parts = value.trim().split(parseAcceptValueRegex).map((s) => s.trim());
12
- const type = parts[0];
13
- if (!type) {
14
- return null;
125
+ var getNextAcceptValue = (acceptHeader, startIndex) => {
126
+ const accept = {
127
+ type: "",
128
+ params: {},
129
+ q: 1
130
+ };
131
+ startIndex = consumeWhitespace(acceptHeader, startIndex);
132
+ let i = startIndex;
133
+ while (i < acceptHeader.length) {
134
+ const char = acceptHeader.charCodeAt(i);
135
+ if (char === 59 || char === 44) {
136
+ accept.type = acceptHeader.slice(startIndex, ignoreTrailingWhitespace(acceptHeader, i));
137
+ i++;
138
+ if (char === 44) {
139
+ return [i, accept.type ? accept : void 0];
140
+ }
141
+ if (!accept.type) {
142
+ return [skipInvalidAcceptValue(acceptHeader, i), void 0];
143
+ }
144
+ break;
145
+ }
146
+ i++;
147
+ }
148
+ if (!accept.type) {
149
+ accept.type = acceptHeader.slice(
150
+ startIndex,
151
+ ignoreTrailingWhitespace(acceptHeader, acceptHeader.length)
152
+ );
153
+ return [acceptHeader.length, accept.type ? accept : void 0];
154
+ }
155
+ let param;
156
+ let value;
157
+ let hasNext;
158
+ while (i < acceptHeader.length) {
159
+ ;
160
+ [i, param, value, hasNext] = getNextParam(acceptHeader, i);
161
+ if (param && value) {
162
+ accept.params[param] = value;
163
+ }
164
+ if (!hasNext) {
165
+ break;
166
+ }
15
167
  }
16
- const params = parseParams(parts.slice(1));
17
- const q = parseQuality(params.q);
18
- return { type, params, q, index };
168
+ return [i, accept];
19
169
  };
20
- var parseParams = (paramParts) => {
21
- return paramParts.reduce((acc, param) => {
22
- const [key, val] = param.split("=").map((s) => s.trim());
23
- if (key && val) {
24
- acc[key] = val;
170
+ var parseAccept = (acceptHeader) => {
171
+ if (!acceptHeader) {
172
+ return [];
173
+ }
174
+ const values = [];
175
+ let i = 0;
176
+ let accept;
177
+ let requiresSort = false;
178
+ let lastAccept;
179
+ while (i < acceptHeader.length) {
180
+ ;
181
+ [i, accept] = getNextAcceptValue(acceptHeader, i);
182
+ if (accept) {
183
+ accept.q = parseQuality(accept.params.q);
184
+ values.push(accept);
185
+ if (lastAccept && lastAccept.q < accept.q) {
186
+ requiresSort = true;
187
+ }
188
+ lastAccept = accept;
25
189
  }
26
- return acc;
27
- }, {});
190
+ }
191
+ if (requiresSort) {
192
+ values.sort((a, b) => b.q - a.q);
193
+ }
194
+ return values;
28
195
  };
29
196
  var parseQuality = (qVal) => {
30
197
  if (qVal === void 0) {
@@ -51,13 +218,6 @@ var parseQuality = (qVal) => {
51
218
  }
52
219
  return num;
53
220
  };
54
- var sortByQualityAndIndex = (a, b) => {
55
- const qDiff = b.q - a.q;
56
- if (qDiff !== 0) {
57
- return qDiff;
58
- }
59
- return a.index - b.index;
60
- };
61
221
  export {
62
222
  parseAccept
63
223
  };
@@ -165,10 +165,13 @@ var verifyWithJwks = async (token, options, init) => {
165
165
  });
166
166
  };
167
167
  var decode = (token) => {
168
+ const parts = token.split(".");
169
+ if (parts.length !== 3) {
170
+ throw new JwtTokenInvalid(token);
171
+ }
168
172
  try {
169
- const [h, p] = token.split(".");
170
- const header = decodeJwtPart(h);
171
- const payload = decodeJwtPart(p);
173
+ const header = decodeJwtPart(parts[0]);
174
+ const payload = decodeJwtPart(parts[1]);
172
175
  return {
173
176
  header,
174
177
  payload
@@ -178,9 +181,12 @@ var decode = (token) => {
178
181
  }
179
182
  };
180
183
  var decodeHeader = (token) => {
184
+ const parts = token.split(".");
185
+ if (parts.length !== 3) {
186
+ throw new JwtTokenInvalid(token);
187
+ }
181
188
  try {
182
- const [h] = token.split(".");
183
- return decodeJwtPart(h);
189
+ return decodeJwtPart(parts[0]);
184
190
  } catch {
185
191
  throw new JwtTokenInvalid(token);
186
192
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hono",
3
- "version": "4.12.4",
3
+ "version": "4.12.6",
4
4
  "description": "Web framework built on Web Standards",
5
5
  "main": "dist/cjs/index.js",
6
6
  "type": "module",
@@ -656,18 +656,19 @@
656
656
  "nodejs"
657
657
  ],
658
658
  "devDependencies": {
659
- "@hono/eslint-config": "^2.0.5",
659
+ "@hono/eslint-config": "^2.1.0",
660
660
  "@hono/node-server": "^1.13.5",
661
661
  "@types/glob": "^9.0.0",
662
662
  "@types/jsdom": "^21.1.7",
663
663
  "@types/node": "^24.3.0",
664
+ "@types/ws": "^8.18.1",
664
665
  "@typescript/native-preview": "7.0.0-dev.20260210.1",
665
666
  "@vitest/coverage-v8": "^3.2.4",
666
667
  "arg": "^5.0.2",
667
668
  "bun-types": "^1.2.20",
668
669
  "editorconfig-checker": "6.1.1",
669
670
  "esbuild": "^0.27.1",
670
- "eslint": "9.39.1",
671
+ "eslint": "^9.39.3",
671
672
  "glob": "^11.0.0",
672
673
  "jsdom": "22.1.0",
673
674
  "msw": "^2.6.0",