@pcontext/api 0.0.1

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 (342) hide show
  1. package/README.md +151 -0
  2. package/dist/app.d.mts +44779 -0
  3. package/dist/app.d.mts.map +1 -0
  4. package/dist/app.mjs +37 -0
  5. package/dist/app.mjs.map +1 -0
  6. package/dist/client.d.mts +22428 -0
  7. package/dist/client.d.mts.map +1 -0
  8. package/dist/client.mjs +15 -0
  9. package/dist/client.mjs.map +1 -0
  10. package/dist/dev.d.mts +11 -0
  11. package/dist/dev.d.mts.map +1 -0
  12. package/dist/dev.mjs +16 -0
  13. package/dist/dev.mjs.map +1 -0
  14. package/dist/index.d.mts +3 -0
  15. package/dist/index.mjs +10 -0
  16. package/dist/index.mjs.map +1 -0
  17. package/dist/modules/doc/chat.route.d.mts +18 -0
  18. package/dist/modules/doc/chat.route.d.mts.map +1 -0
  19. package/dist/modules/doc/chat.route.mjs +20 -0
  20. package/dist/modules/doc/chat.route.mjs.map +1 -0
  21. package/dist/modules/doc/chat.service.d.mts +10 -0
  22. package/dist/modules/doc/chat.service.d.mts.map +1 -0
  23. package/dist/modules/doc/chat.service.mjs +29 -0
  24. package/dist/modules/doc/chat.service.mjs.map +1 -0
  25. package/dist/modules/doc/doc.dto.d.mts +67 -0
  26. package/dist/modules/doc/doc.dto.d.mts.map +1 -0
  27. package/dist/modules/doc/doc.dto.mjs +43 -0
  28. package/dist/modules/doc/doc.dto.mjs.map +1 -0
  29. package/dist/modules/doc/doc.entity.d.mts +19 -0
  30. package/dist/modules/doc/doc.entity.d.mts.map +1 -0
  31. package/dist/modules/doc/doc.entity.mjs +1 -0
  32. package/dist/modules/doc/doc.repo.interface.d.mts +28 -0
  33. package/dist/modules/doc/doc.repo.interface.d.mts.map +1 -0
  34. package/dist/modules/doc/doc.repo.interface.mjs +1 -0
  35. package/dist/modules/doc/doc.route.d.mts +14193 -0
  36. package/dist/modules/doc/doc.route.d.mts.map +1 -0
  37. package/dist/modules/doc/doc.route.mjs +100 -0
  38. package/dist/modules/doc/doc.route.mjs.map +1 -0
  39. package/dist/modules/doc/doc.service.d.mts +38 -0
  40. package/dist/modules/doc/doc.service.d.mts.map +1 -0
  41. package/dist/modules/doc/doc.service.mjs +134 -0
  42. package/dist/modules/doc/doc.service.mjs.map +1 -0
  43. package/dist/modules/doc/doc.vo.d.mts +17 -0
  44. package/dist/modules/doc/doc.vo.d.mts.map +1 -0
  45. package/dist/modules/doc/doc.vo.mjs +1 -0
  46. package/dist/modules/doc/infrastructure/agent/engine/chat.d.mts +21 -0
  47. package/dist/modules/doc/infrastructure/agent/engine/chat.d.mts.map +1 -0
  48. package/dist/modules/doc/infrastructure/agent/engine/chat.mjs +36 -0
  49. package/dist/modules/doc/infrastructure/agent/engine/chat.mjs.map +1 -0
  50. package/dist/modules/doc/infrastructure/agent/engine/generate.d.mts +28 -0
  51. package/dist/modules/doc/infrastructure/agent/engine/generate.d.mts.map +1 -0
  52. package/dist/modules/doc/infrastructure/agent/engine/generate.mjs +135 -0
  53. package/dist/modules/doc/infrastructure/agent/engine/generate.mjs.map +1 -0
  54. package/dist/modules/doc/infrastructure/agent/engine/query-filter.d.mts +7 -0
  55. package/dist/modules/doc/infrastructure/agent/engine/query-filter.d.mts.map +1 -0
  56. package/dist/modules/doc/infrastructure/agent/engine/query-filter.mjs +12 -0
  57. package/dist/modules/doc/infrastructure/agent/engine/query-filter.mjs.map +1 -0
  58. package/dist/modules/doc/infrastructure/agent/loaders/git-repository-reader.d.mts +54 -0
  59. package/dist/modules/doc/infrastructure/agent/loaders/git-repository-reader.d.mts.map +1 -0
  60. package/dist/modules/doc/infrastructure/agent/loaders/git-repository-reader.mjs +142 -0
  61. package/dist/modules/doc/infrastructure/agent/loaders/git-repository-reader.mjs.map +1 -0
  62. package/dist/modules/doc/infrastructure/agent/loaders/index.d.mts +3 -0
  63. package/dist/modules/doc/infrastructure/agent/loaders/index.mjs +4 -0
  64. package/dist/modules/doc/infrastructure/agent/loaders/website-crawl-reader.d.mts +42 -0
  65. package/dist/modules/doc/infrastructure/agent/loaders/website-crawl-reader.d.mts.map +1 -0
  66. package/dist/modules/doc/infrastructure/agent/loaders/website-crawl-reader.mjs +104 -0
  67. package/dist/modules/doc/infrastructure/agent/loaders/website-crawl-reader.mjs.map +1 -0
  68. package/dist/modules/doc/infrastructure/agent/settings.d.mts +5 -0
  69. package/dist/modules/doc/infrastructure/agent/settings.d.mts.map +1 -0
  70. package/dist/modules/doc/infrastructure/agent/settings.mjs +72 -0
  71. package/dist/modules/doc/infrastructure/agent/settings.mjs.map +1 -0
  72. package/dist/modules/doc/infrastructure/agent/storage/index.d.mts +7 -0
  73. package/dist/modules/doc/infrastructure/agent/storage/index.d.mts.map +1 -0
  74. package/dist/modules/doc/infrastructure/agent/storage/index.mjs +12 -0
  75. package/dist/modules/doc/infrastructure/agent/storage/index.mjs.map +1 -0
  76. package/dist/modules/doc/infrastructure/agent/storage/vector-store.d.mts +14 -0
  77. package/dist/modules/doc/infrastructure/agent/storage/vector-store.d.mts.map +1 -0
  78. package/dist/modules/doc/infrastructure/agent/storage/vector-store.mjs +35 -0
  79. package/dist/modules/doc/infrastructure/agent/storage/vector-store.mjs.map +1 -0
  80. package/dist/modules/doc/infrastructure/doc.po.d.mts +570 -0
  81. package/dist/modules/doc/infrastructure/doc.po.d.mts.map +1 -0
  82. package/dist/modules/doc/infrastructure/doc.po.mjs +54 -0
  83. package/dist/modules/doc/infrastructure/doc.po.mjs.map +1 -0
  84. package/dist/modules/doc/infrastructure/doc.repo.pg.d.mts +32 -0
  85. package/dist/modules/doc/infrastructure/doc.repo.pg.d.mts.map +1 -0
  86. package/dist/modules/doc/infrastructure/doc.repo.pg.mjs +157 -0
  87. package/dist/modules/doc/infrastructure/doc.repo.pg.mjs.map +1 -0
  88. package/dist/modules/doc/infrastructure/doc.repo.sqlite.d.mts +32 -0
  89. package/dist/modules/doc/infrastructure/doc.repo.sqlite.d.mts.map +1 -0
  90. package/dist/modules/doc/infrastructure/doc.repo.sqlite.mjs +153 -0
  91. package/dist/modules/doc/infrastructure/doc.repo.sqlite.mjs.map +1 -0
  92. package/dist/modules/doc/mcp.route.d.mts +18 -0
  93. package/dist/modules/doc/mcp.route.d.mts.map +1 -0
  94. package/dist/modules/doc/mcp.route.mjs +39 -0
  95. package/dist/modules/doc/mcp.route.mjs.map +1 -0
  96. package/dist/modules/doc/mcp.service.d.mts +22 -0
  97. package/dist/modules/doc/mcp.service.d.mts.map +1 -0
  98. package/dist/modules/doc/mcp.service.mjs +119 -0
  99. package/dist/modules/doc/mcp.service.mjs.map +1 -0
  100. package/dist/modules/rank/rank.dto.d.mts +10 -0
  101. package/dist/modules/rank/rank.dto.d.mts.map +1 -0
  102. package/dist/modules/rank/rank.dto.mjs +8 -0
  103. package/dist/modules/rank/rank.dto.mjs.map +1 -0
  104. package/dist/modules/rank/rank.route.d.mts +2033 -0
  105. package/dist/modules/rank/rank.route.d.mts.map +1 -0
  106. package/dist/modules/rank/rank.route.mjs +20 -0
  107. package/dist/modules/rank/rank.route.mjs.map +1 -0
  108. package/dist/modules/rank/rank.service.d.mts +32 -0
  109. package/dist/modules/rank/rank.service.d.mts.map +1 -0
  110. package/dist/modules/rank/rank.service.mjs +3 -0
  111. package/dist/modules/rank/rank.vo.d.mts +9 -0
  112. package/dist/modules/rank/rank.vo.d.mts.map +1 -0
  113. package/dist/modules/rank/rank.vo.mjs +1 -0
  114. package/dist/modules/task/infrastructure/mq/task-context.d.mts +29 -0
  115. package/dist/modules/task/infrastructure/mq/task-context.d.mts.map +1 -0
  116. package/dist/modules/task/infrastructure/mq/task-context.mjs +70 -0
  117. package/dist/modules/task/infrastructure/mq/task-context.mjs.map +1 -0
  118. package/dist/modules/task/infrastructure/mq/task-queue.d.mts +10 -0
  119. package/dist/modules/task/infrastructure/mq/task-queue.d.mts.map +1 -0
  120. package/dist/modules/task/infrastructure/mq/task-queue.mjs +12 -0
  121. package/dist/modules/task/infrastructure/mq/task-queue.mjs.map +1 -0
  122. package/dist/modules/task/infrastructure/mq/task-worker.d.mts +13 -0
  123. package/dist/modules/task/infrastructure/mq/task-worker.d.mts.map +1 -0
  124. package/dist/modules/task/infrastructure/mq/task-worker.mjs +35 -0
  125. package/dist/modules/task/infrastructure/mq/task-worker.mjs.map +1 -0
  126. package/dist/modules/task/infrastructure/task.po.d.mts +1147 -0
  127. package/dist/modules/task/infrastructure/task.po.d.mts.map +1 -0
  128. package/dist/modules/task/infrastructure/task.po.mjs +55 -0
  129. package/dist/modules/task/infrastructure/task.po.mjs.map +1 -0
  130. package/dist/modules/task/infrastructure/task.repo.pg.d.mts +21 -0
  131. package/dist/modules/task/infrastructure/task.repo.pg.d.mts.map +1 -0
  132. package/dist/modules/task/infrastructure/task.repo.pg.mjs +86 -0
  133. package/dist/modules/task/infrastructure/task.repo.pg.mjs.map +1 -0
  134. package/dist/modules/task/infrastructure/task.repo.sqlite.d.mts +21 -0
  135. package/dist/modules/task/infrastructure/task.repo.sqlite.d.mts.map +1 -0
  136. package/dist/modules/task/infrastructure/task.repo.sqlite.mjs +89 -0
  137. package/dist/modules/task/infrastructure/task.repo.sqlite.mjs.map +1 -0
  138. package/dist/modules/task/task.dto.d.mts +26 -0
  139. package/dist/modules/task/task.dto.d.mts.map +1 -0
  140. package/dist/modules/task/task.dto.mjs +25 -0
  141. package/dist/modules/task/task.dto.mjs.map +1 -0
  142. package/dist/modules/task/task.entity.d.mts +43 -0
  143. package/dist/modules/task/task.entity.d.mts.map +1 -0
  144. package/dist/modules/task/task.entity.mjs +1 -0
  145. package/dist/modules/task/task.repo.interface.d.mts +17 -0
  146. package/dist/modules/task/task.repo.interface.d.mts.map +1 -0
  147. package/dist/modules/task/task.repo.interface.mjs +1 -0
  148. package/dist/modules/task/task.route.d.mts +4087 -0
  149. package/dist/modules/task/task.route.d.mts.map +1 -0
  150. package/dist/modules/task/task.route.mjs +63 -0
  151. package/dist/modules/task/task.route.mjs.map +1 -0
  152. package/dist/modules/task/task.service.d.mts +28 -0
  153. package/dist/modules/task/task.service.d.mts.map +1 -0
  154. package/dist/modules/task/task.service.mjs +202 -0
  155. package/dist/modules/task/task.service.mjs.map +1 -0
  156. package/dist/modules/task/task.vo.d.mts +18 -0
  157. package/dist/modules/task/task.vo.d.mts.map +1 -0
  158. package/dist/modules/task/task.vo.mjs +1 -0
  159. package/dist/modules/user/application/user.service.d.mts +24 -0
  160. package/dist/modules/user/application/user.service.d.mts.map +1 -0
  161. package/dist/modules/user/application/user.service.mjs +153 -0
  162. package/dist/modules/user/application/user.service.mjs.map +1 -0
  163. package/dist/modules/user/domain/user.entity.d.mts +24 -0
  164. package/dist/modules/user/domain/user.entity.d.mts.map +1 -0
  165. package/dist/modules/user/domain/user.entity.mjs +35 -0
  166. package/dist/modules/user/domain/user.entity.mjs.map +1 -0
  167. package/dist/modules/user/domain/user.repo.interface.d.mts +27 -0
  168. package/dist/modules/user/domain/user.repo.interface.d.mts.map +1 -0
  169. package/dist/modules/user/domain/user.repo.interface.mjs +1 -0
  170. package/dist/modules/user/infrastructure/casbin/adapter.d.mts +7 -0
  171. package/dist/modules/user/infrastructure/casbin/adapter.d.mts.map +1 -0
  172. package/dist/modules/user/infrastructure/casbin/adapter.mjs +13 -0
  173. package/dist/modules/user/infrastructure/casbin/adapter.mjs.map +1 -0
  174. package/dist/modules/user/infrastructure/casbin/adapter.pg.d.mts +19 -0
  175. package/dist/modules/user/infrastructure/casbin/adapter.pg.d.mts.map +1 -0
  176. package/dist/modules/user/infrastructure/casbin/adapter.pg.mjs +129 -0
  177. package/dist/modules/user/infrastructure/casbin/adapter.pg.mjs.map +1 -0
  178. package/dist/modules/user/infrastructure/casbin/adapter.sqlite.d.mts +19 -0
  179. package/dist/modules/user/infrastructure/casbin/adapter.sqlite.d.mts.map +1 -0
  180. package/dist/modules/user/infrastructure/casbin/adapter.sqlite.mjs +129 -0
  181. package/dist/modules/user/infrastructure/casbin/adapter.sqlite.mjs.map +1 -0
  182. package/dist/modules/user/infrastructure/casbin/enforcer.d.mts +9 -0
  183. package/dist/modules/user/infrastructure/casbin/enforcer.d.mts.map +1 -0
  184. package/dist/modules/user/infrastructure/casbin/enforcer.mjs +150 -0
  185. package/dist/modules/user/infrastructure/casbin/enforcer.mjs.map +1 -0
  186. package/dist/modules/user/infrastructure/casbin-rule.po.d.mts +643 -0
  187. package/dist/modules/user/infrastructure/casbin-rule.po.d.mts.map +1 -0
  188. package/dist/modules/user/infrastructure/casbin-rule.po.mjs +30 -0
  189. package/dist/modules/user/infrastructure/casbin-rule.po.mjs.map +1 -0
  190. package/dist/modules/user/infrastructure/user.po.d.mts +392 -0
  191. package/dist/modules/user/infrastructure/user.po.d.mts.map +1 -0
  192. package/dist/modules/user/infrastructure/user.po.mjs +34 -0
  193. package/dist/modules/user/infrastructure/user.po.mjs.map +1 -0
  194. package/dist/modules/user/infrastructure/user.repo.pg.d.mts +24 -0
  195. package/dist/modules/user/infrastructure/user.repo.pg.d.mts.map +1 -0
  196. package/dist/modules/user/infrastructure/user.repo.pg.mjs +90 -0
  197. package/dist/modules/user/infrastructure/user.repo.pg.mjs.map +1 -0
  198. package/dist/modules/user/infrastructure/user.repo.sqlite.d.mts +24 -0
  199. package/dist/modules/user/infrastructure/user.repo.sqlite.d.mts.map +1 -0
  200. package/dist/modules/user/infrastructure/user.repo.sqlite.mjs +88 -0
  201. package/dist/modules/user/infrastructure/user.repo.sqlite.mjs.map +1 -0
  202. package/dist/modules/user/interfaces/admin.route.d.mts +8270 -0
  203. package/dist/modules/user/interfaces/admin.route.d.mts.map +1 -0
  204. package/dist/modules/user/interfaces/admin.route.mjs +74 -0
  205. package/dist/modules/user/interfaces/admin.route.mjs.map +1 -0
  206. package/dist/modules/user/interfaces/role.route.d.mts +102 -0
  207. package/dist/modules/user/interfaces/role.route.d.mts.map +1 -0
  208. package/dist/modules/user/interfaces/role.route.mjs +60 -0
  209. package/dist/modules/user/interfaces/role.route.mjs.map +1 -0
  210. package/dist/modules/user/interfaces/user.dto.d.mts +106 -0
  211. package/dist/modules/user/interfaces/user.dto.d.mts.map +1 -0
  212. package/dist/modules/user/interfaces/user.dto.mjs +32 -0
  213. package/dist/modules/user/interfaces/user.dto.mjs.map +1 -0
  214. package/dist/modules/user/interfaces/user.route.d.mts +2093 -0
  215. package/dist/modules/user/interfaces/user.route.d.mts.map +1 -0
  216. package/dist/modules/user/interfaces/user.route.mjs +69 -0
  217. package/dist/modules/user/interfaces/user.route.mjs.map +1 -0
  218. package/dist/modules/user/interfaces/user.vo.d.mts +28 -0
  219. package/dist/modules/user/interfaces/user.vo.d.mts.map +1 -0
  220. package/dist/modules/user/interfaces/user.vo.mjs +18 -0
  221. package/dist/modules/user/interfaces/user.vo.mjs.map +1 -0
  222. package/dist/rank.service-D2h-2iJA.mjs +109 -0
  223. package/dist/rank.service-D2h-2iJA.mjs.map +1 -0
  224. package/dist/settings.d.mts +12 -0
  225. package/dist/settings.d.mts.map +1 -0
  226. package/dist/settings.mjs +27 -0
  227. package/dist/settings.mjs.map +1 -0
  228. package/dist/shared/create-app.d.mts +13 -0
  229. package/dist/shared/create-app.d.mts.map +1 -0
  230. package/dist/shared/create-app.mjs +45 -0
  231. package/dist/shared/create-app.mjs.map +1 -0
  232. package/dist/shared/db/bootstrap.d.mts +5 -0
  233. package/dist/shared/db/bootstrap.d.mts.map +1 -0
  234. package/dist/shared/db/bootstrap.mjs +51 -0
  235. package/dist/shared/db/bootstrap.mjs.map +1 -0
  236. package/dist/shared/db/connection.d.mts +1567 -0
  237. package/dist/shared/db/connection.d.mts.map +1 -0
  238. package/dist/shared/db/connection.mjs +59 -0
  239. package/dist/shared/db/connection.mjs.map +1 -0
  240. package/dist/shared/db/migrations/pg/0000_init.sql +74 -0
  241. package/dist/shared/db/migrations/pg/0001_snippets & tokens.sql +6 -0
  242. package/dist/shared/db/migrations/pg/0002_change_task_id_to_uuid_v7.sql +3 -0
  243. package/dist/shared/db/migrations/pg/meta/0000_snapshot.json +498 -0
  244. package/dist/shared/db/migrations/pg/meta/0001_snapshot.json +513 -0
  245. package/dist/shared/db/migrations/pg/meta/0002_snapshot.json +514 -0
  246. package/dist/shared/db/migrations/pg/meta/_journal.json +27 -0
  247. package/dist/shared/db/migrations/sqlite/0000_init.sql +72 -0
  248. package/dist/shared/db/migrations/sqlite/0001_snippets & tokens.sql +2 -0
  249. package/dist/shared/db/migrations/sqlite/0002_change_task_id_to_uuid_v7.sql +35 -0
  250. package/dist/shared/db/migrations/sqlite/meta/0000_snapshot.json +493 -0
  251. package/dist/shared/db/migrations/sqlite/meta/0001_snapshot.json +509 -0
  252. package/dist/shared/db/migrations/sqlite/meta/0002_snapshot.json +509 -0
  253. package/dist/shared/db/migrations/sqlite/meta/_journal.json +27 -0
  254. package/dist/shared/db/seed.d.mts +5 -0
  255. package/dist/shared/db/seed.d.mts.map +1 -0
  256. package/dist/shared/db/seed.mjs +42 -0
  257. package/dist/shared/db/seed.mjs.map +1 -0
  258. package/dist/shared/deps.d.mts +28 -0
  259. package/dist/shared/deps.d.mts.map +1 -0
  260. package/dist/shared/deps.mjs +69 -0
  261. package/dist/shared/deps.mjs.map +1 -0
  262. package/dist/shared/dto/index.d.mts +11 -0
  263. package/dist/shared/dto/index.d.mts.map +1 -0
  264. package/dist/shared/dto/index.mjs +11 -0
  265. package/dist/shared/dto/index.mjs.map +1 -0
  266. package/dist/shared/logger.d.mts +14 -0
  267. package/dist/shared/logger.d.mts.map +1 -0
  268. package/dist/shared/logger.mjs +37 -0
  269. package/dist/shared/logger.mjs.map +1 -0
  270. package/dist/shared/mcp/createTool.d.mts +15 -0
  271. package/dist/shared/mcp/createTool.d.mts.map +1 -0
  272. package/dist/shared/mcp/createTool.mjs +8 -0
  273. package/dist/shared/mcp/createTool.mjs.map +1 -0
  274. package/dist/shared/middleware/authorization.d.mts +15 -0
  275. package/dist/shared/middleware/authorization.d.mts.map +1 -0
  276. package/dist/shared/middleware/authorization.mjs +46 -0
  277. package/dist/shared/middleware/authorization.mjs.map +1 -0
  278. package/dist/shared/middleware/http-logger.d.mts +7 -0
  279. package/dist/shared/middleware/http-logger.d.mts.map +1 -0
  280. package/dist/shared/middleware/http-logger.mjs +40 -0
  281. package/dist/shared/middleware/http-logger.mjs.map +1 -0
  282. package/dist/shared/middleware/jwt.d.mts +7 -0
  283. package/dist/shared/middleware/jwt.d.mts.map +1 -0
  284. package/dist/shared/middleware/jwt.mjs +34 -0
  285. package/dist/shared/middleware/jwt.mjs.map +1 -0
  286. package/dist/shared/middleware/limiter.d.mts +7 -0
  287. package/dist/shared/middleware/limiter.d.mts.map +1 -0
  288. package/dist/shared/middleware/limiter.mjs +10 -0
  289. package/dist/shared/middleware/limiter.mjs.map +1 -0
  290. package/dist/shared/middleware/services.d.mts +8 -0
  291. package/dist/shared/middleware/services.d.mts.map +1 -0
  292. package/dist/shared/middleware/services.mjs +19 -0
  293. package/dist/shared/middleware/services.mjs.map +1 -0
  294. package/dist/shared/redis/decorator.d.mts +113 -0
  295. package/dist/shared/redis/decorator.d.mts.map +1 -0
  296. package/dist/shared/redis/decorator.mjs +203 -0
  297. package/dist/shared/redis/decorator.mjs.map +1 -0
  298. package/dist/shared/redis/factory.d.mts +18 -0
  299. package/dist/shared/redis/factory.d.mts.map +1 -0
  300. package/dist/shared/redis/factory.mjs +41 -0
  301. package/dist/shared/redis/factory.mjs.map +1 -0
  302. package/dist/shared/redis/index.d.mts +12 -0
  303. package/dist/shared/redis/index.d.mts.map +1 -0
  304. package/dist/shared/redis/index.mjs +14 -0
  305. package/dist/shared/redis/index.mjs.map +1 -0
  306. package/dist/shared/types.d.mts +36 -0
  307. package/dist/shared/types.d.mts.map +1 -0
  308. package/dist/shared/types.mjs +1 -0
  309. package/dist/shared/utils/date.d.mts +1 -0
  310. package/dist/shared/utils/date.mjs +1 -0
  311. package/dist/shared/utils/error-handler.d.mts +7 -0
  312. package/dist/shared/utils/error-handler.d.mts.map +1 -0
  313. package/dist/shared/utils/error-handler.mjs +22 -0
  314. package/dist/shared/utils/error-handler.mjs.map +1 -0
  315. package/dist/shared/utils/format.d.mts +8 -0
  316. package/dist/shared/utils/format.d.mts.map +1 -0
  317. package/dist/shared/utils/format.mjs +24 -0
  318. package/dist/shared/utils/format.mjs.map +1 -0
  319. package/dist/shared/utils/pagination.d.mts +9 -0
  320. package/dist/shared/utils/pagination.d.mts.map +1 -0
  321. package/dist/shared/utils/pagination.mjs +12 -0
  322. package/dist/shared/utils/pagination.mjs.map +1 -0
  323. package/dist/shared/utils/response-template.d.mts +69 -0
  324. package/dist/shared/utils/response-template.d.mts.map +1 -0
  325. package/dist/shared/utils/response-template.mjs +96 -0
  326. package/dist/shared/utils/response-template.mjs.map +1 -0
  327. package/dist/shared/utils/url.d.mts +18 -0
  328. package/dist/shared/utils/url.d.mts.map +1 -0
  329. package/dist/shared/utils/url.mjs +39 -0
  330. package/dist/shared/utils/url.mjs.map +1 -0
  331. package/dist/shared/utils/user.d.mts +8 -0
  332. package/dist/shared/utils/user.d.mts.map +1 -0
  333. package/dist/shared/utils/user.mjs +11 -0
  334. package/dist/shared/utils/user.mjs.map +1 -0
  335. package/dist/shared/utils/validator.d.mts +5984 -0
  336. package/dist/shared/utils/validator.d.mts.map +1 -0
  337. package/dist/shared/utils/validator.mjs +34 -0
  338. package/dist/shared/utils/validator.mjs.map +1 -0
  339. package/dist/shared/vo/index.d.mts +11 -0
  340. package/dist/shared/vo/index.d.mts.map +1 -0
  341. package/dist/shared/vo/index.mjs +1 -0
  342. package/package.json +86 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deps.mjs","names":[],"sources":["../../src/shared/deps.ts"],"sourcesContent":["import type { IDocRepository } from '@/modules/doc/doc.repo.interface'\nimport type { ITaskRepository } from '@/modules/task/task.repo.interface'\nimport type { IUserRepository } from '@/modules/user/domain/user.repo.interface'\n\nimport { ChatService } from '@/modules/doc/chat.service'\nimport { DocService } from '@/modules/doc/doc.service'\nimport { PgDocRepository } from '@/modules/doc/infrastructure/doc.repo.pg'\nimport { SqliteDocRepository } from '@/modules/doc/infrastructure/doc.repo.sqlite'\nimport { RankService } from '@/modules/rank/rank.service'\nimport { PgTaskRepository } from '@/modules/task/infrastructure/task.repo.pg'\nimport { SqliteTaskRepository } from '@/modules/task/infrastructure/task.repo.sqlite'\nimport { TaskService } from '@/modules/task/task.service'\nimport { userPg, userSqlite } from '@/modules/user/infrastructure/user.po'\nimport { PgUserRepository } from '@/modules/user/infrastructure/user.repo.pg'\nimport { SqliteUserRepository } from '@/modules/user/infrastructure/user.repo.sqlite'\nimport { getDbProvider, getPgDb, getSqliteDb } from '@/shared/db/connection'\n\nexport type DatabaseProvider = 'postgresql' | 'sqlite'\n\nexport interface RepoDeps {\n provider: DatabaseProvider\n userRepo: IUserRepository\n docRepo: IDocRepository\n taskRepo: ITaskRepository\n ping: () => Promise<boolean>\n}\n\nexport interface ServiceDeps {\n taskService: TaskService\n rankService: RankService\n chatService: ChatService\n docService: DocService\n}\n\nlet repoDeps: RepoDeps | null = null\n\nlet serviceDeps: ServiceDeps | null = null\n\nexport function getRepoDeps(): RepoDeps {\n if (repoDeps)\n return repoDeps\n\n const provider = getDbProvider()\n\n if (provider === 'postgresql') {\n const db = getPgDb()\n const userRepo = new PgUserRepository(db)\n const docRepo = new PgDocRepository(db)\n const taskRepo = new PgTaskRepository(db)\n\n repoDeps = {\n provider,\n userRepo,\n docRepo,\n taskRepo,\n async ping() {\n try {\n await db.select().from(userPg).limit(1)\n return true\n }\n catch {\n return false\n }\n },\n }\n\n return repoDeps\n }\n\n const db = getSqliteDb()\n const userRepo = new SqliteUserRepository(db)\n const docRepo = new SqliteDocRepository(db)\n const taskRepo = new SqliteTaskRepository(db)\n\n repoDeps = {\n provider,\n userRepo,\n docRepo,\n taskRepo,\n async ping() {\n try {\n await db.select().from(userSqlite).limit(1)\n return true\n }\n catch {\n return false\n }\n },\n }\n\n return repoDeps\n}\n\nexport function getServiceDeps() {\n if (serviceDeps)\n return serviceDeps\n\n const docRepo = getRepoDeps().docRepo\n\n serviceDeps = {\n taskService: new TaskService(),\n rankService: new RankService(docRepo),\n chatService: new ChatService(),\n docService: new DocService(),\n }\n\n return serviceDeps\n}\n"],"mappings":";;;;;;;;;;;;;;AAkCA,IAAI,WAA4B;AAEhC,IAAI,cAAkC;AAEtC,SAAgB,cAAwB;AACtC,KAAI,SACF,QAAO;CAET,MAAM,WAAW,eAAe;AAEhC,KAAI,aAAa,cAAc;EAC7B,MAAM,KAAK,SAAS;AAKpB,aAAW;GACT;GACA,UANe,IAAI,iBAAiB,GAAG;GAOvC,SANc,IAAI,gBAAgB,GAAG;GAOrC,UANe,IAAI,iBAAiB,GAAG;GAOvC,MAAM,OAAO;AACX,QAAI;AACF,WAAM,GAAG,QAAQ,CAAC,KAAK,OAAO,CAAC,MAAM,EAAE;AACvC,YAAO;YAEH;AACJ,YAAO;;;GAGZ;AAED,SAAO;;CAGT,MAAM,KAAK,aAAa;AAKxB,YAAW;EACT;EACA,UANe,IAAI,qBAAqB,GAAG;EAO3C,SANc,IAAI,oBAAoB,GAAG;EAOzC,UANe,IAAI,qBAAqB,GAAG;EAO3C,MAAM,OAAO;AACX,OAAI;AACF,UAAM,GAAG,QAAQ,CAAC,KAAK,WAAW,CAAC,MAAM,EAAE;AAC3C,WAAO;WAEH;AACJ,WAAO;;;EAGZ;AAED,QAAO;;AAGT,SAAgB,iBAAiB;AAC/B,KAAI,YACF,QAAO;CAET,MAAM,UAAU,aAAa,CAAC;AAE9B,eAAc;EACZ,aAAa,IAAI,aAAa;EAC9B,aAAa,IAAI,YAAY,QAAQ;EACrC,aAAa,IAAI,aAAa;EAC9B,YAAY,IAAI,YAAY;EAC7B;AAED,QAAO"}
