vafast 0.4.1 → 0.4.3

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