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.
Files changed (163) hide show
  1. package/README.md +43 -8
  2. package/dist/base-server-B7MYJNsl.mjs +112 -0
  3. package/dist/{base-server-DMhpmq5v.mjs.map → base-server-B7MYJNsl.mjs.map} +1 -1
  4. package/dist/{base-server-CtA1bZSg.d.mts → base-server-DLxtulAO.d.mts} +2 -2
  5. package/dist/{base64url-DUtluDF0.mjs → base64url-C2zopQdH.mjs} +1 -1
  6. package/dist/{base64url-DUtluDF0.mjs.map → base64url-C2zopQdH.mjs.map} +1 -1
  7. package/dist/{base64url-0N9uQPjZ.d.mts → base64url-Dwi2Afhc.d.mts} +1 -1
  8. package/dist/{component-route-DF5feXJI.d.mts → component-route-nrrO0iSI.d.mts} +2 -2
  9. package/dist/{component-router-uSylkByf.mjs → component-router-RwPL20vN.mjs} +10 -11
  10. package/dist/{component-router-uSylkByf.mjs.map → component-router-RwPL20vN.mjs.map} +1 -1
  11. package/dist/component-server-DomPJ_7S.mjs +119 -0
  12. package/dist/{component-server-DIgykV0F.mjs.map → component-server-DomPJ_7S.mjs.map} +1 -1
  13. package/dist/{component-server-DvcPVnL4.d.mts → component-server-JqpDC7wy.d.mts} +4 -4
  14. package/dist/{create-handler-DRcJRkx9.d.mts → create-handler-DKw-sQOV.d.mts} +2 -2
  15. package/dist/{create-handler-IzOE24L5.mjs → create-handler-RconAcAB.mjs} +5 -6
  16. package/dist/{create-handler-IzOE24L5.mjs.map → create-handler-RconAcAB.mjs.map} +1 -1
  17. package/dist/defineRoute.d.mts +3 -3
  18. package/dist/{dependency-manager-C_qZvkaw.d.mts → dependency-manager-C3_7ic4h.d.mts} +1 -1
  19. package/dist/dependency-manager-DCmh7xFc.mjs +60 -0
  20. package/dist/{dependency-manager-BpN2YufZ.mjs.map → dependency-manager-DCmh7xFc.mjs.map} +1 -1
  21. package/dist/{formats-CYLwo9GJ.d.mts → formats-Dk-DSBY4.d.mts} +1 -1
  22. package/dist/{go-await-2Pzj4snS.mjs → go-await-C4ZdEUwY.mjs} +1 -1
  23. package/dist/{go-await-2Pzj4snS.mjs.map → go-await-C4ZdEUwY.mjs.map} +1 -1
  24. package/dist/{go-await-DRItVwwh.d.mts → go-await-DL1A_-4X.d.mts} +1 -1
  25. package/dist/{handle-D0TFoOiX.d.mts → handle-BhR3oyky.d.mts} +1 -1
  26. package/dist/{handle-s4V-E2RE.mjs → handle-BxJwSvV0.mjs} +2 -2
  27. package/dist/{handle-s4V-E2RE.mjs.map → handle-BxJwSvV0.mjs.map} +1 -1
  28. package/dist/{html-renderer-CMGKJoIy.d.mts → html-renderer-CfKK2BrP.d.mts} +1 -1
  29. package/dist/{html-renderer-CuakkPIt.mjs → html-renderer-DTtJ_Yic.mjs} +26 -27
  30. package/dist/{html-renderer-CuakkPIt.mjs.map → html-renderer-DTtJ_Yic.mjs.map} +1 -1
  31. package/dist/{index-CdOYxwDQ.d.mts → index-CEfOqqvd.d.mts} +5 -5
  32. package/dist/index.d.mts +24 -24
  33. package/dist/index.mjs +20 -23
  34. package/dist/index.mjs.map +1 -1
  35. package/dist/middleware/component-router.d.mts +1 -1
  36. package/dist/middleware/component-router.mjs +1 -2
  37. package/dist/{middleware-CV5o-4wk.mjs → middleware-CewKbtb4.mjs} +51 -58
  38. package/dist/{middleware-CV5o-4wk.mjs.map → middleware-CewKbtb4.mjs.map} +1 -1
  39. package/dist/{middleware-5PjaxPMA.d.mts → middleware-KXEoefLX.d.mts} +2 -2
  40. package/dist/middleware.d.mts +3 -3
  41. package/dist/middleware.mjs +1 -2
  42. package/dist/monitoring/index.d.mts +8 -33
  43. package/dist/monitoring/index.mjs +1 -27
  44. package/dist/monitoring/native-monitor.d.mts +148 -27
  45. package/dist/monitoring/native-monitor.mjs +320 -116
  46. package/dist/monitoring/native-monitor.mjs.map +1 -1
  47. package/dist/node-server/index.d.mts +1 -1
  48. package/dist/node-server/index.mjs +3 -3
  49. package/dist/node-server/request.mjs +1 -1
  50. package/dist/node-server/response.mjs +1 -1
  51. package/dist/node-server/serve.d.mts +1 -1
  52. package/dist/node-server/serve.mjs +2 -2
  53. package/dist/{parsers-7lvt3Oss.d.mts → parsers-BerGr2_q.d.mts} +1 -1
  54. package/dist/{parsers-BQ63b0YE.mjs → parsers-DpH_mD0H.mjs} +1 -1
  55. package/dist/{parsers-BQ63b0YE.mjs.map → parsers-DpH_mD0H.mjs.map} +1 -1
  56. package/dist/path-matcher-CGczAIl_.mjs +61 -0
  57. package/dist/{path-matcher-BNaaJgI3.mjs.map → path-matcher-CGczAIl_.mjs.map} +1 -1
  58. package/dist/radix-tree-qqSjnVXF.mjs +163 -0
  59. package/dist/{radix-tree-Qxr-QpCx.mjs.map → radix-tree-qqSjnVXF.mjs.map} +1 -1
  60. package/dist/{request-B886yCvG.mjs → request-B-Nct5f7.mjs} +1 -1
  61. package/dist/{request-B886yCvG.mjs.map → request-B-Nct5f7.mjs.map} +1 -1
  62. package/dist/{request-validator-DLFtm4uV.mjs → request-validator-Bz9X48FX.mjs} +3 -3
  63. package/dist/{request-validator-DLFtm4uV.mjs.map → request-validator-Bz9X48FX.mjs.map} +1 -1
  64. package/dist/{request-validator-42lY21gn.d.mts → request-validator-Coo8dI-p.d.mts} +2 -2
  65. package/dist/{response-CxYf6Ep3.d.mts → response-BMfdEcTm.d.mts} +2 -2
  66. package/dist/{response-30WnzABq.mjs → response-BnkYA4pj.mjs} +1 -1
  67. package/dist/{response-30WnzABq.mjs.map → response-BnkYA4pj.mjs.map} +1 -1
  68. package/dist/{route-CUbNpSwz.d.mts → route-6A7umH7b.d.mts} +2 -2
  69. package/dist/{route-B3ONOzxQ.mjs → route-Ds53PR4M.mjs} +1 -1
  70. package/dist/{route-B3ONOzxQ.mjs.map → route-Ds53PR4M.mjs.map} +1 -1
  71. package/dist/{route-registry-CYD7m6QP.d.mts → route-registry-CmABJA2V.d.mts} +2 -2
  72. package/dist/route-registry-emTmRrWQ.mjs +226 -0
  73. package/dist/{route-registry-BVvbghgH.mjs.map → route-registry-emTmRrWQ.mjs.map} +1 -1
  74. package/dist/router/index.d.mts +2 -2
  75. package/dist/router/index.mjs +3 -9
  76. package/dist/router/radix-tree.d.mts +3 -3
  77. package/dist/router/radix-tree.mjs +1 -2
  78. package/dist/{router-B9HUUCkR.mjs → router-xWzwz_1a.mjs} +2 -5
  79. package/dist/{router-B9HUUCkR.mjs.map → router-xWzwz_1a.mjs.map} +1 -1
  80. package/dist/router.d.mts +3 -3
  81. package/dist/router.mjs +1 -2
  82. package/dist/{schema-DOKg31ZX.d.mts → schema-B6DFN5c2.d.mts} +1 -1
  83. package/dist/{serve-DgWBnexE.mjs → serve-48LEIkPa.mjs} +3 -3
  84. package/dist/{serve-DgWBnexE.mjs.map → serve-48LEIkPa.mjs.map} +1 -1
  85. package/dist/{serve-B5WmhK6m.d.mts → serve-AG80VaIr.d.mts} +1 -1
  86. package/dist/serve.d.mts +1 -1
  87. package/dist/serve.mjs +2 -2
  88. package/dist/server/base-server.d.mts +3 -3
  89. package/dist/server/base-server.mjs +1 -2
  90. package/dist/server/component-server.d.mts +4 -4
  91. package/dist/server/component-server.mjs +2 -3
  92. package/dist/server/index.d.mts +6 -6
  93. package/dist/server/index.mjs +6 -7
  94. package/dist/server/server-factory.d.mts +6 -6
  95. package/dist/server/server-factory.mjs +5 -6
  96. package/dist/server/server.d.mts +4 -4
  97. package/dist/server/server.mjs +2 -3
  98. package/dist/server-C75o1b-a.mjs +70 -0
  99. package/dist/server-C75o1b-a.mjs.map +1 -0
  100. package/dist/{server-CWIZP6nb.d.mts → server-DGA3dd5s.d.mts} +3 -3
  101. package/dist/server-L_FNwdap.mjs +137 -0
  102. package/dist/{server-C3yoZXNs.mjs.map → server-L_FNwdap.mjs.map} +1 -1
  103. package/dist/{sse-BDIptC85.d.mts → sse-BgLhEo43.d.mts} +2 -2
  104. package/dist/{sse-CCVfFW6s.mjs → sse-CBl-szg1.mjs} +3 -3
  105. package/dist/{sse-CCVfFW6s.mjs.map → sse-CBl-szg1.mjs.map} +1 -1
  106. package/dist/types/component-route.d.mts +1 -1
  107. package/dist/types/index.d.mts +5 -5
  108. package/dist/types/index.mjs +1 -1
  109. package/dist/types/route.d.mts +1 -1
  110. package/dist/types/route.mjs +1 -1
  111. package/dist/types/schema.d.mts +1 -1
  112. package/dist/types/types.d.mts +1 -1
  113. package/dist/{types-mpeSaHdI.d.mts → types-D1PUFkda.d.mts} +1 -1
  114. package/dist/utils/base64url.d.mts +1 -1
  115. package/dist/utils/base64url.mjs +1 -1
  116. package/dist/utils/create-handler.d.mts +2 -2
  117. package/dist/utils/create-handler.mjs +4 -4
  118. package/dist/utils/dependency-manager.d.mts +1 -1
  119. package/dist/utils/dependency-manager.mjs +1 -2
  120. package/dist/utils/formats.d.mts +1 -1
  121. package/dist/utils/go-await.d.mts +1 -1
  122. package/dist/utils/go-await.mjs +1 -1
  123. package/dist/utils/handle.d.mts +1 -1
  124. package/dist/utils/handle.mjs +2 -2
  125. package/dist/utils/html-renderer.d.mts +1 -1
  126. package/dist/utils/html-renderer.mjs +1 -2
  127. package/dist/utils/index.d.mts +16 -16
  128. package/dist/utils/index.mjs +13 -21
  129. package/dist/utils/parsers.d.mts +1 -1
  130. package/dist/utils/parsers.mjs +1 -1
  131. package/dist/utils/path-matcher.mjs +1 -2
  132. package/dist/utils/request-validator.d.mts +2 -2
  133. package/dist/utils/request-validator.mjs +3 -3
  134. package/dist/utils/response.d.mts +4 -4
  135. package/dist/utils/response.mjs +1 -2
  136. package/dist/utils/route-registry.d.mts +3 -3
  137. package/dist/utils/route-registry.mjs +1 -2
  138. package/dist/utils/sse.d.mts +2 -2
  139. package/dist/utils/sse.mjs +3 -3
  140. package/dist/utils/validators/validators.d.mts +1 -1
  141. package/dist/utils/validators/validators.mjs +1 -1
  142. package/dist/{validators-CPmnj_y9.d.mts → validators-Ch71zkT8.d.mts} +1 -1
  143. package/dist/{validators-WXQ49LcR.mjs → validators-DBkyw6BG.mjs} +1 -1
  144. package/dist/{validators-WXQ49LcR.mjs.map → validators-DBkyw6BG.mjs.map} +1 -1
  145. package/package.json +6 -1
  146. package/dist/base-server-DMhpmq5v.mjs +0 -113
  147. package/dist/chunk-DW4-Jl94.mjs +0 -37
  148. package/dist/component-server-DIgykV0F.mjs +0 -124
  149. package/dist/dependency-manager-BpN2YufZ.mjs +0 -61
  150. package/dist/monitoring/index.mjs.map +0 -1
  151. package/dist/monitoring/types.d.mts +0 -150
  152. package/dist/path-matcher-BNaaJgI3.mjs +0 -62
  153. package/dist/radix-tree-Qxr-QpCx.mjs +0 -157
  154. package/dist/route-registry-BVvbghgH.mjs +0 -225
  155. package/dist/router/index.mjs.map +0 -1
  156. package/dist/schema-CflsMJuG.mjs +0 -1
  157. package/dist/server-BttM6Ssc.mjs +0 -88
  158. package/dist/server-BttM6Ssc.mjs.map +0 -1
  159. package/dist/server-C3yoZXNs.mjs +0 -136
  160. package/dist/utils/index.mjs.map +0 -1
  161. /package/dist/{component-route-BKUFoJ5P.mjs → component-route-DNgAj6VC.mjs} +0 -0
  162. /package/dist/{index-CTHojwxd.d.mts → index-CREkvfw9.d.mts} +0 -0
  163. /package/dist/{monitoring/types.mjs → schema-1fwiv7cm.mjs} +0 -0