@@ -0,0 +1,11 @@
1
+ import { z as z$1 } from "zod";
2
+
3
+ //#region src/shared/dto/index.d.ts
4
+ declare const paginationQuerySchema: z$1.ZodObject<{
5
+ page: z$1.ZodDefault<z$1.ZodOptional<z$1.ZodCoercedNumber<unknown>>>;
6
+ pageSize: z$1.ZodDefault<z$1.ZodOptional<z$1.ZodCoercedNumber<unknown>>>;
7
+ }, z$1.core.$strip>;
8
+ type PaginationQueryDTO = z$1.infer<typeof paginationQuerySchema>;
9
+ //#endregion
10
+ export { PaginationQueryDTO, paginationQuerySchema };
11
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../src/shared/dto/index.ts"],"mappings":";;;cAEa,qBAAA,EAAqB,GAAA,CAAA,SAAA;;;;KAKtB,kBAAA,GAAqB,GAAA,CAAE,KAAA,QAAa,qBAAA"}
@@ -0,0 +1,11 @@
1
+ import { z as z$1 } from "zod";
2
+
3
+ //#region src/shared/dto/index.ts
4
+ const paginationQuerySchema = z$1.object({
5
+ page: z$1.coerce.number().int().min(1).optional().default(1),
6
+ pageSize: z$1.coerce.number().int().min(1).max(100).optional().default(10)
7
+ });
8
+
9
+ //#endregion
10
+ export { paginationQuerySchema };
11
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["z"],"sources":["../../../src/shared/dto/index.ts"],"sourcesContent":["import { z } from 'zod'\n\nexport const paginationQuerySchema = z.object({\n page: z.coerce.number().int().min(1).optional().default(1),\n pageSize: z.coerce.number().int().min(1).max(100).optional().default(10),\n})\n\nexport type PaginationQueryDTO = z.infer<typeof paginationQuerySchema>\n"],"mappings":";;;AAEA,MAAa,wBAAwBA,IAAE,OAAO;CAC5C,MAAMA,IAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE;CAC1D,UAAUA,IAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG;CACzE,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { AsyncLocalStorage } from "node:async_hooks";
2
+ import pino from "pino";
3
+
4
+ //#region src/shared/logger.d.ts
5
+ interface TraceContext {
6
+ traceId: string;
7
+ taskId?: string;
8
+ }
9
+ declare const traceStorage: AsyncLocalStorage<TraceContext>;
10
+ declare const logger: pino.Logger<never, boolean>;
11
+ declare function runInContext<T>(traceId: string, fn: () => T, taskId?: string): T;
12
+ //#endregion
13
+ export { logger, runInContext, traceStorage };
14
+ //# sourceMappingURL=logger.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.mts","names":[],"sources":["../../src/shared/logger.ts"],"mappings":";;;;UAMU,YAAA;EACR,OAAA;EACA,MAAA;AAAA;AAAA,cAGW,YAAA,EAAY,iBAAA,CAAA,YAAA;AAAA,cAaZ,MAAA,EAAM,IAAA,CAAA,MAAA;AAAA,iBAeH,YAAA,GAAA,CAAgB,OAAA,UAAiB,EAAA,QAAU,CAAA,EAAG,MAAA,YAAkB,CAAA"}
@@ -0,0 +1,37 @@
1
+ import AppSettings from "../settings.mjs";
2
+ import { AsyncLocalStorage } from "node:async_hooks";
3
+ import pino from "pino";
4
+
5
+ //#region src/shared/logger.ts
6
+ const { config } = AppSettings;
7
+ const traceStorage = new AsyncLocalStorage();
8
+ const transport = config.log.pretty && config.is_dev ? pino.transport({
9
+ target: "pino-pretty",
10
+ options: {
11
+ colorize: true,
12
+ translateTime: "SYS:standard",
13
+ singleLine: false
14
+ }
15
+ }) : void 0;
16
+ const logger = pino({
17
+ level: config.log.level,
18
+ enabled: config.log.enabled,
19
+ redact: config.log.redact,
20
+ mixin() {
21
+ const store = traceStorage.getStore();
22
+ if (!store) return {};
23
+ const base = {};
24
+ if (store.traceId) base.traceId = store.traceId;
25
+ return base;
26
+ }
27
+ }, transport);
28
+ function runInContext(traceId, fn, taskId) {
29
+ return traceStorage.run({
30
+ traceId,
31
+ taskId
32
+ }, fn);
33
+ }
34
+
35
+ //#endregion
36
+ export { logger, runInContext, traceStorage };
37
+ //# sourceMappingURL=logger.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.mjs","names":[],"sources":["../../src/shared/logger.ts"],"sourcesContent":["import { AsyncLocalStorage } from 'node:async_hooks'\nimport pino from 'pino'\nimport AppSettings from '@/settings'\n\nconst { config } = AppSettings\n\ninterface TraceContext {\n traceId: string\n taskId?: string\n}\n\nexport const traceStorage = new AsyncLocalStorage<TraceContext>()\n\nconst transport = config.log.pretty && config.is_dev\n ? pino.transport({\n target: 'pino-pretty',\n options: {\n colorize: true,\n translateTime: 'SYS:standard',\n singleLine: false,\n },\n })\n : undefined\n\nexport const logger = pino({\n level: config.log.level,\n enabled: config.log.enabled,\n redact: config.log.redact,\n mixin() {\n const store = traceStorage.getStore()\n if (!store)\n return {}\n const base: Record<string, string> = {}\n if (store.traceId)\n base.traceId = store.traceId\n return base\n },\n}, transport)\n\nexport function runInContext<T>(traceId: string, fn: () => T, taskId?: string): T {\n return traceStorage.run({ traceId, taskId }, fn)\n}\n"],"mappings":";;;;;AAIA,MAAM,EAAE,WAAW;AAOnB,MAAa,eAAe,IAAI,mBAAiC;AAEjE,MAAM,YAAY,OAAO,IAAI,UAAU,OAAO,SAC1C,KAAK,UAAU;CACb,QAAQ;CACR,SAAS;EACP,UAAU;EACV,eAAe;EACf,YAAY;EACb;CACF,CAAC,GACF;AAEJ,MAAa,SAAS,KAAK;CACzB,OAAO,OAAO,IAAI;CAClB,SAAS,OAAO,IAAI;CACpB,QAAQ,OAAO,IAAI;CACnB,QAAQ;EACN,MAAM,QAAQ,aAAa,UAAU;AACrC,MAAI,CAAC,MACH,QAAO,EAAE;EACX,MAAM,OAA+B,EAAE;AACvC,MAAI,MAAM,QACR,MAAK,UAAU,MAAM;AACvB,SAAO;;CAEV,EAAE,UAAU;AAEb,SAAgB,aAAgB,SAAiB,IAAa,QAAoB;AAChF,QAAO,aAAa,IAAI;EAAE;EAAS;EAAQ,EAAE,GAAG"}
@@ -0,0 +1,15 @@
1
+ import { ZodTypeAny, infer as __Infer } from "zod";
2
+
3
+ //#region src/shared/mcp/createTool.d.ts
4
+ interface ToolDefinition<TInputSchema extends ZodTypeAny, TOutputSchema extends ZodTypeAny | undefined = undefined> {
5
+ name: string;
6
+ title?: string;
7
+ description: string;
8
+ schema: TInputSchema;
9
+ outputSchema?: TOutputSchema;
10
+ handler: (input: __Infer<TInputSchema>) => Promise<unknown> | unknown;
11
+ }
12
+ declare function createTool<TInputSchema extends ZodTypeAny, TOutputSchema extends ZodTypeAny | undefined = undefined>(tool: ToolDefinition<TInputSchema, TOutputSchema>): ToolDefinition<TInputSchema, TOutputSchema>;
13
+ //#endregion
14
+ export { ToolDefinition, createTool };
15
+ //# sourceMappingURL=createTool.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTool.d.mts","names":[],"sources":["../../../src/shared/mcp/createTool.ts"],"mappings":";;;UAEiB,cAAA,sBACM,UAAA,wBACC,UAAA;EAEtB,IAAA;EACA,KAAA;EACA,WAAA;EACA,MAAA,EAAQ,YAAA;EACR,YAAA,GAAe,aAAA;EACf,OAAA,GAAU,KAAA,EAAO,OAAA,CAAS,YAAA,MAAkB,OAAA;AAAA;AAAA,iBAG9B,UAAA,sBACO,UAAA,wBACC,UAAA,yBAAA,CACtB,IAAA,EAAM,cAAA,CAAe,YAAA,EAAc,aAAA,IAAc,cAAA,CAAA,YAAA,EAAA,aAAA"}
@@ -0,0 +1,8 @@
1
+ //#region src/shared/mcp/createTool.ts
2
+ function createTool(tool) {
3
+ return tool;
4
+ }
5
+
6
+ //#endregion
7
+ export { createTool };
8
+ //# sourceMappingURL=createTool.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTool.mjs","names":[],"sources":["../../../src/shared/mcp/createTool.ts"],"sourcesContent":["import type { infer as ZodInfer, ZodTypeAny } from 'zod'\n\nexport interface ToolDefinition<\n TInputSchema extends ZodTypeAny,\n TOutputSchema extends ZodTypeAny | undefined = undefined,\n> {\n name: string\n title?: string\n description: string\n schema: TInputSchema\n outputSchema?: TOutputSchema\n handler: (input: ZodInfer<TInputSchema>) => Promise<unknown> | unknown\n}\n\nexport function createTool<\n TInputSchema extends ZodTypeAny,\n TOutputSchema extends ZodTypeAny | undefined = undefined,\n>(tool: ToolDefinition<TInputSchema, TOutputSchema>) {\n return tool\n}\n"],"mappings":";AAcA,SAAgB,WAGd,MAAmD;AACnD,QAAO"}
@@ -0,0 +1,15 @@
1
+ import * as hono from "hono";
2
+ import { Context, Next } from "hono";
3
+
4
+ //#region src/shared/middleware/authorization.d.ts
5
+ declare function authorization(config?: {
6
+ safeMethods?: string[];
7
+ safePaths?: string[];
8
+ }): (c: Context, next: Next) => Promise<void | (Response & hono.TypedResponse<{
9
+ message: string;
10
+ }, 403, "json">) | (Response & hono.TypedResponse<{
11
+ message: string;
12
+ }, 401, "json">)>;
13
+ //#endregion
14
+ export { authorization };
15
+ //# sourceMappingURL=authorization.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authorization.d.mts","names":[],"sources":["../../../src/shared/middleware/authorization.ts"],"mappings":";;;;iBAQgB,aAAA,CAAc,MAAA;EAC5B,WAAA;EACA,SAAA;AAAA,KAMc,CAAA,EAAG,OAAA,EAAS,IAAA,EAAM,IAAA,KAAI,OAAA,SAAA,QAAA,GAAA,IAAA,CAAA,aAAA"}
@@ -0,0 +1,46 @@
1
+ import { logger } from "../logger.mjs";
2
+ import { getEnforcer } from "../../modules/user/infrastructure/casbin/enforcer.mjs";
3
+ import { getCookie } from "hono/cookie";
4
+
5
+ //#region src/shared/middleware/authorization.ts
6
+ const SAFE_METHODS = [
7
+ "GET",
8
+ "HEAD",
9
+ "OPTIONS"
10
+ ];
11
+ const SAFE_PATHS = [
12
+ "/api/users/login",
13
+ "/api/chat",
14
+ "/api/ranking/docs",
15
+ "/mcp"
16
+ ];
17
+ function authorization(config) {
18
+ const { safeMethods = SAFE_METHODS, safePaths = SAFE_PATHS } = config || {};
19
+ return async (c, next) => {
20
+ if (c.req.method === "OPTIONS") return next();
21
+ const user = c.get("user");
22
+ const hasRole = typeof user?.role === "string" && user.role.length > 0;
23
+ if (!safeMethods.includes(c.req.method) && !safePaths.includes(c.req.path)) {
24
+ const csrfCookie = getCookie(c, "csrf_token");
25
+ const csrfHeader = c.req.header("X-CSRF-Token");
26
+ if (!csrfCookie || !csrfHeader || csrfCookie !== csrfHeader) {
27
+ logger.warn(`CSRF Token Mismatch, cookie csrf_token: ${csrfCookie}, header X-CSRF-Token: ${csrfHeader}`);
28
+ return c.json({ message: "CSRF Token Mismatch" }, 403);
29
+ }
30
+ }
31
+ const enforcer = getEnforcer();
32
+ const role = hasRole ? user.role : "guest";
33
+ const obj = c.req.path;
34
+ const act = c.req.method;
35
+ logger.info(`Authorization, role: ${role}, obj: ${obj}, act: ${act}`);
36
+ if (!await enforcer.enforce(role, obj, act)) {
37
+ if (hasRole) return c.json({ message: "无权限" }, 403);
38
+ return c.json({ message: "未登录或登录状态异常" }, 401);
39
+ }
40
+ return next();
41
+ };
42
+ }
43
+
44
+ //#endregion
45
+ export { authorization };
46
+ //# sourceMappingURL=authorization.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authorization.mjs","names":[],"sources":["../../../src/shared/middleware/authorization.ts"],"sourcesContent":["import type { Context, Next } from 'hono'\nimport { getCookie } from 'hono/cookie'\nimport { getEnforcer } from '@/modules/user/infrastructure/casbin/enforcer'\nimport { logger } from '@/shared/logger'\n\nconst SAFE_METHODS = ['GET', 'HEAD', 'OPTIONS']\nconst SAFE_PATHS = ['/api/users/login', '/api/chat', '/api/ranking/docs', '/mcp']\n\nexport function authorization(config?: {\n safeMethods?: string[]\n safePaths?: string[]\n}) {\n const {\n safeMethods = SAFE_METHODS,\n safePaths = SAFE_PATHS,\n } = config || {}\n return async (c: Context, next: Next) => {\n if (c.req.method === 'OPTIONS')\n return next()\n const user = c.get('user') as { id: number, username: string, role: string | null } | undefined\n const hasRole = typeof user?.role === 'string' && user.role.length > 0\n // TODO: 进一步考虑guest 身份 和 资源权限\n if (!safeMethods.includes(c.req.method) && !safePaths.includes(c.req.path)) {\n const csrfCookie = getCookie(c, 'csrf_token')\n const csrfHeader = c.req.header('X-CSRF-Token')\n if (!csrfCookie || !csrfHeader || csrfCookie !== csrfHeader) {\n logger.warn(`CSRF Token Mismatch, cookie csrf_token: ${csrfCookie}, header X-CSRF-Token: ${csrfHeader}`)\n return c.json({ message: 'CSRF Token Mismatch' }, 403)\n }\n }\n\n const enforcer = getEnforcer()\n const role = hasRole ? user!.role : 'guest'\n const obj = c.req.path\n const act = c.req.method\n logger.info(`Authorization, role: ${role}, obj: ${obj}, act: ${act}`)\n\n const allowed = await enforcer.enforce(role, obj, act)\n if (!allowed) {\n if (hasRole) {\n return c.json({ message: '无权限' }, 403)\n }\n return c.json({ message: '未登录或登录状态异常' }, 401)\n }\n return next()\n }\n}\n"],"mappings":";;;;;AAKA,MAAM,eAAe;CAAC;CAAO;CAAQ;CAAU;AAC/C,MAAM,aAAa;CAAC;CAAoB;CAAa;CAAqB;CAAO;AAEjF,SAAgB,cAAc,QAG3B;CACD,MAAM,EACJ,cAAc,cACd,YAAY,eACV,UAAU,EAAE;AAChB,QAAO,OAAO,GAAY,SAAe;AACvC,MAAI,EAAE,IAAI,WAAW,UACnB,QAAO,MAAM;EACf,MAAM,OAAO,EAAE,IAAI,OAAO;EAC1B,MAAM,UAAU,OAAO,MAAM,SAAS,YAAY,KAAK,KAAK,SAAS;AAErE,MAAI,CAAC,YAAY,SAAS,EAAE,IAAI,OAAO,IAAI,CAAC,UAAU,SAAS,EAAE,IAAI,KAAK,EAAE;GAC1E,MAAM,aAAa,UAAU,GAAG,aAAa;GAC7C,MAAM,aAAa,EAAE,IAAI,OAAO,eAAe;AAC/C,OAAI,CAAC,cAAc,CAAC,cAAc,eAAe,YAAY;AAC3D,WAAO,KAAK,2CAA2C,WAAW,yBAAyB,aAAa;AACxG,WAAO,EAAE,KAAK,EAAE,SAAS,uBAAuB,EAAE,IAAI;;;EAI1D,MAAM,WAAW,aAAa;EAC9B,MAAM,OAAO,UAAU,KAAM,OAAO;EACpC,MAAM,MAAM,EAAE,IAAI;EAClB,MAAM,MAAM,EAAE,IAAI;AAClB,SAAO,KAAK,wBAAwB,KAAK,SAAS,IAAI,SAAS,MAAM;AAGrE,MAAI,CADY,MAAM,SAAS,QAAQ,MAAM,KAAK,IAAI,EACxC;AACZ,OAAI,QACF,QAAO,EAAE,KAAK,EAAE,SAAS,OAAO,EAAE,IAAI;AAExC,UAAO,EAAE,KAAK,EAAE,SAAS,cAAc,EAAE,IAAI;;AAE/C,SAAO,MAAM"}
@@ -0,0 +1,7 @@
1
+ import { MiddlewareHandler } from "hono";
2
+
3
+ //#region src/shared/middleware/http-logger.d.ts
4
+ declare function httpLogger(): MiddlewareHandler;
5
+ //#endregion
6
+ export { httpLogger };
7
+ //# sourceMappingURL=http-logger.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-logger.d.mts","names":[],"sources":["../../../src/shared/middleware/http-logger.ts"],"mappings":";;;iBAOgB,UAAA,CAAA,GAAc,iBAAA"}
@@ -0,0 +1,40 @@
1
+ import AppSettings from "../../settings.mjs";
2
+ import { logger, runInContext } from "../logger.mjs";
3
+ import { randomUUID } from "node:crypto";
4
+
5
+ //#region src/shared/middleware/http-logger.ts
6
+ const { config } = AppSettings;
7
+ function httpLogger() {
8
+ return async (c, next) => {
9
+ const start = Date.now();
10
+ const requestId = c.get("requestId");
11
+ const traceId = typeof requestId === "string" && requestId.length > 0 ? requestId : randomUUID();
12
+ return runInContext(traceId, async () => {
13
+ const scoped = logger.child({});
14
+ c.set("logger", scoped);
15
+ c.set("traceId", traceId);
16
+ await next();
17
+ const url = c.req.path;
18
+ const method = c.req.method;
19
+ const status = c.res.status;
20
+ const duration = Date.now() - start;
21
+ if (!config.log.autoLoggingIgnorePaths.some((path) => url.startsWith(path))) {
22
+ const user = c.get("user");
23
+ scoped.info({
24
+ method,
25
+ url,
26
+ status,
27
+ duration,
28
+ user: {
29
+ name: user?.username,
30
+ role: user?.role || "guest"
31
+ }
32
+ }, "request completed");
33
+ }
34
+ });
35
+ };
36
+ }
37
+
38
+ //#endregion
39
+ export { httpLogger };
40
+ //# sourceMappingURL=http-logger.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-logger.mjs","names":[],"sources":["../../../src/shared/middleware/http-logger.ts"],"sourcesContent":["import type { MiddlewareHandler } from 'hono'\nimport { randomUUID } from 'node:crypto'\nimport AppSettings from '@/settings'\nimport { logger, runInContext } from '@/shared/logger'\n\nconst { config } = AppSettings\n\nexport function httpLogger(): MiddlewareHandler {\n return async (c, next) => {\n const start = Date.now()\n const requestId = c.get('requestId')\n const traceId = typeof requestId === 'string' && requestId.length > 0 ? requestId : randomUUID()\n\n return runInContext(traceId, async () => {\n const scoped = logger.child({})\n c.set('logger', scoped)\n c.set('traceId', traceId)\n\n await next()\n\n const url = c.req.path\n const method = c.req.method\n const status = c.res.status\n const duration = Date.now() - start\n\n const ignore = config.log.autoLoggingIgnorePaths.some((path: string) => url.startsWith(path))\n if (!ignore) {\n const user = c.get('user')\n scoped.info({ method, url, status, duration, user: {\n name: user?.username,\n role: user?.role || 'guest',\n } }, 'request completed')\n }\n })\n }\n}\n"],"mappings":";;;;;AAKA,MAAM,EAAE,WAAW;AAEnB,SAAgB,aAAgC;AAC9C,QAAO,OAAO,GAAG,SAAS;EACxB,MAAM,QAAQ,KAAK,KAAK;EACxB,MAAM,YAAY,EAAE,IAAI,YAAY;EACpC,MAAM,UAAU,OAAO,cAAc,YAAY,UAAU,SAAS,IAAI,YAAY,YAAY;AAEhG,SAAO,aAAa,SAAS,YAAY;GACvC,MAAM,SAAS,OAAO,MAAM,EAAE,CAAC;AAC/B,KAAE,IAAI,UAAU,OAAO;AACvB,KAAE,IAAI,WAAW,QAAQ;AAEzB,SAAM,MAAM;GAEZ,MAAM,MAAM,EAAE,IAAI;GAClB,MAAM,SAAS,EAAE,IAAI;GACrB,MAAM,SAAS,EAAE,IAAI;GACrB,MAAM,WAAW,KAAK,KAAK,GAAG;AAG9B,OAAI,CADW,OAAO,IAAI,uBAAuB,MAAM,SAAiB,IAAI,WAAW,KAAK,CAAC,EAChF;IACX,MAAM,OAAO,EAAE,IAAI,OAAO;AAC1B,WAAO,KAAK;KAAE;KAAQ;KAAK;KAAQ;KAAU,MAAM;MACjD,MAAM,MAAM;MACZ,MAAM,MAAM,QAAQ;MACrB;KAAE,EAAE,oBAAoB;;IAE3B"}
@@ -0,0 +1,7 @@
1
+ import { MiddlewareHandler } from "hono";
2
+
3
+ //#region src/shared/middleware/jwt.d.ts
4
+ declare function jwt(): MiddlewareHandler;
5
+ //#endregion
6
+ export { jwt };
7
+ //# sourceMappingURL=jwt.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt.d.mts","names":[],"sources":["../../../src/shared/middleware/jwt.ts"],"mappings":";;;iBAMgB,GAAA,CAAA,GAAO,iBAAA"}
@@ -0,0 +1,34 @@
1
+ import AppSettings from "../../settings.mjs";
2
+ import { logger } from "../logger.mjs";
3
+ import { getCookie } from "hono/cookie";
4
+ import { verify } from "hono/jwt";
5
+
6
+ //#region src/shared/middleware/jwt.ts
7
+ function jwt() {
8
+ return async (c, next) => {
9
+ const accessToken = getCookie(c, "access_token");
10
+ if (accessToken) try {
11
+ const payload = await verify(accessToken, AppSettings.config.jwt_secret, "HS256");
12
+ if (payload && typeof payload === "object") {
13
+ const sub = typeof payload.sub === "string" ? Number.parseInt(payload.sub, 10) : typeof payload.sub === "number" ? payload.sub : NaN;
14
+ const id = Number.isFinite(sub) ? sub : null;
15
+ const username = typeof payload.username === "string" ? payload.username : "";
16
+ const role = payload.role === "admin" || payload.role === "user" ? payload.role : null;
17
+ if (id) c.set("user", {
18
+ id,
19
+ username,
20
+ role
21
+ });
22
+ }
23
+ } catch (err) {
24
+ c.set("user", null);
25
+ logger.error("JWT verification failed:", err);
26
+ }
27
+ else c.set("user", null);
28
+ await next();
29
+ };
30
+ }
31
+
32
+ //#endregion
33
+ export { jwt };
34
+ //# sourceMappingURL=jwt.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt.mjs","names":[],"sources":["../../../src/shared/middleware/jwt.ts"],"sourcesContent":["import type { MiddlewareHandler } from 'hono'\nimport { getCookie } from 'hono/cookie'\nimport { verify } from 'hono/jwt'\nimport AppSettings from '@/settings'\nimport { logger } from '@/shared/logger'\n\nexport function jwt(): MiddlewareHandler {\n return async (c, next) => {\n const accessToken = getCookie(c, 'access_token')\n // console.log('JWT Middleware, access_token:', accessToken)\n if (accessToken) {\n try {\n const payload = await verify(accessToken, AppSettings.config.jwt_secret, 'HS256')\n if (payload && typeof payload === 'object') {\n const sub = typeof payload.sub === 'string'\n ? Number.parseInt(payload.sub, 10)\n : (typeof payload.sub === 'number' ? payload.sub : Number.NaN)\n const id = Number.isFinite(sub) ? sub : null\n const username = typeof (payload as any).username === 'string' ? (payload as any).username : ''\n const role = (payload as any).role === 'admin' || (payload as any).role === 'user' ? (payload as any).role : null\n if (id) {\n c.set('user', { id, username, role })\n }\n }\n }\n catch (err: any) {\n c.set('user', null)\n logger.error('JWT verification failed:', err)\n }\n }\n else {\n c.set('user', null)\n }\n\n await next()\n }\n}\n"],"mappings":";;;;;;AAMA,SAAgB,MAAyB;AACvC,QAAO,OAAO,GAAG,SAAS;EACxB,MAAM,cAAc,UAAU,GAAG,eAAe;AAEhD,MAAI,YACF,KAAI;GACF,MAAM,UAAU,MAAM,OAAO,aAAa,YAAY,OAAO,YAAY,QAAQ;AACjF,OAAI,WAAW,OAAO,YAAY,UAAU;IAC1C,MAAM,MAAM,OAAO,QAAQ,QAAQ,WAC/B,OAAO,SAAS,QAAQ,KAAK,GAAG,GAC/B,OAAO,QAAQ,QAAQ,WAAW,QAAQ,MAAM;IACrD,MAAM,KAAK,OAAO,SAAS,IAAI,GAAG,MAAM;IACxC,MAAM,WAAW,OAAQ,QAAgB,aAAa,WAAY,QAAgB,WAAW;IAC7F,MAAM,OAAQ,QAAgB,SAAS,WAAY,QAAgB,SAAS,SAAU,QAAgB,OAAO;AAC7G,QAAI,GACF,GAAE,IAAI,QAAQ;KAAE;KAAI;KAAU;KAAM,CAAC;;WAIpC,KAAU;AACf,KAAE,IAAI,QAAQ,KAAK;AACnB,UAAO,MAAM,4BAA4B,IAAI;;MAI/C,GAAE,IAAI,QAAQ,KAAK;AAGrB,QAAM,MAAM"}
@@ -0,0 +1,7 @@
1
+ import { MiddlewareHandler } from "hono";
2
+
3
+ //#region src/shared/middleware/limiter.d.ts
4
+ declare function limiter(_limit: number): MiddlewareHandler;
5
+ //#endregion
6
+ export { limiter };
7
+ //# sourceMappingURL=limiter.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limiter.d.mts","names":[],"sources":["../../../src/shared/middleware/limiter.ts"],"mappings":";;;iBAEgB,OAAA,CAAQ,MAAA,WAAiB,iBAAA"}
@@ -0,0 +1,10 @@
1
+ //#region src/shared/middleware/limiter.ts
2
+ function limiter(_limit) {
3
+ return async (_c, next) => {
4
+ await next();
5
+ };
6
+ }
7
+
8
+ //#endregion
9
+ export { limiter };
10
+ //# sourceMappingURL=limiter.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limiter.mjs","names":[],"sources":["../../../src/shared/middleware/limiter.ts"],"sourcesContent":["import type { MiddlewareHandler } from 'hono'\n\nexport function limiter(_limit: number): MiddlewareHandler {\n return async (_c, next) => {\n await next()\n }\n}\n"],"mappings":";AAEA,SAAgB,QAAQ,QAAmC;AACzD,QAAO,OAAO,IAAI,SAAS;AACzB,QAAM,MAAM"}
@@ -0,0 +1,8 @@
1
+ import { AppBindings } from "../types.mjs";
2
+ import * as hono from "hono";
3
+
4
+ //#region src/shared/middleware/services.d.ts
5
+ declare function services(): hono.MiddlewareHandler<AppBindings, string, {}, Response>;
6
+ //#endregion
7
+ export { services };
8
+ //# sourceMappingURL=services.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.d.mts","names":[],"sources":["../../../src/shared/middleware/services.ts"],"mappings":";;;;iBAIgB,QAAA,CAAA,GAAQ,IAAA,CAAA,iBAAA,CAAA,WAAA,cAAA,QAAA"}
@@ -0,0 +1,19 @@
1
+ import "../../rank.service-D2h-2iJA.mjs";
2
+ import { getServiceDeps } from "../deps.mjs";
3
+ import { createMiddleware } from "hono/factory";
4
+
5
+ //#region src/shared/middleware/services.ts
6
+ function services() {
7
+ return createMiddleware(async (c, next) => {
8
+ const serviceDeps = getServiceDeps();
9
+ c.set("taskService", serviceDeps.taskService);
10
+ c.set("rankService", serviceDeps.rankService);
11
+ c.set("chatService", serviceDeps.chatService);
12
+ c.set("docService", serviceDeps.docService);
13
+ await next();
14
+ });
15
+ }
16
+
17
+ //#endregion
18
+ export { services };
19
+ //# sourceMappingURL=services.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.mjs","names":[],"sources":["../../../src/shared/middleware/services.ts"],"sourcesContent":["import type { AppBindings } from '../types'\nimport { createMiddleware } from 'hono/factory'\nimport { getServiceDeps } from '@/shared/deps'\n\nexport function services() {\n return createMiddleware<AppBindings>(async (c, next) => {\n const serviceDeps = getServiceDeps()\n c.set('taskService', serviceDeps.taskService)\n c.set('rankService', serviceDeps.rankService)\n c.set('chatService', serviceDeps.chatService)\n c.set('docService', serviceDeps.docService)\n await next()\n })\n}\n"],"mappings":";;;;;AAIA,SAAgB,WAAW;AACzB,QAAO,iBAA8B,OAAO,GAAG,SAAS;EACtD,MAAM,cAAc,gBAAgB;AACpC,IAAE,IAAI,eAAe,YAAY,YAAY;AAC7C,IAAE,IAAI,eAAe,YAAY,YAAY;AAC7C,IAAE,IAAI,eAAe,YAAY,YAAY;AAC7C,IAAE,IAAI,cAAc,YAAY,WAAW;AAC3C,QAAM,MAAM;GACZ"}
@@ -0,0 +1,113 @@
1
+ //#region src/shared/redis/decorator.d.ts
2
+ interface CacheOptions {
3
+ /** 缓存 key,优先级高于 keyGenerator */
4
+ key?: string | ((...args: any[]) => string);
5
+ /** TTL 秒数,默认 3600 (1小时) */
6
+ ttl?: number;
7
+ /** 缓存标签,用于批量失效 */
8
+ tags?: (...args: any[]) => string[];
9
+ }
10
+ interface InvalidateOptions {
11
+ /** 要失效的缓存 key 列表 */
12
+ keys?: (...args: any[]) => string[];
13
+ /** 是否清除该 service 下所有缓存 */
14
+ all?: boolean;
15
+ /** 要失效的标签(推荐使用 tag 机制) */
16
+ tags?: (...args: any[]) => string[];
17
+ /** 目标命名空间,指定要失效哪些 namespace 下的缓存 */
18
+ namespace?: string | string[] | '*';
19
+ }
20
+ /**
21
+ * 标记为缓存服务
22
+ * - 为每个 service 创建 cache namespace
23
+ * - 提供统一 key 生成器
24
+ *
25
+ * @param namespace 自定义命名空间,默认使用类名
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * @CacheableService()
30
+ * class UserService {
31
+ * @Cache({ key: (id) => `user:${id}` })
32
+ * async getUser(id: number) { ... }
33
+ * }
34
+ * ```
35
+ *
36
+ * @example
37
+ * ```ts
38
+ * @CacheableService('customNamespace')
39
+ * class CustomService { ... }
40
+ * ```
41
+ */
42
+ declare function CacheableService(namespace?: string): <T extends new (...args: any[]) => any>(constructor: T) => T;
43
+ /**
44
+ * 缓存装饰器
45
+ * - 从 Redis 获取/存储缓存
46
+ * - 支持自定义 key 和 TTL
47
+ * - 支持标签机制
48
+ *
49
+ * @param options 配置选项
50
+ *
51
+ * @example
52
+ * // 基础用法
53
+ * @Cache()
54
+ * async getUser(id: number) { ... }
55
+ *
56
+ * @example
57
+ * // 自定义 TTL
58
+ * @Cache({ ttl: 600 })
59
+ * async getData() { ... }
60
+ *
61
+ * @example
62
+ * // 自定义 key 函数
63
+ * @Cache({ key: (id, name) => `user:${id}:${name}` })
64
+ * async getUser(id: number, name: string) { ... }
65
+ *
66
+ * @example
67
+ * // 使用标签(推荐)
68
+ * @Cache({ tags: (id) => [`user:${id}`] })
69
+ * async getUser(id: number) { ... }
70
+ */
71
+ declare function Cache(options?: CacheOptions): (target: any, _key: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
72
+ /**
73
+ * 缓存失效装饰器
74
+ * - 支持指定 key 失效(仅当前 namespace)
75
+ * - 支持清除该 service 下所有缓存
76
+ * - 支持标签失效(推荐,支持跨 namespace)
77
+ *
78
+ * @param options 配置选项
79
+ *
80
+ * @example
81
+ * // 指定 key 失效(仅当前 namespace)
82
+ * @Invalidate({ keys: (id) => [`getUser:${id}`] })
83
+ * async updateUser(id: number) { ... }
84
+ *
85
+ * @example
86
+ * // 使用标签失效(推荐,仅当前 namespace)
87
+ * @Invalidate({ tags: (id) => [`user:${id}`] })
88
+ * async updateUser(id: number) { ... }
89
+ *
90
+ * @example
91
+ * // 清除该 service 下所有缓存
92
+ * @Invalidate({ all: true })
93
+ * async clearAllCache() { ... }
94
+ *
95
+ * @example
96
+ * // 跨 namespace 失效 - 使用标签失效指定 namespace 的缓存
97
+ * @Invalidate({ tags: (id) => ['task:123'], namespace: 'DocService' })
98
+ * async updateTask(id: number) { ... }
99
+ *
100
+ * @example
101
+ * // 跨 namespace 失效 - 使用标签失效多个 namespace 的缓存
102
+ * @Invalidate({ tags: (id) => ['task:123'], namespace: ['DocService', 'RankService'] })
103
+ * async updateTask(id: number) { ... }
104
+ *
105
+ * @example
106
+ * // 跨 namespace 失效 - 使用标签失效所有 namespace 的缓存
107
+ * @Invalidate({ tags: (id) => ['task:123'], namespace: '*' })
108
+ * async updateTask(id: number) { ... }
109
+ */
110
+ declare function Invalidate(options?: InvalidateOptions): (target: any, _key: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
111
+ //#endregion
112
+ export { Cache, type CacheOptions, CacheableService, Invalidate, type InvalidateOptions };
113
+ //# sourceMappingURL=decorator.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorator.d.mts","names":[],"sources":["../../../src/shared/redis/decorator.ts"],"mappings":";UAIU,YAAA;EAAA;EAER,GAAA,iBAAoB,IAAA;;EAEpB,GAAA;EAFA;EAIA,IAAA,OAAW,IAAA;AAAA;AAAA,UAGH,iBAAA;EAHG;EAKX,IAAA,OAAW,IAAA;EALI;EAOf,GAAA;EAJyB;EAMzB,IAAA,OAAW,IAAA;EANc;EAQzB,SAAA;AAAA;;;;;;;AAAS;;;;;;;;;;;;AAiH6D;;;;iBAD/D,gBAAA,CAAiB,SAAA,+BACW,IAAA,iBAAqB,WAAA,EAAa,CAAA,KAAC,CAAA;;;;;;;;;;;;;AAwCI;;;;;;;;;;;;;;;;iBAHnE,KAAA,CAAM,OAAA,GAAS,YAAA,IAGL,MAAA,OAAa,IAAA,UAAc,UAAA,EAAY,kBAAA,KAAkB,kBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAyFnE,UAAA,CAAW,OAAA,GAAS,iBAAA,IACV,MAAA,OAAa,IAAA,UAAc,UAAA,EAAY,kBAAA,KAAkB,kBAAA"}