@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,203 @@
1
+ import { getRedis } from "./factory.mjs";
2
+
3
+ //#region src/shared/redis/decorator.ts
4
+ const tagCacheMap = /* @__PURE__ */ new Map();
5
+ /**
6
+ * 生成默认缓存 key
7
+ */
8
+ function generateDefaultKey(target, key, args) {
9
+ return `${target.constructor?.name || "anonymous"}:${key}:${JSON.stringify(args)}`;
10
+ }
11
+ /**
12
+ * 将缓存 key 关联到标签
13
+ */
14
+ function associateTag(cacheKey, tags) {
15
+ for (const tag of tags) {
16
+ if (!tagCacheMap.has(tag)) tagCacheMap.set(tag, /* @__PURE__ */ new Set());
17
+ tagCacheMap.get(tag).add(cacheKey);
18
+ }
19
+ }
20
+ /**
21
+ * 清除标签关联的缓存
22
+ * @param tags 要失效的标签列表(不含 namespace 前缀)
23
+ * @param namespace 目标 namespace,用于拼接标签前缀(string | string[] | '*' | undefined)
24
+ * - undefined:不传,默认使用当前 namespace
25
+ * - string:单个 namespace
26
+ * - string[]:多个 namespace
27
+ * - '*':不过滤,使用原始 tag 匹配所有
28
+ * @param currentNamespace 当前 service 的 namespace,用于默认值
29
+ */
30
+ async function invalidateTags(tags, namespace, currentNamespace) {
31
+ const redis = getRedis();
32
+ let targetNamespaces;
33
+ if (namespace === "*") targetNamespaces = [];
34
+ else if (Array.isArray(namespace)) targetNamespaces = namespace;
35
+ else if (namespace) targetNamespaces = [namespace];
36
+ else targetNamespaces = [currentNamespace];
37
+ for (const tag of tags) {
38
+ const tagsToMatch = targetNamespaces.length > 0 ? targetNamespaces.map((ns) => `${ns}:${tag}`) : [tag];
39
+ let keysToDelete = [];
40
+ for (const tagToMatch of tagsToMatch) {
41
+ const cacheKeys = tagCacheMap.get(tagToMatch);
42
+ if (cacheKeys && cacheKeys.size > 0) keysToDelete = keysToDelete.concat(Array.from(cacheKeys));
43
+ }
44
+ if (keysToDelete.length > 0) await redis.del(...keysToDelete);
45
+ for (const tagToMatch of tagsToMatch) tagCacheMap.delete(tagToMatch);
46
+ }
47
+ }
48
+ /**
49
+ * 标记为缓存服务
50
+ * - 为每个 service 创建 cache namespace
51
+ * - 提供统一 key 生成器
52
+ *
53
+ * @param namespace 自定义命名空间,默认使用类名
54
+ *
55
+ * @example
56
+ * ```ts
57
+ * @CacheableService()
58
+ * class UserService {
59
+ * @Cache({ key: (id) => `user:${id}` })
60
+ * async getUser(id: number) { ... }
61
+ * }
62
+ * ```
63
+ *
64
+ * @example
65
+ * ```ts
66
+ * @CacheableService('customNamespace')
67
+ * class CustomService { ... }
68
+ * ```
69
+ */
70
+ function CacheableService(namespace) {
71
+ return function(constructor) {
72
+ const ns = namespace || constructor.name;
73
+ constructor.prototype.__cacheNamespace = ns;
74
+ return constructor;
75
+ };
76
+ }
77
+ /**
78
+ * 缓存装饰器
79
+ * - 从 Redis 获取/存储缓存
80
+ * - 支持自定义 key 和 TTL
81
+ * - 支持标签机制
82
+ *
83
+ * @param options 配置选项
84
+ *
85
+ * @example
86
+ * // 基础用法
87
+ * @Cache()
88
+ * async getUser(id: number) { ... }
89
+ *
90
+ * @example
91
+ * // 自定义 TTL
92
+ * @Cache({ ttl: 600 })
93
+ * async getData() { ... }
94
+ *
95
+ * @example
96
+ * // 自定义 key 函数
97
+ * @Cache({ key: (id, name) => `user:${id}:${name}` })
98
+ * async getUser(id: number, name: string) { ... }
99
+ *
100
+ * @example
101
+ * // 使用标签(推荐)
102
+ * @Cache({ tags: (id) => [`user:${id}`] })
103
+ * async getUser(id: number) { ... }
104
+ */
105
+ function Cache(options = {}) {
106
+ const { ttl = 3600 } = options;
107
+ return function(target, _key, descriptor) {
108
+ const original = descriptor.value;
109
+ descriptor.value = async function(...args) {
110
+ const redis = getRedis();
111
+ const namespace = this.__cacheNamespace || target.constructor?.name || "anonymous";
112
+ let cacheKey;
113
+ if (typeof options.key === "function") cacheKey = options.key(...args);
114
+ else if (typeof options.key === "string") cacheKey = options.key;
115
+ else cacheKey = generateDefaultKey(target, _key, args);
116
+ const fullCacheKey = `${namespace}:${cacheKey}`;
117
+ if (options.tags) associateTag(fullCacheKey, options.tags(...args).map((tag) => `${namespace}:${tag}`));
118
+ const cached = await redis.get(fullCacheKey);
119
+ if (cached !== null) return JSON.parse(cached);
120
+ const result = await original.apply(this, args);
121
+ if (result !== void 0 && result !== null) await redis.setex(fullCacheKey, ttl, JSON.stringify(result));
122
+ return result;
123
+ };
124
+ return descriptor;
125
+ };
126
+ }
127
+ /**
128
+ * 缓存失效装饰器
129
+ * - 支持指定 key 失效(仅当前 namespace)
130
+ * - 支持清除该 service 下所有缓存
131
+ * - 支持标签失效(推荐,支持跨 namespace)
132
+ *
133
+ * @param options 配置选项
134
+ *
135
+ * @example
136
+ * // 指定 key 失效(仅当前 namespace)
137
+ * @Invalidate({ keys: (id) => [`getUser:${id}`] })
138
+ * async updateUser(id: number) { ... }
139
+ *
140
+ * @example
141
+ * // 使用标签失效(推荐,仅当前 namespace)
142
+ * @Invalidate({ tags: (id) => [`user:${id}`] })
143
+ * async updateUser(id: number) { ... }
144
+ *
145
+ * @example
146
+ * // 清除该 service 下所有缓存
147
+ * @Invalidate({ all: true })
148
+ * async clearAllCache() { ... }
149
+ *
150
+ * @example
151
+ * // 跨 namespace 失效 - 使用标签失效指定 namespace 的缓存
152
+ * @Invalidate({ tags: (id) => ['task:123'], namespace: 'DocService' })
153
+ * async updateTask(id: number) { ... }
154
+ *
155
+ * @example
156
+ * // 跨 namespace 失效 - 使用标签失效多个 namespace 的缓存
157
+ * @Invalidate({ tags: (id) => ['task:123'], namespace: ['DocService', 'RankService'] })
158
+ * async updateTask(id: number) { ... }
159
+ *
160
+ * @example
161
+ * // 跨 namespace 失效 - 使用标签失效所有 namespace 的缓存
162
+ * @Invalidate({ tags: (id) => ['task:123'], namespace: '*' })
163
+ * async updateTask(id: number) { ... }
164
+ */
165
+ function Invalidate(options = {}) {
166
+ return function(target, _key, descriptor) {
167
+ const original = descriptor.value;
168
+ descriptor.value = async function(...args) {
169
+ const redis = getRedis();
170
+ const namespace = this.__cacheNamespace || target.constructor?.name || "anonymous";
171
+ const result = await original.apply(this, args);
172
+ try {
173
+ if (options.all) {
174
+ let cursor = "0";
175
+ do {
176
+ const [nextCursor, keys] = await redis.scan(cursor, "MATCH", `${namespace}:*`, "COUNT", 100);
177
+ cursor = nextCursor;
178
+ if (keys.length > 0) await redis.del(...keys);
179
+ } while (cursor !== "0");
180
+ for (const [tag, cacheKeys] of Array.from(tagCacheMap.entries())) if (tag.startsWith(namespace)) {
181
+ cacheKeys.clear();
182
+ tagCacheMap.delete(tag);
183
+ }
184
+ return result;
185
+ }
186
+ if (options.keys) {
187
+ const fullKeys = options.keys(...args).map((k) => `${namespace}:${k}`);
188
+ await redis.del(...fullKeys);
189
+ for (const [, cacheKeys] of Array.from(tagCacheMap.entries())) for (const k of fullKeys) cacheKeys.delete(k);
190
+ }
191
+ if (options.tags) await invalidateTags(options.tags(...args), options.namespace, namespace);
192
+ } catch (error) {
193
+ console.error("Cache invalidation failed:", error);
194
+ }
195
+ return result;
196
+ };
197
+ return descriptor;
198
+ };
199
+ }
200
+
201
+ //#endregion
202
+ export { Cache, CacheableService, Invalidate };
203
+ //# sourceMappingURL=decorator.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorator.mjs","names":[],"sources":["../../../src/shared/redis/decorator.ts"],"sourcesContent":["import { getRedis } from './factory'\n\n// ==================== 类型定义 ====================\n\ninterface CacheOptions {\n /** 缓存 key,优先级高于 keyGenerator */\n key?: string | ((...args: any[]) => string)\n /** TTL 秒数,默认 3600 (1小时) */\n ttl?: number\n /** 缓存标签,用于批量失效 */\n tags?: (...args: any[]) => string[]\n}\n\ninterface InvalidateOptions {\n /** 要失效的缓存 key 列表 */\n keys?: (...args: any[]) => string[]\n /** 是否清除该 service 下所有缓存 */\n all?: boolean\n /** 要失效的标签(推荐使用 tag 机制) */\n tags?: (...args: any[]) => string[]\n /** 目标命名空间,指定要失效哪些 namespace 下的缓存 */\n namespace?: string | string[] | '*'\n}\n\n// ==================== 内部存储 ====================\n\n// 标签 -> 缓存 key 集合的映射(用于 tag 失效)\nconst tagCacheMap = new Map<string, Set<string>>()\n\n// ==================== 工具函数 ====================\n\n/**\n * 生成默认缓存 key\n */\nfunction generateDefaultKey(target: any, key: string, args: any[]): string {\n const className = target.constructor?.name || 'anonymous'\n return `${className}:${key}:${JSON.stringify(args)}`\n}\n\n/**\n * 将缓存 key 关联到标签\n */\nfunction associateTag(cacheKey: string, tags: string[]) {\n for (const tag of tags) {\n if (!tagCacheMap.has(tag)) {\n tagCacheMap.set(tag, new Set())\n }\n tagCacheMap.get(tag)!.add(cacheKey)\n }\n}\n\n/**\n * 清除标签关联的缓存\n * @param tags 要失效的标签列表(不含 namespace 前缀)\n * @param namespace 目标 namespace,用于拼接标签前缀(string | string[] | '*' | undefined)\n * - undefined:不传,默认使用当前 namespace\n * - string:单个 namespace\n * - string[]:多个 namespace\n * - '*':不过滤,使用原始 tag 匹配所有\n * @param currentNamespace 当前 service 的 namespace,用于默认值\n */\nasync function invalidateTags(\n tags: string[],\n namespace: string | string[] | '*' | undefined,\n currentNamespace: string,\n): Promise<void> {\n const redis = getRedis()\n\n // 解析目标 namespace\n let targetNamespaces: string[]\n if (namespace === '*') {\n targetNamespaces = [] // 空数组表示不过滤,使用原始 tag\n }\n else if (Array.isArray(namespace)) {\n targetNamespaces = namespace\n }\n else if (namespace) {\n targetNamespaces = [namespace]\n }\n else {\n targetNamespaces = [currentNamespace] // 默认使用当前 namespace\n }\n\n for (const tag of tags) {\n // 根据 targetNamespaces 生成要匹配的标签列表\n const tagsToMatch = targetNamespaces.length > 0\n ? targetNamespaces.map(ns => `${ns}:${tag}`)\n : [tag] // '*' 时使用原始 tag\n\n let keysToDelete: string[] = []\n\n for (const tagToMatch of tagsToMatch) {\n const cacheKeys = tagCacheMap.get(tagToMatch)\n if (cacheKeys && cacheKeys.size > 0) {\n keysToDelete = keysToDelete.concat(Array.from(cacheKeys))\n }\n }\n\n if (keysToDelete.length > 0) {\n await redis.del(...keysToDelete)\n }\n\n // 清除标签映射\n for (const tagToMatch of tagsToMatch) {\n tagCacheMap.delete(tagToMatch)\n }\n }\n}\n\n// ==================== 类级别装饰器 ====================\n\n/**\n * 标记为缓存服务\n * - 为每个 service 创建 cache namespace\n * - 提供统一 key 生成器\n *\n * @param namespace 自定义命名空间,默认使用类名\n *\n * @example\n * ```ts\n * @CacheableService()\n * class UserService {\n * @Cache({ key: (id) => `user:${id}` })\n * async getUser(id: number) { ... }\n * }\n * ```\n *\n * @example\n * ```ts\n * @CacheableService('customNamespace')\n * class CustomService { ... }\n * ```\n */\nfunction CacheableService(namespace?: string) {\n return function <T extends new (...args: any[]) => any>(constructor: T) {\n const ns = namespace || constructor.name\n constructor.prototype.__cacheNamespace = ns\n return constructor\n }\n}\n\n// ==================== 方法级别装饰器 ====================\n\n/**\n * 缓存装饰器\n * - 从 Redis 获取/存储缓存\n * - 支持自定义 key 和 TTL\n * - 支持标签机制\n *\n * @param options 配置选项\n *\n * @example\n * // 基础用法\n * @Cache()\n * async getUser(id: number) { ... }\n *\n * @example\n * // 自定义 TTL\n * @Cache({ ttl: 600 })\n * async getData() { ... }\n *\n * @example\n * // 自定义 key 函数\n * @Cache({ key: (id, name) => `user:${id}:${name}` })\n * async getUser(id: number, name: string) { ... }\n *\n * @example\n * // 使用标签(推荐)\n * @Cache({ tags: (id) => [`user:${id}`] })\n * async getUser(id: number) { ... }\n */\nfunction Cache(options: CacheOptions = {}) {\n const { ttl = 3600 } = options\n\n return function (target: any, _key: string, descriptor: PropertyDescriptor) {\n const original = descriptor.value\n\n descriptor.value = async function (...args: any[]) {\n const redis = getRedis()\n const self = this as any\n const namespace = self.__cacheNamespace || target.constructor?.name || 'anonymous'\n\n // 生成缓存 key\n let cacheKey: string\n if (typeof options.key === 'function') {\n cacheKey = options.key(...args)\n }\n else if (typeof options.key === 'string') {\n cacheKey = options.key\n }\n else {\n cacheKey = generateDefaultKey(target, _key, args)\n }\n\n // 添加命名空间前缀\n const fullCacheKey = `${namespace}:${cacheKey}`\n\n // 处理标签关联(标签带 namespace 前缀以避免冲突)\n if (options.tags) {\n const tags = options.tags(...args)\n const fullTags = tags.map(tag => `${namespace}:${tag}`)\n associateTag(fullCacheKey, fullTags)\n }\n\n // 尝试从 Redis 获取\n const cached = await redis.get(fullCacheKey)\n if (cached !== null) {\n return JSON.parse(cached)\n }\n\n // 执行原函数\n const result = await original.apply(this, args)\n\n // 缓存结果\n if (result !== undefined && result !== null) {\n await redis.setex(fullCacheKey, ttl, JSON.stringify(result))\n }\n\n return result\n }\n\n return descriptor\n }\n}\n\n/**\n * 缓存失效装饰器\n * - 支持指定 key 失效(仅当前 namespace)\n * - 支持清除该 service 下所有缓存\n * - 支持标签失效(推荐,支持跨 namespace)\n *\n * @param options 配置选项\n *\n * @example\n * // 指定 key 失效(仅当前 namespace)\n * @Invalidate({ keys: (id) => [`getUser:${id}`] })\n * async updateUser(id: number) { ... }\n *\n * @example\n * // 使用标签失效(推荐,仅当前 namespace)\n * @Invalidate({ tags: (id) => [`user:${id}`] })\n * async updateUser(id: number) { ... }\n *\n * @example\n * // 清除该 service 下所有缓存\n * @Invalidate({ all: true })\n * async clearAllCache() { ... }\n *\n * @example\n * // 跨 namespace 失效 - 使用标签失效指定 namespace 的缓存\n * @Invalidate({ tags: (id) => ['task:123'], namespace: 'DocService' })\n * async updateTask(id: number) { ... }\n *\n * @example\n * // 跨 namespace 失效 - 使用标签失效多个 namespace 的缓存\n * @Invalidate({ tags: (id) => ['task:123'], namespace: ['DocService', 'RankService'] })\n * async updateTask(id: number) { ... }\n *\n * @example\n * // 跨 namespace 失效 - 使用标签失效所有 namespace 的缓存\n * @Invalidate({ tags: (id) => ['task:123'], namespace: '*' })\n * async updateTask(id: number) { ... }\n */\nfunction Invalidate(options: InvalidateOptions = {}) {\n return function (target: any, _key: string, descriptor: PropertyDescriptor) {\n const original = descriptor.value\n\n descriptor.value = async function (...args: any[]) {\n const redis = getRedis()\n const self = this as any\n const namespace = self.__cacheNamespace || target.constructor?.name || 'anonymous'\n\n // 1. 先执行原函数\n const result = await original.apply(this, args)\n\n // 2. 处理缓存失效\n try {\n // 方式一:清除所有缓存\n if (options.all) {\n let cursor = '0'\n do {\n const [nextCursor, keys] = await redis.scan(\n cursor,\n 'MATCH',\n `${namespace}:*`,\n 'COUNT',\n 100,\n )\n cursor = nextCursor\n if (keys.length > 0) {\n await redis.del(...keys)\n }\n } while (cursor !== '0')\n\n // 清除标签映射\n for (const [tag, cacheKeys] of Array.from(tagCacheMap.entries())) {\n if (tag.startsWith(namespace)) {\n cacheKeys.clear()\n tagCacheMap.delete(tag)\n }\n }\n\n return result\n }\n\n // 方式二:指定 key 失效(仅支持当前 namespace)\n if (options.keys) {\n const keys = options.keys(...args)\n const fullKeys = keys.map(k => `${namespace}:${k}`)\n await redis.del(...fullKeys)\n\n // 清除标签映射中的 key\n for (const [, cacheKeys] of Array.from(tagCacheMap.entries())) {\n for (const k of fullKeys) {\n cacheKeys.delete(k)\n }\n }\n }\n\n // 方式三:标签失效(推荐)\n if (options.tags) {\n const tags = options.tags(...args)\n await invalidateTags(tags, options.namespace, namespace)\n }\n }\n catch (error) {\n console.error('Cache invalidation failed:', error)\n }\n\n return result\n }\n\n return descriptor\n }\n}\n\n// ==================== 导出 ====================\n\nexport { Cache, CacheableService, Invalidate }\nexport type { CacheOptions, InvalidateOptions }\n"],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { Redis } from "ioredis";
2
+
3
+ //#region src/shared/redis/factory.d.ts
4
+ /**
5
+ * 创建 Redis 客户端实例
6
+ */
7
+ declare function createRedisClient(): Redis;
8
+ /**
9
+ * 初始化 Redis 连接
10
+ */
11
+ declare function initRedis(): Promise<void>;
12
+ /**
13
+ * 获取 Redis 客户端实例
14
+ */
15
+ declare function getRedis(): Redis;
16
+ //#endregion
17
+ export { createRedisClient, getRedis, initRedis };
18
+ //# sourceMappingURL=factory.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.mts","names":[],"sources":["../../../src/shared/redis/factory.ts"],"mappings":";;;;;AAWA;iBAAgB,iBAAA,CAAA,GAAqB,KAAA;;;;iBAaf,SAAA,CAAA,GAAS,OAAA;;;;iBAgBf,QAAA,CAAA,GAAY,KAAA"}
@@ -0,0 +1,41 @@
1
+ import AppSettings from "../../settings.mjs";
2
+ import { Redis } from "ioredis";
3
+
4
+ //#region src/shared/redis/factory.ts
5
+ const { config } = AppSettings;
6
+ let redisClient = null;
7
+ let initialized = false;
8
+ /**
9
+ * 创建 Redis 客户端实例
10
+ */
11
+ function createRedisClient() {
12
+ return new Redis({
13
+ host: config.redis.host,
14
+ port: config.redis.port,
15
+ password: config.redis.password,
16
+ maxRetriesPerRequest: null
17
+ });
18
+ }
19
+ /**
20
+ * 初始化 Redis 连接
21
+ */
22
+ async function initRedis() {
23
+ if (initialized) return;
24
+ redisClient = createRedisClient();
25
+ initialized = true;
26
+ }
27
+ function ensureInitialized() {
28
+ if (!initialized) throw new Error("Redis not initialized, call initRedis() at startup");
29
+ }
30
+ /**
31
+ * 获取 Redis 客户端实例
32
+ */
33
+ function getRedis() {
34
+ ensureInitialized();
35
+ if (!redisClient) throw new Error("Redis client not initialized");
36
+ return redisClient;
37
+ }
38
+
39
+ //#endregion
40
+ export { createRedisClient, getRedis, initRedis };
41
+ //# sourceMappingURL=factory.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.mjs","names":[],"sources":["../../../src/shared/redis/factory.ts"],"sourcesContent":["import { Redis } from 'ioredis'\nimport AppSettings from '@/settings'\n\nconst { config } = AppSettings\n\nlet redisClient: Redis | null = null\nlet initialized = false\n\n/**\n * 创建 Redis 客户端实例\n */\nexport function createRedisClient(): Redis {\n const redisConfig = {\n host: config.redis.host,\n port: config.redis.port,\n password: config.redis.password,\n maxRetriesPerRequest: null,\n }\n return new Redis(redisConfig)\n}\n\n/**\n * 初始化 Redis 连接\n */\nexport async function initRedis() {\n if (initialized)\n return\n redisClient = createRedisClient()\n initialized = true\n}\n\nfunction ensureInitialized() {\n if (!initialized) {\n throw new Error('Redis not initialized, call initRedis() at startup')\n }\n}\n\n/**\n * 获取 Redis 客户端实例\n */\nexport function getRedis(): Redis {\n ensureInitialized()\n if (!redisClient) {\n throw new Error('Redis client not initialized')\n }\n return redisClient\n}\n"],"mappings":";;;;AAGA,MAAM,EAAE,WAAW;AAEnB,IAAI,cAA4B;AAChC,IAAI,cAAc;;;;AAKlB,SAAgB,oBAA2B;AAOzC,QAAO,IAAI,MANS;EAClB,MAAM,OAAO,MAAM;EACnB,MAAM,OAAO,MAAM;EACnB,UAAU,OAAO,MAAM;EACvB,sBAAsB;EACvB,CAC4B;;;;;AAM/B,eAAsB,YAAY;AAChC,KAAI,YACF;AACF,eAAc,mBAAmB;AACjC,eAAc;;AAGhB,SAAS,oBAAoB;AAC3B,KAAI,CAAC,YACH,OAAM,IAAI,MAAM,qDAAqD;;;;;AAOzE,SAAgB,WAAkB;AAChC,oBAAmB;AACnB,KAAI,CAAC,YACH,OAAM,IAAI,MAAM,+BAA+B;AAEjD,QAAO"}
@@ -0,0 +1,12 @@
1
+ import { createRedisClient, getRedis, initRedis } from "./factory.mjs";
2
+ import { Redis } from "ioredis";
3
+
4
+ //#region src/shared/redis/index.d.ts
5
+ /**
6
+ * Redis 客户端实例(保留向后兼容)
7
+ * @deprecated 请使用 getRedis() 替代
8
+ */
9
+ declare const redis: Redis;
10
+ //#endregion
11
+ export { createRedisClient, getRedis, initRedis, redis };
12
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../src/shared/redis/index.ts"],"mappings":";;;;;;AAOA;;cAAa,KAAA,EAAK,KAAA"}
@@ -0,0 +1,14 @@
1
+ import { createRedisClient, getRedis, initRedis } from "./factory.mjs";
2
+
3
+ //#region src/shared/redis/index.ts
4
+ /**
5
+ * Redis 客户端实例(保留向后兼容)
6
+ * @deprecated 请使用 getRedis() 替代
7
+ */
8
+ const redis = new Proxy({}, { get(_target, prop) {
9
+ return getRedis()[prop];
10
+ } });
11
+
12
+ //#endregion
13
+ export { createRedisClient, getRedis, initRedis, redis };
14
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/shared/redis/index.ts"],"sourcesContent":["import type { Redis } from 'ioredis'\nimport { createRedisClient, getRedis, initRedis } from './factory'\n\n/**\n * Redis 客户端实例(保留向后兼容)\n * @deprecated 请使用 getRedis() 替代\n */\nexport const redis = new Proxy({} as Redis, {\n get(_target, prop) {\n const client = getRedis()\n return (client as any)[prop]\n },\n})\n\nexport { createRedisClient, getRedis, initRedis }\n"],"mappings":";;;;;;;AAOA,MAAa,QAAQ,IAAI,MAAM,EAAE,EAAW,EAC1C,IAAI,SAAS,MAAM;AAEjB,QADe,UAAU,CACF;GAE1B,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { ChatService } from "../modules/doc/chat.service.mjs";
2
+ import { DocService } from "../modules/doc/doc.service.mjs";
3
+ import { RankService } from "../modules/rank/rank.service.mjs";
4
+ import { TaskService } from "../modules/task/task.service.mjs";
5
+ import { Logger } from "pino";
6
+
7
+ //#region src/shared/types.d.ts
8
+ interface ApiSuccess<T = unknown> {
9
+ code: number;
10
+ data: T;
11
+ message: string;
12
+ }
13
+ interface ApiError<T = unknown> {
14
+ code: number;
15
+ data: T | null;
16
+ message: string;
17
+ }
18
+ interface AppBindings {
19
+ Variables: {
20
+ requestId?: string;
21
+ logger?: Logger;
22
+ traceId?: string;
23
+ user?: {
24
+ id: number | null;
25
+ username: string;
26
+ role: 'admin' | 'user' | null;
27
+ };
28
+ taskService: TaskService;
29
+ rankService: RankService;
30
+ chatService: ChatService;
31
+ docService: DocService;
32
+ };
33
+ }
34
+ //#endregion
35
+ export { ApiError, ApiSuccess, AppBindings };
36
+ //# sourceMappingURL=types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.mts","names":[],"sources":["../../src/shared/types.ts"],"mappings":";;;;;;;UAMiB,UAAA;EACf,IAAA;EACA,IAAA,EAAM,CAAA;EACN,OAAA;AAAA;AAAA,UAGe,QAAA;EACf,IAAA;EACA,IAAA,EAAM,CAAA;EACN,OAAA;AAAA;AAAA,UAGe,WAAA;EACf,SAAA;IACE,SAAA;IACA,MAAA,GAAS,MAAA;IACT,OAAA;IACA,IAAA;MACE,EAAA;MACA,QAAA;MACA,IAAA;IAAA;IAEF,WAAA,EAAa,WAAA;IACb,WAAA,EAAa,WAAA;IACb,WAAA,EAAa,WAAA;IACb,UAAA,EAAY,UAAA;EAAA;AAAA"}
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,7 @@
1
+ import { ErrorHandler } from "hono";
2
+
3
+ //#region src/shared/utils/error-handler.d.ts
4
+ declare const errorHandler: ErrorHandler;
5
+ //#endregion
6
+ export { errorHandler };
7
+ //# sourceMappingURL=error-handler.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handler.d.mts","names":[],"sources":["../../../src/shared/utils/error-handler.ts"],"mappings":";;;cAEa,YAAA,EAAc,YAAA"}
@@ -0,0 +1,22 @@
1
+ //#region src/shared/utils/error-handler.ts
2
+ const errorHandler = (err, c) => {
3
+ const logger = c.get("logger");
4
+ let status = 500;
5
+ let message = "Unknown error";
6
+ const anyErr = err;
7
+ if (anyErr && typeof anyErr.status === "number") {
8
+ status = anyErr.status;
9
+ if (typeof anyErr.message === "string" && anyErr.message.length > 0) message = anyErr.message;
10
+ } else if (err instanceof Error) message = err.message;
11
+ if (logger) logger.error({
12
+ err,
13
+ path: c.req.path,
14
+ method: c.req.path,
15
+ status
16
+ }, "Unhandled error");
17
+ return c.json({ message }, status);
18
+ };
19
+
20
+ //#endregion
21
+ export { errorHandler };
22
+ //# sourceMappingURL=error-handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handler.mjs","names":[],"sources":["../../../src/shared/utils/error-handler.ts"],"sourcesContent":["import type { ErrorHandler } from 'hono'\n\nexport const errorHandler: ErrorHandler = (err, c) => {\n const logger = c.get('logger')\n let status = 500\n let message = 'Unknown error'\n\n const anyErr = err as any\n if (anyErr && typeof anyErr.status === 'number') {\n status = anyErr.status\n if (typeof anyErr.message === 'string' && anyErr.message.length > 0) {\n message = anyErr.message\n }\n }\n else if (err instanceof Error) {\n message = err.message\n }\n\n if (logger) {\n logger.error({ err, path: c.req.path, method: c.req.path, status }, 'Unhandled error')\n }\n\n return c.json({ message }, status as any)\n}\n"],"mappings":";AAEA,MAAa,gBAA8B,KAAK,MAAM;CACpD,MAAM,SAAS,EAAE,IAAI,SAAS;CAC9B,IAAI,SAAS;CACb,IAAI,UAAU;CAEd,MAAM,SAAS;AACf,KAAI,UAAU,OAAO,OAAO,WAAW,UAAU;AAC/C,WAAS,OAAO;AAChB,MAAI,OAAO,OAAO,YAAY,YAAY,OAAO,QAAQ,SAAS,EAChE,WAAU,OAAO;YAGZ,eAAe,MACtB,WAAU,IAAI;AAGhB,KAAI,OACF,QAAO,MAAM;EAAE;EAAK,MAAM,EAAE,IAAI;EAAM,QAAQ,EAAE,IAAI;EAAM;EAAQ,EAAE,kBAAkB;AAGxF,QAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAc"}
@@ -0,0 +1,8 @@
1
+ import { TaskLogEntry } from "../../modules/task/task.entity.mjs";
2
+
3
+ //#region src/shared/utils/format.d.ts
4
+ declare function formatDateTime(date: Date, format?: string): string;
5
+ declare function formatEntry(entry: TaskLogEntry): string;
6
+ //#endregion
7
+ export { formatDateTime, formatEntry };
8
+ //# sourceMappingURL=format.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.mts","names":[],"sources":["../../../src/shared/utils/format.ts"],"mappings":";;;iBAEgB,cAAA,CAAe,IAAA,EAAM,IAAA,EAAM,MAAA;AAAA,iBAiB3B,WAAA,CAAY,KAAA,EAAO,YAAA"}
@@ -0,0 +1,24 @@
1
+ //#region src/shared/utils/format.ts
2
+ function formatDateTime(date, format = "yyyy-MM-dd HH:mm:ss") {
3
+ const year = date.getFullYear();
4
+ const month = String(date.getMonth() + 1).padStart(2, "0");
5
+ const day = String(date.getDate()).padStart(2, "0");
6
+ const hour = String(date.getHours()).padStart(2, "0");
7
+ const minute = String(date.getMinutes()).padStart(2, "0");
8
+ const second = String(date.getSeconds()).padStart(2, "0");
9
+ return format.replace("yyyy", String(year)).replace("MM", month).replace("dd", day).replace("HH", hour).replace("mm", minute).replace("ss", second);
10
+ }
11
+ function formatEntry(entry) {
12
+ const parts = [];
13
+ parts.push(formatDateTime(new Date(entry.timestamp)));
14
+ parts.push(entry.level.toUpperCase());
15
+ if (entry.message && entry.message.length > 0) parts.push(entry.message);
16
+ if (entry.data !== void 0) try {
17
+ parts.push(JSON.stringify(entry.data));
18
+ } catch {}
19
+ return parts.join(" | ");
20
+ }
21
+
22
+ //#endregion
23
+ export { formatDateTime, formatEntry };
24
+ //# sourceMappingURL=format.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.mjs","names":[],"sources":["../../../src/shared/utils/format.ts"],"sourcesContent":["import type { TaskLogEntry } from '@/modules/task/task.entity'\n\nexport function formatDateTime(date: Date, format: string = 'yyyy-MM-dd HH:mm:ss'): string {\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n const hour = String(date.getHours()).padStart(2, '0')\n const minute = String(date.getMinutes()).padStart(2, '0')\n const second = String(date.getSeconds()).padStart(2, '0')\n\n return format\n .replace('yyyy', String(year))\n .replace('MM', month)\n .replace('dd', day)\n .replace('HH', hour)\n .replace('mm', minute)\n .replace('ss', second)\n}\n\nexport function formatEntry(entry: TaskLogEntry): string {\n const parts: string[] = []\n parts.push(formatDateTime(new Date(entry.timestamp)))\n parts.push(entry.level.toUpperCase())\n if (entry.message && entry.message.length > 0) {\n parts.push(entry.message)\n }\n if (entry.data !== undefined) {\n try {\n parts.push(JSON.stringify(entry.data))\n }\n catch {}\n }\n return parts.join(' | ')\n}\n"],"mappings":";AAEA,SAAgB,eAAe,MAAY,SAAiB,uBAA+B;CACzF,MAAM,OAAO,KAAK,aAAa;CAC/B,MAAM,QAAQ,OAAO,KAAK,UAAU,GAAG,EAAE,CAAC,SAAS,GAAG,IAAI;CAC1D,MAAM,MAAM,OAAO,KAAK,SAAS,CAAC,CAAC,SAAS,GAAG,IAAI;CACnD,MAAM,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,SAAS,GAAG,IAAI;CACrD,MAAM,SAAS,OAAO,KAAK,YAAY,CAAC,CAAC,SAAS,GAAG,IAAI;CACzD,MAAM,SAAS,OAAO,KAAK,YAAY,CAAC,CAAC,SAAS,GAAG,IAAI;AAEzD,QAAO,OACJ,QAAQ,QAAQ,OAAO,KAAK,CAAC,CAC7B,QAAQ,MAAM,MAAM,CACpB,QAAQ,MAAM,IAAI,CAClB,QAAQ,MAAM,KAAK,CACnB,QAAQ,MAAM,OAAO,CACrB,QAAQ,MAAM,OAAO;;AAG1B,SAAgB,YAAY,OAA6B;CACvD,MAAM,QAAkB,EAAE;AAC1B,OAAM,KAAK,eAAe,IAAI,KAAK,MAAM,UAAU,CAAC,CAAC;AACrD,OAAM,KAAK,MAAM,MAAM,aAAa,CAAC;AACrC,KAAI,MAAM,WAAW,MAAM,QAAQ,SAAS,EAC1C,OAAM,KAAK,MAAM,QAAQ;AAE3B,KAAI,MAAM,SAAS,OACjB,KAAI;AACF,QAAM,KAAK,KAAK,UAAU,MAAM,KAAK,CAAC;SAElC;AAER,QAAO,MAAM,KAAK,MAAM"}
@@ -0,0 +1,9 @@
1
+ //#region src/shared/utils/pagination.d.ts
2
+ declare function validatePaginationQuery(query: Record<string, string | string[] | undefined>): {
3
+ page: number;
4
+ limit: number;
5
+ name: string | undefined;
6
+ };
7
+ //#endregion
8
+ export { validatePaginationQuery };
9
+ //# sourceMappingURL=pagination.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.d.mts","names":[],"sources":["../../../src/shared/utils/pagination.ts"],"mappings":";iBAAgB,uBAAA,CAAwB,KAAA,EAAO,MAAA"}
@@ -0,0 +1,12 @@
1
+ //#region src/shared/utils/pagination.ts
2
+ function validatePaginationQuery(query) {
3
+ return {
4
+ page: Number(Array.isArray(query.page) ? query.page[0] : query.page) || 1,
5
+ limit: Number(Array.isArray(query.limit) ? query.limit[0] : query.limit) || 10,
6
+ name: (Array.isArray(query.name) ? query.name[0] : query.name) || void 0
7
+ };
8
+ }
9
+
10
+ //#endregion
11
+ export { validatePaginationQuery };
12
+ //# sourceMappingURL=pagination.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.mjs","names":[],"sources":["../../../src/shared/utils/pagination.ts"],"sourcesContent":["export function validatePaginationQuery(query: Record<string, string | string[] | undefined>) {\n const page = Number(Array.isArray(query.page) ? query.page[0] : query.page) || 1\n const limit = Number(Array.isArray(query.limit) ? query.limit[0] : query.limit) || 10\n const name = (Array.isArray(query.name) ? query.name[0] : query.name) || undefined\n return { page, limit, name }\n}\n"],"mappings":";AAAA,SAAgB,wBAAwB,OAAsD;AAI5F,QAAO;EAAE,MAHI,OAAO,MAAM,QAAQ,MAAM,KAAK,GAAG,MAAM,KAAK,KAAK,MAAM,KAAK,IAAI;EAGhE,OAFD,OAAO,MAAM,QAAQ,MAAM,MAAM,GAAG,MAAM,MAAM,KAAK,MAAM,MAAM,IAAI;EAE7D,OADR,MAAM,QAAQ,MAAM,KAAK,GAAG,MAAM,KAAK,KAAK,MAAM,SAAS;EAC7C"}
@@ -0,0 +1,69 @@
1
+ //#region src/shared/utils/response-template.d.ts
2
+ declare function Res200<T>(data: T, message?: string): {
3
+ code: number;
4
+ data: T;
5
+ message: string;
6
+ };
7
+ declare function Res201<T>(data: T, message?: string): {
8
+ code: number;
9
+ data: T;
10
+ message: string;
11
+ };
12
+ declare function Res204<T>(data?: T | null, message?: string): {
13
+ code: number;
14
+ data: T | null;
15
+ message: string;
16
+ };
17
+ declare function Res400<T>(data?: T | null, message?: string): {
18
+ code: number;
19
+ data: T | null;
20
+ message: string;
21
+ };
22
+ declare function Res401<T>(data?: T | null, message?: string): {
23
+ code: number;
24
+ data: T | null;
25
+ message: string;
26
+ };
27
+ declare function Res403<T>(data?: T | null, message?: string): {
28
+ code: number;
29
+ data: T | null;
30
+ message: string;
31
+ };
32
+ declare function Res404<T>(data?: T | null, message?: string): {
33
+ code: number;
34
+ data: T | null;
35
+ message: string;
36
+ };
37
+ declare function Res405<T>(data?: T | null, message?: string): {
38
+ code: number;
39
+ data: T | null;
40
+ message: string;
41
+ };
42
+ declare function Res409<T>(data?: T | null, message?: string): {
43
+ code: number;
44
+ data: T | null;
45
+ message: string;
46
+ };
47
+ declare function Res422<T>(data?: T | null, message?: string): {
48
+ code: number;
49
+ data: T | null;
50
+ message: string;
51
+ };
52
+ declare function Res429<T>(data?: T | null, message?: string): {
53
+ code: number;
54
+ data: T | null;
55
+ message: string;
56
+ };
57
+ declare function Res500<T>(data?: T | null, message?: string): {
58
+ code: number;
59
+ data: T | null;
60
+ message: string;
61
+ };
62
+ declare function Res503<T>(data?: T | null, message?: string): {
63
+ code: number;
64
+ data: T | null;
65
+ message: string;
66
+ };
67
+ //#endregion
68
+ export { Res200, Res201, Res204, Res400, Res401, Res403, Res404, Res405, Res409, Res422, Res429, Res500, Res503 };
69
+ //# sourceMappingURL=response-template.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-template.d.mts","names":[],"sources":["../../../src/shared/utils/response-template.ts"],"mappings":";iBACgB,MAAA,GAAA,CAAU,IAAA,EAAM,CAAA,EAAG,OAAA;;QAAH,CAAA;;;iBAQhB,MAAA,GAAA,CAAU,IAAA,EAAM,CAAA,EAAG,OAAA;;QAAH,CAAA;;;iBAQhB,MAAA,GAAA,CAAU,IAAA,GAAM,CAAA,SAAiB,OAAA;;QAAjB,CAAA;;;iBAQhB,MAAA,GAAA,CAAU,IAAA,GAAM,CAAA,SAAiB,OAAA;;QAAjB,CAAA;;;iBAQhB,MAAA,GAAA,CAAU,IAAA,GAAM,CAAA,SAAiB,OAAA;;QAAjB,CAAA;;;iBAQhB,MAAA,GAAA,CAAU,IAAA,GAAM,CAAA,SAAiB,OAAA;;QAAjB,CAAA;;;iBAQhB,MAAA,GAAA,CAAU,IAAA,GAAM,CAAA,SAAiB,OAAA;;QAAjB,CAAA;;;iBAQhB,MAAA,GAAA,CAAU,IAAA,GAAM,CAAA,SAAiB,OAAA;;QAAjB,CAAA;;;iBAQhB,MAAA,GAAA,CAAU,IAAA,GAAM,CAAA,SAAiB,OAAA;;QAAjB,CAAA;;;iBAQhB,MAAA,GAAA,CAAU,IAAA,GAAM,CAAA,SAAiB,OAAA;;QAAjB,CAAA;;;iBAQhB,MAAA,GAAA,CAAU,IAAA,GAAM,CAAA,SAAiB,OAAA;;QAAjB,CAAA;;;iBAQhB,MAAA,GAAA,CAAU,IAAA,GAAM,CAAA,SAAiB,OAAA;;QAAjB,CAAA;;;iBAQhB,MAAA,GAAA,CAAU,IAAA,GAAM,CAAA,SAAiB,OAAA;;QAAjB,CAAA"}