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.
- package/dist/adapter/aws-lambda/conninfo.js +24 -0
- package/dist/adapter/aws-lambda/handler.js +2 -2
- package/dist/adapter/aws-lambda/index.js +2 -0
- package/dist/adapter/cloudflare-pages/conninfo.js +9 -0
- package/dist/adapter/cloudflare-pages/index.js +2 -0
- package/dist/adapter/lambda-edge/handler.js +2 -1
- package/dist/adapter/netlify/conninfo.js +9 -0
- package/dist/adapter/netlify/mod.js +2 -0
- package/dist/cjs/adapter/aws-lambda/conninfo.js +46 -0
- package/dist/cjs/adapter/aws-lambda/handler.js +2 -3
- package/dist/cjs/adapter/aws-lambda/index.js +3 -1
- package/dist/cjs/adapter/aws-lambda/types.js +0 -1
- package/dist/cjs/adapter/bun/conninfo.js +0 -1
- package/dist/cjs/adapter/bun/index.js +0 -1
- package/dist/cjs/adapter/bun/serve-static.js +0 -1
- package/dist/cjs/adapter/bun/server.js +0 -1
- package/dist/cjs/adapter/bun/ssg.js +0 -1
- package/dist/cjs/adapter/bun/websocket.js +0 -1
- package/dist/cjs/adapter/cloudflare-pages/conninfo.js +31 -0
- package/dist/cjs/adapter/cloudflare-pages/handler.js +0 -1
- package/dist/cjs/adapter/cloudflare-pages/index.js +3 -1
- package/dist/cjs/adapter/cloudflare-workers/conninfo.js +0 -1
- package/dist/cjs/adapter/cloudflare-workers/index.js +0 -1
- package/dist/cjs/adapter/cloudflare-workers/serve-static-module.js +0 -1
- package/dist/cjs/adapter/cloudflare-workers/serve-static.js +0 -1
- package/dist/cjs/adapter/cloudflare-workers/utils.js +0 -1
- package/dist/cjs/adapter/cloudflare-workers/websocket.js +0 -1
- package/dist/cjs/adapter/deno/conninfo.js +0 -1
- package/dist/cjs/adapter/deno/deno.d.js +0 -1
- package/dist/cjs/adapter/deno/index.js +0 -1
- package/dist/cjs/adapter/deno/serve-static.js +0 -1
- package/dist/cjs/adapter/deno/ssg.js +0 -1
- package/dist/cjs/adapter/deno/websocket.js +0 -1
- package/dist/cjs/adapter/lambda-edge/conninfo.js +0 -1
- package/dist/cjs/adapter/lambda-edge/handler.js +2 -2
- package/dist/cjs/adapter/lambda-edge/index.js +0 -1
- package/dist/cjs/adapter/netlify/conninfo.js +31 -0
- package/dist/cjs/adapter/netlify/handler.js +0 -1
- package/dist/cjs/adapter/netlify/index.js +0 -1
- package/dist/cjs/adapter/netlify/mod.js +3 -1
- package/dist/cjs/adapter/service-worker/handler.js +0 -1
- package/dist/cjs/adapter/service-worker/index.js +0 -1
- package/dist/cjs/adapter/service-worker/types.js +0 -1
- package/dist/cjs/adapter/vercel/conninfo.js +0 -1
- package/dist/cjs/adapter/vercel/handler.js +0 -1
- package/dist/cjs/adapter/vercel/index.js +0 -1
- package/dist/cjs/client/client.js +8 -3
- package/dist/cjs/client/fetch-result-please.js +0 -1
- package/dist/cjs/client/index.js +0 -1
- package/dist/cjs/client/types.js +0 -1
- package/dist/cjs/client/utils.js +0 -1
- package/dist/cjs/compose.js +0 -1
- package/dist/cjs/context.js +6 -6
- package/dist/cjs/helper/accepts/accepts.js +0 -1
- package/dist/cjs/helper/accepts/index.js +0 -1
- package/dist/cjs/helper/adapter/index.js +0 -1
- package/dist/cjs/helper/conninfo/index.js +0 -1
- package/dist/cjs/helper/conninfo/types.js +0 -1
- package/dist/cjs/helper/cookie/index.js +0 -1
- package/dist/cjs/helper/css/common.js +0 -1
- package/dist/cjs/helper/css/index.js +0 -1
- package/dist/cjs/helper/dev/index.js +0 -1
- package/dist/cjs/helper/factory/index.js +0 -1
- package/dist/cjs/helper/html/index.js +0 -1
- package/dist/cjs/helper/proxy/index.js +0 -1
- package/dist/cjs/helper/route/index.js +0 -1
- package/dist/cjs/helper/ssg/index.js +5 -1
- package/dist/cjs/helper/ssg/middleware.js +0 -1
- package/dist/cjs/helper/ssg/plugins.js +70 -0
- package/dist/cjs/helper/ssg/ssg.js +2 -12
- package/dist/cjs/helper/ssg/utils.js +0 -1
- package/dist/cjs/helper/streaming/index.js +0 -1
- package/dist/cjs/helper/streaming/sse.js +5 -1
- package/dist/cjs/helper/streaming/stream.js +0 -1
- package/dist/cjs/helper/streaming/text.js +0 -1
- package/dist/cjs/helper/streaming/utils.js +0 -1
- package/dist/cjs/helper/testing/index.js +0 -1
- package/dist/cjs/helper/websocket/index.js +0 -1
- package/dist/cjs/hono-base.js +0 -1
- package/dist/cjs/hono.js +0 -1
- package/dist/cjs/http-exception.js +0 -1
- package/dist/cjs/index.js +0 -1
- package/dist/cjs/jsx/base.js +0 -1
- package/dist/cjs/jsx/children.js +0 -1
- package/dist/cjs/jsx/components.js +0 -1
- package/dist/cjs/jsx/constants.js +0 -1
- package/dist/cjs/jsx/context.js +4 -3
- package/dist/cjs/jsx/dom/client.js +0 -1
- package/dist/cjs/jsx/dom/components.js +0 -1
- package/dist/cjs/jsx/dom/context.js +0 -1
- package/dist/cjs/jsx/dom/css.js +0 -1
- package/dist/cjs/jsx/dom/hooks/index.js +0 -1
- package/dist/cjs/jsx/dom/index.js +0 -1
- package/dist/cjs/jsx/dom/intrinsic-element/components.js +40 -10
- package/dist/cjs/jsx/dom/jsx-dev-runtime.js +0 -1
- package/dist/cjs/jsx/dom/jsx-runtime.js +0 -1
- package/dist/cjs/jsx/dom/render.js +7 -10
- package/dist/cjs/jsx/dom/server.js +0 -1
- package/dist/cjs/jsx/dom/utils.js +0 -1
- package/dist/cjs/jsx/hooks/index.js +0 -1
- package/dist/cjs/jsx/index.js +0 -1
- package/dist/cjs/jsx/intrinsic-element/common.js +13 -3
- package/dist/cjs/jsx/intrinsic-element/components.js +18 -12
- package/dist/cjs/jsx/intrinsic-elements.js +0 -1
- package/dist/cjs/jsx/jsx-dev-runtime.js +0 -1
- package/dist/cjs/jsx/jsx-runtime.js +0 -1
- package/dist/cjs/jsx/streaming.js +13 -4
- package/dist/cjs/jsx/types.js +0 -1
- package/dist/cjs/jsx/utils.js +0 -1
- package/dist/cjs/middleware/basic-auth/index.js +6 -1
- package/dist/cjs/middleware/bearer-auth/index.js +1 -2
- package/dist/cjs/middleware/body-limit/index.js +0 -1
- package/dist/cjs/middleware/cache/index.js +0 -1
- package/dist/cjs/middleware/combine/index.js +0 -1
- package/dist/cjs/middleware/compress/index.js +0 -1
- package/dist/cjs/middleware/context-storage/index.js +0 -1
- package/dist/cjs/middleware/cors/index.js +0 -1
- package/dist/cjs/middleware/csrf/index.js +0 -1
- package/dist/cjs/middleware/etag/digest.js +0 -1
- package/dist/cjs/middleware/etag/index.js +0 -1
- package/dist/cjs/middleware/ip-restriction/index.js +0 -1
- package/dist/cjs/middleware/jsx-renderer/index.js +1 -1
- package/dist/cjs/middleware/jwk/index.js +0 -1
- package/dist/cjs/middleware/jwk/jwk.js +0 -1
- package/dist/cjs/middleware/jwt/index.js +0 -1
- package/dist/cjs/middleware/jwt/jwt.js +0 -1
- package/dist/cjs/middleware/language/index.js +0 -1
- package/dist/cjs/middleware/language/language.js +13 -3
- package/dist/cjs/middleware/logger/index.js +0 -1
- package/dist/cjs/middleware/method-override/index.js +0 -1
- package/dist/cjs/middleware/powered-by/index.js +0 -1
- package/dist/cjs/middleware/pretty-json/index.js +0 -1
- package/dist/cjs/middleware/request-id/index.js +0 -1
- package/dist/cjs/middleware/request-id/request-id.js +0 -1
- package/dist/cjs/middleware/secure-headers/index.js +0 -1
- package/dist/cjs/middleware/secure-headers/permissions-policy.js +0 -1
- package/dist/cjs/middleware/secure-headers/secure-headers.js +0 -1
- package/dist/cjs/middleware/serve-static/index.js +2 -2
- package/dist/cjs/middleware/serve-static/path.js +0 -1
- package/dist/cjs/middleware/timeout/index.js +0 -1
- package/dist/cjs/middleware/timing/index.js +0 -1
- package/dist/cjs/middleware/timing/timing.js +0 -1
- package/dist/cjs/middleware/trailing-slash/index.js +18 -5
- package/dist/cjs/preset/quick.js +0 -1
- package/dist/cjs/preset/tiny.js +0 -1
- package/dist/cjs/request/constants.js +0 -1
- package/dist/cjs/request.js +0 -1
- package/dist/cjs/router/linear-router/index.js +0 -1
- package/dist/cjs/router/linear-router/router.js +0 -1
- package/dist/cjs/router/pattern-router/index.js +0 -1
- package/dist/cjs/router/pattern-router/router.js +0 -1
- package/dist/cjs/router/reg-exp-router/index.js +0 -1
- package/dist/cjs/router/reg-exp-router/matcher.js +0 -1
- package/dist/cjs/router/reg-exp-router/node.js +0 -1
- package/dist/cjs/router/reg-exp-router/prepared-router.js +0 -1
- package/dist/cjs/router/reg-exp-router/router.js +0 -1
- package/dist/cjs/router/reg-exp-router/trie.js +0 -1
- package/dist/cjs/router/smart-router/index.js +0 -1
- package/dist/cjs/router/smart-router/router.js +0 -1
- package/dist/cjs/router/trie-router/index.js +0 -1
- package/dist/cjs/router/trie-router/node.js +33 -17
- package/dist/cjs/router/trie-router/router.js +0 -1
- package/dist/cjs/router.js +0 -1
- package/dist/cjs/types.js +0 -1
- package/dist/cjs/utils/accept.js +188 -29
- package/dist/cjs/utils/basic-auth.js +0 -1
- package/dist/cjs/utils/body.js +3 -1
- package/dist/cjs/utils/buffer.js +29 -3
- package/dist/cjs/utils/color.js +0 -1
- package/dist/cjs/utils/compress.js +0 -1
- package/dist/cjs/utils/concurrent.js +0 -1
- package/dist/cjs/utils/constants.js +0 -1
- package/dist/cjs/utils/cookie.js +5 -1
- package/dist/cjs/utils/crypto.js +0 -1
- package/dist/cjs/utils/encode.js +0 -1
- package/dist/cjs/utils/filepath.js +0 -1
- package/dist/cjs/utils/handler.js +0 -1
- package/dist/cjs/utils/headers.js +0 -1
- package/dist/cjs/utils/html.js +0 -1
- package/dist/cjs/utils/http-status.js +0 -1
- package/dist/cjs/utils/ipaddr.js +0 -1
- package/dist/cjs/utils/jwt/index.js +0 -1
- package/dist/cjs/utils/jwt/jwa.js +0 -1
- package/dist/cjs/utils/jwt/jws.js +0 -1
- package/dist/cjs/utils/jwt/jwt.js +17 -14
- package/dist/cjs/utils/jwt/types.js +0 -1
- package/dist/cjs/utils/jwt/utf8.js +0 -1
- package/dist/cjs/utils/mime.js +0 -1
- package/dist/cjs/utils/stream.js +0 -1
- package/dist/cjs/utils/types.js +0 -1
- package/dist/cjs/utils/url.js +8 -5
- package/dist/cjs/validator/index.js +0 -1
- package/dist/cjs/validator/utils.js +0 -1
- package/dist/cjs/validator/validator.js +2 -3
- package/dist/client/client.js +8 -2
- package/dist/context.js +6 -5
- package/dist/helper/ssg/index.js +3 -0
- package/dist/helper/ssg/plugins.js +47 -0
- package/dist/helper/ssg/ssg.js +2 -10
- package/dist/helper/streaming/sse.js +5 -0
- package/dist/jsx/context.js +4 -2
- package/dist/jsx/dom/intrinsic-element/components.js +47 -10
- package/dist/jsx/dom/render.js +7 -9
- package/dist/jsx/intrinsic-element/common.js +10 -1
- package/dist/jsx/intrinsic-element/components.js +24 -12
- package/dist/jsx/streaming.js +13 -3
- package/dist/middleware/basic-auth/index.js +6 -0
- package/dist/middleware/bearer-auth/index.js +1 -1
- package/dist/middleware/jsx-renderer/index.js +1 -0
- package/dist/middleware/language/language.js +13 -2
- package/dist/middleware/serve-static/index.js +2 -1
- package/dist/middleware/trailing-slash/index.js +18 -4
- package/dist/router/trie-router/node.js +33 -16
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/dist/types/adapter/aws-lambda/conninfo.d.ts +27 -0
- package/dist/types/adapter/aws-lambda/handler.d.ts +2 -2
- package/dist/types/adapter/aws-lambda/index.d.ts +1 -0
- package/dist/types/adapter/cloudflare-pages/conninfo.d.ts +21 -0
- package/dist/types/adapter/cloudflare-pages/index.d.ts +1 -0
- package/dist/types/adapter/netlify/conninfo.d.ts +21 -0
- package/dist/types/adapter/netlify/mod.d.ts +1 -0
- package/dist/types/client/index.d.ts +1 -1
- package/dist/types/client/types.d.ts +43 -2
- package/dist/types/context.d.ts +4 -0
- package/dist/types/helper/ssg/index.d.ts +1 -0
- package/dist/types/helper/ssg/plugins.d.ts +27 -0
- package/dist/types/helper/ssg/ssg.d.ts +0 -8
- package/dist/types/hono-base.d.ts +1 -1
- package/dist/types/jsx/intrinsic-element/common.d.ts +3 -0
- package/dist/types/jsx/types.d.ts +1 -1
- package/dist/types/middleware/basic-auth/index.d.ts +19 -0
- package/dist/types/middleware/jsx-renderer/index.d.ts +1 -1
- package/dist/types/middleware/jwt/index.d.ts +1 -1
- package/dist/types/middleware/jwt/jwt.d.ts +1 -1
- package/dist/types/middleware/trailing-slash/index.d.ts +43 -2
- package/dist/types/request.d.ts +1 -1
- package/dist/types/types.d.ts +18 -18
- package/dist/types/utils/accept.d.ts +0 -5
- package/dist/types/utils/buffer.d.ts +10 -1
- package/dist/types/utils/url.d.ts +10 -0
- package/dist/utils/accept.js +188 -28
- package/dist/utils/body.js +3 -0
- package/dist/utils/buffer.js +29 -2
- package/dist/utils/cookie.js +5 -0
- package/dist/utils/jwt/jwt.js +17 -13
- package/dist/utils/url.js +6 -3
- package/dist/validator/validator.js +2 -2
- 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
|
-
#
|
|
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
|
-
|
|
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
|
|
116
|
-
...this.#getHandlerSets(nextNode.#children["*"], method, node.#params)
|
|
117
|
-
);
|
|
120
|
+
this.#pushHandlerSets(handlerSets, nextNode.#children["*"], method, node.#params);
|
|
118
121
|
}
|
|
119
|
-
|
|
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
|
-
|
|
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
|
-
|
|
147
|
-
if (
|
|
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
|
-
|
|
170
|
+
this.#pushHandlerSets(handlerSets, child, method, params, node.#params);
|
|
160
171
|
if (child.#children["*"]) {
|
|
161
|
-
|
|
162
|
-
|
|
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
|
-
|
|
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) => {
|
package/dist/cjs/router.js
CHANGED
package/dist/cjs/types.js
CHANGED
package/dist/cjs/utils/accept.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;
|
|
@@ -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
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
|
|
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
|
-
|
|
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
|
package/dist/cjs/utils/body.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;
|
|
@@ -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) => {
|
package/dist/cjs/utils/buffer.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;
|
|
@@ -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
|
|
79
|
+
return timingSafeEqualString(sa, sb);
|
|
54
80
|
};
|
|
55
81
|
const bufferToString = (buffer) => {
|
|
56
82
|
if (buffer instanceof ArrayBuffer) {
|
package/dist/cjs/utils/color.js
CHANGED
package/dist/cjs/utils/cookie.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;
|
|
@@ -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(
|
package/dist/cjs/utils/crypto.js
CHANGED
package/dist/cjs/utils/encode.js
CHANGED
package/dist/cjs/utils/html.js
CHANGED
package/dist/cjs/utils/ipaddr.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;
|
|
@@ -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
|
|
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
|
-
|
|
162
|
-
|
|
163
|
-
|
|
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 =
|
|
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
|
|
184
|
-
const
|
|
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
|
-
|
|
197
|
-
return decodeJwtPart(h);
|
|
200
|
+
return decodeJwtPart(parts[0]);
|
|
198
201
|
} catch {
|
|
199
202
|
throw new import_types.JwtTokenInvalid(token);
|
|
200
203
|
}
|
package/dist/cjs/utils/mime.js
CHANGED
package/dist/cjs/utils/stream.js
CHANGED
package/dist/cjs/utils/types.js
CHANGED