vafast 0.4.6 → 0.4.8
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 +43 -8
- package/dist/base-server-B7MYJNsl.mjs +112 -0
- package/dist/{base-server-DMhpmq5v.mjs.map → base-server-B7MYJNsl.mjs.map} +1 -1
- package/dist/{base-server-CtA1bZSg.d.mts → base-server-DLxtulAO.d.mts} +2 -2
- package/dist/{base64url-DUtluDF0.mjs → base64url-C2zopQdH.mjs} +1 -1
- package/dist/{base64url-DUtluDF0.mjs.map → base64url-C2zopQdH.mjs.map} +1 -1
- package/dist/{base64url-0N9uQPjZ.d.mts → base64url-Dwi2Afhc.d.mts} +1 -1
- package/dist/{component-route-DF5feXJI.d.mts → component-route-nrrO0iSI.d.mts} +2 -2
- package/dist/{component-router-uSylkByf.mjs → component-router-RwPL20vN.mjs} +10 -11
- package/dist/{component-router-uSylkByf.mjs.map → component-router-RwPL20vN.mjs.map} +1 -1
- package/dist/component-server-DomPJ_7S.mjs +119 -0
- package/dist/{component-server-DIgykV0F.mjs.map → component-server-DomPJ_7S.mjs.map} +1 -1
- package/dist/{component-server-DvcPVnL4.d.mts → component-server-JqpDC7wy.d.mts} +4 -4
- package/dist/{create-handler-DRcJRkx9.d.mts → create-handler-DKw-sQOV.d.mts} +2 -2
- package/dist/{create-handler-IzOE24L5.mjs → create-handler-RconAcAB.mjs} +5 -6
- package/dist/{create-handler-IzOE24L5.mjs.map → create-handler-RconAcAB.mjs.map} +1 -1
- package/dist/defineRoute.d.mts +3 -3
- package/dist/{dependency-manager-C_qZvkaw.d.mts → dependency-manager-C3_7ic4h.d.mts} +1 -1
- package/dist/dependency-manager-DCmh7xFc.mjs +60 -0
- package/dist/{dependency-manager-BpN2YufZ.mjs.map → dependency-manager-DCmh7xFc.mjs.map} +1 -1
- package/dist/{formats-CYLwo9GJ.d.mts → formats-Dk-DSBY4.d.mts} +1 -1
- package/dist/{go-await-2Pzj4snS.mjs → go-await-C4ZdEUwY.mjs} +1 -1
- package/dist/{go-await-2Pzj4snS.mjs.map → go-await-C4ZdEUwY.mjs.map} +1 -1
- package/dist/{go-await-DRItVwwh.d.mts → go-await-DL1A_-4X.d.mts} +1 -1
- package/dist/{handle-D0TFoOiX.d.mts → handle-BhR3oyky.d.mts} +1 -1
- package/dist/{handle-s4V-E2RE.mjs → handle-BxJwSvV0.mjs} +2 -2
- package/dist/{handle-s4V-E2RE.mjs.map → handle-BxJwSvV0.mjs.map} +1 -1
- package/dist/{html-renderer-CMGKJoIy.d.mts → html-renderer-CfKK2BrP.d.mts} +1 -1
- package/dist/{html-renderer-CuakkPIt.mjs → html-renderer-DTtJ_Yic.mjs} +26 -27
- package/dist/{html-renderer-CuakkPIt.mjs.map → html-renderer-DTtJ_Yic.mjs.map} +1 -1
- package/dist/{index-CdOYxwDQ.d.mts → index-CEfOqqvd.d.mts} +5 -5
- package/dist/index.d.mts +24 -24
- package/dist/index.mjs +20 -23
- package/dist/index.mjs.map +1 -1
- package/dist/middleware/component-router.d.mts +1 -1
- package/dist/middleware/component-router.mjs +1 -2
- package/dist/{middleware-CV5o-4wk.mjs → middleware-CewKbtb4.mjs} +51 -58
- package/dist/{middleware-CV5o-4wk.mjs.map → middleware-CewKbtb4.mjs.map} +1 -1
- package/dist/{middleware-5PjaxPMA.d.mts → middleware-KXEoefLX.d.mts} +2 -2
- package/dist/middleware.d.mts +3 -3
- package/dist/middleware.mjs +1 -2
- package/dist/monitoring/index.d.mts +8 -33
- package/dist/monitoring/index.mjs +1 -27
- package/dist/monitoring/native-monitor.d.mts +148 -27
- package/dist/monitoring/native-monitor.mjs +320 -116
- package/dist/monitoring/native-monitor.mjs.map +1 -1
- package/dist/node-server/index.d.mts +1 -1
- package/dist/node-server/index.mjs +3 -3
- package/dist/node-server/request.mjs +1 -1
- package/dist/node-server/response.mjs +1 -1
- package/dist/node-server/serve.d.mts +1 -1
- package/dist/node-server/serve.mjs +2 -2
- package/dist/{parsers-7lvt3Oss.d.mts → parsers-BerGr2_q.d.mts} +1 -1
- package/dist/{parsers-BQ63b0YE.mjs → parsers-DpH_mD0H.mjs} +1 -1
- package/dist/{parsers-BQ63b0YE.mjs.map → parsers-DpH_mD0H.mjs.map} +1 -1
- package/dist/path-matcher-CGczAIl_.mjs +61 -0
- package/dist/{path-matcher-BNaaJgI3.mjs.map → path-matcher-CGczAIl_.mjs.map} +1 -1
- package/dist/radix-tree-qqSjnVXF.mjs +163 -0
- package/dist/{radix-tree-Qxr-QpCx.mjs.map → radix-tree-qqSjnVXF.mjs.map} +1 -1
- package/dist/{request-B886yCvG.mjs → request-B-Nct5f7.mjs} +1 -1
- package/dist/{request-B886yCvG.mjs.map → request-B-Nct5f7.mjs.map} +1 -1
- package/dist/{request-validator-DLFtm4uV.mjs → request-validator-Bz9X48FX.mjs} +3 -3
- package/dist/{request-validator-DLFtm4uV.mjs.map → request-validator-Bz9X48FX.mjs.map} +1 -1
- package/dist/{request-validator-42lY21gn.d.mts → request-validator-Coo8dI-p.d.mts} +2 -2
- package/dist/{response-CxYf6Ep3.d.mts → response-BMfdEcTm.d.mts} +2 -2
- package/dist/{response-30WnzABq.mjs → response-BnkYA4pj.mjs} +1 -1
- package/dist/{response-30WnzABq.mjs.map → response-BnkYA4pj.mjs.map} +1 -1
- package/dist/{route-CUbNpSwz.d.mts → route-6A7umH7b.d.mts} +2 -2
- package/dist/{route-B3ONOzxQ.mjs → route-Ds53PR4M.mjs} +1 -1
- package/dist/{route-B3ONOzxQ.mjs.map → route-Ds53PR4M.mjs.map} +1 -1
- package/dist/{route-registry-CYD7m6QP.d.mts → route-registry-CmABJA2V.d.mts} +2 -2
- package/dist/route-registry-emTmRrWQ.mjs +226 -0
- package/dist/{route-registry-BVvbghgH.mjs.map → route-registry-emTmRrWQ.mjs.map} +1 -1
- package/dist/router/index.d.mts +2 -2
- package/dist/router/index.mjs +3 -9
- package/dist/router/radix-tree.d.mts +3 -3
- package/dist/router/radix-tree.mjs +1 -2
- package/dist/{router-B9HUUCkR.mjs → router-xWzwz_1a.mjs} +2 -5
- package/dist/{router-B9HUUCkR.mjs.map → router-xWzwz_1a.mjs.map} +1 -1
- package/dist/router.d.mts +3 -3
- package/dist/router.mjs +1 -2
- package/dist/{schema-DOKg31ZX.d.mts → schema-B6DFN5c2.d.mts} +1 -1
- package/dist/{serve-DgWBnexE.mjs → serve-48LEIkPa.mjs} +3 -3
- package/dist/{serve-DgWBnexE.mjs.map → serve-48LEIkPa.mjs.map} +1 -1
- package/dist/{serve-B5WmhK6m.d.mts → serve-AG80VaIr.d.mts} +1 -1
- package/dist/serve.d.mts +1 -1
- package/dist/serve.mjs +2 -2
- package/dist/server/base-server.d.mts +3 -3
- package/dist/server/base-server.mjs +1 -2
- package/dist/server/component-server.d.mts +4 -4
- package/dist/server/component-server.mjs +2 -3
- package/dist/server/index.d.mts +6 -6
- package/dist/server/index.mjs +6 -7
- package/dist/server/server-factory.d.mts +6 -6
- package/dist/server/server-factory.mjs +5 -6
- package/dist/server/server.d.mts +4 -4
- package/dist/server/server.mjs +2 -3
- package/dist/server-C75o1b-a.mjs +70 -0
- package/dist/server-C75o1b-a.mjs.map +1 -0
- package/dist/{server-CWIZP6nb.d.mts → server-DGA3dd5s.d.mts} +3 -3
- package/dist/server-L_FNwdap.mjs +137 -0
- package/dist/{server-C3yoZXNs.mjs.map → server-L_FNwdap.mjs.map} +1 -1
- package/dist/{sse-BDIptC85.d.mts → sse-BgLhEo43.d.mts} +2 -2
- package/dist/{sse-CCVfFW6s.mjs → sse-CBl-szg1.mjs} +3 -3
- package/dist/{sse-CCVfFW6s.mjs.map → sse-CBl-szg1.mjs.map} +1 -1
- package/dist/types/component-route.d.mts +1 -1
- package/dist/types/index.d.mts +5 -5
- package/dist/types/index.mjs +1 -1
- package/dist/types/route.d.mts +1 -1
- package/dist/types/route.mjs +1 -1
- package/dist/types/schema.d.mts +1 -1
- package/dist/types/types.d.mts +1 -1
- package/dist/{types-mpeSaHdI.d.mts → types-D1PUFkda.d.mts} +1 -1
- package/dist/utils/base64url.d.mts +1 -1
- package/dist/utils/base64url.mjs +1 -1
- package/dist/utils/create-handler.d.mts +2 -2
- package/dist/utils/create-handler.mjs +4 -4
- package/dist/utils/dependency-manager.d.mts +1 -1
- package/dist/utils/dependency-manager.mjs +1 -2
- package/dist/utils/formats.d.mts +1 -1
- package/dist/utils/go-await.d.mts +1 -1
- package/dist/utils/go-await.mjs +1 -1
- package/dist/utils/handle.d.mts +1 -1
- package/dist/utils/handle.mjs +2 -2
- package/dist/utils/html-renderer.d.mts +1 -1
- package/dist/utils/html-renderer.mjs +1 -2
- package/dist/utils/index.d.mts +16 -16
- package/dist/utils/index.mjs +13 -21
- package/dist/utils/parsers.d.mts +1 -1
- package/dist/utils/parsers.mjs +1 -1
- package/dist/utils/path-matcher.mjs +1 -2
- package/dist/utils/request-validator.d.mts +2 -2
- package/dist/utils/request-validator.mjs +3 -3
- package/dist/utils/response.d.mts +4 -4
- package/dist/utils/response.mjs +1 -2
- package/dist/utils/route-registry.d.mts +3 -3
- package/dist/utils/route-registry.mjs +1 -2
- package/dist/utils/sse.d.mts +2 -2
- package/dist/utils/sse.mjs +3 -3
- package/dist/utils/validators/validators.d.mts +1 -1
- package/dist/utils/validators/validators.mjs +1 -1
- package/dist/{validators-CPmnj_y9.d.mts → validators-Ch71zkT8.d.mts} +1 -1
- package/dist/{validators-WXQ49LcR.mjs → validators-DBkyw6BG.mjs} +1 -1
- package/dist/{validators-WXQ49LcR.mjs.map → validators-DBkyw6BG.mjs.map} +1 -1
- package/package.json +6 -1
- package/dist/base-server-DMhpmq5v.mjs +0 -113
- package/dist/chunk-DW4-Jl94.mjs +0 -37
- package/dist/component-server-DIgykV0F.mjs +0 -124
- package/dist/dependency-manager-BpN2YufZ.mjs +0 -61
- package/dist/monitoring/index.mjs.map +0 -1
- package/dist/monitoring/types.d.mts +0 -150
- package/dist/path-matcher-BNaaJgI3.mjs +0 -62
- package/dist/radix-tree-Qxr-QpCx.mjs +0 -157
- package/dist/route-registry-BVvbghgH.mjs +0 -225
- package/dist/router/index.mjs.map +0 -1
- package/dist/schema-CflsMJuG.mjs +0 -1
- package/dist/server-BttM6Ssc.mjs +0 -88
- package/dist/server-BttM6Ssc.mjs.map +0 -1
- package/dist/server-C3yoZXNs.mjs +0 -136
- package/dist/utils/index.mjs.map +0 -1
- /package/dist/{component-route-BKUFoJ5P.mjs → component-route-DNgAj6VC.mjs} +0 -0
- /package/dist/{index-CTHojwxd.d.mts → index-CREkvfw9.d.mts} +0 -0
- /package/dist/{monitoring/types.mjs → schema-1fwiv7cm.mjs} +0 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
//#region src/utils/dependency-manager.ts
|
|
2
|
+
/**
|
|
3
|
+
* 依赖管理器
|
|
4
|
+
* 负责按需加载和管理框架依赖
|
|
5
|
+
*/
|
|
6
|
+
var DependencyManager = class {
|
|
7
|
+
dependencyCache = /* @__PURE__ */ new Map();
|
|
8
|
+
/**
|
|
9
|
+
* 按需获取框架依赖
|
|
10
|
+
*/
|
|
11
|
+
async getFrameworkDeps(framework) {
|
|
12
|
+
if (this.dependencyCache.has(framework)) return this.dependencyCache.get(framework);
|
|
13
|
+
console.log(`📦 按需加载 ${framework} 依赖...`);
|
|
14
|
+
try {
|
|
15
|
+
let deps;
|
|
16
|
+
switch (framework) {
|
|
17
|
+
case "vue":
|
|
18
|
+
deps = await Promise.all([import("vue"), import("@vue/server-renderer")]);
|
|
19
|
+
break;
|
|
20
|
+
case "react":
|
|
21
|
+
deps = await Promise.all([import("react"), import("react-dom/server")]);
|
|
22
|
+
break;
|
|
23
|
+
default: throw new Error(`不支持的框架: ${framework}`);
|
|
24
|
+
}
|
|
25
|
+
this.dependencyCache.set(framework, deps);
|
|
26
|
+
console.log(`✅ ${framework} 依赖加载完成`);
|
|
27
|
+
return deps;
|
|
28
|
+
} catch (error) {
|
|
29
|
+
console.error(`❌ ${framework} 依赖加载失败:`, error);
|
|
30
|
+
throw error;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* 检测组件类型
|
|
35
|
+
*/
|
|
36
|
+
detectComponentType(component) {
|
|
37
|
+
if (component.render && typeof component.render === "function") return "vue";
|
|
38
|
+
if (component.$$typeof) return "react";
|
|
39
|
+
return "vue";
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* 清除缓存
|
|
43
|
+
*/
|
|
44
|
+
clearCache() {
|
|
45
|
+
this.dependencyCache.clear();
|
|
46
|
+
console.log("🧹 依赖缓存已清除");
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* 获取缓存状态
|
|
50
|
+
*/
|
|
51
|
+
getCacheStatus() {
|
|
52
|
+
const status = {};
|
|
53
|
+
for (const [framework] of this.dependencyCache) status[framework] = true;
|
|
54
|
+
return status;
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
//#endregion
|
|
59
|
+
export { DependencyManager as t };
|
|
60
|
+
//# sourceMappingURL=dependency-manager-DCmh7xFc.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-manager-
|
|
1
|
+
{"version":3,"file":"dependency-manager-DCmh7xFc.mjs","names":[],"sources":["../src/utils/dependency-manager.ts"],"sourcesContent":["/**\n * 依赖管理器\n * 负责按需加载和管理框架依赖\n */\nexport class DependencyManager {\n private dependencyCache = new Map<string, any>();\n\n /**\n * 按需获取框架依赖\n */\n async getFrameworkDeps(framework: \"vue\" | \"react\") {\n if (this.dependencyCache.has(framework)) {\n return this.dependencyCache.get(framework);\n }\n\n console.log(`📦 按需加载 ${framework} 依赖...`);\n\n try {\n let deps;\n switch (framework) {\n case \"vue\":\n deps = await Promise.all([\n import(\"vue\"),\n import(\"@vue/server-renderer\"),\n ]);\n break;\n case \"react\":\n deps = await Promise.all([\n import(\"react\"),\n import(\"react-dom/server\"),\n ]);\n break;\n default:\n throw new Error(`不支持的框架: ${framework}`);\n }\n\n this.dependencyCache.set(framework, deps);\n console.log(`✅ ${framework} 依赖加载完成`);\n return deps;\n } catch (error) {\n console.error(`❌ ${framework} 依赖加载失败:`, error);\n throw error;\n }\n }\n\n /**\n * 检测组件类型\n */\n detectComponentType(component: any): \"vue\" | \"react\" {\n // 简单的组件类型检测\n if (component.render && typeof component.render === \"function\") {\n return \"vue\";\n }\n if (component.$$typeof) {\n return \"react\";\n }\n // 默认使用 Vue\n return \"vue\";\n }\n\n /**\n * 清除缓存\n */\n clearCache(): void {\n this.dependencyCache.clear();\n console.log(\"🧹 依赖缓存已清除\");\n }\n\n /**\n * 获取缓存状态\n */\n getCacheStatus(): Record<string, boolean> {\n const status: Record<string, boolean> = {};\n for (const [framework] of this.dependencyCache) {\n status[framework] = true;\n }\n return status;\n }\n}\n"],"mappings":";;;;;AAIA,IAAa,oBAAb,MAA+B;CAC7B,AAAQ,kCAAkB,IAAI,KAAkB;;;;CAKhD,MAAM,iBAAiB,WAA4B;AACjD,MAAI,KAAK,gBAAgB,IAAI,UAAU,CACrC,QAAO,KAAK,gBAAgB,IAAI,UAAU;AAG5C,UAAQ,IAAI,WAAW,UAAU,QAAQ;AAEzC,MAAI;GACF,IAAI;AACJ,WAAQ,WAAR;IACE,KAAK;AACH,YAAO,MAAM,QAAQ,IAAI,CACvB,OAAO,QACP,OAAO,wBACR,CAAC;AACF;IACF,KAAK;AACH,YAAO,MAAM,QAAQ,IAAI,CACvB,OAAO,UACP,OAAO,oBACR,CAAC;AACF;IACF,QACE,OAAM,IAAI,MAAM,WAAW,YAAY;;AAG3C,QAAK,gBAAgB,IAAI,WAAW,KAAK;AACzC,WAAQ,IAAI,KAAK,UAAU,SAAS;AACpC,UAAO;WACA,OAAO;AACd,WAAQ,MAAM,KAAK,UAAU,WAAW,MAAM;AAC9C,SAAM;;;;;;CAOV,oBAAoB,WAAiC;AAEnD,MAAI,UAAU,UAAU,OAAO,UAAU,WAAW,WAClD,QAAO;AAET,MAAI,UAAU,SACZ,QAAO;AAGT,SAAO;;;;;CAMT,aAAmB;AACjB,OAAK,gBAAgB,OAAO;AAC5B,UAAQ,IAAI,aAAa;;;;;CAM3B,iBAA0C;EACxC,MAAM,SAAkC,EAAE;AAC1C,OAAK,MAAM,CAAC,cAAc,KAAK,gBAC7B,QAAO,aAAa;AAEtB,SAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"go-await-
|
|
1
|
+
{"version":3,"file":"go-await-C4ZdEUwY.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"}
|
|
@@ -12,4 +12,4 @@ declare function setLocals<T extends object>(req: Request, extras: T): void;
|
|
|
12
12
|
declare function getLocals<T extends object>(req: Request): T;
|
|
13
13
|
//#endregion
|
|
14
14
|
export { setLocals as i, getLocals as n, setCookie as r, getCookie as t };
|
|
15
|
-
//# sourceMappingURL=handle-
|
|
15
|
+
//# sourceMappingURL=handle-BhR3oyky.d.mts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as parseCookies } from "./parsers-
|
|
1
|
+
import { a as parseCookies } from "./parsers-DpH_mD0H.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/utils/handle.ts
|
|
4
4
|
/** 获取单个 Cookie 值 */
|
|
@@ -27,4 +27,4 @@ function getLocals(req) {
|
|
|
27
27
|
|
|
28
28
|
//#endregion
|
|
29
29
|
export { setLocals as i, getLocals as n, setCookie as r, getCookie as t };
|
|
30
|
-
//# sourceMappingURL=handle-
|
|
30
|
+
//# sourceMappingURL=handle-BxJwSvV0.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle-
|
|
1
|
+
{"version":3,"file":"handle-BxJwSvV0.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,14 +1,14 @@
|
|
|
1
|
-
import { t as __esmMin } from "./chunk-DW4-Jl94.mjs";
|
|
2
|
-
|
|
3
1
|
//#region src/utils/html-renderer.ts
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
2
|
+
/**
|
|
3
|
+
* HTML渲染工具类
|
|
4
|
+
* 提供统一的HTML模板生成功能
|
|
5
|
+
*/
|
|
6
|
+
var HtmlRenderer = class {
|
|
7
|
+
/**
|
|
8
|
+
* 生成基础HTML模板
|
|
9
|
+
*/
|
|
10
|
+
static generateBaseHtml(content, context, clientScriptPath = "/client.js") {
|
|
11
|
+
return `
|
|
12
12
|
<!doctype html>
|
|
13
13
|
<html>
|
|
14
14
|
<head>
|
|
@@ -29,18 +29,18 @@ var init_html_renderer = __esmMin((() => {
|
|
|
29
29
|
</body>
|
|
30
30
|
</html>
|
|
31
31
|
`;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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 `
|
|
44
44
|
<!doctype html>
|
|
45
45
|
<html>
|
|
46
46
|
<head>
|
|
@@ -61,10 +61,9 @@ var init_html_renderer = __esmMin((() => {
|
|
|
61
61
|
</body>
|
|
62
62
|
</html>
|
|
63
63
|
`;
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}));
|
|
64
|
+
}
|
|
65
|
+
};
|
|
67
66
|
|
|
68
67
|
//#endregion
|
|
69
|
-
export {
|
|
70
|
-
//# sourceMappingURL=html-renderer-
|
|
68
|
+
export { HtmlRenderer as t };
|
|
69
|
+
//# sourceMappingURL=html-renderer-DTtJ_Yic.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-renderer-
|
|
1
|
+
{"version":3,"file":"html-renderer-DTtJ_Yic.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":";;;;;AAIA,IAAa,eAAb,MAA0B;;;;CAIxB,OAAO,iBACL,SACA,SACA,mBAA2B,cACnB;AACR,SAAO;;;;;;;;;0BASe,QAAQ;;;wBAGV,KAAK,UAAU,QAAQ,UAAU,EAAE,CAAC,CAAC;uBACtC,KAAK,UAAU,QAAQ,SAAS,EAAE,CAAC,CAAC;2BAChC,QAAQ,SAAS;;;uCAGL,iBAAiB;;;;;;;;CAStD,OAAO,gBACL,SACA,SACA,mBAA2B,cACnB;AACR,SAAO,KAAK,iBAAiB,SAAS,SAAS,iBAAiB;;;;;CAMlE,OAAO,kBACL,SACA,SACA,mBAA2B,cACnB;AACR,SAAO;;;;;;;;;2BASgB,QAAQ;;;wBAGX,KAAK,UAAU,QAAQ,UAAU,EAAE,CAAC,CAAC;uBACtC,KAAK,UAAU,QAAQ,SAAS,EAAE,CAAC,CAAC;2BAChC,QAAQ,SAAS;;;uCAGL,iBAAiB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { l as Route, s as NestedRoute } from "./types-
|
|
2
|
-
import { r as NestedComponentRoute, t as ComponentRoute } from "./component-route-
|
|
3
|
-
import { t as Server } from "./server-
|
|
4
|
-
import { t as ComponentServer } from "./component-server-
|
|
1
|
+
import { l as Route, s as NestedRoute } from "./types-D1PUFkda.mjs";
|
|
2
|
+
import { r as NestedComponentRoute, t as ComponentRoute } from "./component-route-nrrO0iSI.mjs";
|
|
3
|
+
import { t as Server } from "./server-DGA3dd5s.mjs";
|
|
4
|
+
import { t as ComponentServer } from "./component-server-JqpDC7wy.mjs";
|
|
5
5
|
|
|
6
6
|
//#region src/server/server-factory.d.ts
|
|
7
7
|
|
|
@@ -45,4 +45,4 @@ declare class ServerFactory {
|
|
|
45
45
|
}
|
|
46
46
|
//#endregion
|
|
47
47
|
export { ServerFactory as t };
|
|
48
|
-
//# sourceMappingURL=index-
|
|
48
|
+
//# sourceMappingURL=index-CEfOqqvd.d.mts.map
|
package/dist/index.d.mts
CHANGED
|
@@ -1,30 +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-
|
|
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-
|
|
3
|
-
import { n as FlattenedComponentRoute, r as NestedComponentRoute, t as ComponentRoute } from "./component-route-
|
|
4
|
-
import { a as TypedHandler, i as RouteSchema, n as HandlerContextWithExtra, o as TypedRouteConfig, r as InferSchema, t as HandlerContext } from "./schema-
|
|
5
|
-
import "./index-
|
|
6
|
-
import { i as simpleHandler, n as createHandler, r as createHandlerWithExtra, t as InferableHandler } from "./create-handler-
|
|
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-D1PUFkda.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-6A7umH7b.mjs";
|
|
3
|
+
import { n as FlattenedComponentRoute, r as NestedComponentRoute, t as ComponentRoute } from "./component-route-nrrO0iSI.mjs";
|
|
4
|
+
import { a as TypedHandler, i as RouteSchema, n as HandlerContextWithExtra, o as TypedRouteConfig, r as InferSchema, t as HandlerContext } from "./schema-B6DFN5c2.mjs";
|
|
5
|
+
import "./index-CREkvfw9.mjs";
|
|
6
|
+
import { i as simpleHandler, n as createHandler, r as createHandlerWithExtra, t as InferableHandler } from "./create-handler-DKw-sQOV.mjs";
|
|
7
7
|
import { InferableRoute, RouteDefinition, defineRoutes, del, get, patch, post, put, route } from "./defineRoute.mjs";
|
|
8
|
-
import { t as BaseServer } from "./base-server-
|
|
9
|
-
import { t as Server } from "./server-
|
|
10
|
-
import { t as DependencyManager } from "./dependency-manager-
|
|
11
|
-
import { t as ComponentServer } from "./component-server-
|
|
12
|
-
import { t as ServerFactory } from "./index-
|
|
13
|
-
import { n as composeMiddleware, t as VafastError } from "./middleware-
|
|
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-
|
|
15
|
-
import { c as text, i as json, n as err, o as redirect, r as html, s as stream, t as empty } from "./response-
|
|
16
|
-
import { t as goAwait } from "./go-await-
|
|
17
|
-
import { n as base64urlEncode, t as base64urlDecode } from "./base64url-
|
|
18
|
-
import { i as setLocals, n as getLocals } from "./handle-
|
|
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-
|
|
20
|
-
import { a as parseAndValidateRequest, i as createRequestValidator, o as parseRequest, s as validateRequest } from "./request-validator-
|
|
21
|
-
import { t as HtmlRenderer } from "./html-renderer-
|
|
22
|
-
import { i as registerFormats, n as hasFormat, r as registerFormat, t as Patterns } from "./formats-
|
|
23
|
-
import { a as createSSEHandler, i as SSEMarker, r as SSEHandler, t as SSEEvent } from "./sse-
|
|
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-
|
|
8
|
+
import { t as BaseServer } from "./base-server-DLxtulAO.mjs";
|
|
9
|
+
import { t as Server } from "./server-DGA3dd5s.mjs";
|
|
10
|
+
import { t as DependencyManager } from "./dependency-manager-C3_7ic4h.mjs";
|
|
11
|
+
import { t as ComponentServer } from "./component-server-JqpDC7wy.mjs";
|
|
12
|
+
import { t as ServerFactory } from "./index-CEfOqqvd.mjs";
|
|
13
|
+
import { n as composeMiddleware, t as VafastError } from "./middleware-KXEoefLX.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-BerGr2_q.mjs";
|
|
15
|
+
import { c as text, i as json, n as err, o as redirect, r as html, s as stream, t as empty } from "./response-BMfdEcTm.mjs";
|
|
16
|
+
import { t as goAwait } from "./go-await-DL1A_-4X.mjs";
|
|
17
|
+
import { n as base64urlEncode, t as base64urlDecode } from "./base64url-Dwi2Afhc.mjs";
|
|
18
|
+
import { i as setLocals, n as getLocals } from "./handle-BhR3oyky.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-Ch71zkT8.mjs";
|
|
20
|
+
import { a as parseAndValidateRequest, i as createRequestValidator, o as parseRequest, s as validateRequest } from "./request-validator-Coo8dI-p.mjs";
|
|
21
|
+
import { t as HtmlRenderer } from "./html-renderer-CfKK2BrP.mjs";
|
|
22
|
+
import { i as registerFormats, n as hasFormat, r as registerFormat, t as Patterns } from "./formats-Dk-DSBY4.mjs";
|
|
23
|
+
import { a as createSSEHandler, i as SSEMarker, r as SSEHandler, t as SSEEvent } from "./sse-BgLhEo43.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-CmABJA2V.mjs";
|
|
25
25
|
import "./utils/index.mjs";
|
|
26
26
|
import { flattenNestedRoutes, normalizePath } from "./router.mjs";
|
|
27
|
-
import { i as ServeResult, o as serve, r as ServeOptions, t as FetchHandler } from "./serve-
|
|
27
|
+
import { i as ServeResult, o as serve, r as ServeOptions, t as FetchHandler } from "./serve-AG80VaIr.mjs";
|
|
28
28
|
import "./serve.mjs";
|
|
29
29
|
import { FormatRegistry, Type } from "@sinclair/typebox";
|
|
30
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, err, 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
CHANGED
|
@@ -1,34 +1,31 @@
|
|
|
1
1
|
import { defineRoutes, del, get, patch, post, put, route } from "./defineRoute.mjs";
|
|
2
|
-
import { n as
|
|
3
|
-
import { a as
|
|
4
|
-
import { t as BaseServer } from "./base-server-
|
|
5
|
-
import { a as getRoute, i as getAllRoutes, n as createRouteRegistry, o as getRouteRegistry, r as filterRoutes, t as RouteRegistry } from "./route-registry-
|
|
6
|
-
import { t as Server } from "./server-
|
|
7
|
-
import { t as HtmlRenderer } from "./html-renderer-
|
|
8
|
-
import { t as DependencyManager } from "./dependency-manager-
|
|
9
|
-
import { t as ComponentServer } from "./component-server-
|
|
10
|
-
import {
|
|
11
|
-
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-
|
|
12
|
-
import { t as goAwait } from "./go-await-
|
|
13
|
-
import { a as validateAllSchemas, c as validateSchemaOrThrow, i as precompileSchemas, n as createValidator, o as validateFast, r as getValidatorCacheStats, s as validateSchema } from "./validators-
|
|
14
|
-
import { n as createHandlerWithExtra, r as simpleHandler, t as createHandler } from "./create-handler-
|
|
15
|
-
import { n as base64urlEncode, t as base64urlDecode } from "./base64url-
|
|
16
|
-
import { i as setLocals, n as getLocals } from "./handle-
|
|
17
|
-
import { i as validateRequest, n as parseAndValidateRequest, r as parseRequest, t as createRequestValidator } from "./request-validator-
|
|
2
|
+
import { n as normalizePath, t as flattenNestedRoutes } from "./router-xWzwz_1a.mjs";
|
|
3
|
+
import { a as html, c as redirect, i as err, l as stream, n as composeMiddleware, o as json, r as empty, t as VafastError, u as text } from "./middleware-CewKbtb4.mjs";
|
|
4
|
+
import { t as BaseServer } from "./base-server-B7MYJNsl.mjs";
|
|
5
|
+
import { a as getRoute, i as getAllRoutes, n as createRouteRegistry, o as getRouteRegistry, r as filterRoutes, t as RouteRegistry } from "./route-registry-emTmRrWQ.mjs";
|
|
6
|
+
import { t as Server } from "./server-L_FNwdap.mjs";
|
|
7
|
+
import { t as HtmlRenderer } from "./html-renderer-DTtJ_Yic.mjs";
|
|
8
|
+
import { t as DependencyManager } from "./dependency-manager-DCmh7xFc.mjs";
|
|
9
|
+
import { t as ComponentServer } from "./component-server-DomPJ_7S.mjs";
|
|
10
|
+
import { t as ServerFactory } from "./server-C75o1b-a.mjs";
|
|
11
|
+
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-DpH_mD0H.mjs";
|
|
12
|
+
import { t as goAwait } from "./go-await-C4ZdEUwY.mjs";
|
|
13
|
+
import { a as validateAllSchemas, c as validateSchemaOrThrow, i as precompileSchemas, n as createValidator, o as validateFast, r as getValidatorCacheStats, s as validateSchema } from "./validators-DBkyw6BG.mjs";
|
|
14
|
+
import { n as createHandlerWithExtra, r as simpleHandler, t as createHandler } from "./create-handler-RconAcAB.mjs";
|
|
15
|
+
import { n as base64urlEncode, t as base64urlDecode } from "./base64url-C2zopQdH.mjs";
|
|
16
|
+
import { i as setLocals, n as getLocals } from "./handle-BxJwSvV0.mjs";
|
|
17
|
+
import { i as validateRequest, n as parseAndValidateRequest, r as parseRequest, t as createRequestValidator } from "./request-validator-Bz9X48FX.mjs";
|
|
18
18
|
import { Patterns, hasFormat, registerFormat, registerFormats } from "./utils/formats.mjs";
|
|
19
|
-
import { t as createSSEHandler } from "./sse-
|
|
19
|
+
import { t as createSSEHandler } from "./sse-CBl-szg1.mjs";
|
|
20
20
|
import "./utils/index.mjs";
|
|
21
|
-
import { n as isTypedRoute, t as createTypedRoute } from "./route-
|
|
21
|
+
import { n as isTypedRoute, t as createTypedRoute } from "./route-Ds53PR4M.mjs";
|
|
22
22
|
import "./types/index.mjs";
|
|
23
|
-
import "./request-
|
|
24
|
-
import { n as serve } from "./serve-
|
|
23
|
+
import "./request-B-Nct5f7.mjs";
|
|
24
|
+
import { n as serve } from "./serve-48LEIkPa.mjs";
|
|
25
25
|
import "./serve.mjs";
|
|
26
26
|
import { FormatRegistry, Type } from "@sinclair/typebox";
|
|
27
27
|
|
|
28
28
|
//#region src/index.ts
|
|
29
|
-
init_server();
|
|
30
|
-
init_middleware();
|
|
31
|
-
init_router();
|
|
32
29
|
registerFormats();
|
|
33
30
|
|
|
34
31
|
//#endregion
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +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":"
|
|
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,4 +1,4 @@
|
|
|
1
|
-
import { n as FlattenedComponentRoute, r as NestedComponentRoute, t as ComponentRoute } from "../component-route-
|
|
1
|
+
import { n as FlattenedComponentRoute, r as NestedComponentRoute, t as ComponentRoute } from "../component-route-nrrO0iSI.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/middleware/component-router.d.ts
|
|
4
4
|
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { n as flattenComponentRoutes,
|
|
1
|
+
import { n as flattenComponentRoutes, t as componentRouter } from "../component-router-RwPL20vN.mjs";
|
|
2
2
|
|
|
3
|
-
init_component_router();
|
|
4
3
|
export { componentRouter, flattenComponentRoutes };
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { t as __esmMin } from "./chunk-DW4-Jl94.mjs";
|
|
2
|
-
|
|
3
1
|
//#region src/utils/response.ts
|
|
4
2
|
/** 生成 JSON 响应 */
|
|
5
3
|
function json(data, status = 200, headers = {}) {
|
|
@@ -17,6 +15,8 @@ function json(data, status = 200, headers = {}) {
|
|
|
17
15
|
headers: h
|
|
18
16
|
});
|
|
19
17
|
}
|
|
18
|
+
const JSON_HEADERS = { "Content-Type": "application/json" };
|
|
19
|
+
const TEXT_HEADERS = { "Content-Type": "text/plain" };
|
|
20
20
|
/**
|
|
21
21
|
* 类型特化的响应映射
|
|
22
22
|
* 根据返回值类型直接生成 Response,避免不必要的检查
|
|
@@ -107,31 +107,40 @@ function err(message, status = 500, type = "ERROR") {
|
|
|
107
107
|
expose: true
|
|
108
108
|
});
|
|
109
109
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
err.unprocessable = (message = "无法处理的实体") => err(message, 422, "UNPROCESSABLE_ENTITY");
|
|
127
|
-
/** 429 Too Many Requests */
|
|
128
|
-
err.tooMany = (message = "请求过于频繁") => err(message, 429, "TOO_MANY_REQUESTS");
|
|
129
|
-
/** 500 Internal Server Error */
|
|
130
|
-
err.internal = (message = "服务器内部错误") => err(message, 500, "INTERNAL_ERROR");
|
|
131
|
-
}));
|
|
110
|
+
/** 400 Bad Request */
|
|
111
|
+
err.badRequest = (message = "请求参数错误") => err(message, 400, "BAD_REQUEST");
|
|
112
|
+
/** 401 Unauthorized */
|
|
113
|
+
err.unauthorized = (message = "未授权") => err(message, 401, "UNAUTHORIZED");
|
|
114
|
+
/** 403 Forbidden */
|
|
115
|
+
err.forbidden = (message = "禁止访问") => err(message, 403, "FORBIDDEN");
|
|
116
|
+
/** 404 Not Found */
|
|
117
|
+
err.notFound = (message = "资源不存在") => err(message, 404, "NOT_FOUND");
|
|
118
|
+
/** 409 Conflict */
|
|
119
|
+
err.conflict = (message = "资源冲突") => err(message, 409, "CONFLICT");
|
|
120
|
+
/** 422 Unprocessable Entity */
|
|
121
|
+
err.unprocessable = (message = "无法处理的实体") => err(message, 422, "UNPROCESSABLE_ENTITY");
|
|
122
|
+
/** 429 Too Many Requests */
|
|
123
|
+
err.tooMany = (message = "请求过于频繁") => err(message, 429, "TOO_MANY_REQUESTS");
|
|
124
|
+
/** 500 Internal Server Error */
|
|
125
|
+
err.internal = (message = "服务器内部错误") => err(message, 500, "INTERNAL_ERROR");
|
|
132
126
|
|
|
133
127
|
//#endregion
|
|
134
128
|
//#region src/middleware.ts
|
|
129
|
+
/** 中间件类型:使用 next() 传递给下一个处理 */
|
|
130
|
+
/** Vafast 自定义错误类型 */
|
|
131
|
+
var VafastError = class extends Error {
|
|
132
|
+
status;
|
|
133
|
+
type;
|
|
134
|
+
expose;
|
|
135
|
+
constructor(message, options = {}) {
|
|
136
|
+
super(message);
|
|
137
|
+
this.name = "VafastError";
|
|
138
|
+
this.status = options.status ?? 500;
|
|
139
|
+
this.type = options.type ?? "internal_error";
|
|
140
|
+
this.expose = options.expose ?? false;
|
|
141
|
+
if (options.cause) this.cause = options.cause;
|
|
142
|
+
}
|
|
143
|
+
};
|
|
135
144
|
/**
|
|
136
145
|
* 组合类型: 自动注入错误处理器进行中间件组合
|
|
137
146
|
*/
|
|
@@ -151,39 +160,23 @@ function composeMiddleware(middleware, finalHandler) {
|
|
|
151
160
|
return dispatch(0);
|
|
152
161
|
};
|
|
153
162
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
errorHandler = async (req, next) => {
|
|
171
|
-
try {
|
|
172
|
-
return await next();
|
|
173
|
-
} catch (err$1) {
|
|
174
|
-
console.error("未处理的错误:", err$1);
|
|
175
|
-
if (err$1 instanceof VafastError) return json({
|
|
176
|
-
error: err$1.type,
|
|
177
|
-
message: err$1.expose ? err$1.message : "发生了一个错误"
|
|
178
|
-
}, err$1.status);
|
|
179
|
-
return json({
|
|
180
|
-
error: "internal_error",
|
|
181
|
-
message: "出现了一些问题"
|
|
182
|
-
}, 500);
|
|
183
|
-
}
|
|
184
|
-
};
|
|
185
|
-
}));
|
|
163
|
+
/** 默认包含的全局错误处理器 */
|
|
164
|
+
const errorHandler = async (req, next) => {
|
|
165
|
+
try {
|
|
166
|
+
return await next();
|
|
167
|
+
} catch (err$1) {
|
|
168
|
+
console.error("未处理的错误:", err$1);
|
|
169
|
+
if (err$1 instanceof VafastError) return json({
|
|
170
|
+
error: err$1.type,
|
|
171
|
+
message: err$1.expose ? err$1.message : "发生了一个错误"
|
|
172
|
+
}, err$1.status);
|
|
173
|
+
return json({
|
|
174
|
+
error: "internal_error",
|
|
175
|
+
message: "出现了一些问题"
|
|
176
|
+
}, 500);
|
|
177
|
+
}
|
|
178
|
+
};
|
|
186
179
|
|
|
187
180
|
//#endregion
|
|
188
|
-
export {
|
|
189
|
-
//# sourceMappingURL=middleware-
|
|
181
|
+
export { html as a, redirect as c, err as i, stream as l, composeMiddleware as n, json as o, empty as r, mapResponse as s, VafastError as t, text as u };
|
|
182
|
+
//# sourceMappingURL=middleware-CewKbtb4.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware-
|
|
1
|
+
{"version":3,"file":"middleware-CewKbtb4.mjs","names":["stream","err"],"sources":["../src/utils/response.ts","../src/middleware.ts"],"sourcesContent":["// src/response.ts\n\nimport { VafastError } from \"../middleware\";\n\n/** 生成 JSON 响应 */\nexport function json(\n data: unknown,\n status = 200,\n headers: HeadersInit = {},\n): Response {\n const body = JSON.stringify(data);\n\n // 优化:只在有自定义 headers 时才创建 Headers 对象\n if (Object.keys(headers).length === 0) {\n return new Response(body, {\n status,\n headers: { \"Content-Type\": \"application/json\" },\n });\n }\n\n // 有自定义 headers 时才创建 Headers 对象\n const h = new Headers({\n \"Content-Type\": \"application/json\",\n ...headers,\n });\n\n return new Response(body, {\n status,\n headers: h,\n });\n}\n\n// JSON 响应的预创建 headers(避免每次创建)\nconst JSON_HEADERS = { \"Content-Type\": \"application/json\" };\nconst TEXT_HEADERS = { \"Content-Type\": \"text/plain\" };\n\n/**\n * 类型特化的响应映射\n * 根据返回值类型直接生成 Response,避免不必要的检查\n */\nexport function mapResponse(response: unknown): Response {\n // 快速路径:已经是 Response\n if (response instanceof Response) return response;\n\n // 使用 constructor.name 进行类型判断(比 instanceof 更快)\n switch (response?.constructor?.name) {\n case \"String\":\n return new Response(response as string, { headers: TEXT_HEADERS });\n\n case \"Object\":\n case \"Array\":\n return new Response(JSON.stringify(response), { headers: JSON_HEADERS });\n\n case \"Number\":\n case \"Boolean\":\n return new Response(String(response), { headers: TEXT_HEADERS });\n\n case undefined:\n // null 或 undefined\n return new Response(null, { status: 204 });\n\n case \"ReadableStream\":\n return new Response(response as ReadableStream);\n\n case \"Blob\":\n return new Response(response as Blob);\n\n case \"ArrayBuffer\":\n return new Response(response as ArrayBuffer);\n\n case \"Uint8Array\":\n return new Response(response as unknown as BodyInit);\n\n default:\n // Promise 处理\n if (response instanceof Promise) {\n return response.then(mapResponse) as unknown as Response;\n }\n // 其他情况使用 JSON 序列化\n return new Response(JSON.stringify(response), { headers: JSON_HEADERS });\n }\n}\n\n/** 生成重定向响应 */\nexport function redirect(location: string, status: 301 | 302 = 302): Response {\n return new Response(null, {\n status,\n headers: {\n Location: location,\n },\n });\n}\n\n/** 生成纯文本响应 */\nexport function text(\n content: string,\n status = 200,\n headers: HeadersInit = {},\n): Response {\n const h = new Headers({\n \"Content-Type\": \"text/plain; charset=utf-8\",\n ...headers,\n });\n\n return new Response(content, {\n status,\n headers: h,\n });\n}\n\n/** 生成HTML响应 */\nexport function html(\n content: string,\n status = 200,\n headers: HeadersInit = {},\n): Response {\n const h = new Headers({\n \"Content-Type\": \"text/html; charset=utf-8\",\n ...headers,\n });\n\n return new Response(content, {\n status,\n headers: h,\n });\n}\n\n/** 生成空响应(204 No Content) */\nexport function empty(status = 204, headers: HeadersInit = {}): Response {\n return new Response(null, {\n status,\n headers,\n });\n}\n\n/** 生成流式响应 */\nexport function stream(\n stream: ReadableStream,\n status = 200,\n headers: HeadersInit = {},\n): Response {\n const h = new Headers({\n \"Content-Type\": \"application/octet-stream\",\n ...headers,\n });\n\n return new Response(stream, {\n status,\n headers: h,\n });\n}\n\n// ==================== 错误响应工具 ====================\n\n/**\n * 创建错误响应\n *\n * @example\n * ```typescript\n * // 自定义错误\n * throw err('用户不存在', 404, 'NOT_FOUND')\n *\n * // 预定义错误\n * throw err.notFound('用户不存在')\n * throw err.badRequest('参数错误')\n * throw err.unauthorized('请先登录')\n * ```\n */\nexport function err(message: string, status = 500, type = \"ERROR\") {\n return new VafastError(message, { status, type, expose: true });\n}\n\n/** 400 Bad Request */\nerr.badRequest = (message = \"请求参数错误\") =>\n err(message, 400, \"BAD_REQUEST\");\n\n/** 401 Unauthorized */\nerr.unauthorized = (message = \"未授权\") =>\n err(message, 401, \"UNAUTHORIZED\");\n\n/** 403 Forbidden */\nerr.forbidden = (message = \"禁止访问\") =>\n err(message, 403, \"FORBIDDEN\");\n\n/** 404 Not Found */\nerr.notFound = (message = \"资源不存在\") =>\n err(message, 404, \"NOT_FOUND\");\n\n/** 409 Conflict */\nerr.conflict = (message = \"资源冲突\") =>\n err(message, 409, \"CONFLICT\");\n\n/** 422 Unprocessable Entity */\nerr.unprocessable = (message = \"无法处理的实体\") =>\n err(message, 422, \"UNPROCESSABLE_ENTITY\");\n\n/** 429 Too Many Requests */\nerr.tooMany = (message = \"请求过于频繁\") =>\n err(message, 429, \"TOO_MANY_REQUESTS\");\n\n/** 500 Internal Server Error */\nerr.internal = (message = \"服务器内部错误\") =>\n err(message, 500, \"INTERNAL_ERROR\");\n","// 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":";;AAKA,SAAgB,KACd,MACA,SAAS,KACT,UAAuB,EAAE,EACf;CACV,MAAM,OAAO,KAAK,UAAU,KAAK;AAGjC,KAAI,OAAO,KAAK,QAAQ,CAAC,WAAW,EAClC,QAAO,IAAI,SAAS,MAAM;EACxB;EACA,SAAS,EAAE,gBAAgB,oBAAoB;EAChD,CAAC;CAIJ,MAAM,IAAI,IAAI,QAAQ;EACpB,gBAAgB;EAChB,GAAG;EACJ,CAAC;AAEF,QAAO,IAAI,SAAS,MAAM;EACxB;EACA,SAAS;EACV,CAAC;;AAIJ,MAAM,eAAe,EAAE,gBAAgB,oBAAoB;AAC3D,MAAM,eAAe,EAAE,gBAAgB,cAAc;;;;;AAMrD,SAAgB,YAAY,UAA6B;AAEvD,KAAI,oBAAoB,SAAU,QAAO;AAGzC,SAAQ,UAAU,aAAa,MAA/B;EACE,KAAK,SACH,QAAO,IAAI,SAAS,UAAoB,EAAE,SAAS,cAAc,CAAC;EAEpE,KAAK;EACL,KAAK,QACH,QAAO,IAAI,SAAS,KAAK,UAAU,SAAS,EAAE,EAAE,SAAS,cAAc,CAAC;EAE1E,KAAK;EACL,KAAK,UACH,QAAO,IAAI,SAAS,OAAO,SAAS,EAAE,EAAE,SAAS,cAAc,CAAC;EAElE,KAAK,OAEH,QAAO,IAAI,SAAS,MAAM,EAAE,QAAQ,KAAK,CAAC;EAE5C,KAAK,iBACH,QAAO,IAAI,SAAS,SAA2B;EAEjD,KAAK,OACH,QAAO,IAAI,SAAS,SAAiB;EAEvC,KAAK,cACH,QAAO,IAAI,SAAS,SAAwB;EAE9C,KAAK,aACH,QAAO,IAAI,SAAS,SAAgC;EAEtD;AAEE,OAAI,oBAAoB,QACtB,QAAO,SAAS,KAAK,YAAY;AAGnC,UAAO,IAAI,SAAS,KAAK,UAAU,SAAS,EAAE,EAAE,SAAS,cAAc,CAAC;;;;AAK9E,SAAgB,SAAS,UAAkB,SAAoB,KAAe;AAC5E,QAAO,IAAI,SAAS,MAAM;EACxB;EACA,SAAS,EACP,UAAU,UACX;EACF,CAAC;;;AAIJ,SAAgB,KACd,SACA,SAAS,KACT,UAAuB,EAAE,EACf;CACV,MAAM,IAAI,IAAI,QAAQ;EACpB,gBAAgB;EAChB,GAAG;EACJ,CAAC;AAEF,QAAO,IAAI,SAAS,SAAS;EAC3B;EACA,SAAS;EACV,CAAC;;;AAIJ,SAAgB,KACd,SACA,SAAS,KACT,UAAuB,EAAE,EACf;CACV,MAAM,IAAI,IAAI,QAAQ;EACpB,gBAAgB;EAChB,GAAG;EACJ,CAAC;AAEF,QAAO,IAAI,SAAS,SAAS;EAC3B;EACA,SAAS;EACV,CAAC;;;AAIJ,SAAgB,MAAM,SAAS,KAAK,UAAuB,EAAE,EAAY;AACvE,QAAO,IAAI,SAAS,MAAM;EACxB;EACA;EACD,CAAC;;;AAIJ,SAAgB,OACd,UACA,SAAS,KACT,UAAuB,EAAE,EACf;CACV,MAAM,IAAI,IAAI,QAAQ;EACpB,gBAAgB;EAChB,GAAG;EACJ,CAAC;AAEF,QAAO,IAAI,SAASA,UAAQ;EAC1B;EACA,SAAS;EACV,CAAC;;;;;;;;;;;;;;;;AAmBJ,SAAgB,IAAI,SAAiB,SAAS,KAAK,OAAO,SAAS;AACjE,QAAO,IAAI,YAAY,SAAS;EAAE;EAAQ;EAAM,QAAQ;EAAM,CAAC;;;AAIjE,IAAI,cAAc,UAAU,aAC1B,IAAI,SAAS,KAAK,cAAc;;AAGlC,IAAI,gBAAgB,UAAU,UAC5B,IAAI,SAAS,KAAK,eAAe;;AAGnC,IAAI,aAAa,UAAU,WACzB,IAAI,SAAS,KAAK,YAAY;;AAGhC,IAAI,YAAY,UAAU,YACxB,IAAI,SAAS,KAAK,YAAY;;AAGhC,IAAI,YAAY,UAAU,WACxB,IAAI,SAAS,KAAK,WAAW;;AAG/B,IAAI,iBAAiB,UAAU,cAC7B,IAAI,SAAS,KAAK,uBAAuB;;AAG3C,IAAI,WAAW,UAAU,aACvB,IAAI,SAAS,KAAK,oBAAoB;;AAGxC,IAAI,YAAY,UAAU,cACxB,IAAI,SAAS,KAAK,iBAAiB;;;;;;AClMrC,IAAa,cAAb,cAAiC,MAAM;CACrC;CACA;CACA;CAEA,YACE,SACA,UAKI,EAAE,EACN;AACA,QAAM,QAAQ;AACd,OAAK,OAAO;AACZ,OAAK,SAAS,QAAQ,UAAU;AAChC,OAAK,OAAO,QAAQ,QAAQ;AAC5B,OAAK,SAAS,QAAQ,UAAU;AAChC,MAAI,QAAQ,MAAO,CAAC,KAAa,QAAQ,QAAQ;;;;;;AAOrD,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;;;;AAKtB,MAAM,eAA2B,OAAO,KAAK,SAAS;AACpD,KAAI;AACF,SAAO,MAAM,MAAM;UACZC,OAAK;AACZ,UAAQ,MAAM,WAAWA,MAAI;AAE7B,MAAIA,iBAAe,YACjB,QAAO,KACL;GACE,OAAOA,MAAI;GACX,SAASA,MAAI,SAASA,MAAI,UAAU;GACrC,EACDA,MAAI,OACL;AAGH,SAAO,KAAK;GAAE,OAAO;GAAkB,SAAS;GAAW,EAAE,IAAI"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { o as Middleware, r as Handler } from "./types-
|
|
1
|
+
import { o as Middleware, r as Handler } from "./types-D1PUFkda.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/middleware.d.ts
|
|
4
4
|
/** 中间件类型:使用 next() 传递给下一个处理 */
|
|
@@ -20,4 +20,4 @@ declare class VafastError extends Error {
|
|
|
20
20
|
declare function composeMiddleware(middleware: Middleware[], finalHandler: Handler): (req: Request) => Promise<Response>;
|
|
21
21
|
//#endregion
|
|
22
22
|
export { composeMiddleware as n, VafastError as t };
|
|
23
|
-
//# sourceMappingURL=middleware-
|
|
23
|
+
//# sourceMappingURL=middleware-KXEoefLX.d.mts.map
|