@dofe/infra-common 0.1.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 (373) hide show
  1. package/dist/adapters/base.adapter.d.ts +84 -0
  2. package/dist/adapters/base.adapter.d.ts.map +1 -0
  3. package/dist/adapters/base.adapter.js +19 -0
  4. package/dist/adapters/base.adapter.js.map +1 -0
  5. package/dist/adapters/index.d.ts +35 -0
  6. package/dist/adapters/index.d.ts.map +1 -0
  7. package/dist/adapters/index.js +53 -0
  8. package/dist/adapters/index.js.map +1 -0
  9. package/dist/common.module.d.ts +7 -0
  10. package/dist/common.module.d.ts.map +1 -0
  11. package/dist/common.module.js +26 -0
  12. package/dist/common.module.js.map +1 -0
  13. package/dist/config/agentx.config.d.ts +37 -0
  14. package/dist/config/agentx.config.d.ts.map +1 -0
  15. package/dist/config/agentx.config.js +81 -0
  16. package/dist/config/agentx.config.js.map +1 -0
  17. package/dist/config/configuration.d.ts +55 -0
  18. package/dist/config/configuration.d.ts.map +1 -0
  19. package/dist/config/configuration.js +336 -0
  20. package/dist/config/configuration.js.map +1 -0
  21. package/dist/config/constant/config.constants.d.ts +48 -0
  22. package/dist/config/constant/config.constants.d.ts.map +1 -0
  23. package/dist/config/constant/config.constants.js +86 -0
  24. package/dist/config/constant/config.constants.js.map +1 -0
  25. package/dist/config/dto/config.dto.d.ts +222 -0
  26. package/dist/config/dto/config.dto.d.ts.map +1 -0
  27. package/dist/config/dto/config.dto.js +42 -0
  28. package/dist/config/dto/config.dto.js.map +1 -0
  29. package/dist/config/env-config.service.d.ts +147 -0
  30. package/dist/config/env-config.service.d.ts.map +1 -0
  31. package/dist/config/env-config.service.js +296 -0
  32. package/dist/config/env-config.service.js.map +1 -0
  33. package/dist/config/features/feature-errors.d.ts +13 -0
  34. package/dist/config/features/feature-errors.d.ts.map +1 -0
  35. package/dist/config/features/feature-errors.js +25 -0
  36. package/dist/config/features/feature-errors.js.map +1 -0
  37. package/dist/config/features/feature-registry.d.ts +26 -0
  38. package/dist/config/features/feature-registry.d.ts.map +1 -0
  39. package/dist/config/features/feature-registry.js +172 -0
  40. package/dist/config/features/feature-registry.js.map +1 -0
  41. package/dist/config/features/index.d.ts +4 -0
  42. package/dist/config/features/index.d.ts.map +1 -0
  43. package/dist/config/features/index.js +9 -0
  44. package/dist/config/features/index.js.map +1 -0
  45. package/dist/config/validation/env.validation.d.ts +132 -0
  46. package/dist/config/validation/env.validation.d.ts.map +1 -0
  47. package/dist/config/validation/env.validation.js +304 -0
  48. package/dist/config/validation/env.validation.js.map +1 -0
  49. package/dist/config/validation/index.d.ts +21 -0
  50. package/dist/config/validation/index.d.ts.map +1 -0
  51. package/dist/config/validation/index.js +119 -0
  52. package/dist/config/validation/index.js.map +1 -0
  53. package/dist/config/validation/keys.validation.d.ts +884 -0
  54. package/dist/config/validation/keys.validation.d.ts.map +1 -0
  55. package/dist/config/validation/keys.validation.js +506 -0
  56. package/dist/config/validation/keys.validation.js.map +1 -0
  57. package/dist/config/validation/yaml.validation.d.ts +765 -0
  58. package/dist/config/validation/yaml.validation.d.ts.map +1 -0
  59. package/dist/config/validation/yaml.validation.js +488 -0
  60. package/dist/config/validation/yaml.validation.js.map +1 -0
  61. package/dist/config/vendor.config.d.ts +48 -0
  62. package/dist/config/vendor.config.d.ts.map +1 -0
  63. package/dist/config/vendor.config.js +136 -0
  64. package/dist/config/vendor.config.js.map +1 -0
  65. package/dist/decorators/api-key/api-key.decorator.d.ts +25 -0
  66. package/dist/decorators/api-key/api-key.decorator.d.ts.map +1 -0
  67. package/dist/decorators/api-key/api-key.decorator.js +30 -0
  68. package/dist/decorators/api-key/api-key.decorator.js.map +1 -0
  69. package/dist/decorators/api-key/index.d.ts +2 -0
  70. package/dist/decorators/api-key/index.d.ts.map +1 -0
  71. package/dist/decorators/api-key/index.js +18 -0
  72. package/dist/decorators/api-key/index.js.map +1 -0
  73. package/dist/decorators/app-version/app-version.controller.d.ts +30 -0
  74. package/dist/decorators/app-version/app-version.controller.d.ts.map +1 -0
  75. package/dist/decorators/app-version/app-version.controller.js +159 -0
  76. package/dist/decorators/app-version/app-version.controller.js.map +1 -0
  77. package/dist/decorators/app-version/app-version.interceptor.d.ts +15 -0
  78. package/dist/decorators/app-version/app-version.interceptor.d.ts.map +1 -0
  79. package/dist/decorators/app-version/app-version.interceptor.js +42 -0
  80. package/dist/decorators/app-version/app-version.interceptor.js.map +1 -0
  81. package/dist/decorators/app-version/app-version.module.d.ts +8 -0
  82. package/dist/decorators/app-version/app-version.module.d.ts.map +1 -0
  83. package/dist/decorators/app-version/app-version.module.js +39 -0
  84. package/dist/decorators/app-version/app-version.module.js.map +1 -0
  85. package/dist/decorators/app-version/app-version.service.d.ts +88 -0
  86. package/dist/decorators/app-version/app-version.service.d.ts.map +1 -0
  87. package/dist/decorators/app-version/app-version.service.js +251 -0
  88. package/dist/decorators/app-version/app-version.service.js.map +1 -0
  89. package/dist/decorators/app-version/index.d.ts +8 -0
  90. package/dist/decorators/app-version/index.d.ts.map +1 -0
  91. package/dist/decorators/app-version/index.js +15 -0
  92. package/dist/decorators/app-version/index.js.map +1 -0
  93. package/dist/decorators/audit-log.decorator.d.ts +41 -0
  94. package/dist/decorators/audit-log.decorator.d.ts.map +1 -0
  95. package/dist/decorators/audit-log.decorator.js +19 -0
  96. package/dist/decorators/audit-log.decorator.js.map +1 -0
  97. package/dist/decorators/cache/cache.decorator.d.ts +256 -0
  98. package/dist/decorators/cache/cache.decorator.d.ts.map +1 -0
  99. package/dist/decorators/cache/cache.decorator.js +339 -0
  100. package/dist/decorators/cache/cache.decorator.js.map +1 -0
  101. package/dist/decorators/cache/cache.interceptor.d.ts +43 -0
  102. package/dist/decorators/cache/cache.interceptor.d.ts.map +1 -0
  103. package/dist/decorators/cache/cache.interceptor.js +219 -0
  104. package/dist/decorators/cache/cache.interceptor.js.map +1 -0
  105. package/dist/decorators/cache/cache.module.d.ts +9 -0
  106. package/dist/decorators/cache/cache.module.d.ts.map +1 -0
  107. package/dist/decorators/cache/cache.module.js +36 -0
  108. package/dist/decorators/cache/cache.module.js.map +1 -0
  109. package/dist/decorators/cache/index.d.ts +7 -0
  110. package/dist/decorators/cache/index.d.ts.map +1 -0
  111. package/dist/decorators/cache/index.js +32 -0
  112. package/dist/decorators/cache/index.js.map +1 -0
  113. package/dist/decorators/data-visibility/data-visibility.decorator.d.ts +74 -0
  114. package/dist/decorators/data-visibility/data-visibility.decorator.d.ts.map +1 -0
  115. package/dist/decorators/data-visibility/data-visibility.decorator.js +87 -0
  116. package/dist/decorators/data-visibility/data-visibility.decorator.js.map +1 -0
  117. package/dist/decorators/data-visibility/index.d.ts +2 -0
  118. package/dist/decorators/data-visibility/index.d.ts.map +1 -0
  119. package/dist/decorators/data-visibility/index.js +18 -0
  120. package/dist/decorators/data-visibility/index.js.map +1 -0
  121. package/dist/decorators/event/event.decorator.d.ts +152 -0
  122. package/dist/decorators/event/event.decorator.d.ts.map +1 -0
  123. package/dist/decorators/event/event.decorator.js +158 -0
  124. package/dist/decorators/event/event.decorator.js.map +1 -0
  125. package/dist/decorators/event/event.interceptor.d.ts +23 -0
  126. package/dist/decorators/event/event.interceptor.d.ts.map +1 -0
  127. package/dist/decorators/event/event.interceptor.js +140 -0
  128. package/dist/decorators/event/event.interceptor.js.map +1 -0
  129. package/dist/decorators/event/event.module.d.ts +9 -0
  130. package/dist/decorators/event/event.module.d.ts.map +1 -0
  131. package/dist/decorators/event/event.module.js +59 -0
  132. package/dist/decorators/event/event.module.js.map +1 -0
  133. package/dist/decorators/event/handlers/cache-event.handler.d.ts +55 -0
  134. package/dist/decorators/event/handlers/cache-event.handler.d.ts.map +1 -0
  135. package/dist/decorators/event/handlers/cache-event.handler.js +159 -0
  136. package/dist/decorators/event/handlers/cache-event.handler.js.map +1 -0
  137. package/dist/decorators/event/index.d.ts +8 -0
  138. package/dist/decorators/event/index.d.ts.map +1 -0
  139. package/dist/decorators/event/index.js +26 -0
  140. package/dist/decorators/event/index.js.map +1 -0
  141. package/dist/decorators/feature-flag/feature-flag.decorator.d.ts +144 -0
  142. package/dist/decorators/feature-flag/feature-flag.decorator.d.ts.map +1 -0
  143. package/dist/decorators/feature-flag/feature-flag.decorator.js +135 -0
  144. package/dist/decorators/feature-flag/feature-flag.decorator.js.map +1 -0
  145. package/dist/decorators/feature-flag/feature-flag.interceptor.d.ts +30 -0
  146. package/dist/decorators/feature-flag/feature-flag.interceptor.d.ts.map +1 -0
  147. package/dist/decorators/feature-flag/feature-flag.interceptor.js +127 -0
  148. package/dist/decorators/feature-flag/feature-flag.interceptor.js.map +1 -0
  149. package/dist/decorators/feature-flag/feature-flag.module.d.ts +9 -0
  150. package/dist/decorators/feature-flag/feature-flag.module.d.ts.map +1 -0
  151. package/dist/decorators/feature-flag/feature-flag.module.js +39 -0
  152. package/dist/decorators/feature-flag/feature-flag.module.js.map +1 -0
  153. package/dist/decorators/feature-flag/feature-flag.service.d.ts +102 -0
  154. package/dist/decorators/feature-flag/feature-flag.service.d.ts.map +1 -0
  155. package/dist/decorators/feature-flag/feature-flag.service.js +373 -0
  156. package/dist/decorators/feature-flag/feature-flag.service.js.map +1 -0
  157. package/dist/decorators/feature-flag/feature-flag.service.spec.d.ts +2 -0
  158. package/dist/decorators/feature-flag/feature-flag.service.spec.d.ts.map +1 -0
  159. package/dist/decorators/feature-flag/feature-flag.service.spec.js +264 -0
  160. package/dist/decorators/feature-flag/feature-flag.service.spec.js.map +1 -0
  161. package/dist/decorators/feature-flag/index.d.ts +8 -0
  162. package/dist/decorators/feature-flag/index.d.ts.map +1 -0
  163. package/dist/decorators/feature-flag/index.js +23 -0
  164. package/dist/decorators/feature-flag/index.js.map +1 -0
  165. package/dist/decorators/rate-limit/dto/rate-limit.dto.d.ts +174 -0
  166. package/dist/decorators/rate-limit/dto/rate-limit.dto.d.ts.map +1 -0
  167. package/dist/decorators/rate-limit/dto/rate-limit.dto.js +8 -0
  168. package/dist/decorators/rate-limit/dto/rate-limit.dto.js.map +1 -0
  169. package/dist/decorators/rate-limit/index.d.ts +24 -0
  170. package/dist/decorators/rate-limit/index.d.ts.map +1 -0
  171. package/dist/decorators/rate-limit/index.js +44 -0
  172. package/dist/decorators/rate-limit/index.js.map +1 -0
  173. package/dist/decorators/rate-limit/rate-limit.constants.d.ts +16 -0
  174. package/dist/decorators/rate-limit/rate-limit.constants.d.ts.map +1 -0
  175. package/dist/decorators/rate-limit/rate-limit.constants.js +22 -0
  176. package/dist/decorators/rate-limit/rate-limit.constants.js.map +1 -0
  177. package/dist/decorators/rate-limit/rate-limit.decorator.d.ts +132 -0
  178. package/dist/decorators/rate-limit/rate-limit.decorator.d.ts.map +1 -0
  179. package/dist/decorators/rate-limit/rate-limit.decorator.js +185 -0
  180. package/dist/decorators/rate-limit/rate-limit.decorator.js.map +1 -0
  181. package/dist/decorators/rate-limit/rate-limit.exception.d.ts +39 -0
  182. package/dist/decorators/rate-limit/rate-limit.exception.d.ts.map +1 -0
  183. package/dist/decorators/rate-limit/rate-limit.exception.js +67 -0
  184. package/dist/decorators/rate-limit/rate-limit.exception.js.map +1 -0
  185. package/dist/decorators/rate-limit/rate-limit.module.d.ts +25 -0
  186. package/dist/decorators/rate-limit/rate-limit.module.d.ts.map +1 -0
  187. package/dist/decorators/rate-limit/rate-limit.module.js +48 -0
  188. package/dist/decorators/rate-limit/rate-limit.module.js.map +1 -0
  189. package/dist/decorators/rate-limit/rate-limit.service.d.ts +102 -0
  190. package/dist/decorators/rate-limit/rate-limit.service.d.ts.map +1 -0
  191. package/dist/decorators/rate-limit/rate-limit.service.js +390 -0
  192. package/dist/decorators/rate-limit/rate-limit.service.js.map +1 -0
  193. package/dist/decorators/response.decorator.d.ts +10 -0
  194. package/dist/decorators/response.decorator.d.ts.map +1 -0
  195. package/dist/decorators/response.decorator.js +58 -0
  196. package/dist/decorators/response.decorator.js.map +1 -0
  197. package/dist/decorators/skip-version-check.decorator.d.ts +25 -0
  198. package/dist/decorators/skip-version-check.decorator.d.ts.map +1 -0
  199. package/dist/decorators/skip-version-check.decorator.js +31 -0
  200. package/dist/decorators/skip-version-check.decorator.js.map +1 -0
  201. package/dist/decorators/tenant/index.d.ts +2 -0
  202. package/dist/decorators/tenant/index.d.ts.map +1 -0
  203. package/dist/decorators/tenant/index.js +18 -0
  204. package/dist/decorators/tenant/index.js.map +1 -0
  205. package/dist/decorators/tenant/tenant.decorator.d.ts +82 -0
  206. package/dist/decorators/tenant/tenant.decorator.d.ts.map +1 -0
  207. package/dist/decorators/tenant/tenant.decorator.js +98 -0
  208. package/dist/decorators/tenant/tenant.decorator.js.map +1 -0
  209. package/dist/decorators/transaction/index.d.ts +6 -0
  210. package/dist/decorators/transaction/index.d.ts.map +1 -0
  211. package/dist/decorators/transaction/index.js +12 -0
  212. package/dist/decorators/transaction/index.js.map +1 -0
  213. package/dist/decorators/transaction/transactional.decorator.d.ts +234 -0
  214. package/dist/decorators/transaction/transactional.decorator.d.ts.map +1 -0
  215. package/dist/decorators/transaction/transactional.decorator.js +433 -0
  216. package/dist/decorators/transaction/transactional.decorator.js.map +1 -0
  217. package/dist/decorators/ts-rest-controller.decorator.d.ts +38 -0
  218. package/dist/decorators/ts-rest-controller.decorator.d.ts.map +1 -0
  219. package/dist/decorators/ts-rest-controller.decorator.js +25 -0
  220. package/dist/decorators/ts-rest-controller.decorator.js.map +1 -0
  221. package/dist/decorators/validation.decorator.d.ts +4 -0
  222. package/dist/decorators/validation.decorator.d.ts.map +1 -0
  223. package/dist/decorators/validation.decorator.js +121 -0
  224. package/dist/decorators/validation.decorator.js.map +1 -0
  225. package/dist/decorators/version/index.d.ts +7 -0
  226. package/dist/decorators/version/index.d.ts.map +1 -0
  227. package/dist/decorators/version/index.js +25 -0
  228. package/dist/decorators/version/index.js.map +1 -0
  229. package/dist/decorators/version/version.decorator.d.ts +96 -0
  230. package/dist/decorators/version/version.decorator.d.ts.map +1 -0
  231. package/dist/decorators/version/version.decorator.js +146 -0
  232. package/dist/decorators/version/version.decorator.js.map +1 -0
  233. package/dist/decorators/version/version.interceptor.d.ts +19 -0
  234. package/dist/decorators/version/version.interceptor.d.ts.map +1 -0
  235. package/dist/decorators/version/version.interceptor.js +86 -0
  236. package/dist/decorators/version/version.interceptor.js.map +1 -0
  237. package/dist/decorators/version/version.module.d.ts +8 -0
  238. package/dist/decorators/version/version.module.d.ts.map +1 -0
  239. package/dist/decorators/version/version.module.js +33 -0
  240. package/dist/decorators/version/version.module.js.map +1 -0
  241. package/dist/encryption.service.d.ts +15 -0
  242. package/dist/encryption.service.d.ts.map +1 -0
  243. package/dist/encryption.service.js +35 -0
  244. package/dist/encryption.service.js.map +1 -0
  245. package/dist/enums/action.enum.d.ts +8 -0
  246. package/dist/enums/action.enum.d.ts.map +1 -0
  247. package/dist/enums/action.enum.js +12 -0
  248. package/dist/enums/action.enum.js.map +1 -0
  249. package/dist/enums/error-codes.d.ts +33 -0
  250. package/dist/enums/error-codes.d.ts.map +1 -0
  251. package/dist/enums/error-codes.js +52 -0
  252. package/dist/enums/error-codes.js.map +1 -0
  253. package/dist/enums/role.enum.d.ts +5 -0
  254. package/dist/enums/role.enum.d.ts.map +1 -0
  255. package/dist/enums/role.enum.js +9 -0
  256. package/dist/enums/role.enum.js.map +1 -0
  257. package/dist/filter/exception/api.exception.d.ts +77 -0
  258. package/dist/filter/exception/api.exception.d.ts.map +1 -0
  259. package/dist/filter/exception/api.exception.js +151 -0
  260. package/dist/filter/exception/api.exception.js.map +1 -0
  261. package/dist/filter/exception/exception.d.ts +8 -0
  262. package/dist/filter/exception/exception.d.ts.map +1 -0
  263. package/dist/filter/exception/exception.js +50 -0
  264. package/dist/filter/exception/exception.js.map +1 -0
  265. package/dist/filter/exception/http.exception.d.ts +11 -0
  266. package/dist/filter/exception/http.exception.d.ts.map +1 -0
  267. package/dist/filter/exception/http.exception.js +152 -0
  268. package/dist/filter/exception/http.exception.js.map +1 -0
  269. package/dist/guards/api-key.guard.d.ts +42 -0
  270. package/dist/guards/api-key.guard.d.ts.map +1 -0
  271. package/dist/guards/api-key.guard.js +159 -0
  272. package/dist/guards/api-key.guard.js.map +1 -0
  273. package/dist/guards/auth.guard.d.ts +39 -0
  274. package/dist/guards/auth.guard.d.ts.map +1 -0
  275. package/dist/guards/auth.guard.js +178 -0
  276. package/dist/guards/auth.guard.js.map +1 -0
  277. package/dist/guards/data-visibility.guard.d.ts +18 -0
  278. package/dist/guards/data-visibility.guard.d.ts.map +1 -0
  279. package/dist/guards/data-visibility.guard.js +84 -0
  280. package/dist/guards/data-visibility.guard.js.map +1 -0
  281. package/dist/guards/index.d.ts +7 -0
  282. package/dist/guards/index.d.ts.map +1 -0
  283. package/dist/guards/index.js +23 -0
  284. package/dist/guards/index.js.map +1 -0
  285. package/dist/guards/permission.guard.d.ts +20 -0
  286. package/dist/guards/permission.guard.d.ts.map +1 -0
  287. package/dist/guards/permission.guard.js +141 -0
  288. package/dist/guards/permission.guard.js.map +1 -0
  289. package/dist/guards/tenant-context.guard.d.ts +12 -0
  290. package/dist/guards/tenant-context.guard.d.ts.map +1 -0
  291. package/dist/guards/tenant-context.guard.js +94 -0
  292. package/dist/guards/tenant-context.guard.js.map +1 -0
  293. package/dist/guards/version.guard.d.ts +100 -0
  294. package/dist/guards/version.guard.d.ts.map +1 -0
  295. package/dist/guards/version.guard.js +233 -0
  296. package/dist/guards/version.guard.js.map +1 -0
  297. package/dist/index.d.ts +60 -0
  298. package/dist/index.d.ts.map +1 -0
  299. package/dist/index.js +85 -0
  300. package/dist/index.js.map +1 -0
  301. package/dist/interceptor/audit/audit-log.interceptor.d.ts +16 -0
  302. package/dist/interceptor/audit/audit-log.interceptor.d.ts.map +1 -0
  303. package/dist/interceptor/audit/audit-log.interceptor.js +156 -0
  304. package/dist/interceptor/audit/audit-log.interceptor.js.map +1 -0
  305. package/dist/interceptor/audit/index.d.ts +2 -0
  306. package/dist/interceptor/audit/index.d.ts.map +1 -0
  307. package/dist/interceptor/audit/index.js +18 -0
  308. package/dist/interceptor/audit/index.js.map +1 -0
  309. package/dist/interceptor/mask/index.d.ts +2 -0
  310. package/dist/interceptor/mask/index.d.ts.map +1 -0
  311. package/dist/interceptor/mask/index.js +18 -0
  312. package/dist/interceptor/mask/index.js.map +1 -0
  313. package/dist/interceptor/mask/mask.interceptor.d.ts +79 -0
  314. package/dist/interceptor/mask/mask.interceptor.d.ts.map +1 -0
  315. package/dist/interceptor/mask/mask.interceptor.js +197 -0
  316. package/dist/interceptor/mask/mask.interceptor.js.map +1 -0
  317. package/dist/interceptor/rate-limit/no-rate-limit.interceptor.d.ts +6 -0
  318. package/dist/interceptor/rate-limit/no-rate-limit.interceptor.d.ts.map +1 -0
  319. package/dist/interceptor/rate-limit/no-rate-limit.interceptor.js +20 -0
  320. package/dist/interceptor/rate-limit/no-rate-limit.interceptor.js.map +1 -0
  321. package/dist/interceptor/rate-limit/rate-limit.interceptor.d.ts +45 -0
  322. package/dist/interceptor/rate-limit/rate-limit.interceptor.d.ts.map +1 -0
  323. package/dist/interceptor/rate-limit/rate-limit.interceptor.js +193 -0
  324. package/dist/interceptor/rate-limit/rate-limit.interceptor.js.map +1 -0
  325. package/dist/interceptor/transform/transform.interceptor.d.ts +37 -0
  326. package/dist/interceptor/transform/transform.interceptor.d.ts.map +1 -0
  327. package/dist/interceptor/transform/transform.interceptor.js +72 -0
  328. package/dist/interceptor/transform/transform.interceptor.js.map +1 -0
  329. package/dist/interceptor/transform/transform.interceptor.spec.d.ts +2 -0
  330. package/dist/interceptor/transform/transform.interceptor.spec.d.ts.map +1 -0
  331. package/dist/interceptor/transform/transform.interceptor.spec.js +9 -0
  332. package/dist/interceptor/transform/transform.interceptor.spec.js.map +1 -0
  333. package/dist/interceptor/version/index.d.ts +2 -0
  334. package/dist/interceptor/version/index.d.ts.map +1 -0
  335. package/dist/interceptor/version/index.js +18 -0
  336. package/dist/interceptor/version/index.js.map +1 -0
  337. package/dist/interceptor/version/version-header.interceptor.d.ts +31 -0
  338. package/dist/interceptor/version/version-header.interceptor.d.ts.map +1 -0
  339. package/dist/interceptor/version/version-header.interceptor.js +62 -0
  340. package/dist/interceptor/version/version-header.interceptor.js.map +1 -0
  341. package/dist/middleware/request.middleware.d.ts +27 -0
  342. package/dist/middleware/request.middleware.d.ts.map +1 -0
  343. package/dist/middleware/request.middleware.js +141 -0
  344. package/dist/middleware/request.middleware.js.map +1 -0
  345. package/dist/middleware/tenant-isolation.middleware.d.ts +12 -0
  346. package/dist/middleware/tenant-isolation.middleware.d.ts.map +1 -0
  347. package/dist/middleware/tenant-isolation.middleware.js +51 -0
  348. package/dist/middleware/tenant-isolation.middleware.js.map +1 -0
  349. package/dist/pipes/transform-root.pipe.d.ts +5 -0
  350. package/dist/pipes/transform-root.pipe.d.ts.map +1 -0
  351. package/dist/pipes/transform-root.pipe.js +24 -0
  352. package/dist/pipes/transform-root.pipe.js.map +1 -0
  353. package/dist/ts-rest/index.d.ts +36 -0
  354. package/dist/ts-rest/index.d.ts.map +1 -0
  355. package/dist/ts-rest/index.js +65 -0
  356. package/dist/ts-rest/index.js.map +1 -0
  357. package/dist/ts-rest/response.helper.d.ts +261 -0
  358. package/dist/ts-rest/response.helper.d.ts.map +1 -0
  359. package/dist/ts-rest/response.helper.js +372 -0
  360. package/dist/ts-rest/response.helper.js.map +1 -0
  361. package/dist/utils/audit-log-helper.util.d.ts +41 -0
  362. package/dist/utils/audit-log-helper.util.d.ts.map +1 -0
  363. package/dist/utils/audit-log-helper.util.js +115 -0
  364. package/dist/utils/audit-log-helper.util.js.map +1 -0
  365. package/dist/utils/audit-signature.util.d.ts +64 -0
  366. package/dist/utils/audit-signature.util.d.ts.map +1 -0
  367. package/dist/utils/audit-signature.util.js +155 -0
  368. package/dist/utils/audit-signature.util.js.map +1 -0
  369. package/dist/utils/prisma-error.util.d.ts +160 -0
  370. package/dist/utils/prisma-error.util.d.ts.map +1 -0
  371. package/dist/utils/prisma-error.util.js +342 -0
  372. package/dist/utils/prisma-error.util.js.map +1 -0
  373. package/package.json +54 -0
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.prepareAuditLogWithSignature = prepareAuditLogWithSignature;
4
+ exports.verifyAuditLogSignature = verifyAuditLogSignature;
5
+ const audit_signature_util_1 = require("./audit-signature.util");
6
+ const infra_utils_1 = require("@dofe/infra-utils");
7
+ const env_config_service_1 = require("@/config/env-config.service");
8
+ /**
9
+ * 从 Prisma 创建输入中提取签名载荷
10
+ */
11
+ function extractSignaturePayload(data) {
12
+ return {
13
+ userId: extractUserId(data),
14
+ operateType: data.operateType,
15
+ target: data.target,
16
+ targetId: extractTargetId(data),
17
+ targetName: data.targetName ?? null,
18
+ createdAt: data.createdAt ?? new Date(),
19
+ tenantId: extractTenantId(data),
20
+ result: data.result ?? 'success',
21
+ };
22
+ }
23
+ /**
24
+ * 从 Prisma 关联数据中提取用户 ID
25
+ */
26
+ function extractUserId(data) {
27
+ if (data.user?.connect?.id) {
28
+ return data.user.connect.id;
29
+ }
30
+ throw new Error('OperateLog must have user.connect.id');
31
+ }
32
+ /**
33
+ * 从 Prisma 关联数据中提取目标 ID
34
+ */
35
+ function extractTargetId(data) {
36
+ return data.targetId ?? null;
37
+ }
38
+ /**
39
+ * 从 Prisma 关联数据中提取租户 ID
40
+ */
41
+ function extractTenantId(data) {
42
+ if (data.tenant?.connect?.id) {
43
+ return data.tenant.connect.id;
44
+ }
45
+ return null;
46
+ }
47
+ /**
48
+ * 脱敏审计日志中的敏感字段
49
+ */
50
+ function maskDetailFields(detail) {
51
+ if (!detail || typeof detail !== 'object') {
52
+ return detail;
53
+ }
54
+ // 可通过环境变量关闭脱敏(不建议生产环境关闭)
55
+ if (env_config_service_1.auditConfig.maskEnabled === false) {
56
+ return detail;
57
+ }
58
+ // 对 detail 对象进行脱敏处理
59
+ return (0, infra_utils_1.maskSensitiveData)(detail);
60
+ }
61
+ /**
62
+ * 为审计日志数据添加签名并脱敏敏感数据
63
+ *
64
+ * @param data Prisma 创建输入数据
65
+ * @returns 带签名且脱敏后的数据
66
+ *
67
+ * @example
68
+ * ```typescript
69
+ * const data = prepareAuditLogWithSignature({
70
+ * user: { connect: { id: userId } },
71
+ * operateType: 'CREATE',
72
+ * target: 'BOT',
73
+ * targetId: botId,
74
+ * detail: { apiKey: 'sk-xxxx' }, // 会被脱敏为 { apiKey: 'sk-***' }
75
+ * });
76
+ *
77
+ * await operateLogService.create(data);
78
+ * ```
79
+ */
80
+ function prepareAuditLogWithSignature(data) {
81
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
82
+ const payload = extractSignaturePayload(data);
83
+ const signature = (0, audit_signature_util_1.generateAuditSignature)(payload);
84
+ // 脱敏 detail 字段中的敏感数据
85
+ const maskedDetail = maskDetailFields(data.detail);
86
+ return {
87
+ ...data,
88
+ detail: maskedDetail,
89
+ signature,
90
+ };
91
+ }
92
+ /**
93
+ * 验证审计日志记录的签名
94
+ *
95
+ * @param log 审计日志记录
96
+ * @returns 验证是否通过
97
+ */
98
+ function verifyAuditLogSignature(log) {
99
+ if (!log.signature) {
100
+ return false;
101
+ }
102
+ const payload = {
103
+ userId: log.userId,
104
+ operateType: log.operateType,
105
+ target: log.target,
106
+ targetId: log.targetId ?? null,
107
+ targetName: log.targetName ?? null,
108
+ createdAt: log.createdAt,
109
+ tenantId: log.tenant?.connect?.id ?? null,
110
+ result: log.result ?? 'success',
111
+ };
112
+ const { verifyAuditSignature: verify } = require('./audit-signature.util');
113
+ return verify(payload, log.signature);
114
+ }
115
+ //# sourceMappingURL=audit-log-helper.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-log-helper.util.js","sourceRoot":"","sources":["../../src/utils/audit-log-helper.util.ts"],"names":[],"mappings":";;AA2GA,oEAeC;AAQD,0DA8BC;AArJD,iEAGgC;AAChC,mDAAsD;AACtD,oEAA0D;AAM1D;;GAEG;AACH,SAAS,uBAAuB,CAC9B,IAAkB;IAElB,OAAO;QACL,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC;QAC3B,WAAW,EAAE,IAAI,CAAC,WAAqB;QACvC,MAAM,EAAE,IAAI,CAAC,MAAgB;QAC7B,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC;QAC/B,UAAU,EAAG,IAAY,CAAC,UAAU,IAAI,IAAI;QAC5C,SAAS,EAAG,IAAY,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE;QAChD,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC;QAC/B,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS;KACjC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,IAAkB;IACvC,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9B,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,IAAkB;IACzC,OAAQ,IAAY,CAAC,QAAQ,IAAI,IAAI,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,IAAkB;IACzC,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAChC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CACvB,MAAyC;IAEzC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,yBAAyB;IACzB,IAAI,gCAAW,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;QACtC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,oBAAoB;IACpB,OAAO,IAAA,+BAAiB,EACtB,MAAiC,CACT,CAAC;AAC7B,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,4BAA4B,CAC1C,IAAO;IAEP,8DAA8D;IAC9D,MAAM,OAAO,GAAG,uBAAuB,CAAC,IAAW,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,IAAA,6CAAsB,EAAC,OAAO,CAAC,CAAC;IAElD,qBAAqB;IACrB,MAAM,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAA+B,CAAC,CAAC;IAE5E,OAAO;QACL,GAAG,IAAI;QACP,MAAM,EAAE,YAAY;QACpB,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAgB,uBAAuB,CACrC,GAUC;IAED,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,OAAO,GAA0B;QACrC,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,WAAW,EAAE,GAAG,CAAC,WAAqB;QACtC,MAAM,EAAE,GAAG,CAAC,MAAgB;QAC5B,QAAQ,EAAG,GAAG,CAAC,QAAmB,IAAI,IAAI;QAC1C,UAAU,EAAG,GAAG,CAAC,UAAqB,IAAI,IAAI;QAC9C,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,IAAI,IAAI;QACzC,MAAM,EAAG,GAAG,CAAC,MAAiB,IAAI,SAAS;KAC5C,CAAC;IAEF,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAC3E,OAAO,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * 审计日志签名字段
3
+ */
4
+ export interface AuditSignaturePayload {
5
+ /** 用户 ID */
6
+ userId: string;
7
+ /** 操作类型 */
8
+ operateType: string;
9
+ /** 操作目标 */
10
+ target: string;
11
+ /** 目标 ID */
12
+ targetId?: string | null;
13
+ /** 目标名称 */
14
+ targetName?: string | null;
15
+ /** 创建时间(ISO 字符串) */
16
+ createdAt: string | Date;
17
+ /** 租户 ID */
18
+ tenantId?: string | null;
19
+ /** 操作结果 */
20
+ result?: string;
21
+ /** 父事件 ID(因果链) */
22
+ parentEventId?: string | null;
23
+ /** 关联 ID(跨系统追踪) */
24
+ correlationId?: string | null;
25
+ /** 事件哈希 */
26
+ eventHash?: string | null;
27
+ }
28
+ /**
29
+ * 生成审计日志签名
30
+ *
31
+ * @param payload 签名载荷
32
+ * @returns HMAC-SHA256 签名(十六进制)
33
+ */
34
+ export declare function generateAuditSignature(payload: AuditSignaturePayload): string;
35
+ /**
36
+ * 验证审计日志签名
37
+ *
38
+ * @param payload 签名载荷
39
+ * @param signature 待验证的签名
40
+ * @returns 验证结果
41
+ */
42
+ export declare function verifyAuditSignature(payload: AuditSignaturePayload, signature: string): boolean;
43
+ /**
44
+ * 重新计算签名(用于数据修复)
45
+ * 仅当需要修复损坏的签名时使用
46
+ *
47
+ * @param payload 签名载荷
48
+ * @returns 新签名
49
+ */
50
+ export declare function recalculateSignature(payload: AuditSignaturePayload): string;
51
+ /**
52
+ * 批量验证审计日志签名
53
+ *
54
+ * @param logs 日志列表
55
+ * @returns 验证结果列表
56
+ */
57
+ export declare function batchVerifySignatures(logs: Array<AuditSignaturePayload & {
58
+ signature?: string | null;
59
+ }>): Array<{
60
+ id?: string;
61
+ valid: boolean;
62
+ error?: string;
63
+ }>;
64
+ //# sourceMappingURL=audit-signature.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-signature.util.d.ts","sourceRoot":"","sources":["../../src/utils/audit-signature.util.ts"],"names":[],"mappings":"AAkCA;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,YAAY;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW;IACX,MAAM,EAAE,MAAM,CAAC;IACf,YAAY;IACZ,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW;IACX,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,oBAAoB;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY;IACZ,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,kBAAkB;IAClB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,mBAAmB;IACnB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW;IACX,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAwBD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,CAQ7E;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,qBAAqB,EAC9B,SAAS,EAAE,MAAM,GAChB,OAAO,CAiBT;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,CAE3E;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,KAAK,CAAC,qBAAqB,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,GACjE,KAAK,CAAC;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAiBxD"}
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.generateAuditSignature = generateAuditSignature;
37
+ exports.verifyAuditSignature = verifyAuditSignature;
38
+ exports.recalculateSignature = recalculateSignature;
39
+ exports.batchVerifySignatures = batchVerifySignatures;
40
+ /**
41
+ * Audit Signature Utility
42
+ *
43
+ * 提供审计日志签名生成和验证功能,防止日志被篡改
44
+ *
45
+ * 签名算法:HMAC-SHA256
46
+ * 签名内容:关键字段按固定顺序拼接
47
+ *
48
+ * 使用方式:
49
+ * 1. 创建日志时调用 generateAuditSignature() 生成签名
50
+ * 2. 验证日志时调用 verifyAuditSignature() 验证完整性
51
+ */
52
+ const crypto = __importStar(require("crypto"));
53
+ const env_config_service_1 = require("@/config/env-config.service");
54
+ /** 默认签名密钥(仅开发环境使用) */
55
+ const DEFAULT_SECRET = 'dev-audit-signature-secret-change-in-production';
56
+ /**
57
+ * 获取签名密钥
58
+ */
59
+ function getSecretKey() {
60
+ const secret = env_config_service_1.auditConfig.signatureSecret;
61
+ if (!secret) {
62
+ if ((0, env_config_service_1.isProduction)()) {
63
+ throw new Error('Missing AUDIT_SIGNATURE_SECRET environment variable in production');
64
+ }
65
+ return DEFAULT_SECRET;
66
+ }
67
+ return secret;
68
+ }
69
+ /**
70
+ * 构建签名字符串
71
+ * 按固定顺序拼接关键字段,确保签名一致性
72
+ */
73
+ function buildSignatureString(payload) {
74
+ const parts = [
75
+ `userId:${payload.userId}`,
76
+ `operateType:${payload.operateType}`,
77
+ `target:${payload.target}`,
78
+ `targetId:${payload.targetId ?? ''}`,
79
+ `targetName:${payload.targetName ?? ''}`,
80
+ `createdAt:${payload.createdAt instanceof Date ? payload.createdAt.toISOString() : payload.createdAt}`,
81
+ `tenantId:${payload.tenantId ?? ''}`,
82
+ `result:${payload.result ?? 'success'}`,
83
+ // Q1 2027 审计链增强字段
84
+ `parentEventId:${payload.parentEventId ?? ''}`,
85
+ `correlationId:${payload.correlationId ?? ''}`,
86
+ `eventHash:${payload.eventHash ?? ''}`,
87
+ ];
88
+ return parts.join('|');
89
+ }
90
+ /**
91
+ * 生成审计日志签名
92
+ *
93
+ * @param payload 签名载荷
94
+ * @returns HMAC-SHA256 签名(十六进制)
95
+ */
96
+ function generateAuditSignature(payload) {
97
+ const secret = getSecretKey();
98
+ const signatureString = buildSignatureString(payload);
99
+ const signature = crypto
100
+ .createHmac('sha256', secret)
101
+ .update(signatureString)
102
+ .digest('hex');
103
+ return signature;
104
+ }
105
+ /**
106
+ * 验证审计日志签名
107
+ *
108
+ * @param payload 签名载荷
109
+ * @param signature 待验证的签名
110
+ * @returns 验证结果
111
+ */
112
+ function verifyAuditSignature(payload, signature) {
113
+ if (!signature) {
114
+ return false;
115
+ }
116
+ const expectedSignature = generateAuditSignature(payload);
117
+ // 使用常量时间比较防止时序攻击
118
+ try {
119
+ return crypto.timingSafeEqual(Buffer.from(signature, 'hex'), Buffer.from(expectedSignature, 'hex'));
120
+ }
121
+ catch {
122
+ // 签名长度不匹配或格式错误
123
+ return false;
124
+ }
125
+ }
126
+ /**
127
+ * 重新计算签名(用于数据修复)
128
+ * 仅当需要修复损坏的签名时使用
129
+ *
130
+ * @param payload 签名载荷
131
+ * @returns 新签名
132
+ */
133
+ function recalculateSignature(payload) {
134
+ return generateAuditSignature(payload);
135
+ }
136
+ /**
137
+ * 批量验证审计日志签名
138
+ *
139
+ * @param logs 日志列表
140
+ * @returns 验证结果列表
141
+ */
142
+ function batchVerifySignatures(logs) {
143
+ return logs.map((log) => {
144
+ if (!log.signature) {
145
+ return { valid: false, error: 'Missing signature' };
146
+ }
147
+ const { signature, ...payload } = log;
148
+ const isValid = verifyAuditSignature(payload, signature);
149
+ return {
150
+ valid: isValid,
151
+ error: isValid ? undefined : 'Signature mismatch',
152
+ };
153
+ });
154
+ }
155
+ //# sourceMappingURL=audit-signature.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-signature.util.js","sourceRoot":"","sources":["../../src/utils/audit-signature.util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Prisma Error Handler Utility
3
+ * 统一处理 Prisma 数据库操作错误
4
+ *
5
+ * 使用四种错误码区分操作类型:
6
+ * - DbCreateError: 创建操作失败
7
+ * - DbUpdateError: 更新操作失败
8
+ * - DbDeleteError: 删除操作失败
9
+ * - DbQueryError: 查询操作失败
10
+ *
11
+ * 具体错误详情通过 ApiException 的 data 字段返回
12
+ */
13
+ /**
14
+ * 数据库操作类型
15
+ */
16
+ export declare enum DbOperationType {
17
+ CREATE = "create",
18
+ UPDATE = "update",
19
+ DELETE = "delete",
20
+ QUERY = "query"
21
+ }
22
+ /**
23
+ * Prisma 错误类型枚举
24
+ */
25
+ export declare enum PrismaErrorType {
26
+ UNIQUE_CONSTRAINT = "UNIQUE_CONSTRAINT",// P2002 - 唯一约束冲突
27
+ FOREIGN_KEY_CONSTRAINT = "FOREIGN_KEY_CONSTRAINT",// P2003 - 外键约束失败
28
+ CONSTRAINT_FAILED = "CONSTRAINT_FAILED",// P2004 - 约束失败
29
+ RECORD_NOT_FOUND = "RECORD_NOT_FOUND",// P2025 - 记录不存在
30
+ REQUIRED_RELATION_VIOLATION = "REQUIRED_RELATION_VIOLATION",// P2014 - 必需关系违规
31
+ RELATED_RECORD_NOT_FOUND = "RELATED_RECORD_NOT_FOUND",// P2015 - 关联记录不存在
32
+ QUERY_INTERPRETATION_ERROR = "QUERY_INTERPRETATION_ERROR",// P2016 - 查询解释错误
33
+ RECORDS_NOT_CONNECTED = "RECORDS_NOT_CONNECTED",// P2017 - 记录未连接
34
+ REQUIRED_CONNECTED_RECORDS_NOT_FOUND = "REQUIRED_CONNECTED_RECORDS_NOT_FOUND",// P2018 - 必需连接记录不存在
35
+ INPUT_ERROR = "INPUT_ERROR",// P2019 - 输入错误
36
+ VALUE_TOO_LONG = "VALUE_TOO_LONG",// P2000 - 值过长
37
+ NULL_CONSTRAINT = "NULL_CONSTRAINT",// P2011 - 非空约束违规
38
+ MISSING_REQUIRED_VALUE = "MISSING_REQUIRED_VALUE",// P2012 - 缺少必需值
39
+ TRANSACTION_CONFLICT = "TRANSACTION_CONFLICT",// P2034 - 事务写冲突/死锁
40
+ TRANSACTION_API_ERROR = "TRANSACTION_API_ERROR",// P2028 - 事务 API 错误
41
+ CONNECTION_ERROR = "CONNECTION_ERROR",// 数据库连接错误
42
+ VALIDATION_ERROR = "VALIDATION_ERROR",// 查询验证错误
43
+ UNKNOWN_ERROR = "UNKNOWN_ERROR"
44
+ }
45
+ /**
46
+ * Prisma 错误详情接口
47
+ */
48
+ export interface PrismaErrorDetail {
49
+ /** 错误类型 */
50
+ type: PrismaErrorType;
51
+ /** 原始 Prisma 错误码 */
52
+ prismaCode?: string;
53
+ /** 错误描述 */
54
+ description: string;
55
+ /** 相关字段(如唯一约束冲突时的字段名) */
56
+ fields?: string[];
57
+ /** 相关模型名 */
58
+ model?: string;
59
+ /** 目标对象(用于约束错误) */
60
+ target?: string | string[];
61
+ /** 原始错误消息 */
62
+ originalMessage?: string;
63
+ }
64
+ /**
65
+ * Prisma 错误处理器
66
+ *
67
+ * @example
68
+ * ```typescript
69
+ * // 在 Service 中使用
70
+ * async createUser(data: CreateUserInput) {
71
+ * try {
72
+ * return await this.prisma.write.user.create({ data });
73
+ * } catch (error) {
74
+ * PrismaErrorHandler.handle(error, DbOperationType.CREATE);
75
+ * }
76
+ * }
77
+ *
78
+ * // 使用便捷方法
79
+ * async updateUser(id: string, data: UpdateUserInput) {
80
+ * try {
81
+ * return await this.prisma.write.user.update({ where: { id }, data });
82
+ * } catch (error) {
83
+ * PrismaErrorHandler.handleUpdate(error);
84
+ * }
85
+ * }
86
+ * ```
87
+ */
88
+ export declare class PrismaErrorHandler {
89
+ /**
90
+ * 处理 Prisma 错误并抛出 ApiException
91
+ * @param error 原始错误
92
+ * @param operationType 操作类型
93
+ * @throws ApiException
94
+ */
95
+ static handle(error: unknown, operationType: DbOperationType): never;
96
+ /**
97
+ * 处理创建操作错误
98
+ */
99
+ static handleCreate(error: unknown): never;
100
+ /**
101
+ * 处理更新操作错误
102
+ */
103
+ static handleUpdate(error: unknown): never;
104
+ /**
105
+ * 处理删除操作错误
106
+ */
107
+ static handleDelete(error: unknown): never;
108
+ /**
109
+ * 处理查询操作错误
110
+ */
111
+ static handleQuery(error: unknown): never;
112
+ /**
113
+ * 解析 Prisma 错误,提取详细信息
114
+ */
115
+ static parseError(error: unknown): PrismaErrorDetail;
116
+ /**
117
+ * 解析 Prisma 已知请求错误
118
+ */
119
+ private static parseKnownRequestError;
120
+ /**
121
+ * 判断错误是否为 Prisma 错误
122
+ */
123
+ static isPrismaError(error: unknown): boolean;
124
+ /**
125
+ * 判断是否为可重试的错误(事务冲突/死锁)
126
+ */
127
+ static isRetryableError(error: unknown): boolean;
128
+ /**
129
+ * 判断是否为唯一约束冲突错误
130
+ */
131
+ static isUniqueConstraintError(error: unknown): boolean;
132
+ /**
133
+ * 判断是否为记录不存在错误
134
+ */
135
+ static isRecordNotFoundError(error: unknown): boolean;
136
+ /**
137
+ * 判断是否为外键约束错误
138
+ */
139
+ static isForeignKeyError(error: unknown): boolean;
140
+ /**
141
+ * 获取唯一约束冲突的字段名
142
+ */
143
+ static getUniqueConstraintFields(error: unknown): string[] | null;
144
+ }
145
+ /**
146
+ * 便捷的错误处理装饰器工厂函数
147
+ * 用于自动捕获并处理 Prisma 错误
148
+ *
149
+ * @example
150
+ * ```typescript
151
+ * class UserService {
152
+ * @HandlePrismaError(DbOperationType.CREATE)
153
+ * async createUser(data: CreateUserInput) {
154
+ * return await this.prisma.write.user.create({ data });
155
+ * }
156
+ * }
157
+ * ```
158
+ */
159
+ export declare function HandlePrismaError(operationType: DbOperationType): (_target: object, _propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
160
+ //# sourceMappingURL=prisma-error.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prisma-error.util.d.ts","sourceRoot":"","sources":["../../src/utils/prisma-error.util.ts"],"names":[],"mappings":"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"}