vafast 0.4.1 → 0.4.3
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 +6 -10
- package/dist/auth/{token.d.ts → token.d.mts} +21 -19
- package/dist/auth/token.mjs +105 -0
- package/dist/auth/token.mjs.map +1 -0
- package/dist/base-server-Bq4_lJWK.mjs +113 -0
- package/dist/base-server-Bq4_lJWK.mjs.map +1 -0
- package/dist/base-server-Gakrozqk.d.mts +40 -0
- package/dist/base64url-BY-HBSpL.d.mts +6 -0
- package/dist/base64url-DLDOeXsk.mjs +13 -0
- package/dist/base64url-DLDOeXsk.mjs.map +1 -0
- package/dist/chunk-67U6L5Jh.mjs +37 -0
- package/dist/component-route-BYV_X1rA.d.mts +31 -0
- package/dist/component-route-Do2yyYTi.mjs +1 -0
- package/dist/component-router-DXUXLp1R.mjs +33 -0
- package/dist/component-router-DXUXLp1R.mjs.map +1 -0
- package/dist/component-server-ARXvZJUQ.mjs +124 -0
- package/dist/component-server-ARXvZJUQ.mjs.map +1 -0
- package/dist/component-server-BOz4Q-Qt.d.mts +38 -0
- package/dist/create-handler-CbSoroA1.mjs +166 -0
- package/dist/create-handler-CbSoroA1.mjs.map +1 -0
- package/dist/{utils/create-handler.d.ts → create-handler-Dtt0xv6g.d.mts} +24 -24
- package/dist/{defineRoute.d.ts → defineRoute.d.mts} +20 -17
- package/dist/defineRoute.mjs +93 -0
- package/dist/defineRoute.mjs.map +1 -0
- package/dist/dependency-manager-CPkwMI7J.mjs +61 -0
- package/dist/dependency-manager-CPkwMI7J.mjs.map +1 -0
- package/dist/dependency-manager-Dbug5INp.d.mts +27 -0
- package/dist/formats-BSqJWCsG.d.mts +42 -0
- package/dist/go-await-B-KP-K8x.mjs +33 -0
- package/dist/go-await-B-KP-K8x.mjs.map +1 -0
- package/dist/{utils/go-await.d.ts → go-await-CqPx9dVQ.d.mts} +4 -2
- package/dist/handle-BhpqNgGf.mjs +30 -0
- package/dist/handle-BhpqNgGf.mjs.map +1 -0
- package/dist/{utils/handle.d.ts → handle-DOidKTI-.d.mts} +8 -6
- package/dist/html-renderer-C3LKTLme.d.mts +22 -0
- package/dist/{utils/html-renderer.js → html-renderer-CJ3B2Hft.mjs} +34 -29
- package/dist/html-renderer-CJ3B2Hft.mjs.map +1 -0
- package/dist/index-DFsQyT61.d.mts +48 -0
- package/dist/index-DXJd7-2Z.d.mts +1 -0
- package/dist/index.d.mts +35 -0
- package/dist/index.mjs +42 -0
- package/dist/index.mjs.map +1 -0
- package/dist/middleware/{auth.d.ts → auth.d.mts} +12 -8
- package/dist/middleware/auth.mjs +98 -0
- package/dist/middleware/auth.mjs.map +1 -0
- package/dist/middleware/authMiddleware.d.mts +9 -0
- package/dist/middleware/authMiddleware.mjs +19 -0
- package/dist/middleware/authMiddleware.mjs.map +1 -0
- package/dist/middleware/{component-renderer.d.ts → component-renderer.d.mts} +3 -1
- package/dist/middleware/component-renderer.mjs +119 -0
- package/dist/middleware/component-renderer.mjs.map +1 -0
- package/dist/middleware/{component-router.d.ts → component-router.d.mts} +5 -4
- package/dist/middleware/component-router.mjs +4 -0
- package/dist/middleware/cors.d.mts +16 -0
- package/dist/middleware/cors.mjs +38 -0
- package/dist/middleware/cors.mjs.map +1 -0
- package/dist/middleware/rateLimit.d.mts +14 -0
- package/dist/middleware/rateLimit.mjs +34 -0
- package/dist/middleware/rateLimit.mjs.map +1 -0
- package/dist/middleware-3ShRJyd1.mjs +59 -0
- package/dist/middleware-3ShRJyd1.mjs.map +1 -0
- package/dist/middleware.d.mts +25 -0
- package/dist/middleware.mjs +4 -0
- package/dist/monitoring/index.d.mts +33 -0
- package/dist/monitoring/index.mjs +27 -0
- package/dist/monitoring/index.mjs.map +1 -0
- package/dist/monitoring/native-monitor.d.mts +48 -0
- package/dist/monitoring/native-monitor.mjs +154 -0
- package/dist/monitoring/native-monitor.mjs.map +1 -0
- package/dist/monitoring/types.d.mts +150 -0
- package/dist/monitoring/types.mjs +1 -0
- package/dist/node-server/index.d.mts +4 -0
- package/dist/node-server/index.mjs +5 -0
- package/dist/node-server/{request.d.ts → request.d.mts} +4 -6
- package/dist/node-server/request.mjs +3 -0
- package/dist/node-server/{response.d.ts → response.d.mts} +4 -6
- package/dist/node-server/response.mjs +3 -0
- package/dist/node-server/serve.d.mts +2 -0
- package/dist/node-server/serve.mjs +4 -0
- package/dist/{utils/parsers.d.ts → parsers-CodQFP1Z.d.mts} +10 -8
- package/dist/parsers-ROIZWSGI.mjs +168 -0
- package/dist/parsers-ROIZWSGI.mjs.map +1 -0
- package/dist/path-matcher-CXMJ-IrG.mjs +62 -0
- package/dist/path-matcher-CXMJ-IrG.mjs.map +1 -0
- package/dist/radix-tree-BWmhTLhT.mjs +157 -0
- package/dist/radix-tree-BWmhTLhT.mjs.map +1 -0
- package/dist/request-B2BkUecT.mjs +133 -0
- package/dist/request-B2BkUecT.mjs.map +1 -0
- package/dist/request-validator-Dyqng-H_.mjs +77 -0
- package/dist/request-validator-Dyqng-H_.mjs.map +1 -0
- package/dist/request-validator-u2Ccj3_x.d.mts +67 -0
- package/dist/response-BhFKEphr.mjs +72 -0
- package/dist/response-BhFKEphr.mjs.map +1 -0
- package/dist/response-CSKW5hsS.mjs +97 -0
- package/dist/response-CSKW5hsS.mjs.map +1 -0
- package/dist/{utils/response.d.ts → response-CUyV5FIm.d.mts} +4 -2
- package/dist/route-BRR15b-p.mjs +11 -0
- package/dist/route-BRR15b-p.mjs.map +1 -0
- package/dist/route-BqmWCG4e.d.mts +44 -0
- package/dist/route-registry-AlkDgbcE.mjs +225 -0
- package/dist/route-registry-AlkDgbcE.mjs.map +1 -0
- package/dist/route-registry-ykzRmaHB.d.mts +176 -0
- package/dist/router/index.d.mts +5 -0
- package/dist/router/index.mjs +10 -0
- package/dist/router/index.mjs.map +1 -0
- package/dist/router/radix-tree.d.mts +60 -0
- package/dist/router/radix-tree.mjs +4 -0
- package/dist/router-BOeVQrjz.mjs +71 -0
- package/dist/router-BOeVQrjz.mjs.map +1 -0
- package/dist/{router.d.ts → router.d.mts} +6 -7
- package/dist/router.mjs +4 -0
- package/dist/schema-CVuttFSw.d.mts +81 -0
- package/dist/schema-CbAaktsZ.mjs +1 -0
- package/dist/serve-BQQ2JzIH.d.mts +69 -0
- package/dist/serve-MRGGK7-q.mjs +107 -0
- package/dist/serve-MRGGK7-q.mjs.map +1 -0
- package/dist/serve.d.mts +2 -0
- package/dist/serve.mjs +4 -0
- package/dist/server/base-server.d.mts +4 -0
- package/dist/server/base-server.mjs +4 -0
- package/dist/server/component-server.d.mts +5 -0
- package/dist/server/component-server.mjs +5 -0
- package/dist/server/index.d.mts +7 -0
- package/dist/server/index.mjs +8 -0
- package/dist/server/server-factory.d.mts +7 -0
- package/dist/server/server-factory.mjs +6 -0
- package/dist/server/server.d.mts +5 -0
- package/dist/server/server.mjs +4 -0
- package/dist/server-B0nzGCG5.mjs +88 -0
- package/dist/server-B0nzGCG5.mjs.map +1 -0
- package/dist/server-C8WCshmG.mjs +137 -0
- package/dist/server-C8WCshmG.mjs.map +1 -0
- package/dist/server-Drc2kSxp.d.mts +60 -0
- package/dist/sse-BOd2pvUK.d.mts +65 -0
- package/dist/sse-US5D9mgE.mjs +87 -0
- package/dist/sse-US5D9mgE.mjs.map +1 -0
- package/dist/types/component-route.d.mts +2 -0
- package/dist/types/component-route.mjs +1 -0
- package/dist/types/index.d.mts +6 -0
- package/dist/types/index.mjs +3 -0
- package/dist/types/route.d.mts +2 -0
- package/dist/types/route.mjs +3 -0
- package/dist/types/schema.d.mts +2 -0
- package/dist/types/schema.mjs +1 -0
- package/dist/types/types.d.mts +2 -0
- package/dist/types/types.mjs +1 -0
- package/dist/{types/types.d.ts → types-Cb7_2VSt.d.mts} +27 -23
- package/dist/utils/base64url.d.mts +2 -0
- package/dist/utils/base64url.mjs +3 -0
- package/dist/utils/create-handler.d.mts +3 -0
- package/dist/utils/create-handler.mjs +5 -0
- package/dist/utils/dependency-manager.d.mts +2 -0
- package/dist/utils/dependency-manager.mjs +4 -0
- package/dist/utils/formats.d.mts +2 -0
- package/dist/utils/formats.mjs +129 -0
- package/dist/utils/formats.mjs.map +1 -0
- package/dist/utils/go-await.d.mts +2 -0
- package/dist/utils/go-await.mjs +3 -0
- package/dist/utils/handle.d.mts +2 -0
- package/dist/utils/handle.mjs +4 -0
- package/dist/utils/html-renderer.d.mts +2 -0
- package/dist/utils/html-renderer.mjs +4 -0
- package/dist/utils/index.d.mts +16 -0
- package/dist/utils/index.mjs +23 -0
- package/dist/utils/index.mjs.map +1 -0
- package/dist/utils/parsers.d.mts +2 -0
- package/dist/utils/parsers.mjs +3 -0
- package/dist/utils/path-matcher.d.mts +27 -0
- package/dist/utils/path-matcher.mjs +4 -0
- package/dist/utils/request-validator.d.mts +3 -0
- package/dist/utils/request-validator.mjs +5 -0
- package/dist/utils/response.d.mts +2 -0
- package/dist/utils/response.mjs +4 -0
- package/dist/utils/route-registry.d.mts +4 -0
- package/dist/utils/route-registry.mjs +4 -0
- package/dist/utils/sse.d.mts +3 -0
- package/dist/utils/sse.mjs +5 -0
- package/dist/utils/validators/validators.d.mts +2 -0
- package/dist/utils/validators/validators.mjs +3 -0
- package/dist/validators-C0eZyxPh.d.mts +67 -0
- package/dist/validators-CbCLj0Rc.mjs +112 -0
- package/dist/validators-CbCLj0Rc.mjs.map +1 -0
- package/package.json +16 -18
- package/dist/auth/token.js +0 -131
- package/dist/auth/token.js.map +0 -1
- package/dist/defineRoute.js +0 -37
- package/dist/defineRoute.js.map +0 -1
- package/dist/index.d.ts +0 -32
- package/dist/index.js +0 -2575
- package/dist/index.js.map +0 -1
- package/dist/middleware/auth.js +0 -205
- package/dist/middleware/auth.js.map +0 -1
- package/dist/middleware/authMiddleware.d.ts +0 -5
- package/dist/middleware/authMiddleware.js +0 -57
- package/dist/middleware/authMiddleware.js.map +0 -1
- package/dist/middleware/component-renderer.js +0 -139
- package/dist/middleware/component-renderer.js.map +0 -1
- package/dist/middleware/component-router.js +0 -36
- package/dist/middleware/component-router.js.map +0 -1
- package/dist/middleware/cors.d.ts +0 -12
- package/dist/middleware/cors.js +0 -43
- package/dist/middleware/cors.js.map +0 -1
- package/dist/middleware/rateLimit.d.ts +0 -10
- package/dist/middleware/rateLimit.js +0 -49
- package/dist/middleware/rateLimit.js.map +0 -1
- package/dist/middleware.d.ts +0 -21
- package/dist/middleware.js +0 -102
- package/dist/middleware.js.map +0 -1
- package/dist/monitoring/index.d.ts +0 -36
- package/dist/monitoring/index.js +0 -1484
- package/dist/monitoring/index.js.map +0 -1
- package/dist/monitoring/native-monitor.d.ts +0 -44
- package/dist/monitoring/native-monitor.js +0 -1451
- package/dist/monitoring/native-monitor.js.map +0 -1
- package/dist/monitoring/types.d.ts +0 -148
- package/dist/monitoring/types.js +0 -8
- package/dist/monitoring/types.js.map +0 -1
- package/dist/node-server/index.d.ts +0 -4
- package/dist/node-server/index.js +0 -298
- package/dist/node-server/index.js.map +0 -1
- package/dist/node-server/request.js +0 -125
- package/dist/node-server/request.js.map +0 -1
- package/dist/node-server/response.js +0 -76
- package/dist/node-server/response.js.map +0 -1
- package/dist/node-server/serve.d.ts +0 -71
- package/dist/node-server/serve.js +0 -281
- package/dist/node-server/serve.js.map +0 -1
- package/dist/router/index.d.ts +0 -3
- package/dist/router/index.js +0 -229
- package/dist/router/index.js.map +0 -1
- package/dist/router/radix-tree.d.ts +0 -66
- package/dist/router/radix-tree.js +0 -190
- package/dist/router/radix-tree.js.map +0 -1
- package/dist/router.js +0 -41
- package/dist/router.js.map +0 -1
- package/dist/serve.d.ts +0 -2
- package/dist/serve.js +0 -281
- package/dist/serve.js.map +0 -1
- package/dist/server/base-server.d.ts +0 -37
- package/dist/server/base-server.js +0 -134
- package/dist/server/base-server.js.map +0 -1
- package/dist/server/component-server.d.ts +0 -37
- package/dist/server/component-server.js +0 -488
- package/dist/server/component-server.js.map +0 -1
- package/dist/server/index.d.ts +0 -8
- package/dist/server/index.js +0 -1156
- package/dist/server/index.js.map +0 -1
- package/dist/server/server-factory.d.ts +0 -48
- package/dist/server/server-factory.js +0 -1153
- package/dist/server/server-factory.js.map +0 -1
- package/dist/server/server.d.ts +0 -64
- package/dist/server/server.js +0 -734
- package/dist/server/server.js.map +0 -1
- package/dist/types/component-route.d.ts +0 -29
- package/dist/types/component-route.js +0 -1
- package/dist/types/component-route.js.map +0 -1
- package/dist/types/index.d.ts +0 -5
- package/dist/types/index.js +0 -21
- package/dist/types/index.js.map +0 -1
- package/dist/types/route.d.ts +0 -42
- package/dist/types/route.js +0 -12
- package/dist/types/route.js.map +0 -1
- package/dist/types/schema.d.ts +0 -79
- package/dist/types/schema.js +0 -10
- package/dist/types/schema.js.map +0 -1
- package/dist/types/types.js +0 -1
- package/dist/types/types.js.map +0 -1
- package/dist/utils/base64url.d.ts +0 -4
- package/dist/utils/base64url.js +0 -14
- package/dist/utils/base64url.js.map +0 -1
- package/dist/utils/create-handler.js +0 -299
- package/dist/utils/create-handler.js.map +0 -1
- package/dist/utils/dependency-manager.d.ts +0 -25
- package/dist/utils/dependency-manager.js +0 -71
- package/dist/utils/dependency-manager.js.map +0 -1
- package/dist/utils/formats.d.ts +0 -40
- package/dist/utils/formats.js +0 -116
- package/dist/utils/formats.js.map +0 -1
- package/dist/utils/go-await.js +0 -16
- package/dist/utils/go-await.js.map +0 -1
- package/dist/utils/handle.js +0 -48
- package/dist/utils/handle.js.map +0 -1
- package/dist/utils/html-renderer.d.ts +0 -20
- package/dist/utils/html-renderer.js.map +0 -1
- package/dist/utils/index.d.ts +0 -16
- package/dist/utils/index.js +0 -1038
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/parsers.js +0 -160
- package/dist/utils/parsers.js.map +0 -1
- package/dist/utils/path-matcher.d.ts +0 -25
- package/dist/utils/path-matcher.js +0 -73
- package/dist/utils/path-matcher.js.map +0 -1
- package/dist/utils/request-validator.d.ts +0 -66
- package/dist/utils/request-validator.js +0 -158
- package/dist/utils/request-validator.js.map +0 -1
- package/dist/utils/response.js +0 -102
- package/dist/utils/response.js.map +0 -1
- package/dist/utils/route-registry.d.ts +0 -195
- package/dist/utils/route-registry.js +0 -152
- package/dist/utils/route-registry.js.map +0 -1
- package/dist/utils/sse.d.ts +0 -87
- package/dist/utils/sse.js +0 -181
- package/dist/utils/sse.js.map +0 -1
- package/dist/utils/validators/validators.d.ts +0 -76
- package/dist/utils/validators/validators.js +0 -97
- package/dist/utils/validators/validators.js.map +0 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
//#region src/utils/go-await.ts
|
|
2
|
+
/**
|
|
3
|
+
* Go 风格的错误处理工具
|
|
4
|
+
* 将 Promise 转换为 [Error | null, T | undefined] 格式
|
|
5
|
+
*
|
|
6
|
+
* @author Framework Team
|
|
7
|
+
* @version 1.0.0
|
|
8
|
+
* @license MIT
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Go 风格的错误处理工具
|
|
12
|
+
* 将 Promise 转换为 [Error | null, T | undefined] 格式
|
|
13
|
+
*
|
|
14
|
+
* @param promise 要处理的 Promise
|
|
15
|
+
* @returns [Error | null, T | undefined] 元组,第一个元素是错误,第二个是结果
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const [error, result] = await goAwait(someAsyncFunction());
|
|
20
|
+
* if (error) {
|
|
21
|
+
* console.error("操作失败:", error);
|
|
22
|
+
* } else {
|
|
23
|
+
* console.log("操作成功:", result);
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
function goAwait(promise) {
|
|
28
|
+
return promise.then((data) => [null, data]).catch((err) => [err instanceof Error ? err : new Error(String(err)), void 0]);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
//#endregion
|
|
32
|
+
export { goAwait as t };
|
|
33
|
+
//# sourceMappingURL=go-await-B-KP-K8x.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"go-await-B-KP-K8x.mjs","names":[],"sources":["../src/utils/go-await.ts"],"sourcesContent":["/**\n * Go 风格的错误处理工具\n * 将 Promise 转换为 [Error | null, T | undefined] 格式\n *\n * @author Framework Team\n * @version 1.0.0\n * @license MIT\n */\n\n/**\n * Go 风格的错误处理工具\n * 将 Promise 转换为 [Error | null, T | undefined] 格式\n *\n * @param promise 要处理的 Promise\n * @returns [Error | null, T | undefined] 元组,第一个元素是错误,第二个是结果\n *\n * @example\n * ```typescript\n * const [error, result] = await goAwait(someAsyncFunction());\n * if (error) {\n * console.error(\"操作失败:\", error);\n * } else {\n * console.log(\"操作成功:\", result);\n * }\n * ```\n */\nexport function goAwait<T>(\n promise: Promise<T>,\n): Promise<[Error | null, T | undefined]> {\n return promise\n .then<[null, T]>((data) => [null, data])\n .catch<\n [Error, undefined]\n >((err) => [err instanceof Error ? err : new Error(String(err)), undefined]);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,SAAgB,QACd,SACwC;AACxC,QAAO,QACJ,MAAiB,SAAS,CAAC,MAAM,KAAK,CAAC,CACvC,OAEE,QAAQ,CAAC,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,IAAI,CAAC,EAAE,OAAU,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
//#region src/utils/go-await.d.ts
|
|
1
2
|
/**
|
|
2
3
|
* Go 风格的错误处理工具
|
|
3
4
|
* 将 Promise 转换为 [Error | null, T | undefined] 格式
|
|
@@ -24,5 +25,6 @@
|
|
|
24
25
|
* ```
|
|
25
26
|
*/
|
|
26
27
|
declare function goAwait<T>(promise: Promise<T>): Promise<[Error | null, T | undefined]>;
|
|
27
|
-
|
|
28
|
-
export { goAwait };
|
|
28
|
+
//#endregion
|
|
29
|
+
export { goAwait as t };
|
|
30
|
+
//# sourceMappingURL=go-await-CqPx9dVQ.d.mts.map
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { a as parseCookies } from "./parsers-ROIZWSGI.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/utils/handle.ts
|
|
4
|
+
/** 获取单个 Cookie 值 */
|
|
5
|
+
function getCookie(req, key) {
|
|
6
|
+
return parseCookies(req)[key] || null;
|
|
7
|
+
}
|
|
8
|
+
/** 生成 Set-Cookie 头 */
|
|
9
|
+
function setCookie(key, value, options = {}) {
|
|
10
|
+
let cookie = `${key}=${encodeURIComponent(value)}`;
|
|
11
|
+
if (options.path) cookie += `; Path=${options.path}`;
|
|
12
|
+
if (options.httpOnly) cookie += `; HttpOnly`;
|
|
13
|
+
if (options.secure) cookie += `; Secure`;
|
|
14
|
+
if (options.maxAge) cookie += `; Max-Age=${options.maxAge}`;
|
|
15
|
+
return cookie;
|
|
16
|
+
}
|
|
17
|
+
function setLocals(req, extras) {
|
|
18
|
+
const target = req;
|
|
19
|
+
target.__locals = {
|
|
20
|
+
...target.__locals ?? {},
|
|
21
|
+
...extras
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function getLocals(req) {
|
|
25
|
+
return req.__locals ?? {};
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
//#endregion
|
|
29
|
+
export { setLocals as i, getLocals as n, setCookie as r, getCookie as t };
|
|
30
|
+
//# sourceMappingURL=handle-BhpqNgGf.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-BhpqNgGf.mjs","names":[],"sources":["../src/utils/handle.ts"],"sourcesContent":["import { parseCookies } from \"./parsers\";\n\n/** 获取单个 Cookie 值 */\nexport function getCookie(req: Request, key: string): string | null {\n const cookies = parseCookies(req);\n return cookies[key] || null;\n}\n\n/** 生成 Set-Cookie 头 */\nexport function setCookie(\n key: string,\n value: string,\n options: {\n path?: string;\n httpOnly?: boolean;\n maxAge?: number;\n secure?: boolean;\n } = {},\n): string {\n let cookie = `${key}=${encodeURIComponent(value)}`;\n\n if (options.path) cookie += `; Path=${options.path}`;\n if (options.httpOnly) cookie += `; HttpOnly`;\n if (options.secure) cookie += `; Secure`;\n if (options.maxAge) cookie += `; Max-Age=${options.maxAge}`;\n\n return cookie;\n}\n\n// 提供给中间件写入\"局部上下文\"的工具函数\nexport function setLocals<T extends object>(req: Request, extras: T) {\n const target = req as unknown as Record<string, unknown>;\n target.__locals = { ...((target.__locals as object) ?? {}), ...extras };\n}\n\n// 获取中间件注入的局部上下文\nexport function getLocals<T extends object>(req: Request): T {\n const target = req as unknown as Record<string, unknown>;\n return (target.__locals ?? {}) as T;\n}\n"],"mappings":";;;;AAGA,SAAgB,UAAU,KAAc,KAA4B;AAElE,QADgB,aAAa,IAAI,CAClB,QAAQ;;;AAIzB,SAAgB,UACd,KACA,OACA,UAKI,EAAE,EACE;CACR,IAAI,SAAS,GAAG,IAAI,GAAG,mBAAmB,MAAM;AAEhD,KAAI,QAAQ,KAAM,WAAU,UAAU,QAAQ;AAC9C,KAAI,QAAQ,SAAU,WAAU;AAChC,KAAI,QAAQ,OAAQ,WAAU;AAC9B,KAAI,QAAQ,OAAQ,WAAU,aAAa,QAAQ;AAEnD,QAAO;;AAIT,SAAgB,UAA4B,KAAc,QAAW;CACnE,MAAM,SAAS;AACf,QAAO,WAAW;EAAE,GAAK,OAAO,YAAuB,EAAE;EAAG,GAAG;EAAQ;;AAIzE,SAAgB,UAA4B,KAAiB;AAE3D,QADe,IACA,YAAY,EAAE"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
+
//#region src/utils/handle.d.ts
|
|
1
2
|
/** 获取单个 Cookie 值 */
|
|
2
3
|
declare function getCookie(req: Request, key: string): string | null;
|
|
3
4
|
/** 生成 Set-Cookie 头 */
|
|
4
5
|
declare function setCookie(key: string, value: string, options?: {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
path?: string;
|
|
7
|
+
httpOnly?: boolean;
|
|
8
|
+
maxAge?: number;
|
|
9
|
+
secure?: boolean;
|
|
9
10
|
}): string;
|
|
10
11
|
declare function setLocals<T extends object>(req: Request, extras: T): void;
|
|
11
12
|
declare function getLocals<T extends object>(req: Request): T;
|
|
12
|
-
|
|
13
|
-
export {
|
|
13
|
+
//#endregion
|
|
14
|
+
export { setLocals as i, getLocals as n, setCookie as r, getCookie as t };
|
|
15
|
+
//# sourceMappingURL=handle-DOidKTI-.d.mts.map
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/utils/html-renderer.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* HTML渲染工具类
|
|
4
|
+
* 提供统一的HTML模板生成功能
|
|
5
|
+
*/
|
|
6
|
+
declare class HtmlRenderer {
|
|
7
|
+
/**
|
|
8
|
+
* 生成基础HTML模板
|
|
9
|
+
*/
|
|
10
|
+
static generateBaseHtml(content: string, context: any, clientScriptPath?: string): string;
|
|
11
|
+
/**
|
|
12
|
+
* 生成Vue组件HTML
|
|
13
|
+
*/
|
|
14
|
+
static generateVueHtml(content: string, context: any, clientScriptPath?: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* 生成React组件HTML
|
|
17
|
+
*/
|
|
18
|
+
static generateReactHtml(content: string, context: any, clientScriptPath?: string): string;
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
export { HtmlRenderer as t };
|
|
22
|
+
//# sourceMappingURL=html-renderer-C3LKTLme.d.mts.map
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { t as __esmMin } from "./chunk-67U6L5Jh.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/utils/html-renderer.ts
|
|
4
|
+
var HtmlRenderer;
|
|
5
|
+
var init_html_renderer = __esmMin((() => {
|
|
6
|
+
HtmlRenderer = class {
|
|
7
|
+
/**
|
|
8
|
+
* 生成基础HTML模板
|
|
9
|
+
*/
|
|
10
|
+
static generateBaseHtml(content, context, clientScriptPath = "/client.js") {
|
|
11
|
+
return `
|
|
8
12
|
<!doctype html>
|
|
9
13
|
<html>
|
|
10
14
|
<head>
|
|
@@ -20,23 +24,23 @@ var HtmlRenderer = class {
|
|
|
20
24
|
query: ${JSON.stringify(context.query || {})},
|
|
21
25
|
pathname: '${context.pathname}'
|
|
22
26
|
};
|
|
23
|
-
|
|
24
|
-
<script type="module" src="${clientScriptPath}"
|
|
27
|
+
<\/script>
|
|
28
|
+
<script type="module" src="${clientScriptPath}"><\/script>
|
|
25
29
|
</body>
|
|
26
30
|
</html>
|
|
27
31
|
`;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* 生成Vue组件HTML
|
|
35
|
+
*/
|
|
36
|
+
static generateVueHtml(content, context, clientScriptPath = "/client.js") {
|
|
37
|
+
return this.generateBaseHtml(content, context, clientScriptPath);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* 生成React组件HTML
|
|
41
|
+
*/
|
|
42
|
+
static generateReactHtml(content, context, clientScriptPath = "/client.js") {
|
|
43
|
+
return `
|
|
40
44
|
<!doctype html>
|
|
41
45
|
<html>
|
|
42
46
|
<head>
|
|
@@ -52,14 +56,15 @@ var HtmlRenderer = class {
|
|
|
52
56
|
query: ${JSON.stringify(context.query || {})},
|
|
53
57
|
pathname: '${context.pathname}'
|
|
54
58
|
};
|
|
55
|
-
|
|
56
|
-
<script type="module" src="${clientScriptPath}"
|
|
59
|
+
<\/script>
|
|
60
|
+
<script type="module" src="${clientScriptPath}"><\/script>
|
|
57
61
|
</body>
|
|
58
62
|
</html>
|
|
59
63
|
`;
|
|
60
|
-
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
}));
|
|
67
|
+
|
|
68
|
+
//#endregion
|
|
69
|
+
export { init_html_renderer as n, HtmlRenderer as t };
|
|
70
|
+
//# sourceMappingURL=html-renderer-CJ3B2Hft.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html-renderer-CJ3B2Hft.mjs","names":[],"sources":["../src/utils/html-renderer.ts"],"sourcesContent":["/**\n * HTML渲染工具类\n * 提供统一的HTML模板生成功能\n */\nexport class HtmlRenderer {\n /**\n * 生成基础HTML模板\n */\n static generateBaseHtml(\n content: string,\n context: any,\n clientScriptPath: string = \"/client.js\",\n ): string {\n return `\n <!doctype html>\n <html>\n <head>\n <meta charset=\"utf-8\">\n <title>Vafast SSR App</title>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n </head>\n <body>\n <div id=\"app\">${content}</div>\n <script>\n window.__ROUTE_INFO__ = {\n params: ${JSON.stringify(context.params || {})},\n query: ${JSON.stringify(context.query || {})},\n pathname: '${context.pathname}'\n };\n </script>\n <script type=\"module\" src=\"${clientScriptPath}\"></script>\n </body>\n </html>\n `;\n }\n\n /**\n * 生成Vue组件HTML\n */\n static generateVueHtml(\n content: string,\n context: any,\n clientScriptPath: string = \"/client.js\",\n ): string {\n return this.generateBaseHtml(content, context, clientScriptPath);\n }\n\n /**\n * 生成React组件HTML\n */\n static generateReactHtml(\n content: string,\n context: any,\n clientScriptPath: string = \"/client.js\",\n ): string {\n return `\n <!doctype html>\n <html>\n <head>\n <meta charset=\"utf-8\">\n <title>Vafast SSR App</title>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n </head>\n <body>\n <div id=\"root\">${content}</div>\n <script>\n window.__ROUTE_INFO__ = {\n params: ${JSON.stringify(context.params || {})},\n query: ${JSON.stringify(context.query || {})},\n pathname: '${context.pathname}'\n };\n </script>\n <script type=\"module\" src=\"${clientScriptPath}\"></script>\n </body>\n </html>\n `;\n }\n}\n"],"mappings":";;;;;CAIa,eAAb,MAA0B;;;;EAIxB,OAAO,iBACL,SACA,SACA,mBAA2B,cACnB;AACR,UAAO;;;;;;;;;0BASe,QAAQ;;;wBAGV,KAAK,UAAU,QAAQ,UAAU,EAAE,CAAC,CAAC;uBACtC,KAAK,UAAU,QAAQ,SAAS,EAAE,CAAC,CAAC;2BAChC,QAAQ,SAAS;;;uCAGL,iBAAiB;;;;;;;;EAStD,OAAO,gBACL,SACA,SACA,mBAA2B,cACnB;AACR,UAAO,KAAK,iBAAiB,SAAS,SAAS,iBAAiB;;;;;EAMlE,OAAO,kBACL,SACA,SACA,mBAA2B,cACnB;AACR,UAAO;;;;;;;;;2BASgB,QAAQ;;;wBAGX,KAAK,UAAU,QAAQ,UAAU,EAAE,CAAC,CAAC;uBACtC,KAAK,UAAU,QAAQ,SAAS,EAAE,CAAC,CAAC;2BAChC,QAAQ,SAAS;;;uCAGL,iBAAiB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { l as Route, s as NestedRoute } from "./types-Cb7_2VSt.mjs";
|
|
2
|
+
import { r as NestedComponentRoute, t as ComponentRoute } from "./component-route-BYV_X1rA.mjs";
|
|
3
|
+
import { t as Server } from "./server-Drc2kSxp.mjs";
|
|
4
|
+
import { t as ComponentServer } from "./component-server-BOz4Q-Qt.mjs";
|
|
5
|
+
|
|
6
|
+
//#region src/server/server-factory.d.ts
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* 服务器工厂类
|
|
10
|
+
* 用于创建和管理不同类型的服务器
|
|
11
|
+
*/
|
|
12
|
+
declare class ServerFactory {
|
|
13
|
+
private servers;
|
|
14
|
+
/**
|
|
15
|
+
* 创建标准REST API服务器
|
|
16
|
+
*/
|
|
17
|
+
createRestServer(routes: (Route | NestedRoute)[]): Server;
|
|
18
|
+
/**
|
|
19
|
+
* 创建组件服务器
|
|
20
|
+
*/
|
|
21
|
+
createComponentServer(routes: (ComponentRoute | NestedComponentRoute)[]): ComponentServer;
|
|
22
|
+
/**
|
|
23
|
+
* 获取指定类型的服务器
|
|
24
|
+
*/
|
|
25
|
+
getServer(type: "rest" | "component"): Server | ComponentServer | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* 获取所有服务器
|
|
28
|
+
*/
|
|
29
|
+
getAllServers(): Map<string, Server | ComponentServer>;
|
|
30
|
+
/**
|
|
31
|
+
* 移除指定类型的服务器
|
|
32
|
+
*/
|
|
33
|
+
removeServer(type: string): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* 清除所有服务器
|
|
36
|
+
*/
|
|
37
|
+
clearServers(): void;
|
|
38
|
+
/**
|
|
39
|
+
* 获取服务器状态信息
|
|
40
|
+
*/
|
|
41
|
+
getServerStatus(): Record<string, {
|
|
42
|
+
type: string;
|
|
43
|
+
routes: number;
|
|
44
|
+
}>;
|
|
45
|
+
}
|
|
46
|
+
//#endregion
|
|
47
|
+
export { ServerFactory as t };
|
|
48
|
+
//# sourceMappingURL=index-DFsQyT61.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { TokenError, TokenOptions, TokenPayload, TokenResult, createTokenPair, generateToken, getTokenTimeRemaining, isTokenExpired, parseToken, refreshToken, verifyToken } from "./auth/token.mjs";
|
|
2
|
+
import { a as Method, c as ResponseBody, l as Route, n as FlattenedRoute, o as Middleware, r as Handler, s as NestedRoute } from "./types-Cb7_2VSt.mjs";
|
|
3
|
+
import { c as createTypedRoute, l as isTypedRoute, n as CompatibleRoute, o as NestedRouteConfig, r as ExtendedRouteConfig, s as TypedRoute, t as BaseRouteConfig } from "./route-BqmWCG4e.mjs";
|
|
4
|
+
import { n as FlattenedComponentRoute, r as NestedComponentRoute, t as ComponentRoute } from "./component-route-BYV_X1rA.mjs";
|
|
5
|
+
import { a as TypedHandler, i as RouteSchema, n as HandlerContextWithExtra, o as TypedRouteConfig, r as InferSchema, t as HandlerContext } from "./schema-CVuttFSw.mjs";
|
|
6
|
+
import "./index-DXJd7-2Z.mjs";
|
|
7
|
+
import { i as simpleHandler, n as createHandler, r as createHandlerWithExtra, t as InferableHandler } from "./create-handler-Dtt0xv6g.mjs";
|
|
8
|
+
import { InferableRoute, RouteDefinition, defineRoutes, del, get, patch, post, put, route } from "./defineRoute.mjs";
|
|
9
|
+
import { t as BaseServer } from "./base-server-Gakrozqk.mjs";
|
|
10
|
+
import { t as Server } from "./server-Drc2kSxp.mjs";
|
|
11
|
+
import { t as DependencyManager } from "./dependency-manager-Dbug5INp.mjs";
|
|
12
|
+
import { t as ComponentServer } from "./component-server-BOz4Q-Qt.mjs";
|
|
13
|
+
import { t as ServerFactory } from "./index-DFsQyT61.mjs";
|
|
14
|
+
import { VafastError, composeMiddleware } from "./middleware.mjs";
|
|
15
|
+
import { a as parseBody, c as parseCookiesFast, d as parseHeaders, f as parseQuery, i as getHeader, p as parseQueryFast, r as getCookie, s as parseCookies } from "./parsers-CodQFP1Z.mjs";
|
|
16
|
+
import { a as redirect, n as html, o as stream, r as json, s as text, t as empty } from "./response-CUyV5FIm.mjs";
|
|
17
|
+
import { t as goAwait } from "./go-await-CqPx9dVQ.mjs";
|
|
18
|
+
import { n as base64urlEncode, t as base64urlDecode } from "./base64url-BY-HBSpL.mjs";
|
|
19
|
+
import { i as setLocals, n as getLocals } from "./handle-DOidKTI-.mjs";
|
|
20
|
+
import { a as ValidationError, c as getValidatorCacheStats, d as validateFast, f as validateSchema, l as precompileSchemas, o as ValidationResult, p as validateSchemaOrThrow, s as createValidator, t as SchemaConfig, u as validateAllSchemas } from "./validators-C0eZyxPh.mjs";
|
|
21
|
+
import { a as parseAndValidateRequest, i as createRequestValidator, o as parseRequest, s as validateRequest } from "./request-validator-u2Ccj3_x.mjs";
|
|
22
|
+
import { t as HtmlRenderer } from "./html-renderer-C3LKTLme.mjs";
|
|
23
|
+
import { i as registerFormats, n as hasFormat, r as registerFormat, t as Patterns } from "./formats-BSqJWCsG.mjs";
|
|
24
|
+
import { a as createSSEHandler, i as SSEMarker, r as SSEHandler, t as SSEEvent } from "./sse-BOd2pvUK.mjs";
|
|
25
|
+
import { a as getAllRoutes, i as filterRoutes, n as RouteRegistry, o as getRoute, r as createRouteRegistry, s as getRouteRegistry, t as RouteMeta } from "./route-registry-ykzRmaHB.mjs";
|
|
26
|
+
import "./utils/index.mjs";
|
|
27
|
+
import { flattenNestedRoutes, normalizePath } from "./router.mjs";
|
|
28
|
+
import { requireAuth } from "./middleware/authMiddleware.mjs";
|
|
29
|
+
import { rateLimit } from "./middleware/rateLimit.mjs";
|
|
30
|
+
import { CORSOptions, createCORS } from "./middleware/cors.mjs";
|
|
31
|
+
import { createAuth, createOptionalAuth, createPermissionAuth, createRoleAuth } from "./middleware/auth.mjs";
|
|
32
|
+
import { i as ServeResult, o as serve, r as ServeOptions, t as FetchHandler } from "./serve-BQQ2JzIH.mjs";
|
|
33
|
+
import "./serve.mjs";
|
|
34
|
+
import { FormatRegistry, Type } from "@sinclair/typebox";
|
|
35
|
+
export { BaseRouteConfig, BaseServer, CORSOptions, CompatibleRoute, ComponentRoute, ComponentServer, DependencyManager, ExtendedRouteConfig, type FetchHandler, FlattenedComponentRoute, FlattenedRoute, FormatRegistry, Handler, HandlerContext, HandlerContextWithExtra, HtmlRenderer, InferSchema, InferableHandler, InferableRoute, Method, Middleware, NestedComponentRoute, NestedRoute, NestedRouteConfig, Patterns, ResponseBody, Route, RouteDefinition, RouteMeta, RouteRegistry, RouteSchema, SSEEvent, SSEHandler, SSEMarker, SchemaConfig, type ServeOptions, type ServeResult, Server, ServerFactory, TokenError, TokenOptions, TokenPayload, TokenResult, Type, TypedHandler, TypedRoute, TypedRouteConfig, VafastError, ValidationError, ValidationResult, base64urlDecode, base64urlEncode, composeMiddleware, createAuth, createCORS, createHandler, createHandlerWithExtra, createOptionalAuth, createPermissionAuth, createRequestValidator, createRoleAuth, createRouteRegistry, createSSEHandler, createTokenPair, createTypedRoute, createValidator, defineRoutes, del, empty, filterRoutes, flattenNestedRoutes, generateToken, get, getAllRoutes, getCookie, getHeader, getLocals, getRoute, getRouteRegistry, getTokenTimeRemaining, getValidatorCacheStats, goAwait, hasFormat, html, isTokenExpired, isTypedRoute, json, normalizePath, parseAndValidateRequest, parseBody, parseCookies, parseCookiesFast, parseHeaders, parseQuery, parseQueryFast, parseRequest, parseToken, patch, post, precompileSchemas, put, rateLimit, redirect, refreshToken, registerFormat, registerFormats, requireAuth, route, serve, setLocals, simpleHandler, stream, text, validateAllSchemas, validateFast, validateRequest, validateSchema, validateSchemaOrThrow, verifyToken };
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { defineRoutes, del, get, patch, post, put, route } from "./defineRoute.mjs";
|
|
2
|
+
import { n as init_router, r as normalizePath, t as flattenNestedRoutes } from "./router-BOeVQrjz.mjs";
|
|
3
|
+
import { c as text, i as json, n as html, o as redirect, s as stream, t as empty } from "./response-CSKW5hsS.mjs";
|
|
4
|
+
import { n as composeMiddleware, r as init_middleware, t as VafastError } from "./middleware-3ShRJyd1.mjs";
|
|
5
|
+
import { t as BaseServer } from "./base-server-Bq4_lJWK.mjs";
|
|
6
|
+
import { a as getRoute, i as getAllRoutes, n as createRouteRegistry, o as getRouteRegistry, r as filterRoutes, t as RouteRegistry } from "./route-registry-AlkDgbcE.mjs";
|
|
7
|
+
import { t as Server } from "./server-C8WCshmG.mjs";
|
|
8
|
+
import { t as HtmlRenderer } from "./html-renderer-CJ3B2Hft.mjs";
|
|
9
|
+
import { t as DependencyManager } from "./dependency-manager-CPkwMI7J.mjs";
|
|
10
|
+
import { t as ComponentServer } from "./component-server-ARXvZJUQ.mjs";
|
|
11
|
+
import { r as ServerFactory, t as init_server } from "./server-B0nzGCG5.mjs";
|
|
12
|
+
import { a as parseCookies, d as parseQueryFast, l as parseHeaders, n as getHeader, o as parseCookiesFast, r as parseBody, t as getCookie, u as parseQuery } from "./parsers-ROIZWSGI.mjs";
|
|
13
|
+
import { t as goAwait } from "./go-await-B-KP-K8x.mjs";
|
|
14
|
+
import { a as validateAllSchemas, c as validateSchemaOrThrow, i as precompileSchemas, n as createValidator, o as validateFast, r as getValidatorCacheStats, s as validateSchema } from "./validators-CbCLj0Rc.mjs";
|
|
15
|
+
import { n as createHandlerWithExtra, r as simpleHandler, t as createHandler } from "./create-handler-CbSoroA1.mjs";
|
|
16
|
+
import { n as base64urlEncode, t as base64urlDecode } from "./base64url-DLDOeXsk.mjs";
|
|
17
|
+
import { i as setLocals, n as getLocals } from "./handle-BhpqNgGf.mjs";
|
|
18
|
+
import { i as validateRequest, n as parseAndValidateRequest, r as parseRequest, t as createRequestValidator } from "./request-validator-Dyqng-H_.mjs";
|
|
19
|
+
import { Patterns, hasFormat, registerFormat, registerFormats } from "./utils/formats.mjs";
|
|
20
|
+
import { t as createSSEHandler } from "./sse-US5D9mgE.mjs";
|
|
21
|
+
import "./utils/index.mjs";
|
|
22
|
+
import { requireAuth } from "./middleware/authMiddleware.mjs";
|
|
23
|
+
import { rateLimit } from "./middleware/rateLimit.mjs";
|
|
24
|
+
import { createCORS } from "./middleware/cors.mjs";
|
|
25
|
+
import { TokenError, createTokenPair, generateToken, getTokenTimeRemaining, isTokenExpired, parseToken, refreshToken, verifyToken } from "./auth/token.mjs";
|
|
26
|
+
import { createAuth, createOptionalAuth, createPermissionAuth, createRoleAuth } from "./middleware/auth.mjs";
|
|
27
|
+
import { n as isTypedRoute, t as createTypedRoute } from "./route-BRR15b-p.mjs";
|
|
28
|
+
import "./types/index.mjs";
|
|
29
|
+
import "./request-B2BkUecT.mjs";
|
|
30
|
+
import { n as serve } from "./serve-MRGGK7-q.mjs";
|
|
31
|
+
import "./serve.mjs";
|
|
32
|
+
import { FormatRegistry, Type } from "@sinclair/typebox";
|
|
33
|
+
|
|
34
|
+
//#region src/index.ts
|
|
35
|
+
init_server();
|
|
36
|
+
init_middleware();
|
|
37
|
+
init_router();
|
|
38
|
+
registerFormats();
|
|
39
|
+
|
|
40
|
+
//#endregion
|
|
41
|
+
export { BaseServer, ComponentServer, DependencyManager, FormatRegistry, HtmlRenderer, Patterns, RouteRegistry, Server, ServerFactory, TokenError, Type, VafastError, base64urlDecode, base64urlEncode, composeMiddleware, createAuth, createCORS, createHandler, createHandlerWithExtra, createOptionalAuth, createPermissionAuth, createRequestValidator, createRoleAuth, createRouteRegistry, createSSEHandler, createTokenPair, createTypedRoute, createValidator, defineRoutes, del, empty, filterRoutes, flattenNestedRoutes, generateToken, get, getAllRoutes, getCookie, getHeader, getLocals, getRoute, getRouteRegistry, getTokenTimeRemaining, getValidatorCacheStats, goAwait, hasFormat, html, isTokenExpired, isTypedRoute, json, normalizePath, parseAndValidateRequest, parseBody, parseCookies, parseCookiesFast, parseHeaders, parseQuery, parseQueryFast, parseRequest, parseToken, patch, post, precompileSchemas, put, rateLimit, redirect, refreshToken, registerFormat, registerFormats, requireAuth, route, serve, setLocals, simpleHandler, stream, text, validateAllSchemas, validateFast, validateRequest, validateSchema, validateSchemaOrThrow, verifyToken };
|
|
42
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["export * from \"./server\";\nexport * from \"./middleware\";\nexport * from \"./utils\";\nexport * from \"./router\";\nexport * from \"./middleware/authMiddleware\";\nexport * from \"./middleware/rateLimit\";\nexport * from \"./middleware/cors\";\nexport * from \"./auth/token\";\nexport * from \"./middleware/auth\";\nexport * from \"./defineRoute\";\nexport * from \"./types\";\n\n// 统一的 serve 函数\nexport { serve } from \"./serve\";\nexport type { ServeOptions, ServeResult, FetchHandler } from \"./serve\";\n\n// 重新导出 TypeBox 类型\nexport { Type, FormatRegistry } from \"@sinclair/typebox\";\n\n// 自动注册内置 format 验证器\nimport { registerFormats } from \"./utils/formats\";\nregisterFormats();\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,iBAAiB"}
|
|
@@ -1,16 +1,20 @@
|
|
|
1
|
-
import { Middleware } from
|
|
1
|
+
import { o as Middleware } from "../types-Cb7_2VSt.mjs";
|
|
2
|
+
import "../schema-CVuttFSw.mjs";
|
|
3
|
+
import "../index-DXJd7-2Z.mjs";
|
|
2
4
|
|
|
5
|
+
//#region src/middleware/auth.d.ts
|
|
3
6
|
interface AuthOptions {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
secret: string;
|
|
8
|
+
cookieName?: string;
|
|
9
|
+
headerName?: string;
|
|
10
|
+
required?: boolean;
|
|
11
|
+
roles?: string[];
|
|
12
|
+
permissions?: string[];
|
|
10
13
|
}
|
|
11
14
|
declare function createAuth(options: AuthOptions): Middleware;
|
|
12
15
|
declare function createOptionalAuth(options: Omit<AuthOptions, "required">): Middleware;
|
|
13
16
|
declare function createRoleAuth(roles: string[], options: Omit<AuthOptions, "roles">): Middleware;
|
|
14
17
|
declare function createPermissionAuth(permissions: string[], options: Omit<AuthOptions, "permissions">): Middleware;
|
|
15
|
-
|
|
18
|
+
//#endregion
|
|
16
19
|
export { createAuth, createOptionalAuth, createPermissionAuth, createRoleAuth };
|
|
20
|
+
//# sourceMappingURL=auth.d.mts.map
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { r as init_middleware, t as VafastError } from "../middleware-3ShRJyd1.mjs";
|
|
2
|
+
import "../parsers-ROIZWSGI.mjs";
|
|
3
|
+
import { t as getCookie } from "../handle-BhpqNgGf.mjs";
|
|
4
|
+
import { TokenError, verifyToken } from "../auth/token.mjs";
|
|
5
|
+
|
|
6
|
+
//#region src/middleware/auth.ts
|
|
7
|
+
init_middleware();
|
|
8
|
+
function createAuth(options) {
|
|
9
|
+
const { secret, cookieName = "auth", headerName = "authorization", required = true, roles = [], permissions = [] } = options;
|
|
10
|
+
return async (req, next) => {
|
|
11
|
+
const token = getCookie(req, cookieName) || req.headers.get(headerName)?.replace("Bearer ", "") || "";
|
|
12
|
+
if (!token && required) throw new VafastError("缺少认证令牌", {
|
|
13
|
+
status: 401,
|
|
14
|
+
type: "unauthorized",
|
|
15
|
+
expose: true
|
|
16
|
+
});
|
|
17
|
+
if (!token && !required) return next();
|
|
18
|
+
try {
|
|
19
|
+
const user = await verifyToken(token, secret);
|
|
20
|
+
if (!user) throw new VafastError("令牌验证失败", {
|
|
21
|
+
status: 401,
|
|
22
|
+
type: "unauthorized",
|
|
23
|
+
expose: true
|
|
24
|
+
});
|
|
25
|
+
if (roles.length > 0 && user.role && !roles.includes(user.role)) throw new VafastError("权限不足", {
|
|
26
|
+
status: 403,
|
|
27
|
+
type: "forbidden",
|
|
28
|
+
expose: true
|
|
29
|
+
});
|
|
30
|
+
if (permissions.length > 0 && user.permissions) {
|
|
31
|
+
const userPermissions = Array.isArray(user.permissions) ? user.permissions : [user.permissions];
|
|
32
|
+
if (!permissions.some((permission) => userPermissions.includes(permission))) throw new VafastError("权限不足", {
|
|
33
|
+
status: 403,
|
|
34
|
+
type: "forbidden",
|
|
35
|
+
expose: true
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
req.user = user;
|
|
39
|
+
req.token = token;
|
|
40
|
+
return next();
|
|
41
|
+
} catch (error) {
|
|
42
|
+
if (error instanceof TokenError) {
|
|
43
|
+
let status = 401;
|
|
44
|
+
let message = "认证失败";
|
|
45
|
+
switch (error.code) {
|
|
46
|
+
case "EXPIRED_TOKEN":
|
|
47
|
+
status = 401;
|
|
48
|
+
message = "令牌已过期";
|
|
49
|
+
break;
|
|
50
|
+
case "INVALID_SIGNATURE":
|
|
51
|
+
status = 401;
|
|
52
|
+
message = "令牌签名无效";
|
|
53
|
+
break;
|
|
54
|
+
case "MALFORMED_TOKEN":
|
|
55
|
+
status = 400;
|
|
56
|
+
message = "令牌格式错误";
|
|
57
|
+
break;
|
|
58
|
+
default:
|
|
59
|
+
status = 401;
|
|
60
|
+
message = "令牌验证失败";
|
|
61
|
+
}
|
|
62
|
+
throw new VafastError(message, {
|
|
63
|
+
status,
|
|
64
|
+
type: "unauthorized",
|
|
65
|
+
expose: true
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
if (error instanceof VafastError) throw error;
|
|
69
|
+
throw new VafastError("认证过程中发生错误", {
|
|
70
|
+
status: 500,
|
|
71
|
+
type: "internal_error",
|
|
72
|
+
expose: false
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
function createOptionalAuth(options) {
|
|
78
|
+
return createAuth({
|
|
79
|
+
...options,
|
|
80
|
+
required: false
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
function createRoleAuth(roles, options) {
|
|
84
|
+
return createAuth({
|
|
85
|
+
...options,
|
|
86
|
+
roles
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
function createPermissionAuth(permissions, options) {
|
|
90
|
+
return createAuth({
|
|
91
|
+
...options,
|
|
92
|
+
permissions
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
//#endregion
|
|
97
|
+
export { createAuth, createOptionalAuth, createPermissionAuth, createRoleAuth };
|
|
98
|
+
//# sourceMappingURL=auth.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.mjs","names":[],"sources":["../../src/middleware/auth.ts"],"sourcesContent":["// src/middleware/auth.ts\n\nimport type { Middleware } from \"../types\";\nimport { VafastError } from \"../middleware\";\nimport { getCookie } from \"../utils/handle\";\nimport { verifyToken, TokenError, type TokenPayload } from \"../auth/token\";\n\ninterface AuthOptions {\n secret: string;\n cookieName?: string;\n headerName?: string;\n required?: boolean; // 是否必需认证\n roles?: string[]; // 允许的角色\n permissions?: string[]; // 允许的权限\n}\n\nexport function createAuth(options: AuthOptions): Middleware {\n const {\n secret,\n cookieName = \"auth\",\n headerName = \"authorization\",\n required = true,\n roles = [],\n permissions = [],\n } = options;\n\n return async (req, next) => {\n const token =\n getCookie(req, cookieName) ||\n req.headers.get(headerName)?.replace(\"Bearer \", \"\") ||\n \"\";\n\n if (!token && required) {\n throw new VafastError(\"缺少认证令牌\", {\n status: 401,\n type: \"unauthorized\",\n expose: true,\n });\n }\n\n if (!token && !required) {\n return next();\n }\n\n try {\n const user = (await verifyToken(token, secret)) as TokenPayload;\n\n if (!user) {\n throw new VafastError(\"令牌验证失败\", {\n status: 401,\n type: \"unauthorized\",\n expose: true,\n });\n }\n\n // 检查角色权限\n if (roles.length > 0 && user.role && !roles.includes(user.role)) {\n throw new VafastError(\"权限不足\", {\n status: 403,\n type: \"forbidden\",\n expose: true,\n });\n }\n\n // 检查具体权限\n if (permissions.length > 0 && user.permissions) {\n const userPermissions = Array.isArray(user.permissions)\n ? user.permissions\n : [user.permissions];\n\n const hasPermission = permissions.some((permission) =>\n userPermissions.includes(permission),\n );\n\n if (!hasPermission) {\n throw new VafastError(\"权限不足\", {\n status: 403,\n type: \"forbidden\",\n expose: true,\n });\n }\n }\n\n // 🪄 在这里扩展 Request 对象\n (req as any).user = user;\n (req as any).token = token;\n\n return next();\n } catch (error) {\n if (error instanceof TokenError) {\n let status = 401;\n let message = \"认证失败\";\n\n switch (error.code) {\n case \"EXPIRED_TOKEN\":\n status = 401;\n message = \"令牌已过期\";\n break;\n case \"INVALID_SIGNATURE\":\n status = 401;\n message = \"令牌签名无效\";\n break;\n case \"MALFORMED_TOKEN\":\n status = 400;\n message = \"令牌格式错误\";\n break;\n default:\n status = 401;\n message = \"令牌验证失败\";\n }\n\n throw new VafastError(message, {\n status,\n type: \"unauthorized\",\n expose: true,\n });\n }\n\n if (error instanceof VafastError) {\n throw error;\n }\n\n throw new VafastError(\"认证过程中发生错误\", {\n status: 500,\n type: \"internal_error\",\n expose: false,\n });\n }\n };\n}\n\n// 可选认证中间件\nexport function createOptionalAuth(\n options: Omit<AuthOptions, \"required\">,\n): Middleware {\n return createAuth({ ...options, required: false });\n}\n\n// 角色验证中间件\nexport function createRoleAuth(\n roles: string[],\n options: Omit<AuthOptions, \"roles\">,\n): Middleware {\n return createAuth({ ...options, roles });\n}\n\n// 权限验证中间件\nexport function createPermissionAuth(\n permissions: string[],\n options: Omit<AuthOptions, \"permissions\">,\n): Middleware {\n return createAuth({ ...options, permissions });\n}\n"],"mappings":";;;;;;iBAG4C;AAa5C,SAAgB,WAAW,SAAkC;CAC3D,MAAM,EACJ,QACA,aAAa,QACb,aAAa,iBACb,WAAW,MACX,QAAQ,EAAE,EACV,cAAc,EAAE,KACd;AAEJ,QAAO,OAAO,KAAK,SAAS;EAC1B,MAAM,QACJ,UAAU,KAAK,WAAW,IAC1B,IAAI,QAAQ,IAAI,WAAW,EAAE,QAAQ,WAAW,GAAG,IACnD;AAEF,MAAI,CAAC,SAAS,SACZ,OAAM,IAAI,YAAY,UAAU;GAC9B,QAAQ;GACR,MAAM;GACN,QAAQ;GACT,CAAC;AAGJ,MAAI,CAAC,SAAS,CAAC,SACb,QAAO,MAAM;AAGf,MAAI;GACF,MAAM,OAAQ,MAAM,YAAY,OAAO,OAAO;AAE9C,OAAI,CAAC,KACH,OAAM,IAAI,YAAY,UAAU;IAC9B,QAAQ;IACR,MAAM;IACN,QAAQ;IACT,CAAC;AAIJ,OAAI,MAAM,SAAS,KAAK,KAAK,QAAQ,CAAC,MAAM,SAAS,KAAK,KAAK,CAC7D,OAAM,IAAI,YAAY,QAAQ;IAC5B,QAAQ;IACR,MAAM;IACN,QAAQ;IACT,CAAC;AAIJ,OAAI,YAAY,SAAS,KAAK,KAAK,aAAa;IAC9C,MAAM,kBAAkB,MAAM,QAAQ,KAAK,YAAY,GACnD,KAAK,cACL,CAAC,KAAK,YAAY;AAMtB,QAAI,CAJkB,YAAY,MAAM,eACtC,gBAAgB,SAAS,WAAW,CACrC,CAGC,OAAM,IAAI,YAAY,QAAQ;KAC5B,QAAQ;KACR,MAAM;KACN,QAAQ;KACT,CAAC;;AAKN,GAAC,IAAY,OAAO;AACpB,GAAC,IAAY,QAAQ;AAErB,UAAO,MAAM;WACN,OAAO;AACd,OAAI,iBAAiB,YAAY;IAC/B,IAAI,SAAS;IACb,IAAI,UAAU;AAEd,YAAQ,MAAM,MAAd;KACE,KAAK;AACH,eAAS;AACT,gBAAU;AACV;KACF,KAAK;AACH,eAAS;AACT,gBAAU;AACV;KACF,KAAK;AACH,eAAS;AACT,gBAAU;AACV;KACF;AACE,eAAS;AACT,gBAAU;;AAGd,UAAM,IAAI,YAAY,SAAS;KAC7B;KACA,MAAM;KACN,QAAQ;KACT,CAAC;;AAGJ,OAAI,iBAAiB,YACnB,OAAM;AAGR,SAAM,IAAI,YAAY,aAAa;IACjC,QAAQ;IACR,MAAM;IACN,QAAQ;IACT,CAAC;;;;AAMR,SAAgB,mBACd,SACY;AACZ,QAAO,WAAW;EAAE,GAAG;EAAS,UAAU;EAAO,CAAC;;AAIpD,SAAgB,eACd,OACA,SACY;AACZ,QAAO,WAAW;EAAE,GAAG;EAAS;EAAO,CAAC;;AAI1C,SAAgB,qBACd,aACA,SACY;AACZ,QAAO,WAAW;EAAE,GAAG;EAAS;EAAa,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { o as Middleware } from "../types-Cb7_2VSt.mjs";
|
|
2
|
+
import "../schema-CVuttFSw.mjs";
|
|
3
|
+
import "../index-DXJd7-2Z.mjs";
|
|
4
|
+
|
|
5
|
+
//#region src/middleware/authMiddleware.d.ts
|
|
6
|
+
declare const requireAuth: Middleware;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { requireAuth };
|
|
9
|
+
//# sourceMappingURL=authMiddleware.d.mts.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { r as init_middleware, t as VafastError } from "../middleware-3ShRJyd1.mjs";
|
|
2
|
+
import "../parsers-ROIZWSGI.mjs";
|
|
3
|
+
import { t as getCookie } from "../handle-BhpqNgGf.mjs";
|
|
4
|
+
|
|
5
|
+
//#region src/middleware/authMiddleware.ts
|
|
6
|
+
init_middleware();
|
|
7
|
+
const requireAuth = async (req, next) => {
|
|
8
|
+
const token = getCookie(req, "auth");
|
|
9
|
+
if (!token || token !== "valid-token") throw new VafastError("Unauthorized", {
|
|
10
|
+
status: 401,
|
|
11
|
+
type: "unauthorized",
|
|
12
|
+
expose: true
|
|
13
|
+
});
|
|
14
|
+
return next();
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
//#endregion
|
|
18
|
+
export { requireAuth };
|
|
19
|
+
//# sourceMappingURL=authMiddleware.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authMiddleware.mjs","names":[],"sources":["../../src/middleware/authMiddleware.ts"],"sourcesContent":["// src/middleware/authMiddleware.ts\nimport type { Middleware } from \"../types\";\nimport { VafastError } from \"../middleware\";\nimport { getCookie } from \"../utils/handle\";\n\nexport const requireAuth: Middleware = async (req, next) => {\n const token = getCookie(req, \"auth\");\n\n if (!token || token !== \"valid-token\") {\n throw new VafastError(\"Unauthorized\", {\n status: 401,\n type: \"unauthorized\",\n expose: true,\n });\n }\n\n return next();\n};\n"],"mappings":";;;;;iBAE4C;AAG5C,MAAa,cAA0B,OAAO,KAAK,SAAS;CAC1D,MAAM,QAAQ,UAAU,KAAK,OAAO;AAEpC,KAAI,CAAC,SAAS,UAAU,cACtB,OAAM,IAAI,YAAY,gBAAgB;EACpC,QAAQ;EACR,MAAM;EACN,QAAQ;EACT,CAAC;AAGJ,QAAO,MAAM"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
//#region src/middleware/component-renderer.d.ts
|
|
1
2
|
/**
|
|
2
3
|
* 组件渲染中间件 - 专注 SSR
|
|
3
4
|
* 支持 Vue 和 React 的服务端渲染
|
|
4
5
|
*/
|
|
5
6
|
declare const vueRenderer: (preloadedDeps?: any) => (req: Request, next: () => Promise<Response>) => Promise<Response>;
|
|
6
7
|
declare const reactRenderer: (preloadedDeps?: any) => (req: Request, next: () => Promise<Response>) => Promise<Response>;
|
|
7
|
-
|
|
8
|
+
//#endregion
|
|
8
9
|
export { reactRenderer, vueRenderer };
|
|
10
|
+
//# sourceMappingURL=component-renderer.d.mts.map
|