hono 4.11.7 → 4.12.7

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 (248) hide show
  1. package/dist/adapter/aws-lambda/conninfo.js +24 -0
  2. package/dist/adapter/aws-lambda/handler.js +2 -2
  3. package/dist/adapter/aws-lambda/index.js +2 -0
  4. package/dist/adapter/cloudflare-pages/conninfo.js +9 -0
  5. package/dist/adapter/cloudflare-pages/index.js +2 -0
  6. package/dist/adapter/lambda-edge/handler.js +2 -1
  7. package/dist/adapter/netlify/conninfo.js +9 -0
  8. package/dist/adapter/netlify/mod.js +2 -0
  9. package/dist/cjs/adapter/aws-lambda/conninfo.js +46 -0
  10. package/dist/cjs/adapter/aws-lambda/handler.js +2 -3
  11. package/dist/cjs/adapter/aws-lambda/index.js +3 -1
  12. package/dist/cjs/adapter/aws-lambda/types.js +0 -1
  13. package/dist/cjs/adapter/bun/conninfo.js +0 -1
  14. package/dist/cjs/adapter/bun/index.js +0 -1
  15. package/dist/cjs/adapter/bun/serve-static.js +0 -1
  16. package/dist/cjs/adapter/bun/server.js +0 -1
  17. package/dist/cjs/adapter/bun/ssg.js +0 -1
  18. package/dist/cjs/adapter/bun/websocket.js +0 -1
  19. package/dist/cjs/adapter/cloudflare-pages/conninfo.js +31 -0
  20. package/dist/cjs/adapter/cloudflare-pages/handler.js +0 -1
  21. package/dist/cjs/adapter/cloudflare-pages/index.js +3 -1
  22. package/dist/cjs/adapter/cloudflare-workers/conninfo.js +0 -1
  23. package/dist/cjs/adapter/cloudflare-workers/index.js +0 -1
  24. package/dist/cjs/adapter/cloudflare-workers/serve-static-module.js +0 -1
  25. package/dist/cjs/adapter/cloudflare-workers/serve-static.js +0 -1
  26. package/dist/cjs/adapter/cloudflare-workers/utils.js +0 -1
  27. package/dist/cjs/adapter/cloudflare-workers/websocket.js +0 -1
  28. package/dist/cjs/adapter/deno/conninfo.js +0 -1
  29. package/dist/cjs/adapter/deno/deno.d.js +0 -1
  30. package/dist/cjs/adapter/deno/index.js +0 -1
  31. package/dist/cjs/adapter/deno/serve-static.js +0 -1
  32. package/dist/cjs/adapter/deno/ssg.js +0 -1
  33. package/dist/cjs/adapter/deno/websocket.js +0 -1
  34. package/dist/cjs/adapter/lambda-edge/conninfo.js +0 -1
  35. package/dist/cjs/adapter/lambda-edge/handler.js +2 -2
  36. package/dist/cjs/adapter/lambda-edge/index.js +0 -1
  37. package/dist/cjs/adapter/netlify/conninfo.js +31 -0
  38. package/dist/cjs/adapter/netlify/handler.js +0 -1
  39. package/dist/cjs/adapter/netlify/index.js +0 -1
  40. package/dist/cjs/adapter/netlify/mod.js +3 -1
  41. package/dist/cjs/adapter/service-worker/handler.js +0 -1
  42. package/dist/cjs/adapter/service-worker/index.js +0 -1
  43. package/dist/cjs/adapter/service-worker/types.js +0 -1
  44. package/dist/cjs/adapter/vercel/conninfo.js +0 -1
  45. package/dist/cjs/adapter/vercel/handler.js +0 -1
  46. package/dist/cjs/adapter/vercel/index.js +0 -1
  47. package/dist/cjs/client/client.js +8 -3
  48. package/dist/cjs/client/fetch-result-please.js +0 -1
  49. package/dist/cjs/client/index.js +0 -1
  50. package/dist/cjs/client/types.js +0 -1
  51. package/dist/cjs/client/utils.js +0 -1
  52. package/dist/cjs/compose.js +0 -1
  53. package/dist/cjs/context.js +6 -6
  54. package/dist/cjs/helper/accepts/accepts.js +0 -1
  55. package/dist/cjs/helper/accepts/index.js +0 -1
  56. package/dist/cjs/helper/adapter/index.js +0 -1
  57. package/dist/cjs/helper/conninfo/index.js +0 -1
  58. package/dist/cjs/helper/conninfo/types.js +0 -1
  59. package/dist/cjs/helper/cookie/index.js +0 -1
  60. package/dist/cjs/helper/css/common.js +0 -1
  61. package/dist/cjs/helper/css/index.js +0 -1
  62. package/dist/cjs/helper/dev/index.js +0 -1
  63. package/dist/cjs/helper/factory/index.js +0 -1
  64. package/dist/cjs/helper/html/index.js +0 -1
  65. package/dist/cjs/helper/proxy/index.js +0 -1
  66. package/dist/cjs/helper/route/index.js +0 -1
  67. package/dist/cjs/helper/ssg/index.js +5 -1
  68. package/dist/cjs/helper/ssg/middleware.js +0 -1
  69. package/dist/cjs/helper/ssg/plugins.js +70 -0
  70. package/dist/cjs/helper/ssg/ssg.js +2 -12
  71. package/dist/cjs/helper/ssg/utils.js +0 -1
  72. package/dist/cjs/helper/streaming/index.js +0 -1
  73. package/dist/cjs/helper/streaming/sse.js +5 -1
  74. package/dist/cjs/helper/streaming/stream.js +0 -1
  75. package/dist/cjs/helper/streaming/text.js +0 -1
  76. package/dist/cjs/helper/streaming/utils.js +0 -1
  77. package/dist/cjs/helper/testing/index.js +0 -1
  78. package/dist/cjs/helper/websocket/index.js +0 -1
  79. package/dist/cjs/hono-base.js +0 -1
  80. package/dist/cjs/hono.js +0 -1
  81. package/dist/cjs/http-exception.js +0 -1
  82. package/dist/cjs/index.js +0 -1
  83. package/dist/cjs/jsx/base.js +0 -1
  84. package/dist/cjs/jsx/children.js +0 -1
  85. package/dist/cjs/jsx/components.js +0 -1
  86. package/dist/cjs/jsx/constants.js +0 -1
  87. package/dist/cjs/jsx/context.js +4 -3
  88. package/dist/cjs/jsx/dom/client.js +0 -1
  89. package/dist/cjs/jsx/dom/components.js +0 -1
  90. package/dist/cjs/jsx/dom/context.js +0 -1
  91. package/dist/cjs/jsx/dom/css.js +0 -1
  92. package/dist/cjs/jsx/dom/hooks/index.js +0 -1
  93. package/dist/cjs/jsx/dom/index.js +0 -1
  94. package/dist/cjs/jsx/dom/intrinsic-element/components.js +40 -10
  95. package/dist/cjs/jsx/dom/jsx-dev-runtime.js +0 -1
  96. package/dist/cjs/jsx/dom/jsx-runtime.js +0 -1
  97. package/dist/cjs/jsx/dom/render.js +7 -10
  98. package/dist/cjs/jsx/dom/server.js +0 -1
  99. package/dist/cjs/jsx/dom/utils.js +0 -1
  100. package/dist/cjs/jsx/hooks/index.js +0 -1
  101. package/dist/cjs/jsx/index.js +0 -1
  102. package/dist/cjs/jsx/intrinsic-element/common.js +13 -3
  103. package/dist/cjs/jsx/intrinsic-element/components.js +18 -12
  104. package/dist/cjs/jsx/intrinsic-elements.js +0 -1
  105. package/dist/cjs/jsx/jsx-dev-runtime.js +0 -1
  106. package/dist/cjs/jsx/jsx-runtime.js +0 -1
  107. package/dist/cjs/jsx/streaming.js +13 -4
  108. package/dist/cjs/jsx/types.js +0 -1
  109. package/dist/cjs/jsx/utils.js +0 -1
  110. package/dist/cjs/middleware/basic-auth/index.js +6 -1
  111. package/dist/cjs/middleware/bearer-auth/index.js +1 -2
  112. package/dist/cjs/middleware/body-limit/index.js +0 -1
  113. package/dist/cjs/middleware/cache/index.js +0 -1
  114. package/dist/cjs/middleware/combine/index.js +0 -1
  115. package/dist/cjs/middleware/compress/index.js +0 -1
  116. package/dist/cjs/middleware/context-storage/index.js +0 -1
  117. package/dist/cjs/middleware/cors/index.js +0 -1
  118. package/dist/cjs/middleware/csrf/index.js +0 -1
  119. package/dist/cjs/middleware/etag/digest.js +0 -1
  120. package/dist/cjs/middleware/etag/index.js +0 -1
  121. package/dist/cjs/middleware/ip-restriction/index.js +0 -1
  122. package/dist/cjs/middleware/jsx-renderer/index.js +1 -1
  123. package/dist/cjs/middleware/jwk/index.js +0 -1
  124. package/dist/cjs/middleware/jwk/jwk.js +0 -1
  125. package/dist/cjs/middleware/jwt/index.js +0 -1
  126. package/dist/cjs/middleware/jwt/jwt.js +0 -1
  127. package/dist/cjs/middleware/language/index.js +0 -1
  128. package/dist/cjs/middleware/language/language.js +13 -3
  129. package/dist/cjs/middleware/logger/index.js +0 -1
  130. package/dist/cjs/middleware/method-override/index.js +0 -1
  131. package/dist/cjs/middleware/powered-by/index.js +0 -1
  132. package/dist/cjs/middleware/pretty-json/index.js +0 -1
  133. package/dist/cjs/middleware/request-id/index.js +0 -1
  134. package/dist/cjs/middleware/request-id/request-id.js +0 -1
  135. package/dist/cjs/middleware/secure-headers/index.js +0 -1
  136. package/dist/cjs/middleware/secure-headers/permissions-policy.js +0 -1
  137. package/dist/cjs/middleware/secure-headers/secure-headers.js +0 -1
  138. package/dist/cjs/middleware/serve-static/index.js +2 -2
  139. package/dist/cjs/middleware/serve-static/path.js +0 -1
  140. package/dist/cjs/middleware/timeout/index.js +0 -1
  141. package/dist/cjs/middleware/timing/index.js +0 -1
  142. package/dist/cjs/middleware/timing/timing.js +0 -1
  143. package/dist/cjs/middleware/trailing-slash/index.js +18 -5
  144. package/dist/cjs/preset/quick.js +0 -1
  145. package/dist/cjs/preset/tiny.js +0 -1
  146. package/dist/cjs/request/constants.js +0 -1
  147. package/dist/cjs/request.js +0 -1
  148. package/dist/cjs/router/linear-router/index.js +0 -1
  149. package/dist/cjs/router/linear-router/router.js +0 -1
  150. package/dist/cjs/router/pattern-router/index.js +0 -1
  151. package/dist/cjs/router/pattern-router/router.js +0 -1
  152. package/dist/cjs/router/reg-exp-router/index.js +0 -1
  153. package/dist/cjs/router/reg-exp-router/matcher.js +0 -1
  154. package/dist/cjs/router/reg-exp-router/node.js +0 -1
  155. package/dist/cjs/router/reg-exp-router/prepared-router.js +0 -1
  156. package/dist/cjs/router/reg-exp-router/router.js +0 -1
  157. package/dist/cjs/router/reg-exp-router/trie.js +0 -1
  158. package/dist/cjs/router/smart-router/index.js +0 -1
  159. package/dist/cjs/router/smart-router/router.js +0 -1
  160. package/dist/cjs/router/trie-router/index.js +0 -1
  161. package/dist/cjs/router/trie-router/node.js +33 -17
  162. package/dist/cjs/router/trie-router/router.js +0 -1
  163. package/dist/cjs/router.js +0 -1
  164. package/dist/cjs/types.js +0 -1
  165. package/dist/cjs/utils/accept.js +188 -29
  166. package/dist/cjs/utils/basic-auth.js +0 -1
  167. package/dist/cjs/utils/body.js +3 -1
  168. package/dist/cjs/utils/buffer.js +29 -3
  169. package/dist/cjs/utils/color.js +0 -1
  170. package/dist/cjs/utils/compress.js +0 -1
  171. package/dist/cjs/utils/concurrent.js +0 -1
  172. package/dist/cjs/utils/constants.js +0 -1
  173. package/dist/cjs/utils/cookie.js +5 -1
  174. package/dist/cjs/utils/crypto.js +0 -1
  175. package/dist/cjs/utils/encode.js +0 -1
  176. package/dist/cjs/utils/filepath.js +0 -1
  177. package/dist/cjs/utils/handler.js +0 -1
  178. package/dist/cjs/utils/headers.js +0 -1
  179. package/dist/cjs/utils/html.js +0 -1
  180. package/dist/cjs/utils/http-status.js +0 -1
  181. package/dist/cjs/utils/ipaddr.js +0 -1
  182. package/dist/cjs/utils/jwt/index.js +0 -1
  183. package/dist/cjs/utils/jwt/jwa.js +0 -1
  184. package/dist/cjs/utils/jwt/jws.js +0 -1
  185. package/dist/cjs/utils/jwt/jwt.js +17 -14
  186. package/dist/cjs/utils/jwt/types.js +0 -1
  187. package/dist/cjs/utils/jwt/utf8.js +0 -1
  188. package/dist/cjs/utils/mime.js +0 -1
  189. package/dist/cjs/utils/stream.js +0 -1
  190. package/dist/cjs/utils/types.js +0 -1
  191. package/dist/cjs/utils/url.js +8 -5
  192. package/dist/cjs/validator/index.js +0 -1
  193. package/dist/cjs/validator/utils.js +0 -1
  194. package/dist/cjs/validator/validator.js +2 -3
  195. package/dist/client/client.js +8 -2
  196. package/dist/context.js +6 -5
  197. package/dist/helper/ssg/index.js +3 -0
  198. package/dist/helper/ssg/plugins.js +47 -0
  199. package/dist/helper/ssg/ssg.js +2 -10
  200. package/dist/helper/streaming/sse.js +5 -0
  201. package/dist/jsx/context.js +4 -2
  202. package/dist/jsx/dom/intrinsic-element/components.js +47 -10
  203. package/dist/jsx/dom/render.js +7 -9
  204. package/dist/jsx/intrinsic-element/common.js +10 -1
  205. package/dist/jsx/intrinsic-element/components.js +24 -12
  206. package/dist/jsx/streaming.js +13 -3
  207. package/dist/middleware/basic-auth/index.js +6 -0
  208. package/dist/middleware/bearer-auth/index.js +1 -1
  209. package/dist/middleware/jsx-renderer/index.js +1 -0
  210. package/dist/middleware/language/language.js +13 -2
  211. package/dist/middleware/serve-static/index.js +2 -1
  212. package/dist/middleware/trailing-slash/index.js +18 -4
  213. package/dist/router/trie-router/node.js +33 -16
  214. package/dist/tsconfig.build.tsbuildinfo +1 -0
  215. package/dist/types/adapter/aws-lambda/conninfo.d.ts +27 -0
  216. package/dist/types/adapter/aws-lambda/handler.d.ts +2 -2
  217. package/dist/types/adapter/aws-lambda/index.d.ts +1 -0
  218. package/dist/types/adapter/cloudflare-pages/conninfo.d.ts +21 -0
  219. package/dist/types/adapter/cloudflare-pages/index.d.ts +1 -0
  220. package/dist/types/adapter/netlify/conninfo.d.ts +21 -0
  221. package/dist/types/adapter/netlify/mod.d.ts +1 -0
  222. package/dist/types/client/index.d.ts +1 -1
  223. package/dist/types/client/types.d.ts +43 -2
  224. package/dist/types/context.d.ts +4 -0
  225. package/dist/types/helper/ssg/index.d.ts +1 -0
  226. package/dist/types/helper/ssg/plugins.d.ts +27 -0
  227. package/dist/types/helper/ssg/ssg.d.ts +0 -8
  228. package/dist/types/hono-base.d.ts +1 -1
  229. package/dist/types/jsx/intrinsic-element/common.d.ts +3 -0
  230. package/dist/types/jsx/types.d.ts +1 -1
  231. package/dist/types/middleware/basic-auth/index.d.ts +19 -0
  232. package/dist/types/middleware/jsx-renderer/index.d.ts +1 -1
  233. package/dist/types/middleware/jwt/index.d.ts +1 -1
  234. package/dist/types/middleware/jwt/jwt.d.ts +1 -1
  235. package/dist/types/middleware/trailing-slash/index.d.ts +43 -2
  236. package/dist/types/request.d.ts +1 -1
  237. package/dist/types/types.d.ts +18 -18
  238. package/dist/types/utils/accept.d.ts +0 -5
  239. package/dist/types/utils/buffer.d.ts +10 -1
  240. package/dist/types/utils/url.d.ts +10 -0
  241. package/dist/utils/accept.js +188 -28
  242. package/dist/utils/body.js +3 -0
  243. package/dist/utils/buffer.js +29 -2
  244. package/dist/utils/cookie.js +5 -0
  245. package/dist/utils/jwt/jwt.js +17 -13
  246. package/dist/utils/url.js +6 -3
  247. package/dist/validator/validator.js +2 -2
  248. package/package.json +5 -4
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -24,6 +23,12 @@ module.exports = __toCommonJS(node_exports);
24
23
  var import_router = require("../../router");