@@ -1,5 +1,5 @@
1
- import "../parsers-BQ63b0YE.mjs";
2
- import "../validators-WXQ49LcR.mjs";
3
- import { i as validateRequest, n as parseAndValidateRequest, r as parseRequest, t as createRequestValidator } from "../request-validator-DLFtm4uV.mjs";
1
+ import "../parsers-DpH_mD0H.mjs";
2
+ import "../validators-DBkyw6BG.mjs";
3
+ import { i as validateRequest, n as parseAndValidateRequest, r as parseRequest, t as createRequestValidator } from "../request-validator-Bz9X48FX.mjs";
4
4
 
5
5
  export { createRequestValidator, parseAndValidateRequest, parseRequest, validateRequest };
@@ -1,5 +1,5 @@
1
- import "../schema-DOKg31ZX.mjs";
2
- import "../index-CTHojwxd.mjs";
3
- import "../middleware-5PjaxPMA.mjs";
4
- import { a as mapResponse, c as text, i as json, n as err, o as redirect, r as html, s as stream, t as empty } from "../response-CxYf6Ep3.mjs";
1
+ import "../schema-B6DFN5c2.mjs";
2
+ import "../index-CREkvfw9.mjs";
3
+ import "../middleware-KXEoefLX.mjs";
4
+ import { a as mapResponse, 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";
5
5
  export { empty, err, html, json, mapResponse, redirect, stream, text };
@@ -1,4 +1,3 @@
1
- import { a as err, c as json, d as stream, f as text, i as empty, l as mapResponse, o as html, s as init_response, u as redirect } from "../middleware-CV5o-4wk.mjs";
1
+ import { a as html, c as redirect, i as err, l as stream, o as json, r as empty, s as mapResponse, u as text } from "../middleware-CewKbtb4.mjs";
2
2
 
3
- init_response();
4
3
  export { empty, err, html, json, mapResponse, redirect, stream, text };
@@ -1,4 +1,4 @@
1
- import "../schema-DOKg31ZX.mjs";
2
- import "../index-CTHojwxd.mjs";
3
- import { a as getAllRoutes, c as setGlobalRegistry, i as filterRoutes, n as RouteRegistry, o as getRoute, r as createRouteRegistry, s as getRouteRegistry, t as RouteMeta } from "../route-registry-CYD7m6QP.mjs";
1
+ import "../schema-B6DFN5c2.mjs";
2
+ import "../index-CREkvfw9.mjs";
3
+ import { a as getAllRoutes, c as setGlobalRegistry, i as filterRoutes, n as RouteRegistry, o as getRoute, r as createRouteRegistry, s as getRouteRegistry, t as RouteMeta } from "../route-registry-CmABJA2V.mjs";
4
4
  export { RouteMeta, RouteRegistry, createRouteRegistry, filterRoutes, getAllRoutes, getRoute, getRouteRegistry, setGlobalRegistry };
@@ -1,4 +1,3 @@
1
- import { a as getRoute, c as setGlobalRegistry, i as getAllRoutes, n as createRouteRegistry, o as getRouteRegistry, r as filterRoutes, s as init_route_registry, t as RouteRegistry } from "../route-registry-BVvbghgH.mjs";
1
+ import { a as getRoute, i as getAllRoutes, n as createRouteRegistry, o as getRouteRegistry, r as filterRoutes, s as setGlobalRegistry, t as RouteRegistry } from "../route-registry-emTmRrWQ.mjs";
2
2
 
3
- init_route_registry();
4
3
  export { RouteRegistry, createRouteRegistry, filterRoutes, getAllRoutes, getRoute, getRouteRegistry, setGlobalRegistry };
@@ -1,3 +1,3 @@
1
- import "../schema-DOKg31ZX.mjs";
2
- import { a as createSSEHandler, i as SSEMarker, n as SSEGenerator, r as SSEHandler, t as SSEEvent } from "../sse-BDIptC85.mjs";
1
+ import "../schema-B6DFN5c2.mjs";
2
+ import { a as createSSEHandler, i as SSEMarker, n as SSEGenerator, r as SSEHandler, t as SSEEvent } from "../sse-BgLhEo43.mjs";
3
3
  export { SSEEvent, SSEGenerator, SSEHandler, SSEMarker, createSSEHandler };
@@ -1,5 +1,5 @@
1
- import "../parsers-BQ63b0YE.mjs";
2
- import "../validators-WXQ49LcR.mjs";
3
- import { t as createSSEHandler } from "../sse-CCVfFW6s.mjs";
1
+ import "../parsers-DpH_mD0H.mjs";
2
+ import "../validators-DBkyw6BG.mjs";
3
+ import { t as createSSEHandler } from "../sse-CBl-szg1.mjs";
4
4
 
5
5
  export { createSSEHandler };
@@ -1,2 +1,2 @@
1
- import { a as ValidationError, c as getValidatorCacheStats, d as validateFast, f as validateSchema, i as Type, l as precompileSchemas, n as Static, o as ValidationResult, p as validateSchemaOrThrow, r as TSchema, s as createValidator, t as SchemaConfig, u as validateAllSchemas } from "../../validators-CPmnj_y9.mjs";
1
+ import { a as ValidationError, c as getValidatorCacheStats, d as validateFast, f as validateSchema, i as Type, l as precompileSchemas, n as Static, o as ValidationResult, p as validateSchemaOrThrow, r as TSchema, s as createValidator, t as SchemaConfig, u as validateAllSchemas } from "../../validators-Ch71zkT8.mjs";
2
2
  export { SchemaConfig, Static, TSchema, Type, ValidationError, ValidationResult, createValidator, getValidatorCacheStats, precompileSchemas, validateAllSchemas, validateFast, validateSchema, validateSchemaOrThrow };
@@ -1,3 +1,3 @@
1
- import { a as validateAllSchemas, c as validateSchemaOrThrow, i as precompileSchemas, n as createValidator, o as validateFast, r as getValidatorCacheStats, s as validateSchema, t as Type } from "../../validators-WXQ49LcR.mjs";
1
+ import { a as validateAllSchemas, c as validateSchemaOrThrow, i as precompileSchemas, n as createValidator, o as validateFast, r as getValidatorCacheStats, s as validateSchema, t as Type } from "../../validators-DBkyw6BG.mjs";
2
2
 
3
3
  export { Type, createValidator, getValidatorCacheStats, precompileSchemas, validateAllSchemas, validateFast, validateSchema, validateSchemaOrThrow };
@@ -64,4 +64,4 @@ declare function getValidatorCacheStats(): {
64
64
  };
65
65
  //#endregion
66
66
  export { ValidationError as a, getValidatorCacheStats as c, validateFast as d, validateSchema as f, Type as i, precompileSchemas as l, Static$1 as n, ValidationResult as o, validateSchemaOrThrow as p, TSchema$1 as r, createValidator as s, SchemaConfig as t, validateAllSchemas as u };
67
- //# sourceMappingURL=validators-CPmnj_y9.d.mts.map
67
+ //# sourceMappingURL=validators-Ch71zkT8.d.mts.map
@@ -109,4 +109,4 @@ function getValidatorCacheStats() {
109
109
 
110
110
  //#endregion
111
111
  export { validateAllSchemas as a, validateSchemaOrThrow as c, precompileSchemas as i, createValidator as n, validateFast as o, getValidatorCacheStats as r, validateSchema as s, Type as t };
112
- //# sourceMappingURL=validators-WXQ49LcR.mjs.map
112
+ //# sourceMappingURL=validators-DBkyw6BG.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"validators-WXQ49LcR.mjs","names":[],"sources":["../src/utils/validators/validators.ts"],"sourcesContent":["/**\n * Schema 验证器 - 简洁版\n *\n * 特点:\n * - WeakMap 缓存避免内存泄漏\n * - TypeCompiler JIT 编译,性能最佳\n * - 支持 FormatRegistry(需确保同一实例)\n *\n * @version 7.0.0\n */\n\nimport { Type } from \"@sinclair/typebox\";\nimport type { Static, TSchema } from \"@sinclair/typebox\";\nimport { TypeCompiler, type TypeCheck } from \"@sinclair/typebox/compiler\";\nimport { Value } from \"@sinclair/typebox/value\";\n\n// ============== 类型定义 ==============\n\n/** Schema 配置接口 */\nexport interface SchemaConfig {\n body?: TSchema;\n query?: TSchema;\n params?: TSchema;\n headers?: TSchema;\n cookies?: TSchema;\n}\n\n/** 验证错误接口 */\nexport interface ValidationError {\n path: string;\n message: string;\n code: string;\n value?: unknown;\n}\n\n/** 验证结果 */\nexport type ValidationResult<T = unknown> =\n | { success: true; data: T }\n | { success: false; errors: ValidationError[] };\n\n// ============== 缓存 ==============\n\n/** 编译器缓存 - WeakMap 避免内存泄漏 */\nconst compilerCache = new WeakMap<TSchema, TypeCheck<TSchema>>();\n\n// ============== 核心函数 ==============\n\n/**\n * 获取或创建编译后的验证器\n */\nfunction getCompiledValidator<T extends TSchema>(schema: T): TypeCheck<T> {\n let compiler = compilerCache.get(schema);\n if (!compiler) {\n compiler = TypeCompiler.Compile(schema);\n compilerCache.set(schema, compiler);\n }\n return compiler as TypeCheck<T>;\n}\n\n/**\n * 验证单个 Schema(返回结果对象)\n */\nexport function validateSchema<T extends TSchema>(\n schema: T,\n data: unknown,\n): ValidationResult<Static<T>> {\n try {\n const compiler = getCompiledValidator(schema);\n\n if (compiler.Check(data)) {\n return { success: true, data: data as Static<T> };\n }\n\n // 收集错误\n const errors: ValidationError[] = [];\n for (const error of compiler.Errors(data)) {\n errors.push({\n path: error.path,\n message: error.message,\n code: \"VALIDATION_FAILED\",\n value: error.value,\n });\n }\n return { success: false, errors };\n } catch (error) {\n return {\n success: false,\n errors: [\n {\n path: \"\",\n message: error instanceof Error ? error.message : \"验证异常\",\n code: \"VALIDATION_EXCEPTION\",\n },\n ],\n };\n }\n}\n\n/**\n * 验证 Schema(抛出异常版本,用于框架内部)\n */\nexport function validateSchemaOrThrow<T extends TSchema>(\n schema: T,\n data: unknown,\n context: string,\n): Static<T> {\n const compiler = getCompiledValidator(schema);\n\n if (!compiler.Check(data)) {\n throw new Error(`${context}验证失败`);\n }\n\n return data as Static<T>;\n}\n\n/**\n * 快速验证(只返回布尔值)\n */\nexport function validateFast<T extends TSchema>(\n schema: T,\n data: unknown,\n): data is Static<T> {\n const compiler = getCompiledValidator(schema);\n return compiler.Check(data);\n}\n\n/**\n * 批量验证所有 Schema(用于请求验证)\n */\nexport function validateAllSchemas(\n config: SchemaConfig,\n data: {\n body: unknown;\n query: unknown;\n params: unknown;\n headers: unknown;\n cookies: unknown;\n },\n): typeof data {\n if (config.body) {\n validateSchemaOrThrow(config.body, data.body, \"请求体\");\n }\n if (config.query) {\n validateSchemaOrThrow(config.query, data.query, \"Query参数\");\n }\n if (config.params) {\n validateSchemaOrThrow(config.params, data.params, \"路径参数\");\n }\n if (config.headers) {\n validateSchemaOrThrow(config.headers, data.headers, \"请求头\");\n }\n if (config.cookies) {\n validateSchemaOrThrow(config.cookies, data.cookies, \"Cookie\");\n }\n return data;\n}\n\n/**\n * 预编译 Schema(启动时调用,避免首次请求开销)\n */\nexport function precompileSchemas(config: SchemaConfig): void {\n if (config.body) getCompiledValidator(config.body);\n if (config.query) getCompiledValidator(config.query);\n if (config.params) getCompiledValidator(config.params);\n if (config.headers) getCompiledValidator(config.headers);\n if (config.cookies) getCompiledValidator(config.cookies);\n}\n\n/**\n * 创建类型特化的验证器(高频使用场景)\n */\nexport function createValidator<T extends TSchema>(\n schema: T,\n): (data: unknown) => ValidationResult<Static<T>> {\n return (data: unknown) => validateSchema(schema, data);\n}\n\n/**\n * 获取缓存统计(调试用)\n */\nexport function getValidatorCacheStats(): { cacheType: string; note: string } {\n return {\n cacheType: \"WeakMap\",\n note: \"WeakMap 缓存会随 Schema 对象自动清理,无内存泄漏风险\",\n };\n}\n\n// 导出 TypeBox 类型\nexport { Type, Static, TSchema };\n"],"mappings":";;;;;;;;;;;;;;;AA2CA,MAAM,gCAAgB,IAAI,SAAsC;;;;AAOhE,SAAS,qBAAwC,QAAyB;CACxE,IAAI,WAAW,cAAc,IAAI,OAAO;AACxC,KAAI,CAAC,UAAU;AACb,aAAW,aAAa,QAAQ,OAAO;AACvC,gBAAc,IAAI,QAAQ,SAAS;;AAErC,QAAO;;;;;AAMT,SAAgB,eACd,QACA,MAC6B;AAC7B,KAAI;EACF,MAAM,WAAW,qBAAqB,OAAO;AAE7C,MAAI,SAAS,MAAM,KAAK,CACtB,QAAO;GAAE,SAAS;GAAY;GAAmB;EAInD,MAAM,SAA4B,EAAE;AACpC,OAAK,MAAM,SAAS,SAAS,OAAO,KAAK,CACvC,QAAO,KAAK;GACV,MAAM,MAAM;GACZ,SAAS,MAAM;GACf,MAAM;GACN,OAAO,MAAM;GACd,CAAC;AAEJ,SAAO;GAAE,SAAS;GAAO;GAAQ;UAC1B,OAAO;AACd,SAAO;GACL,SAAS;GACT,QAAQ,CACN;IACE,MAAM;IACN,SAAS,iBAAiB,QAAQ,MAAM,UAAU;IAClD,MAAM;IACP,CACF;GACF;;;;;;AAOL,SAAgB,sBACd,QACA,MACA,SACW;AAGX,KAAI,CAFa,qBAAqB,OAAO,CAE/B,MAAM,KAAK,CACvB,OAAM,IAAI,MAAM,GAAG,QAAQ,MAAM;AAGnC,QAAO;;;;;AAMT,SAAgB,aACd,QACA,MACmB;AAEnB,QADiB,qBAAqB,OAAO,CAC7B,MAAM,KAAK;;;;;AAM7B,SAAgB,mBACd,QACA,MAOa;AACb,KAAI,OAAO,KACT,uBAAsB,OAAO,MAAM,KAAK,MAAM,MAAM;AAEtD,KAAI,OAAO,MACT,uBAAsB,OAAO,OAAO,KAAK,OAAO,UAAU;AAE5D,KAAI,OAAO,OACT,uBAAsB,OAAO,QAAQ,KAAK,QAAQ,OAAO;AAE3D,KAAI,OAAO,QACT,uBAAsB,OAAO,SAAS,KAAK,SAAS,MAAM;AAE5D,KAAI,OAAO,QACT,uBAAsB,OAAO,SAAS,KAAK,SAAS,SAAS;AAE/D,QAAO;;;;;AAMT,SAAgB,kBAAkB,QAA4B;AAC5D,KAAI,OAAO,KAAM,sBAAqB,OAAO,KAAK;AAClD,KAAI,OAAO,MAAO,sBAAqB,OAAO,MAAM;AACpD,KAAI,OAAO,OAAQ,sBAAqB,OAAO,OAAO;AACtD,KAAI,OAAO,QAAS,sBAAqB,OAAO,QAAQ;AACxD,KAAI,OAAO,QAAS,sBAAqB,OAAO,QAAQ;;;;;AAM1D,SAAgB,gBACd,QACgD;AAChD,SAAQ,SAAkB,eAAe,QAAQ,KAAK;;;;;AAMxD,SAAgB,yBAA8D;AAC5E,QAAO;EACL,WAAW;EACX,MAAM;EACP"}
1
+ {"version":3,"file":"validators-DBkyw6BG.mjs","names":[],"sources":["../src/utils/validators/validators.ts"],"sourcesContent":["/**\n * Schema 验证器 - 简洁版\n *\n * 特点:\n * - WeakMap 缓存避免内存泄漏\n * - TypeCompiler JIT 编译,性能最佳\n * - 支持 FormatRegistry(需确保同一实例)\n *\n * @version 7.0.0\n */\n\nimport { Type } from \"@sinclair/typebox\";\nimport type { Static, TSchema } from \"@sinclair/typebox\";\nimport { TypeCompiler, type TypeCheck } from \"@sinclair/typebox/compiler\";\nimport { Value } from \"@sinclair/typebox/value\";\n\n// ============== 类型定义 ==============\n\n/** Schema 配置接口 */\nexport interface SchemaConfig {\n body?: TSchema;\n query?: TSchema;\n params?: TSchema;\n headers?: TSchema;\n cookies?: TSchema;\n}\n\n/** 验证错误接口 */\nexport interface ValidationError {\n path: string;\n message: string;\n code: string;\n value?: unknown;\n}\n\n/** 验证结果 */\nexport type ValidationResult<T = unknown> =\n | { success: true; data: T }\n | { success: false; errors: ValidationError[] };\n\n// ============== 缓存 ==============\n\n/** 编译器缓存 - WeakMap 避免内存泄漏 */\nconst compilerCache = new WeakMap<TSchema, TypeCheck<TSchema>>();\n\n// ============== 核心函数 ==============\n\n/**\n * 获取或创建编译后的验证器\n */\nfunction getCompiledValidator<T extends TSchema>(schema: T): TypeCheck<T> {\n let compiler = compilerCache.get(schema);\n if (!compiler) {\n compiler = TypeCompiler.Compile(schema);\n compilerCache.set(schema, compiler);\n }\n return compiler as TypeCheck<T>;\n}\n\n/**\n * 验证单个 Schema(返回结果对象)\n */\nexport function validateSchema<T extends TSchema>(\n schema: T,\n data: unknown,\n): ValidationResult<Static<T>> {\n try {\n const compiler = getCompiledValidator(schema);\n\n if (compiler.Check(data)) {\n return { success: true, data: data as Static<T> };\n }\n\n // 收集错误\n const errors: ValidationError[] = [];\n for (const error of compiler.Errors(data)) {\n errors.push({\n path: error.path,\n message: error.message,\n code: \"VALIDATION_FAILED\",\n value: error.value,\n });\n }\n return { success: false, errors };\n } catch (error) {\n return {\n success: false,\n errors: [\n {\n path: \"\",\n message: error instanceof Error ? error.message : \"验证异常\",\n code: \"VALIDATION_EXCEPTION\",\n },\n ],\n };\n }\n}\n\n/**\n * 验证 Schema(抛出异常版本,用于框架内部)\n */\nexport function validateSchemaOrThrow<T extends TSchema>(\n schema: T,\n data: unknown,\n context: string,\n): Static<T> {\n const compiler = getCompiledValidator(schema);\n\n if (!compiler.Check(data)) {\n throw new Error(`${context}验证失败`);\n }\n\n return data as Static<T>;\n}\n\n/**\n * 快速验证(只返回布尔值)\n */\nexport function validateFast<T extends TSchema>(\n schema: T,\n data: unknown,\n): data is Static<T> {\n const compiler = getCompiledValidator(schema);\n return compiler.Check(data);\n}\n\n/**\n * 批量验证所有 Schema(用于请求验证)\n */\nexport function validateAllSchemas(\n config: SchemaConfig,\n data: {\n body: unknown;\n query: unknown;\n params: unknown;\n headers: unknown;\n cookies: unknown;\n },\n): typeof data {\n if (config.body) {\n validateSchemaOrThrow(config.body, data.body, \"请求体\");\n }\n if (config.query) {\n validateSchemaOrThrow(config.query, data.query, \"Query参数\");\n }\n if (config.params) {\n validateSchemaOrThrow(config.params, data.params, \"路径参数\");\n }\n if (config.headers) {\n validateSchemaOrThrow(config.headers, data.headers, \"请求头\");\n }\n if (config.cookies) {\n validateSchemaOrThrow(config.cookies, data.cookies, \"Cookie\");\n }\n return data;\n}\n\n/**\n * 预编译 Schema(启动时调用,避免首次请求开销)\n */\nexport function precompileSchemas(config: SchemaConfig): void {\n if (config.body) getCompiledValidator(config.body);\n if (config.query) getCompiledValidator(config.query);\n if (config.params) getCompiledValidator(config.params);\n if (config.headers) getCompiledValidator(config.headers);\n if (config.cookies) getCompiledValidator(config.cookies);\n}\n\n/**\n * 创建类型特化的验证器(高频使用场景)\n */\nexport function createValidator<T extends TSchema>(\n schema: T,\n): (data: unknown) => ValidationResult<Static<T>> {\n return (data: unknown) => validateSchema(schema, data);\n}\n\n/**\n * 获取缓存统计(调试用)\n */\nexport function getValidatorCacheStats(): { cacheType: string; note: string } {\n return {\n cacheType: \"WeakMap\",\n note: \"WeakMap 缓存会随 Schema 对象自动清理,无内存泄漏风险\",\n };\n}\n\n// 导出 TypeBox 类型\nexport { Type, Static, TSchema };\n"],"mappings":";;;;;;;;;;;;;;;AA2CA,MAAM,gCAAgB,IAAI,SAAsC;;;;AAOhE,SAAS,qBAAwC,QAAyB;CACxE,IAAI,WAAW,cAAc,IAAI,OAAO;AACxC,KAAI,CAAC,UAAU;AACb,aAAW,aAAa,QAAQ,OAAO;AACvC,gBAAc,IAAI,QAAQ,SAAS;;AAErC,QAAO;;;;;AAMT,SAAgB,eACd,QACA,MAC6B;AAC7B,KAAI;EACF,MAAM,WAAW,qBAAqB,OAAO;AAE7C,MAAI,SAAS,MAAM,KAAK,CACtB,QAAO;GAAE,SAAS;GAAY;GAAmB;EAInD,MAAM,SAA4B,EAAE;AACpC,OAAK,MAAM,SAAS,SAAS,OAAO,KAAK,CACvC,QAAO,KAAK;GACV,MAAM,MAAM;GACZ,SAAS,MAAM;GACf,MAAM;GACN,OAAO,MAAM;GACd,CAAC;AAEJ,SAAO;GAAE,SAAS;GAAO;GAAQ;UAC1B,OAAO;AACd,SAAO;GACL,SAAS;GACT,QAAQ,CACN;IACE,MAAM;IACN,SAAS,iBAAiB,QAAQ,MAAM,UAAU;IAClD,MAAM;IACP,CACF;GACF;;;;;;AAOL,SAAgB,sBACd,QACA,MACA,SACW;AAGX,KAAI,CAFa,qBAAqB,OAAO,CAE/B,MAAM,KAAK,CACvB,OAAM,IAAI,MAAM,GAAG,QAAQ,MAAM;AAGnC,QAAO;;;;;AAMT,SAAgB,aACd,QACA,MACmB;AAEnB,QADiB,qBAAqB,OAAO,CAC7B,MAAM,KAAK;;;;;AAM7B,SAAgB,mBACd,QACA,MAOa;AACb,KAAI,OAAO,KACT,uBAAsB,OAAO,MAAM,KAAK,MAAM,MAAM;AAEtD,KAAI,OAAO,MACT,uBAAsB,OAAO,OAAO,KAAK,OAAO,UAAU;AAE5D,KAAI,OAAO,OACT,uBAAsB,OAAO,QAAQ,KAAK,QAAQ,OAAO;AAE3D,KAAI,OAAO,QACT,uBAAsB,OAAO,SAAS,KAAK,SAAS,MAAM;AAE5D,KAAI,OAAO,QACT,uBAAsB,OAAO,SAAS,KAAK,SAAS,SAAS;AAE/D,QAAO;;;;;AAMT,SAAgB,kBAAkB,QAA4B;AAC5D,KAAI,OAAO,KAAM,sBAAqB,OAAO,KAAK;AAClD,KAAI,OAAO,MAAO,sBAAqB,OAAO,MAAM;AACpD,KAAI,OAAO,OAAQ,sBAAqB,OAAO,OAAO;AACtD,KAAI,OAAO,QAAS,sBAAqB,OAAO,QAAQ;AACxD,KAAI,OAAO,QAAS,sBAAqB,OAAO,QAAQ;;;;;AAM1D,SAAgB,gBACd,QACgD;AAChD,SAAQ,SAAkB,eAAe,QAAQ,KAAK;;;;;AAMxD,SAAgB,yBAA8D;AAC5E,QAAO;EACL,WAAW;EACX,MAAM;EACP"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vafast",
3
- "version": "0.4.6",
3
+ "version": "0.4.8",
4
4
  "description": "极简结构化Web框架,支持 Bun 和 Node.js。Go风格,函数优先。",
5
5
  "type": "module",
6
6
  "repository": {
@@ -26,6 +26,11 @@
26
26
  "types": "./dist/node-server/index.d.mts",
27
27
  "import": "./dist/node-server/index.mjs",
28
28
  "default": "./dist/node-server/index.mjs"
29
+ },
30
+ "./monitoring": {
31
+ "types": "./dist/monitoring/index.d.mts",
32
+ "import": "./dist/monitoring/index.mjs",
33
+ "default": "./dist/monitoring/index.mjs"
29
34
  }
30
35
  },
31
36
  "types": "./dist/index.d.mts",
@@ -1,113 +0,0 @@
1
- import { t as __esmMin } from "./chunk-DW4-Jl94.mjs";
2
-
3
- //#region src/server/base-server.ts
4
- var BaseServer;
5
- var init_base_server = __esmMin((() => {
6
- BaseServer = class {
7
- globalMiddleware = [];
8
- use(mw) {
9
- this.globalMiddleware.push(mw);
10
- }
11
- /**
12
- * 打印扁平化后的路由信息,用于调试
13
- */
14
- logFlattenedRoutes(routes, type = "路由") {
15
- console.log(`🚀 扁平化后的${type}:`);
16
- for (const route of routes) {
17
- const method = route.method || "GET";
18
- const path = route.fullPath || route.path;
19
- console.log(` ${method} ${path}`);
20
- if (route.middlewareChain && route.middlewareChain.length > 0) console.log(` 中间件链: ${route.middlewareChain.length} 个`);
21
- }
22
- console.log("");
23
- }
24
- /**
25
- * 检测路由冲突
26
- * 检查是否有路径相同但方法不同的路由,以及潜在的路径冲突
27
- */
28
- detectRouteConflicts(routes) {
29
- const pathGroups = /* @__PURE__ */ new Map();
30
- for (const route of routes) {
31
- const path = route.fullPath || route.path;
32
- const method = route.method || "GET";
33
- if (!pathGroups.has(path)) pathGroups.set(path, []);
34
- pathGroups.get(path).push({
35
- ...route,
36
- method
37
- });
38
- }
39
- for (const [path, routeList] of pathGroups) if (routeList.length > 1) {
40
- const methods = routeList.map((r) => r.method);
41
- const uniqueMethods = [...new Set(methods)];
42
- if (uniqueMethods.length === 1) {
43
- console.warn(`⚠️ 路由冲突: ${uniqueMethods[0]} ${path} 定义了 ${routeList.length} 次`);
44
- routeList.forEach((route, index) => {
45
- console.warn(` ${index + 1}. ${route.method} ${path}`);
46
- });
47
- } else console.log(`ℹ️ 路径 ${path} 支持方法: ${uniqueMethods.join(", ")}`);
48
- }
49
- this.detectDynamicRouteConflicts(routes);
50
- }
51
- /**
52
- * 检测动态路由的潜在冲突
53
- */
54
- detectDynamicRouteConflicts(routes) {
55
- const dynamicRoutes = routes.filter((r) => {
56
- const path = r.fullPath || r.path;
57
- return path.includes(":") || path.includes("*");
58
- });
59
- for (let i = 0; i < dynamicRoutes.length; i++) for (let j = i + 1; j < dynamicRoutes.length; j++) {
60
- const route1 = dynamicRoutes[i];
61
- const route2 = dynamicRoutes[j];
62
- const method1 = route1.method || "GET";
63
- if (method1 === (route2.method || "GET")) {
64
- const path1 = route1.fullPath || route1.path;
65
- const path2 = route2.fullPath || route2.path;
66
- if (this.pathsMayConflict(path1, path2)) console.warn(`⚠️ 潜在路由冲突: ${method1} ${path1} 可能与 ${path2} 冲突`);
67
- }
68
- }
69
- }
70
- /**
71
- * 判断两个路径是否可能冲突
72
- */
73
- pathsMayConflict(path1, path2) {
74
- const parts1 = path1.split("/").filter(Boolean);
75
- const parts2 = path2.split("/").filter(Boolean);
76
- if (parts1.length !== parts2.length) return false;
77
- for (let i = 0; i < parts1.length; i++) {
78
- const p1 = parts1[i];
79
- const p2 = parts2[i];
80
- if (!p1.startsWith(":") && !p1.startsWith("*") && !p2.startsWith(":") && !p2.startsWith("*") && p1 !== p2) return false;
81
- if (p1 === "*" && p2.startsWith(":") || p2 === "*" && p1.startsWith(":")) return true;
82
- }
83
- return false;
84
- }
85
- /**
86
- * 路径匹配
87
- */
88
- matchPath(pattern, path) {
89
- const patternParts = pattern.split("/").filter(Boolean);
90
- const pathParts = path.split("/").filter(Boolean);
91
- if (patternParts.length !== pathParts.length) return false;
92
- for (let i = 0; i < patternParts.length; i++) if (patternParts[i] !== pathParts[i] && !patternParts[i].startsWith(":")) return false;
93
- return true;
94
- }
95
- /**
96
- * 提取路径参数
97
- */
98
- extractParams(pattern, path) {
99
- const params = {};
100
- const patternParts = pattern.split("/").filter(Boolean);
101
- const pathParts = path.split("/").filter(Boolean);
102
- for (let i = 0; i < patternParts.length; i++) if (patternParts[i].startsWith(":")) {
103
- const paramName = patternParts[i].slice(1);
104
- params[paramName] = pathParts[i];
105
- }
106
- return params;
107
- }
108
- };
109
- }));
110
-
111
- //#endregion
112
- export { init_base_server as n, BaseServer as t };
113
- //# sourceMappingURL=base-server-DMhpmq5v.mjs.map
@@ -1,37 +0,0 @@
1
- //#region rolldown:runtime
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __esmMin = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
7
- var __exportAll = (all, symbols) => {
8
- let target = {};
9
- for (var name in all) {
10
- __defProp(target, name, {
11
- get: all[name],
12
- enumerable: true
13
- });
14
- }
15
- if (symbols) {
16
- __defProp(target, Symbol.toStringTag, { value: "Module" });
17
- }
18
- return target;
19
- };
20
- var __copyProps = (to, from, except, desc) => {
21
- if (from && typeof from === "object" || typeof from === "function") {
22
- for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
23
- key = keys[i];
24
- if (!__hasOwnProp.call(to, key) && key !== except) {
25
- __defProp(to, key, {
26
- get: ((k) => from[k]).bind(null, key),
27
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
28
- });
29
- }
30
- }
31
- }
32
- return to;
33
- };
34
- var __toCommonJS = (mod) => __hasOwnProp.call(mod, "module.exports") ? mod["module.exports"] : __copyProps(__defProp({}, "__esModule", { value: true }), mod);
35
-
36
- //#endregion
37
- export { __exportAll as n, __toCommonJS as r, __esmMin as t };
@@ -1,124 +0,0 @@
1
- import { t as __esmMin } from "./chunk-DW4-Jl94.mjs";
2
- import { n as init_base_server, t as BaseServer } from "./base-server-DMhpmq5v.mjs";
3
- import { n as flattenComponentRoutes, r as init_component_router } from "./component-router-uSylkByf.mjs";
4
- import { n as init_path_matcher, t as PathMatcher } from "./path-matcher-BNaaJgI3.mjs";
5
- import { n as init_html_renderer, t as HtmlRenderer } from "./html-renderer-CuakkPIt.mjs";
6
- import { n as init_dependency_manager, t as DependencyManager } from "./dependency-manager-BpN2YufZ.mjs";
7
-
8
- //#region src/server/component-server.ts
9
- var ComponentServer;
10
- var init_component_server = __esmMin((() => {
11
- init_component_router();
12
- init_base_server();
13
- init_path_matcher();
14
- init_html_renderer();
15
- init_dependency_manager();
16
- ComponentServer = class extends BaseServer {
17
- routes;
18
- dependencyManager;
19
- constructor(routes) {
20
- super();
21
- this.routes = flattenComponentRoutes(routes);
22
- this.dependencyManager = new DependencyManager();
23
- this.detectRouteConflicts(this.routes);
24
- this.logFlattenedRoutes(this.routes, "组件路由");
25
- console.log("🚀 依赖按需加载,服务器启动完成");
26
- }
27
- /**
28
- * 处理请求
29
- */
30
- async fetch(req) {
31
- const url = new URL(req.url);
32
- const pathname = url.pathname;
33
- if (req.method !== "GET") return new Response("Method Not Allowed", { status: 405 });
34
- let matchedRoute = null;
35
- for (const route of this.routes) if (PathMatcher.matchPath(route.fullPath, pathname)) {
36
- matchedRoute = route;
37
- break;
38
- }
39
- if (!matchedRoute) return new Response("Not Found", { status: 404 });
40
- try {
41
- const context = {
42
- req,
43
- params: PathMatcher.extractParams(matchedRoute.fullPath, pathname),
44
- query: Object.fromEntries(url.searchParams),
45
- pathname
46
- };
47
- return await this.executeMiddlewareChain(matchedRoute.middlewareChain, context, matchedRoute.component);
48
- } catch (error) {
49
- console.error("组件渲染失败:", error);
50
- return new Response("Internal Server Error", { status: 500 });
51
- }
52
- }
53
- /**
54
- * 执行中间件链
55
- */
56
- async executeMiddlewareChain(middlewareChain, context, componentImport) {
57
- const renderComponent = async () => {
58
- const componentModule = await componentImport();
59
- const component = componentModule.default || componentModule;
60
- const componentType = this.dependencyManager.detectComponentType(component);
61
- const deps = await this.dependencyManager.getFrameworkDeps(componentType);
62
- if (componentType === "vue") return await this.renderVueComponent(component, context, deps);
63
- else if (componentType === "react") return await this.renderReactComponent(component, context, deps);
64
- else throw new Error(`不支持的组件类型: ${componentType}`);
65
- };
66
- let index = 0;
67
- const next = async () => {
68
- if (index >= middlewareChain.length) return await renderComponent();
69
- const middleware = middlewareChain[index++];
70
- return await middleware(context.req, next);
71
- };
72
- return await next();
73
- }
74
- /**
75
- * 渲染 Vue 组件
76
- */
77
- async renderVueComponent(component, context, deps) {
78
- try {
79
- const [vue, renderer] = deps;
80
- const app = vue.createSSRApp(component);
81
- app.provide("routeInfo", {
82
- params: context.params || {},
83
- query: context.query || {},
84
- pathname: context.pathname
85
- });
86
- const html = await renderer.renderToString(app);
87
- const fullHtml = HtmlRenderer.generateVueHtml(html, context);
88
- return new Response(fullHtml, { headers: { "Content-Type": "text/html; charset=utf-8" } });
89
- } catch (error) {
90
- console.error("Vue 组件渲染失败:", error);
91
- return new Response("Vue Component Render Error", { status: 500 });
92
- }
93
- }
94
- /**
95
- * 渲染 React 组件
96
- */
97
- async renderReactComponent(component, context, deps) {
98
- try {
99
- const [react, renderer] = deps;
100
- const content = react.createElement(component, {
101
- req: context.req,
102
- params: context.params || {},
103
- query: context.query || {}
104
- });
105
- const html = renderer.renderToString(content);
106
- const fullHtml = HtmlRenderer.generateReactHtml(html, context);
107
- return new Response(fullHtml, { headers: { "Content-Type": "text/html; charset=utf-8" } });
108
- } catch (error) {
109
- console.error("React 组件渲染失败:", error);
110
- return new Response("React Component Render Error", { status: 500 });
111
- }
112
- }
113
- /**
114
- * 获取依赖管理器(用于外部访问)
115
- */
116
- getDependencyManager() {
117
- return this.dependencyManager;
118
- }
119
- };
120
- }));
121
-
122
- //#endregion
123
- export { init_component_server as n, ComponentServer as t };
124
- //# sourceMappingURL=component-server-DIgykV0F.mjs.map
@@ -1,61 +0,0 @@
1
- import { t as __esmMin } from "./chunk-DW4-Jl94.mjs";
2
-
3
- //#region src/utils/dependency-manager.ts
4
- var DependencyManager;
5
- var init_dependency_manager = __esmMin((() => {
6
- 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
-
59
- //#endregion
60
- export { init_dependency_manager as n, DependencyManager as t };
61
- //# sourceMappingURL=dependency-manager-BpN2YufZ.mjs.map
@@ -1 +0,0 @@
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"}
@@ -1,150 +0,0 @@
1
- //#region src/monitoring/types.d.ts
2
- /**
3
- * 性能监控系统类型定义
4
- *
5
- * @author Framework Team
6
- * @version 1.0.0
7
- * @license MIT
8
- */
9
- interface BaseMetrics {
10
- timestamp: number;
11
- requestId: string;
12
- method: string;
13
- path: string;
14
- statusCode: number;
15
- userAgent?: string;
16
- ip?: string;
17
- }
18
- interface PerformanceMetrics extends BaseMetrics {
19
- totalTime: number;
20
- routeMatchTime: number;
21
- validationTime: number;
22
- handlerTime: number;
23
- responseTime: number;
24
- memoryUsage: {
25
- heapUsed: number;
26
- heapTotal: number;
27
- external: number;
28
- rss: number;
29
- };
30
- validation: {
31
- bodyValidated: boolean;
32
- queryValidated: boolean;
33
- paramsValidated: boolean;
34
- headersValidated: boolean;
35
- cookiesValidated: boolean;
36
- validationErrors: number;
37
- };
38
- routing: {
39
- routeFound: boolean;
40
- middlewareCount: number;
41
- dynamicParams: number;
42
- };
43
- error?: {
44
- type: string;
45
- message: string;
46
- stack?: string;
47
- };
48
- }
49
- interface AggregatedMetrics {
50
- timeRange: {
51
- start: number;
52
- end: number;
53
- };
54
- requests: {
55
- total: number;
56
- successful: number;
57
- failed: number;
58
- byMethod: Record<string, number>;
59
- byPath: Record<string, number>;
60
- byStatusCode: Record<number, number>;
61
- };
62
- performance: {
63
- avgTotalTime: number;
64
- avgRouteMatchTime: number;
65
- avgValidationTime: number;
66
- avgHandlerTime: number;
67
- avgResponseTime: number;
68
- p50TotalTime: number;
69
- p90TotalTime: number;
70
- p95TotalTime: number;
71
- p99TotalTime: number;
72
- minTotalTime: number;
73
- maxTotalTime: number;
74
- };
75
- memory: {
76
- avgHeapUsed: number;
77
- avgHeapTotal: number;
78
- maxHeapUsed: number;
79
- maxHeapTotal: number;
80
- };
81
- validation: {
82
- totalValidations: number;
83
- validationErrors: number;
84
- validationSuccessRate: number;
85
- };
86
- routing: {
87
- totalRoutes: number;
88
- routesWithMiddleware: number;
89
- dynamicRoutes: number;
90
- routeHitCount: Record<string, number>;
91
- };
92
- }
93
- interface MonitoringConfig {
94
- enabled: boolean;
95
- retention: {
96
- maxRecords: number;
97
- maxAge: number;
98
- cleanupInterval: number;
99
- };
100
- samplingRate: number;
101
- recordErrors: boolean;
102
- recordBodySize: boolean;
103
- recordResponseSize: boolean;
104
- thresholds: {
105
- slowRequest: number;
106
- highMemoryUsage: number;
107
- errorRate: number;
108
- };
109
- }
110
- interface MonitoringEvent {
111
- type: "request_start" | "request_end" | "validation_start" | "validation_end" | "error";
112
- timestamp: number;
113
- requestId: string;
114
- data: any;
115
- }
116
- interface PerformanceReport {
117
- id: string;
118
- timestamp: number;
119
- timeRange: {
120
- start: number;
121
- end: number;
122
- };
123
- summary: {
124
- totalRequests: number;
125
- avgResponseTime: number;
126
- errorRate: number;
127
- memoryUsage: number;
128
- };
129
- details: {
130
- topSlowestRoutes: Array<{
131
- path: string;
132
- avgTime: number;
133
- count: number;
134
- }>;
135
- topErrorRoutes: Array<{
136
- path: string;
137
- errorCount: number;
138
- errorRate: number;
139
- }>;
140
- memoryTrend: Array<{
141
- timestamp: number;
142
- heapUsed: number;
143
- }>;
144
- responseTimeDistribution: Record<string, number>;
145
- };
146
- recommendations: string[];
147
- }
148
- //#endregion
149
- export { AggregatedMetrics, BaseMetrics, MonitoringConfig, MonitoringEvent, PerformanceMetrics, PerformanceReport };
150
- //# sourceMappingURL=types.d.mts.map