vafast 0.4.2 → 0.4.4
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/base-server-CSkyjEaY.mjs +113 -0
- package/dist/base-server-CSkyjEaY.mjs.map +1 -0
- package/dist/base-server-DvGS6ATg.d.mts +40 -0
- package/dist/base64url-0N9uQPjZ.d.mts +6 -0
- package/dist/base64url-CwQnvZyp.mjs +13 -0
- package/dist/base64url-CwQnvZyp.mjs.map +1 -0
- package/dist/chunk-DW4-Jl94.mjs +37 -0
- package/dist/component-route-CYxLOnci.mjs +1 -0
- package/dist/component-route-CZawYn61.d.mts +31 -0
- package/dist/component-router-CErbGh2A.mjs +33 -0
- package/dist/component-router-CErbGh2A.mjs.map +1 -0
- package/dist/component-server-CGzU4bss.d.mts +38 -0
- package/dist/component-server-DAbIyIPI.mjs +124 -0
- package/dist/component-server-DAbIyIPI.mjs.map +1 -0
- package/dist/create-handler-B_pfxh3m.mjs +166 -0
- package/dist/create-handler-B_pfxh3m.mjs.map +1 -0
- package/dist/{utils/create-handler.d.ts → create-handler-Bo-hvWp-.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-C6vFWP2L.d.mts +27 -0
- package/dist/dependency-manager-Czg7Po2j.mjs +61 -0
- package/dist/dependency-manager-Czg7Po2j.mjs.map +1 -0
- package/dist/formats-CYLwo9GJ.d.mts +42 -0
- package/dist/go-await-BGAGJfrB.mjs +33 -0
- package/dist/go-await-BGAGJfrB.mjs.map +1 -0
- package/dist/{utils/go-await.d.ts → go-await-DRItVwwh.d.mts} +4 -2
- package/dist/handle-Csjtywdc.mjs +30 -0
- package/dist/handle-Csjtywdc.mjs.map +1 -0
- package/dist/{utils/handle.d.ts → handle-D0TFoOiX.d.mts} +8 -6
- package/dist/html-renderer-CMGKJoIy.d.mts +22 -0
- package/dist/{utils/html-renderer.js → html-renderer-CczE8mwC.mjs} +34 -29
- package/dist/html-renderer-CczE8mwC.mjs.map +1 -0
- package/dist/index-Ci52vt55.d.mts +48 -0
- package/dist/index-CzItj62a.d.mts +1 -0
- package/dist/index.d.mts +30 -0
- package/dist/index.mjs +37 -0
- package/dist/index.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-Byp3Hjae.mjs +59 -0
- package/dist/middleware-Byp3Hjae.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-7lvt3Oss.d.mts} +10 -8
- package/dist/parsers-CI_TZ7pO.mjs +168 -0
- package/dist/parsers-CI_TZ7pO.mjs.map +1 -0
- package/dist/path-matcher-73cJd5Y7.mjs +62 -0
- package/dist/path-matcher-73cJd5Y7.mjs.map +1 -0
- package/dist/radix-tree-D0XYaJKb.mjs +157 -0
- package/dist/radix-tree-D0XYaJKb.mjs.map +1 -0
- package/dist/request-CKC3Ox6M.mjs +133 -0
- package/dist/request-CKC3Ox6M.mjs.map +1 -0
- package/dist/request-validator-42lY21gn.d.mts +67 -0
- package/dist/request-validator-_J5HloRq.mjs +77 -0
- package/dist/request-validator-_J5HloRq.mjs.map +1 -0
- package/dist/{utils/response.d.ts → response-A-sZZiJ7.d.mts} +4 -2
- package/dist/response-Cf5FgtmE.mjs +72 -0
- package/dist/response-Cf5FgtmE.mjs.map +1 -0
- package/dist/response-DXg4i_yh.mjs +97 -0
- package/dist/response-DXg4i_yh.mjs.map +1 -0
- package/dist/route-9pAVP1GC.mjs +11 -0
- package/dist/route-9pAVP1GC.mjs.map +1 -0
- package/dist/route-BJ-40LNI.d.mts +44 -0
- package/dist/route-registry--tx1PNui.d.mts +176 -0
- package/dist/route-registry-mcTG0M-t.mjs +225 -0
- package/dist/route-registry-mcTG0M-t.mjs.map +1 -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-B9HUUCkR.mjs +71 -0
- package/dist/router-B9HUUCkR.mjs.map +1 -0
- package/dist/{router.d.ts → router.d.mts} +6 -7
- package/dist/router.mjs +4 -0
- package/dist/schema-CPQudJpE.d.mts +81 -0
- package/dist/schema-CtVBNfnQ.mjs +1 -0
- package/dist/serve-B5WmhK6m.d.mts +69 -0
- package/dist/serve-Be6NvuQk.mjs +107 -0
- package/dist/serve-Be6NvuQk.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-BmPKs8oM.mjs +137 -0
- package/dist/server-BmPKs8oM.mjs.map +1 -0
- package/dist/server-Cbd3Ia51.mjs +88 -0
- package/dist/server-Cbd3Ia51.mjs.map +1 -0
- package/dist/server-D9gjszHe.d.mts +60 -0
- package/dist/sse-BMM6KTfy.d.mts +65 -0
- package/dist/sse-BT5yyLgX.mjs +87 -0
- package/dist/sse-BT5yyLgX.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-DuTa8AVN.d.mts} +27 -25
- 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-BBrGePBr.mjs +112 -0
- package/dist/validators-BBrGePBr.mjs.map +1 -0
- package/dist/validators-CPmnj_y9.d.mts +67 -0
- package/package.json +16 -18
- package/dist/auth/token.d.ts +0 -42
- 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 -2578
- package/dist/index.js.map +0 -1
- package/dist/middleware/auth.d.ts +0 -16
- 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 -1487
- package/dist/monitoring/index.js.map +0 -1
- package/dist/monitoring/native-monitor.d.ts +0 -44
- package/dist/monitoring/native-monitor.js +0 -1454
- 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 -232
- 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 -44
- 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 -1159
- package/dist/server/index.js.map +0 -1
- package/dist/server/server-factory.d.ts +0 -48
- package/dist/server/server-factory.js +0 -1156
- package/dist/server/server-factory.js.map +0 -1
- package/dist/server/server.d.ts +0 -64
- package/dist/server/server.js +0 -737
- 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
|
@@ -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-D0TFoOiX.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-CMGKJoIy.d.mts.map
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { t as __esmMin } from "./chunk-DW4-Jl94.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-CczE8mwC.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html-renderer-CczE8mwC.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-DuTa8AVN.mjs";
|
|
2
|
+
import { r as NestedComponentRoute, t as ComponentRoute } from "./component-route-CZawYn61.mjs";
|
|
3
|
+
import { t as Server } from "./server-D9gjszHe.mjs";
|
|
4
|
+
import { t as ComponentServer } from "./component-server-CGzU4bss.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-Ci52vt55.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { a as Method, c as ResponseBody, l as Route, n as FlattenedRoute, o as Middleware, r as Handler, s as NestedRoute } from "./types-DuTa8AVN.mjs";
|
|
2
|
+
import { c as createTypedRoute, l as isTypedRoute, n as CompatibleRoute, o as NestedRouteConfig, r as ExtendedRouteConfig, s as TypedRoute, t as BaseRouteConfig } from "./route-BJ-40LNI.mjs";
|
|
3
|
+
import { n as FlattenedComponentRoute, r as NestedComponentRoute, t as ComponentRoute } from "./component-route-CZawYn61.mjs";
|
|
4
|
+
import { a as TypedHandler, i as RouteSchema, n as HandlerContextWithExtra, o as TypedRouteConfig, r as InferSchema, t as HandlerContext } from "./schema-CPQudJpE.mjs";
|
|
5
|
+
import "./index-CzItj62a.mjs";
|
|
6
|
+
import { i as simpleHandler, n as createHandler, r as createHandlerWithExtra, t as InferableHandler } from "./create-handler-Bo-hvWp-.mjs";
|
|
7
|
+
import { InferableRoute, RouteDefinition, defineRoutes, del, get, patch, post, put, route } from "./defineRoute.mjs";
|
|
8
|
+
import { t as BaseServer } from "./base-server-DvGS6ATg.mjs";
|
|
9
|
+
import { t as Server } from "./server-D9gjszHe.mjs";
|
|
10
|
+
import { t as DependencyManager } from "./dependency-manager-C6vFWP2L.mjs";
|
|
11
|
+
import { t as ComponentServer } from "./component-server-CGzU4bss.mjs";
|
|
12
|
+
import { t as ServerFactory } from "./index-Ci52vt55.mjs";
|
|
13
|
+
import { VafastError, composeMiddleware } from "./middleware.mjs";
|
|
14
|
+
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-7lvt3Oss.mjs";
|
|
15
|
+
import { a as redirect, n as html, o as stream, r as json, s as text, t as empty } from "./response-A-sZZiJ7.mjs";
|
|
16
|
+
import { t as goAwait } from "./go-await-DRItVwwh.mjs";
|
|
17
|
+
import { n as base64urlEncode, t as base64urlDecode } from "./base64url-0N9uQPjZ.mjs";
|
|
18
|
+
import { i as setLocals, n as getLocals } from "./handle-D0TFoOiX.mjs";
|
|
19
|
+
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-CPmnj_y9.mjs";
|
|
20
|
+
import { a as parseAndValidateRequest, i as createRequestValidator, o as parseRequest, s as validateRequest } from "./request-validator-42lY21gn.mjs";
|
|
21
|
+
import { t as HtmlRenderer } from "./html-renderer-CMGKJoIy.mjs";
|
|
22
|
+
import { i as registerFormats, n as hasFormat, r as registerFormat, t as Patterns } from "./formats-CYLwo9GJ.mjs";
|
|
23
|
+
import { a as createSSEHandler, i as SSEMarker, r as SSEHandler, t as SSEEvent } from "./sse-BMM6KTfy.mjs";
|
|
24
|
+
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--tx1PNui.mjs";
|
|
25
|
+
import "./utils/index.mjs";
|
|
26
|
+
import { flattenNestedRoutes, normalizePath } from "./router.mjs";
|
|
27
|
+
import { i as ServeResult, o as serve, r as ServeOptions, t as FetchHandler } from "./serve-B5WmhK6m.mjs";
|
|
28
|
+
import "./serve.mjs";
|
|
29
|
+
import { FormatRegistry, Type } from "@sinclair/typebox";
|
|
30
|
+
export { BaseRouteConfig, BaseServer, 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, Type, TypedHandler, TypedRoute, TypedRouteConfig, VafastError, ValidationError, ValidationResult, base64urlDecode, base64urlEncode, composeMiddleware, createHandler, createHandlerWithExtra, createRequestValidator, createRouteRegistry, createSSEHandler, createTypedRoute, createValidator, defineRoutes, del, empty, filterRoutes, flattenNestedRoutes, get, getAllRoutes, getCookie, getHeader, getLocals, getRoute, getRouteRegistry, getValidatorCacheStats, goAwait, hasFormat, html, isTypedRoute, json, normalizePath, parseAndValidateRequest, parseBody, parseCookies, parseCookiesFast, parseHeaders, parseQuery, parseQueryFast, parseRequest, patch, post, precompileSchemas, put, redirect, registerFormat, registerFormats, route, serve, setLocals, simpleHandler, stream, text, validateAllSchemas, validateFast, validateRequest, validateSchema, validateSchemaOrThrow };
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
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-B9HUUCkR.mjs";
|
|
3
|
+
import { c as text, i as json, n as html, o as redirect, s as stream, t as empty } from "./response-DXg4i_yh.mjs";
|
|
4
|
+
import { n as composeMiddleware, r as init_middleware, t as VafastError } from "./middleware-Byp3Hjae.mjs";
|
|
5
|
+
import { t as BaseServer } from "./base-server-CSkyjEaY.mjs";
|
|
6
|
+
import { a as getRoute, i as getAllRoutes, n as createRouteRegistry, o as getRouteRegistry, r as filterRoutes, t as RouteRegistry } from "./route-registry-mcTG0M-t.mjs";
|
|
7
|
+
import { t as Server } from "./server-BmPKs8oM.mjs";
|
|
8
|
+
import { t as HtmlRenderer } from "./html-renderer-CczE8mwC.mjs";
|
|
9
|
+
import { t as DependencyManager } from "./dependency-manager-Czg7Po2j.mjs";
|
|
10
|
+
import { t as ComponentServer } from "./component-server-DAbIyIPI.mjs";
|
|
11
|
+
import { r as ServerFactory, t as init_server } from "./server-Cbd3Ia51.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-CI_TZ7pO.mjs";
|
|
13
|
+
import { t as goAwait } from "./go-await-BGAGJfrB.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-BBrGePBr.mjs";
|
|
15
|
+
import { n as createHandlerWithExtra, r as simpleHandler, t as createHandler } from "./create-handler-B_pfxh3m.mjs";
|
|
16
|
+
import { n as base64urlEncode, t as base64urlDecode } from "./base64url-CwQnvZyp.mjs";
|
|
17
|
+
import { i as setLocals, n as getLocals } from "./handle-Csjtywdc.mjs";
|
|
18
|
+
import { i as validateRequest, n as parseAndValidateRequest, r as parseRequest, t as createRequestValidator } from "./request-validator-_J5HloRq.mjs";
|
|
19
|
+
import { Patterns, hasFormat, registerFormat, registerFormats } from "./utils/formats.mjs";
|
|
20
|
+
import { t as createSSEHandler } from "./sse-BT5yyLgX.mjs";
|
|
21
|
+
import "./utils/index.mjs";
|
|
22
|
+
import { n as isTypedRoute, t as createTypedRoute } from "./route-9pAVP1GC.mjs";
|
|
23
|
+
import "./types/index.mjs";
|
|
24
|
+
import "./request-CKC3Ox6M.mjs";
|
|
25
|
+
import { n as serve } from "./serve-Be6NvuQk.mjs";
|
|
26
|
+
import "./serve.mjs";
|
|
27
|
+
import { FormatRegistry, Type } from "@sinclair/typebox";
|
|
28
|
+
|
|
29
|
+
//#region src/index.ts
|
|
30
|
+
init_server();
|
|
31
|
+
init_middleware();
|
|
32
|
+
init_router();
|
|
33
|
+
registerFormats();
|
|
34
|
+
|
|
35
|
+
//#endregion
|
|
36
|
+
export { BaseServer, ComponentServer, DependencyManager, FormatRegistry, HtmlRenderer, Patterns, RouteRegistry, Server, ServerFactory, Type, VafastError, base64urlDecode, base64urlEncode, composeMiddleware, createHandler, createHandlerWithExtra, createRequestValidator, createRouteRegistry, createSSEHandler, createTypedRoute, createValidator, defineRoutes, del, empty, filterRoutes, flattenNestedRoutes, get, getAllRoutes, getCookie, getHeader, getLocals, getRoute, getRouteRegistry, getValidatorCacheStats, goAwait, hasFormat, html, isTypedRoute, json, normalizePath, parseAndValidateRequest, parseBody, parseCookies, parseCookiesFast, parseHeaders, parseQuery, parseQueryFast, parseRequest, patch, post, precompileSchemas, put, redirect, registerFormat, registerFormats, route, serve, setLocals, simpleHandler, stream, text, validateAllSchemas, validateFast, validateRequest, validateSchema, validateSchemaOrThrow };
|
|
37
|
+
//# 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 \"./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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,iBAAiB"}
|
|
@@ -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
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
//#region src/middleware/component-renderer.ts
|
|
2
|
+
/**
|
|
3
|
+
* 组件渲染中间件 - 专注 SSR
|
|
4
|
+
* 支持 Vue 和 React 的服务端渲染
|
|
5
|
+
*/
|
|
6
|
+
const renderVueSSR = async (componentImport, req, preloadedDeps) => {
|
|
7
|
+
try {
|
|
8
|
+
const { createSSRApp, renderToString } = preloadedDeps || await Promise.all([import("vue"), import("@vue/server-renderer")]).then(([vue, renderer]) => ({
|
|
9
|
+
createSSRApp: vue.createSSRApp,
|
|
10
|
+
renderToString: renderer.renderToString
|
|
11
|
+
}));
|
|
12
|
+
const componentModule = await componentImport();
|
|
13
|
+
const app = createSSRApp(componentModule.default || componentModule);
|
|
14
|
+
app.provide("routeInfo", {
|
|
15
|
+
params: req.params || {},
|
|
16
|
+
query: Object.fromEntries(new URL(req.url).searchParams),
|
|
17
|
+
pathname: new URL(req.url).pathname
|
|
18
|
+
});
|
|
19
|
+
const html = await renderToString(app);
|
|
20
|
+
return new Response(`
|
|
21
|
+
<!doctype html>
|
|
22
|
+
<html>
|
|
23
|
+
<head>
|
|
24
|
+
<meta charset="utf-8">
|
|
25
|
+
<title>Vue SSR App</title>
|
|
26
|
+
</head>
|
|
27
|
+
<body>
|
|
28
|
+
<div id="app">${html}</div>
|
|
29
|
+
<script>
|
|
30
|
+
window.__ROUTE_INFO__ = {
|
|
31
|
+
params: ${JSON.stringify(req.params || {})},
|
|
32
|
+
query: ${JSON.stringify(Object.fromEntries(new URL(req.url).searchParams))},
|
|
33
|
+
pathname: '${new URL(req.url).pathname}'
|
|
34
|
+
};
|
|
35
|
+
<\/script>
|
|
36
|
+
<script type="module" src="/client.js"><\/script>
|
|
37
|
+
</body>
|
|
38
|
+
</html>
|
|
39
|
+
`, { headers: { "Content-Type": "text/html; charset=utf-8" } });
|
|
40
|
+
} catch (error) {
|
|
41
|
+
console.error("Vue SSR 渲染失败:", error);
|
|
42
|
+
return new Response(`
|
|
43
|
+
<!doctype html>
|
|
44
|
+
<html>
|
|
45
|
+
<head><title>渲染错误</title></head>
|
|
46
|
+
<body>
|
|
47
|
+
<h1>Vue SSR 渲染失败</h1>
|
|
48
|
+
<p>错误信息: ${error instanceof Error ? error.message : "未知错误"}</p>
|
|
49
|
+
</body>
|
|
50
|
+
</html>
|
|
51
|
+
`, { status: 500 });
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
const renderReactSSR = async (componentImport, req, preloadedDeps) => {
|
|
55
|
+
try {
|
|
56
|
+
const { createElement, renderToString } = preloadedDeps || await Promise.all([import("react"), import("react-dom/server")]).then(([react, renderer]) => ({
|
|
57
|
+
createElement: react.createElement,
|
|
58
|
+
renderToString: renderer.renderToString
|
|
59
|
+
}));
|
|
60
|
+
const componentModule = await componentImport();
|
|
61
|
+
const html = renderToString(createElement(componentModule.default || componentModule, {
|
|
62
|
+
req,
|
|
63
|
+
params: req.params || {},
|
|
64
|
+
query: Object.fromEntries(new URL(req.url).searchParams)
|
|
65
|
+
}));
|
|
66
|
+
return new Response(`
|
|
67
|
+
<!doctype html>
|
|
68
|
+
<html>
|
|
69
|
+
<head>
|
|
70
|
+
<meta charset="utf-8">
|
|
71
|
+
<title>React SSR App</title>
|
|
72
|
+
</head>
|
|
73
|
+
<body>
|
|
74
|
+
<div id="root">${html}</div>
|
|
75
|
+
<script>
|
|
76
|
+
window.__ROUTE_INFO__ = {
|
|
77
|
+
params: ${JSON.stringify(req.params || {})},
|
|
78
|
+
query: ${JSON.stringify(Object.fromEntries(new URL(req.url).searchParams))},
|
|
79
|
+
pathname: '${new URL(req.url).pathname}'
|
|
80
|
+
};
|
|
81
|
+
<\/script>
|
|
82
|
+
<script type="module" src="/client.js"><\/script>
|
|
83
|
+
</body>
|
|
84
|
+
</html>
|
|
85
|
+
`, { headers: { "Content-Type": "text/html; charset=utf-8" } });
|
|
86
|
+
} catch (error) {
|
|
87
|
+
console.error("React SSR 渲染失败:", error);
|
|
88
|
+
return new Response(`
|
|
89
|
+
<!doctype html>
|
|
90
|
+
<html>
|
|
91
|
+
<head><title>渲染错误</title></head>
|
|
92
|
+
<body>
|
|
93
|
+
<h1>React SSR 渲染失败</h1>
|
|
94
|
+
<p>错误信息: ${error instanceof Error ? error.message : "未知错误"}</p>
|
|
95
|
+
</body>
|
|
96
|
+
</html>
|
|
97
|
+
`, { status: 500 });
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
const vueRenderer = (preloadedDeps) => {
|
|
101
|
+
return async (req, next) => {
|
|
102
|
+
req.renderVue = async (componentImport) => {
|
|
103
|
+
return await renderVueSSR(componentImport, req, preloadedDeps);
|
|
104
|
+
};
|
|
105
|
+
return next();
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
const reactRenderer = (preloadedDeps) => {
|
|
109
|
+
return async (req, next) => {
|
|
110
|
+
req.renderReact = async (componentImport) => {
|
|
111
|
+
return await renderReactSSR(componentImport, req, preloadedDeps);
|
|
112
|
+
};
|
|
113
|
+
return next();
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
//#endregion
|
|
118
|
+
export { reactRenderer, vueRenderer };
|
|
119
|
+
//# sourceMappingURL=component-renderer.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-renderer.mjs","names":[],"sources":["../../src/middleware/component-renderer.ts"],"sourcesContent":["/**\n * 组件渲染中间件 - 专注 SSR\n * 支持 Vue 和 React 的服务端渲染\n */\n\n// Vue SSR 渲染\nconst renderVueSSR = async (\n componentImport: () => Promise<any>,\n req: Request,\n preloadedDeps?: any,\n) => {\n try {\n // 使用预加载的依赖或动态导入\n const { createSSRApp, renderToString } =\n preloadedDeps ||\n (await Promise.all([import(\"vue\"), import(\"@vue/server-renderer\")]).then(\n ([vue, renderer]) => ({\n createSSRApp: vue.createSSRApp,\n renderToString: renderer.renderToString,\n }),\n ));\n\n const componentModule = await componentImport();\n const component = componentModule.default || componentModule;\n\n const app = createSSRApp(component);\n\n // 提供路由信息\n app.provide(\"routeInfo\", {\n params: (req as any).params || {},\n query: Object.fromEntries(new URL(req.url).searchParams),\n pathname: new URL(req.url).pathname,\n });\n\n const html = await renderToString(app);\n\n return new Response(\n `\n <!doctype html>\n <html>\n <head>\n <meta charset=\"utf-8\">\n <title>Vue SSR App</title>\n </head>\n <body>\n <div id=\"app\">${html}</div>\n <script>\n window.__ROUTE_INFO__ = {\n params: ${JSON.stringify((req as any).params || {})},\n query: ${JSON.stringify(Object.fromEntries(new URL(req.url).searchParams))},\n pathname: '${new URL(req.url).pathname}'\n };\n </script>\n <script type=\"module\" src=\"/client.js\"></script>\n </body>\n </html>\n `,\n {\n headers: { \"Content-Type\": \"text/html; charset=utf-8\" },\n },\n );\n } catch (error) {\n console.error(\"Vue SSR 渲染失败:\", error);\n return new Response(\n `\n <!doctype html>\n <html>\n <head><title>渲染错误</title></head>\n <body>\n <h1>Vue SSR 渲染失败</h1>\n <p>错误信息: ${error instanceof Error ? error.message : \"未知错误\"}</p>\n </body>\n </html>\n `,\n { status: 500 },\n );\n }\n};\n\n// React SSR 渲染\nconst renderReactSSR = async (\n componentImport: () => Promise<any>,\n req: Request,\n preloadedDeps?: any,\n) => {\n try {\n // 使用预加载的依赖或动态导入\n const { createElement, renderToString } =\n preloadedDeps ||\n (await Promise.all([import(\"react\"), import(\"react-dom/server\")]).then(\n ([react, renderer]) => ({\n createElement: react.createElement,\n renderToString: renderer.renderToString,\n }),\n ));\n\n const componentModule = await componentImport();\n const Component = componentModule.default || componentModule;\n\n const content = createElement(Component, {\n req,\n params: (req as any).params || {},\n query: Object.fromEntries(new URL(req.url).searchParams),\n });\n\n const html = renderToString(content);\n\n return new Response(\n `\n <!doctype html>\n <html>\n <head>\n <meta charset=\"utf-8\">\n <title>React SSR App</title>\n </head>\n <body>\n <div id=\"root\">${html}</div>\n <script>\n window.__ROUTE_INFO__ = {\n params: ${JSON.stringify((req as any).params || {})},\n query: ${JSON.stringify(Object.fromEntries(new URL(req.url).searchParams))},\n pathname: '${new URL(req.url).pathname}'\n };\n </script>\n <script type=\"module\" src=\"/client.js\"></script>\n </body>\n </html>\n `,\n {\n headers: { \"Content-Type\": \"text/html; charset=utf-8\" },\n },\n );\n } catch (error) {\n console.error(\"React SSR 渲染失败:\", error);\n return new Response(\n `\n <!doctype html>\n <html>\n <head><title>渲染错误</title></head>\n <body>\n <h1>React SSR 渲染失败</h1>\n <p>错误信息: ${error instanceof Error ? error.message : \"未知错误\"}</p>\n </body>\n </html>\n `,\n { status: 500 },\n );\n }\n};\n\n// Vue 组件渲染器 - 专注 SSR\nexport const vueRenderer = (preloadedDeps?: any) => {\n return async (req: Request, next: () => Promise<Response>) => {\n (req as any).renderVue = async (componentImport: () => Promise<any>) => {\n return await renderVueSSR(componentImport, req, preloadedDeps);\n };\n return next();\n };\n};\n\n// React 组件渲染器 - 专注 SSR\nexport const reactRenderer = (preloadedDeps?: any) => {\n return async (req: Request, next: () => Promise<Response>) => {\n (req as any).renderReact = async (componentImport: () => Promise<any>) => {\n return await renderReactSSR(componentImport, req, preloadedDeps);\n };\n return next();\n };\n};\n"],"mappings":";;;;;AAMA,MAAM,eAAe,OACnB,iBACA,KACA,kBACG;AACH,KAAI;EAEF,MAAM,EAAE,cAAc,mBACpB,iBACC,MAAM,QAAQ,IAAI,CAAC,OAAO,QAAQ,OAAO,wBAAwB,CAAC,CAAC,MACjE,CAAC,KAAK,eAAe;GACpB,cAAc,IAAI;GAClB,gBAAgB,SAAS;GAC1B,EACF;EAEH,MAAM,kBAAkB,MAAM,iBAAiB;EAG/C,MAAM,MAAM,aAFM,gBAAgB,WAAW,gBAEV;AAGnC,MAAI,QAAQ,aAAa;GACvB,QAAS,IAAY,UAAU,EAAE;GACjC,OAAO,OAAO,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa;GACxD,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC;GAC5B,CAAC;EAEF,MAAM,OAAO,MAAM,eAAe,IAAI;AAEtC,SAAO,IAAI,SACT;;;;;;;;0BAQoB,KAAK;;;wBAGP,KAAK,UAAW,IAAY,UAAU,EAAE,CAAC,CAAC;uBAC3C,KAAK,UAAU,OAAO,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;2BAC9D,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS;;;;;;OAO/C,EACE,SAAS,EAAE,gBAAgB,4BAA4B,EACxD,CACF;UACM,OAAO;AACd,UAAQ,MAAM,iBAAiB,MAAM;AACrC,SAAO,IAAI,SACT;;;;;;qBAMe,iBAAiB,QAAQ,MAAM,UAAU,OAAO;;;OAI/D,EAAE,QAAQ,KAAK,CAChB;;;AAKL,MAAM,iBAAiB,OACrB,iBACA,KACA,kBACG;AACH,KAAI;EAEF,MAAM,EAAE,eAAe,mBACrB,iBACC,MAAM,QAAQ,IAAI,CAAC,OAAO,UAAU,OAAO,oBAAoB,CAAC,CAAC,MAC/D,CAAC,OAAO,eAAe;GACtB,eAAe,MAAM;GACrB,gBAAgB,SAAS;GAC1B,EACF;EAEH,MAAM,kBAAkB,MAAM,iBAAiB;EAS/C,MAAM,OAAO,eANG,cAFE,gBAAgB,WAAW,iBAEJ;GACvC;GACA,QAAS,IAAY,UAAU,EAAE;GACjC,OAAO,OAAO,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa;GACzD,CAAC,CAEkC;AAEpC,SAAO,IAAI,SACT;;;;;;;;2BAQqB,KAAK;;;wBAGR,KAAK,UAAW,IAAY,UAAU,EAAE,CAAC,CAAC;uBAC3C,KAAK,UAAU,OAAO,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;2BAC9D,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS;;;;;;OAO/C,EACE,SAAS,EAAE,gBAAgB,4BAA4B,EACxD,CACF;UACM,OAAO;AACd,UAAQ,MAAM,mBAAmB,MAAM;AACvC,SAAO,IAAI,SACT;;;;;;qBAMe,iBAAiB,QAAQ,MAAM,UAAU,OAAO;;;OAI/D,EAAE,QAAQ,KAAK,CAChB;;;AAKL,MAAa,eAAe,kBAAwB;AAClD,QAAO,OAAO,KAAc,SAAkC;AAC5D,EAAC,IAAY,YAAY,OAAO,oBAAwC;AACtE,UAAO,MAAM,aAAa,iBAAiB,KAAK,cAAc;;AAEhE,SAAO,MAAM;;;AAKjB,MAAa,iBAAiB,kBAAwB;AACpD,QAAO,OAAO,KAAc,SAAkC;AAC5D,EAAC,IAAY,cAAc,OAAO,oBAAwC;AACxE,UAAO,MAAM,eAAe,iBAAiB,KAAK,cAAc;;AAElE,SAAO,MAAM"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { n as FlattenedComponentRoute, r as NestedComponentRoute, t as ComponentRoute } from "../component-route-CZawYn61.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/middleware/component-router.d.ts
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* 扁平化嵌套组件路由
|
|
@@ -11,5 +11,6 @@ declare function flattenComponentRoutes(routes: (ComponentRoute | NestedComponen
|
|
|
11
11
|
* 自动检测组件类型并应用相应的渲染器
|
|
12
12
|
*/
|
|
13
13
|
declare const componentRouter: () => (req: Request, next: () => Promise<Response>) => Promise<Response>;
|
|
14
|
-
|
|
14
|
+
//#endregion
|
|
15
15
|
export { componentRouter, flattenComponentRoutes };
|
|
16
|
+
//# sourceMappingURL=component-router.d.mts.map
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { t as __esmMin } from "./chunk-DW4-Jl94.mjs";
|
|
2
|
+
import { a as mapResponse, i as json, r as init_response } from "./response-DXg4i_yh.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/middleware.ts
|
|
5
|
+
/**
|
|
6
|
+
* 组合类型: 自动注入错误处理器进行中间件组合
|
|
7
|
+
*/
|
|
8
|
+
function composeMiddleware(middleware, finalHandler) {
|
|
9
|
+
const all = [errorHandler, ...middleware];
|
|
10
|
+
return function composedHandler(req) {
|
|
11
|
+
let i = -1;
|
|
12
|
+
const dispatch = (index) => {
|
|
13
|
+
if (index <= i) return Promise.reject(/* @__PURE__ */ new Error("next() called multiple times"));
|
|
14
|
+
i = index;
|
|
15
|
+
if (index < all.length) {
|
|
16
|
+
const mw = all[index];
|
|
17
|
+
return Promise.resolve(mw(req, () => dispatch(index + 1)));
|
|
18
|
+
}
|
|
19
|
+
return Promise.resolve(finalHandler(req)).then(mapResponse);
|
|
20
|
+
};
|
|
21
|
+
return dispatch(0);
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
var VafastError, errorHandler;
|
|
25
|
+
var init_middleware = __esmMin((() => {
|
|
26
|
+
init_response();
|
|
27
|
+
VafastError = class extends Error {
|
|
28
|
+
status;
|
|
29
|
+
type;
|
|
30
|
+
expose;
|
|
31
|
+
constructor(message, options = {}) {
|
|
32
|
+
super(message);
|
|
33
|
+
this.name = "VafastError";
|
|
34
|
+
this.status = options.status ?? 500;
|
|
35
|
+
this.type = options.type ?? "internal_error";
|
|
36
|
+
this.expose = options.expose ?? false;
|
|
37
|
+
if (options.cause) this.cause = options.cause;
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
errorHandler = async (req, next) => {
|
|
41
|
+
try {
|
|
42
|
+
return await next();
|
|
43
|
+
} catch (err) {
|
|
44
|
+
console.error("未处理的错误:", err);
|
|
45
|
+
if (err instanceof VafastError) return json({
|
|
46
|
+
error: err.type,
|
|
47
|
+
message: err.expose ? err.message : "发生了一个错误"
|
|
48
|
+
}, err.status);
|
|
49
|
+
return json({
|
|
50
|
+
error: "internal_error",
|
|
51
|
+
message: "出现了一些问题"
|
|
52
|
+
}, 500);
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
}));
|
|
56
|
+
|
|
57
|
+
//#endregion
|
|
58
|
+
export { composeMiddleware as n, init_middleware as r, VafastError as t };
|
|
59
|
+
//# sourceMappingURL=middleware-Byp3Hjae.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware-Byp3Hjae.mjs","names":[],"sources":["../src/middleware.ts"],"sourcesContent":["// src/middleware.ts\n\nimport { json, mapResponse } from \"./utils/response\";\n\nimport type { Handler, Middleware } from \"./types\";\n/** 中间件类型:使用 next() 传递给下一个处理 */\n\n/** Vafast 自定义错误类型 */\nexport class VafastError extends Error {\n status: number;\n type: string;\n expose: boolean;\n\n constructor(\n message: string,\n options: {\n status?: number;\n type?: string;\n expose?: boolean;\n cause?: unknown;\n } = {},\n ) {\n super(message);\n this.name = \"VafastError\";\n this.status = options.status ?? 500;\n this.type = options.type ?? \"internal_error\";\n this.expose = options.expose ?? false;\n if (options.cause) (this as any).cause = options.cause;\n }\n}\n\n/**\n * 组合类型: 自动注入错误处理器进行中间件组合\n */\nexport function composeMiddleware(\n middleware: Middleware[],\n finalHandler: Handler,\n): (req: Request) => Promise<Response> {\n const all = [errorHandler, ...middleware];\n\n return function composedHandler(req: Request): Promise<Response> {\n let i = -1;\n\n const dispatch = (index: number): Promise<Response> => {\n if (index <= i)\n return Promise.reject(new Error(\"next() called multiple times\"));\n i = index;\n\n // 中间件阶段\n if (index < all.length) {\n const mw = all[index];\n return Promise.resolve(mw(req, () => dispatch(index + 1)));\n }\n\n // 最终 handler - 使用 mapResponse 转换返回值\n return Promise.resolve(finalHandler(req)).then(mapResponse);\n };\n\n return dispatch(0);\n };\n}\n\n/** 默认包含的全局错误处理器 */\nconst errorHandler: Middleware = async (req, next) => {\n try {\n return await next();\n } catch (err) {\n console.error(\"未处理的错误:\", err);\n\n if (err instanceof VafastError) {\n return json(\n {\n error: err.type,\n message: err.expose ? err.message : \"发生了一个错误\",\n },\n err.status,\n );\n }\n\n return json({ error: \"internal_error\", message: \"出现了一些问题\" }, 500);\n }\n};\n"],"mappings":";;;;;;;AAkCA,SAAgB,kBACd,YACA,cACqC;CACrC,MAAM,MAAM,CAAC,cAAc,GAAG,WAAW;AAEzC,QAAO,SAAS,gBAAgB,KAAiC;EAC/D,IAAI,IAAI;EAER,MAAM,YAAY,UAAqC;AACrD,OAAI,SAAS,EACX,QAAO,QAAQ,uBAAO,IAAI,MAAM,+BAA+B,CAAC;AAClE,OAAI;AAGJ,OAAI,QAAQ,IAAI,QAAQ;IACtB,MAAM,KAAK,IAAI;AACf,WAAO,QAAQ,QAAQ,GAAG,WAAW,SAAS,QAAQ,EAAE,CAAC,CAAC;;AAI5D,UAAO,QAAQ,QAAQ,aAAa,IAAI,CAAC,CAAC,KAAK,YAAY;;AAG7D,SAAO,SAAS,EAAE;;;;;gBAxD+B;CAMxC,cAAb,cAAiC,MAAM;EACrC;EACA;EACA;EAEA,YACE,SACA,UAKI,EAAE,EACN;AACA,SAAM,QAAQ;AACd,QAAK,OAAO;AACZ,QAAK,SAAS,QAAQ,UAAU;AAChC,QAAK,OAAO,QAAQ,QAAQ;AAC5B,QAAK,SAAS,QAAQ,UAAU;AAChC,OAAI,QAAQ,MAAO,CAAC,KAAa,QAAQ,QAAQ;;;CAoC/C,eAA2B,OAAO,KAAK,SAAS;AACpD,MAAI;AACF,UAAO,MAAM,MAAM;WACZ,KAAK;AACZ,WAAQ,MAAM,WAAW,IAAI;AAE7B,OAAI,eAAe,YACjB,QAAO,KACL;IACE,OAAO,IAAI;IACX,SAAS,IAAI,SAAS,IAAI,UAAU;IACrC,EACD,IAAI,OACL;AAGH,UAAO,KAAK;IAAE,OAAO;IAAkB,SAAS;IAAW,EAAE,IAAI"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { o as Middleware, r as Handler } from "./types-DuTa8AVN.mjs";
|
|
2
|
+
import "./schema-CPQudJpE.mjs";
|
|
3
|
+
import "./index-CzItj62a.mjs";
|
|
4
|
+
|
|
5
|
+
//#region src/middleware.d.ts
|
|
6
|
+
/** 中间件类型:使用 next() 传递给下一个处理 */
|
|
7
|
+
/** Vafast 自定义错误类型 */
|
|
8
|
+
declare class VafastError extends Error {
|
|
9
|
+
status: number;
|
|
10
|
+
type: string;
|
|
11
|
+
expose: boolean;
|
|
12
|
+
constructor(message: string, options?: {
|
|
13
|
+
status?: number;
|
|
14
|
+
type?: string;
|
|
15
|
+
expose?: boolean;
|
|
16
|
+
cause?: unknown;
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 组合类型: 自动注入错误处理器进行中间件组合
|
|
21
|
+
*/
|
|
22
|
+
declare function composeMiddleware(middleware: Middleware[], finalHandler: Handler): (req: Request) => Promise<Response>;
|
|
23
|
+
//#endregion
|
|
24
|
+
export { VafastError, composeMiddleware };
|
|
25
|
+
//# sourceMappingURL=middleware.d.mts.map
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import "../schema-CPQudJpE.mjs";
|
|
2
|
+
import "../index-CzItj62a.mjs";
|
|
3
|
+
import "../base-server-DvGS6ATg.mjs";
|
|
4
|
+
import "../server-D9gjszHe.mjs";
|
|
5
|
+
import "../component-server-CGzU4bss.mjs";
|
|
6
|
+
import "../index-Ci52vt55.mjs";
|
|
7
|
+
import { AggregatedMetrics, BaseMetrics, MonitoringConfig, MonitoringEvent, PerformanceMetrics, PerformanceReport } from "./types.mjs";
|
|
8
|
+
import { MonitoredServer, NativeMonitoringConfig, NativeMonitoringMetrics, createMonitoredServer, withMonitoring } from "./native-monitor.mjs";
|
|
9
|
+
|
|
10
|
+
//#region src/monitoring/index.d.ts
|
|
11
|
+
declare const defaultMonitoringConfig: {
|
|
12
|
+
enabled: boolean;
|
|
13
|
+
console: boolean;
|
|
14
|
+
slowThreshold: number;
|
|
15
|
+
errorThreshold: number;
|
|
16
|
+
tags: {
|
|
17
|
+
framework: string;
|
|
18
|
+
version: string;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
declare function createMonitoringConfig(config?: Partial<typeof defaultMonitoringConfig>): {
|
|
22
|
+
enabled: boolean;
|
|
23
|
+
console: boolean;
|
|
24
|
+
slowThreshold: number;
|
|
25
|
+
errorThreshold: number;
|
|
26
|
+
tags: {
|
|
27
|
+
framework: string;
|
|
28
|
+
version: string;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
//#endregion
|
|
32
|
+
export { AggregatedMetrics, BaseMetrics, MonitoredServer, MonitoringConfig, MonitoringEvent, NativeMonitoringConfig, NativeMonitoringMetrics, PerformanceMetrics, PerformanceReport, createMonitoredServer, createMonitoringConfig, defaultMonitoringConfig, withMonitoring };
|
|
33
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import "../dependency-manager-Czg7Po2j.mjs";
|
|
2
|
+
import "../component-server-DAbIyIPI.mjs";
|
|
3
|
+
import "../server-Cbd3Ia51.mjs";
|
|
4
|
+
import "./types.mjs";
|
|
5
|
+
import { createMonitoredServer, withMonitoring } from "./native-monitor.mjs";
|
|
6
|
+
|
|
7
|
+
//#region src/monitoring/index.ts
|
|
8
|
+
const defaultMonitoringConfig = {
|
|
9
|
+
enabled: true,
|
|
10
|
+
console: true,
|
|
11
|
+
slowThreshold: 1e3,
|
|
12
|
+
errorThreshold: .05,
|
|
13
|
+
tags: {
|
|
14
|
+
framework: "vafast",
|
|
15
|
+
version: "2.0.0"
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
function createMonitoringConfig(config = {}) {
|
|
19
|
+
return {
|
|
20
|
+
...defaultMonitoringConfig,
|
|
21
|
+
...config
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
//#endregion
|
|
26
|
+
export { createMonitoredServer, createMonitoringConfig, defaultMonitoringConfig, withMonitoring };
|
|
27
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/monitoring/index.ts"],"sourcesContent":["/**\n * 原生监控系统入口\n *\n * @author Framework Team\n * @version 2.0.0\n * @license MIT\n */\n\nexport * from \"./types\";\nexport * from \"./native-monitor\";\n\n// 默认监控配置\nexport const defaultMonitoringConfig = {\n enabled: true,\n console: true,\n slowThreshold: 1000, // 1秒\n errorThreshold: 0.05, // 5%\n tags: {\n framework: \"vafast\",\n version: \"2.0.0\",\n },\n};\n\n// 创建监控配置\nexport function createMonitoringConfig(\n config: Partial<typeof defaultMonitoringConfig> = {},\n) {\n return { ...defaultMonitoringConfig, ...config };\n}\n"],"mappings":";;;;;;;AAYA,MAAa,0BAA0B;CACrC,SAAS;CACT,SAAS;CACT,eAAe;CACf,gBAAgB;CAChB,MAAM;EACJ,WAAW;EACX,SAAS;EACV;CACF;AAGD,SAAgB,uBACd,SAAkD,EAAE,EACpD;AACA,QAAO;EAAE,GAAG;EAAyB,GAAG;EAAQ"}
|