25
24
  var import_url = require("../../utils/url");
26
25
  const emptyParams = /* @__PURE__ */ Object.create(null);
26
+ const hasChildren = (children) => {
27
+ for (const _ in children) {
28
+ return true;
29
+ }
30
+ return false;
31
+ };
27
32
  class Node {
28
33
  #methods;
29
34
  #children;
@@ -73,8 +78,7 @@ class Node {
73
78
  });
74
79
  return curNode;
75
80
  }
76
- #getHandlerSets(node, method, nodeParams, params) {
77
- const handlerSets = [];
81
+ #pushHandlerSets(handlerSets, node, method, nodeParams, params) {
78
82
  for (let i = 0, len = node.#methods.length; i < len; i++) {
79
83
  const m = node.#methods[i];
80
84
  const handlerSet = m[method] || m[import_router.METHOD_NAME_ALL];
@@ -92,7 +96,6 @@ class Node {
92
96
  }
93
97
  }
94
98
  }
95
- return handlerSets;
96
99
  }
97
100
  search(method, path) {
98
101
  const handlerSets = [];
@@ -101,7 +104,9 @@ class Node {
101
104
  let curNodes = [curNode];
102
105
  const parts = (0, import_url.splitPath)(path);
103
106
  const curNodesQueue = [];
104
- for (let i = 0, len = parts.length; i < len; i++) {
107
+ const len = parts.length;
108
+ let partOffsets = null;
109
+ for (let i = 0; i < len; i++) {
105
110
  const part = parts[i];
106
111
  const isLast = i === len - 1;
107
112
  const tempNodes = [];
@@ -112,11 +117,9 @@ class Node {
112
117
  nextNode.#params = node.#params;
113
118
  if (isLast) {
114
119
  if (nextNode.#children["*"]) {
115
- handlerSets.push(
116
- ...this.#getHandlerSets(nextNode.#children["*"], method, node.#params)
117
- );
120
+ this.#pushHandlerSets(handlerSets, nextNode.#children["*"], method, node.#params);
118
121
  }
119
- handlerSets.push(...this.#getHandlerSets(nextNode, method, node.#params));
122
+ this.#pushHandlerSets(handlerSets, nextNode, method, node.#params);
120
123
  } else {
121
124
  tempNodes.push(nextNode);
122
125
  }
@@ -127,7 +130,7 @@ class Node {
127
130
  if (pattern === "*") {
128
131
  const astNode = node.#children["*"];
129
132
  if (astNode) {
130
- handlerSets.push(...this.#getHandlerSets(astNode, method, node.#params));
133
+ this.#pushHandlerSets(handlerSets, astNode, method, node.#params);
131
134
  astNode.#params = params;
132
135
  tempNodes.push(astNode);
133
136
  }
@@ -138,13 +141,21 @@ class Node {
138
141
  continue;
139
142
  }
140
143
  const child = node.#children[key];
141
- const restPathString = parts.slice(i).join("/");
142
144
  if (matcher instanceof RegExp) {
145
+ if (partOffsets === null) {
146
+ partOffsets = new Array(len);
147
+ let offset = path[0] === "/" ? 1 : 0;
148
+ for (let p = 0; p < len; p++) {
149
+ partOffsets[p] = offset;
150
+ offset += parts[p].length + 1;
151
+ }
152
+ }
153
+ const restPathString = path.substring(partOffsets[i]);
143
154
  const m = matcher.exec(restPathString);
144
155
  if (m) {
145
156
  params[name] = m[0];
146
- handlerSets.push(...this.#getHandlerSets(child, method, node.#params, params));
147
- if (Object.keys(child.#children).length) {
157
+ this.#pushHandlerSets(handlerSets, child, method, node.#params, params);
158
+ if (hasChildren(child.#children)) {
148
159
  child.#params = params;
149
160
  const componentCount = m[0].match(/\//)?.length ?? 0;
150
161
  const targetCurNodes = curNodesQueue[componentCount] ||= [];
@@ -156,10 +167,14 @@ class Node {
156
167
  if (matcher === true || matcher.test(part)) {
157
168
  params[name] = part;
158
169
  if (isLast) {
159
- handlerSets.push(...this.#getHandlerSets(child, method, params, node.#params));
170
+ this.#pushHandlerSets(handlerSets, child, method, params, node.#params);
160
171
  if (child.#children["*"]) {
161
- handlerSets.push(
162
- ...this.#getHandlerSets(child.#children["*"], method, params, node.#params)
172
+ this.#pushHandlerSets(
173
+ handlerSets,
174
+ child.#children["*"],
175
+ method,
176
+ params,
177
+ node.#params
163
178
  );
164
179
  }
165
180
  } else {
@@ -169,7 +184,8 @@ class Node {
169
184
  }
170
185
  }
171
186
  }
172
- curNodes = tempNodes.concat(curNodesQueue.shift() ?? []);
187
+ const shifted = curNodesQueue.shift();
188
+ curNodes = shifted ? tempNodes.concat(shifted) : tempNodes;
173
189
  }
174
190
  if (handlerSets.length > 1) {
175
191
  handlerSets.sort((a, b) => {
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
package/dist/cjs/types.js CHANGED
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -21,32 +20,199 @@ __export(accept_exports, {
21
20
  parseAccept: () => parseAccept
22
21
  });
23
22
  module.exports = __toCommonJS(accept_exports);
23
+ const isWhitespace = (char) => char === 32 || char === 9 || char === 10 || char === 13;
24
+ const consumeWhitespace = (acceptHeader, startIndex) => {
25
+ while (startIndex < acceptHeader.length) {
26
+ if (!isWhitespace(acceptHeader.charCodeAt(startIndex))) {
27
+ break;
28
+ }
29
+ startIndex++;
30
+ }
31
+ return startIndex;
32
+ };
33
+ const ignoreTrailingWhitespace = (acceptHeader, startIndex) => {
34
+ while (startIndex > 0) {
35
+ if (!isWhitespace(acceptHeader.charCodeAt(startIndex - 1))) {
36
+ break;
37
+ }
38
+ startIndex--;
39
+ }
40
+ return startIndex;
41
+ };
42
+ const skipInvalidParam = (acceptHeader, startIndex) => {
43
+ while (startIndex < acceptHeader.length) {
44
+ const char = acceptHeader.charCodeAt(startIndex);
45
+ if (char === 59) {
46
+ return [startIndex + 1, true];
47
+ }
48
+ if (char === 44) {
49
+ return [startIndex + 1, false];
50
+ }
51
+ startIndex++;
52
+ }
53
+ return [startIndex, false];
54
+ };
55
+ const skipInvalidAcceptValue = (acceptHeader, startIndex) => {
56
+ let i = startIndex;
57
+ let inQuotes = false;
58
+ while (i < acceptHeader.length) {
59
+ const char = acceptHeader.charCodeAt(i);
60
+ if (inQuotes && char === 92) {
61
+ i++;
62
+ } else if (char === 34) {
63
+ inQuotes = !inQuotes;
64
+ } else if (!inQuotes && char === 44) {
65
+ return i + 1;
66
+ }
67
+ i++;
68
+ }
69
+ return i;
70
+ };
71
+ const getNextParam = (acceptHeader, startIndex) => {
72
+ startIndex = consumeWhitespace(acceptHeader, startIndex);
73
+ let i = startIndex;
74
+ let key;
75
+ let value;
76
+ let hasNext = false;
77
+ while (i < acceptHeader.length) {
78
+ const char = acceptHeader.charCodeAt(i);
79
+ if (char === 61) {
80
+ key = acceptHeader.slice(startIndex, ignoreTrailingWhitespace(acceptHeader, i));
81
+ i++;
82
+ break;
83
+ }
84
+ if (char === 59) {
85
+ return [i + 1, void 0, void 0, true];
86
+ }
87
+ if (char === 44) {
88
+ return [i + 1, void 0, void 0, false];
89
+ }
90
+ i++;
91
+ }
92
+ if (key === void 0) {
93
+ return [i, void 0, void 0, false];
94
+ }
95
+ i = consumeWhitespace(acceptHeader, i);
96
+ if (acceptHeader.charCodeAt(i) === 61) {
97
+ const skipResult = skipInvalidParam(acceptHeader, i + 1);
98
+ return [skipResult[0], key, void 0, skipResult[1]];
99
+ }
100
+ let inQuotes = false;
101
+ const paramStartIndex = i;
102
+ while (i < acceptHeader.length) {
103
+ const char = acceptHeader.charCodeAt(i);
104
+ if (inQuotes && char === 92) {
105
+ i++;
106
+ } else if (char === 34) {
107
+ if (inQuotes) {
108
+ let nextIndex = consumeWhitespace(acceptHeader, i + 1);
109
+ const nextChar = acceptHeader.charCodeAt(nextIndex);
110
+ if (nextIndex < acceptHeader.length && !(nextChar === 59 || nextChar === 44)) {
111
+ const skipResult = skipInvalidParam(acceptHeader, nextIndex);
112
+ return [skipResult[0], key, void 0, skipResult[1]];
113
+ }
114
+ value = acceptHeader.slice(paramStartIndex + 1, i);
115
+ if (value.includes("\\")) {
116
+ value = value.replace(/\\(.)/g, "$1");
117
+ }
118
+ if (nextChar === 44) {
119
+ return [nextIndex + 1, key, value, false];
120
+ }
121
+ if (nextChar === 59) {
122
+ hasNext = true;
123
+ nextIndex++;
124
+ }
125
+ i = nextIndex;
126
+ break;
127
+ }
128
+ inQuotes = true;
129
+ } else if (!inQuotes && (char === 59 || char === 44)) {
130
+ value = acceptHeader.slice(paramStartIndex, ignoreTrailingWhitespace(acceptHeader, i));
131
+ if (char === 59) {
132
+ hasNext = true;
133
+ }
134
+ i++;
135
+ break;
136
+ }
137
+ i++;
138
+ }
139
+ return [
140
+ i,
141
+ key,
142
+ value ?? acceptHeader.slice(paramStartIndex, ignoreTrailingWhitespace(acceptHeader, i)),
143
+ hasNext
144
+ ];
145
+ };
146
+ const getNextAcceptValue = (acceptHeader, startIndex) => {
147
+ const accept = {
148
+ type: "",
149
+ params: {},
150
+ q: 1
151
+ };
152
+ startIndex = consumeWhitespace(acceptHeader, startIndex);
153
+ let i = startIndex;
154
+ while (i < acceptHeader.length) {
155
+ const char = acceptHeader.charCodeAt(i);
156
+ if (char === 59 || char === 44) {
157
+ accept.type = acceptHeader.slice(startIndex, ignoreTrailingWhitespace(acceptHeader, i));
158
+ i++;
159
+ if (char === 44) {
160
+ return [i, accept.type ? accept : void 0];
161
+ }
162
+ if (!accept.type) {
163
+ return [skipInvalidAcceptValue(acceptHeader, i), void 0];
164
+ }
165
+ break;
166
+ }
167
+ i++;
168
+ }
169
+ if (!accept.type) {
170
+ accept.type = acceptHeader.slice(
171
+ startIndex,
172
+ ignoreTrailingWhitespace(acceptHeader, acceptHeader.length)
173
+ );
174
+ return [acceptHeader.length, accept.type ? accept : void 0];
175
+ }
176
+ let param;
177
+ let value;
178
+ let hasNext;
179
+ while (i < acceptHeader.length) {
180
+ ;
181
+ [i, param, value, hasNext] = getNextParam(acceptHeader, i);
182
+ if (param && value) {
183
+ accept.params[param] = value;
184
+ }
185
+ if (!hasNext) {
186
+ break;
187
+ }
188
+ }
189
+ return [i, accept];
190
+ };
24
191
  const parseAccept = (acceptHeader) => {
25
192
  if (!acceptHeader) {
26
193
  return [];
27
194
  }
28
- const acceptValues = acceptHeader.split(",").map((value, index) => ({ value, index }));
29
- return acceptValues.map(parseAcceptValue).filter((item) => Boolean(item)).sort(sortByQualityAndIndex).map(({ type, params, q }) => ({ type, params, q }));
30
- };
31
- const parseAcceptValueRegex = /;(?=(?:(?:[^"]*"){2})*[^"]*$)/;
32
- const parseAcceptValue = ({ value, index }) => {
33
- const parts = value.trim().split(parseAcceptValueRegex).map((s) => s.trim());
34
- const type = parts[0];
35
- if (!type) {
36
- return null;
37
- }
38
- const params = parseParams(parts.slice(1));
39
- const q = parseQuality(params.q);
40
- return { type, params, q, index };
41
- };
42
- const parseParams = (paramParts) => {
43
- return paramParts.reduce((acc, param) => {
44
- const [key, val] = param.split("=").map((s) => s.trim());
45
- if (key && val) {
46
- acc[key] = val;
195
+ const values = [];
196
+ let i = 0;
197
+ let accept;
198
+ let requiresSort = false;
199
+ let lastAccept;
200
+ while (i < acceptHeader.length) {
201
+ ;
202
+ [i, accept] = getNextAcceptValue(acceptHeader, i);
203
+ if (accept) {
204
+ accept.q = parseQuality(accept.params.q);
205
+ values.push(accept);
206
+ if (lastAccept && lastAccept.q < accept.q) {
207
+ requiresSort = true;
208
+ }
209
+ lastAccept = accept;
47
210
  }
48
- return acc;
49
- }, {});
211
+ }
212
+ if (requiresSort) {
213
+ values.sort((a, b) => b.q - a.q);
214
+ }
215
+ return values;
50
216
  };
51
217
  const parseQuality = (qVal) => {
52
218
  if (qVal === void 0) {
@@ -73,13 +239,6 @@ const parseQuality = (qVal) => {
73
239
  }
74
240
  return num;
75
241
  };
76
- const sortByQualityAndIndex = (a, b) => {
77
- const qDiff = b.q - a.q;
78
- if (qDiff !== 0) {
79
- return qDiff;
80
- }
81
- return a.index - b.index;
82
- };
83
242
  // Annotate the CommonJS export names for ESM import in node:
84
243
  0 && (module.exports = {
85
244
  parseAccept
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -76,6 +75,9 @@ const handleParsingAllValues = (form, key, value) => {
76
75
  }
77
76
  };
78
77
  const handleParsingNestedValues = (form, key, value) => {
78
+ if (/(?:^|\.)__proto__\./.test(key)) {
79
+ return;
80
+ }
79
81
  let nestedForm = form;
80
82
  const keys = key.split(".");
81
83
  keys.forEach((key2, index) => {
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -42,15 +41,42 @@ const equal = (a, b) => {
42
41
  }
43
42
  return true;
44
43
  };
44
+ const constantTimeEqualString = (a, b) => {
45
+ const aLen = a.length;
46
+ const bLen = b.length;
47
+ const maxLen = Math.max(aLen, bLen);
48
+ let out = aLen ^ bLen;
49
+ for (let i = 0; i < maxLen; i++) {
50
+ const aChar = i < aLen ? a.charCodeAt(i) : 0;
51
+ const bChar = i < bLen ? b.charCodeAt(i) : 0;
52
+ out |= aChar ^ bChar;
53
+ }
54
+ return out === 0;
55
+ };
56
+ const timingSafeEqualString = async (a, b, hashFunction) => {
57
+ if (!hashFunction) {
58
+ hashFunction = import_crypto.sha256;
59
+ }
60
+ const [sa, sb] = await Promise.all([hashFunction(a), hashFunction(b)]);
61
+ if (sa == null || sb == null || typeof sa !== "string" || typeof sb !== "string") {
62
+ return false;
63
+ }
64
+ const hashEqual = constantTimeEqualString(sa, sb);
65
+ const originalEqual = constantTimeEqualString(a, b);
66
+ return hashEqual && originalEqual;
67
+ };
45
68
  const timingSafeEqual = async (a, b, hashFunction) => {
69
+ if (typeof a === "string" && typeof b === "string") {
70
+ return timingSafeEqualString(a, b, hashFunction);
71
+ }
46
72
  if (!hashFunction) {
47
73
  hashFunction = import_crypto.sha256;
48
74
  }
49
75
  const [sa, sb] = await Promise.all([hashFunction(a), hashFunction(b)]);
50
- if (!sa || !sb) {
76
+ if (!sa || !sb || typeof sa !== "string" || typeof sb !== "string") {
51
77
  return false;
52
78
  }
53
- return sa === sb && a === b;
79
+ return timingSafeEqualString(sa, sb);
54
80
  };
55
81
  const bufferToString = (buffer) => {
56
82
  if (buffer instanceof ArrayBuffer) {
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -112,6 +111,11 @@ const _serialize = (name, value, opt = {}) => {
112
111
  throw new Error("__Host- Cookie must not have Domain attributes");
113
112
  }
114
113
  }
114
+ for (const key of ["domain", "path"]) {
115
+ if (opt[key] && /[;\r\n]/.test(opt[key])) {
116
+ throw new Error(`${key} must not contain ";", "\\r", or "\\n"`);
117
+ }
118
+ }
115
119
  if (opt && typeof opt.maxAge === "number" && opt.maxAge >= 0) {
116
120
  if (opt.maxAge > 3456e4) {
117
121
  throw new Error(
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -81,7 +80,7 @@ const verify = async (token, publicKey, algOrOptions) => {
81
80
  if (header.alg !== alg) {
82
81
  throw new import_types.JwtAlgorithmMismatch(alg, header.alg);
83
82
  }
84
- const now = Date.now() / 1e3 | 0;
83
+ const now = Math.floor(Date.now() / 1e3);
85
84
  if (nbf && payload.nbf && payload.nbf > now) {
86
85
  throw new import_types.JwtTokenNotBefore(token);
87
86
  }
@@ -146,6 +145,7 @@ const verifyWithJwks = async (token, options, init) => {
146
145
  if (!options.allowedAlgorithms.includes(header.alg)) {
147
146
  throw new import_types.JwtAlgorithmNotAllowed(header.alg, options.allowedAlgorithms);
148
147
  }
148
+ let verifyKeys = options.keys ? [...options.keys] : void 0;
149
149
  if (options.jwks_uri) {
150
150
  const response = await fetch(options.jwks_uri, init);
151
151
  if (!response.ok) {
@@ -158,15 +158,12 @@ const verifyWithJwks = async (token, options, init) => {
158
158
  if (!Array.isArray(data.keys)) {
159
159
  throw new Error('invalid JWKS response. "keys" field is not an array');
160
160
  }
161
- if (options.keys) {
162
- options.keys.push(...data.keys);
163
- } else {
164
- options.keys = data.keys;
165
- }
166
- } else if (!options.keys) {
161
+ verifyKeys ??= [];
162
+ verifyKeys.push(...data.keys);
163
+ } else if (!verifyKeys) {
167
164
  throw new Error('verifyWithJwks requires options for either "keys" or "jwks_uri" or both');
168
165
  }
169
- const matchingKey = options.keys.find((key) => key.kid === header.kid);
166
+ const matchingKey = verifyKeys.find((key) => key.kid === header.kid);
170
167
  if (!matchingKey) {
171
168
  throw new import_types.JwtTokenInvalid(token);
172
169
  }
@@ -179,10 +176,13 @@ const verifyWithJwks = async (token, options, init) => {
179
176
  });
180
177
  };
181
178
  const decode = (token) => {
179
+ const parts = token.split(".");
180
+ if (parts.length !== 3) {
181
+ throw new import_types.JwtTokenInvalid(token);
182
+ }
182
183
  try {
183
- const [h, p] = token.split(".");
184
- const header = decodeJwtPart(h);
185
- const payload = decodeJwtPart(p);
184
+ const header = decodeJwtPart(parts[0]);
185
+ const payload = decodeJwtPart(parts[1]);
186
186
  return {
187
187
  header,
188
188
  payload
@@ -192,9 +192,12 @@ const decode = (token) => {
192
192
  }
193
193
  };
194
194
  const decodeHeader = (token) => {
195
+ const parts = token.split(".");
196
+ if (parts.length !== 3) {
197
+ throw new import_types.JwtTokenInvalid(token);
198
+ }
195
199
  try {
196
- const [h] = token.split(".");
197
- return decodeJwtPart(h);
200
+ return decodeJwtPart(parts[0]);
198
201
  } catch {
199
202
  throw new import_types.JwtTokenInvalid(token);
200
203
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;