@nest-omni/core 4.1.3-2 → 4.1.3-22

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 (441) hide show
  1. package/audit/audit.module.d.ts +11 -0
  2. package/audit/audit.module.js +65 -1
  3. package/audit/controllers/audit.controller.d.ts +81 -1
  4. package/audit/controllers/audit.controller.js +67 -0
  5. package/audit/decorators/audit-action.decorator.d.ts +74 -0
  6. package/audit/decorators/audit-action.decorator.js +42 -0
  7. package/audit/decorators/audit-controller.decorator.d.ts +9 -1
  8. package/audit/decorators/audit-controller.decorator.js +11 -2
  9. package/audit/decorators/audit-operation.decorator.d.ts +38 -0
  10. package/audit/decorators/audit-operation.decorator.js +42 -0
  11. package/audit/decorators/entity-audit.decorator.d.ts +85 -1
  12. package/audit/decorators/entity-audit.decorator.js +153 -3
  13. package/audit/decorators/index.d.ts +2 -0
  14. package/audit/decorators/index.js +2 -0
  15. package/audit/dto/audit-action-query.dto.d.ts +13 -0
  16. package/audit/dto/audit-action-query.dto.js +77 -0
  17. package/audit/dto/audit-log-query.dto.d.ts +3 -0
  18. package/audit/dto/audit-log-query.dto.js +3 -0
  19. package/audit/dto/begin-transaction.dto.d.ts +3 -0
  20. package/audit/dto/begin-transaction.dto.js +3 -0
  21. package/audit/dto/compare-entities.dto.d.ts +3 -0
  22. package/audit/dto/compare-entities.dto.js +3 -0
  23. package/audit/dto/index.d.ts +1 -0
  24. package/audit/dto/index.js +1 -0
  25. package/audit/dto/pre-check-restore.dto.d.ts +3 -0
  26. package/audit/dto/pre-check-restore.dto.js +3 -0
  27. package/audit/dto/restore-entity.dto.d.ts +3 -0
  28. package/audit/dto/restore-entity.dto.js +3 -0
  29. package/audit/entities/audit-action-summary.entity.d.ts +23 -0
  30. package/audit/entities/audit-action-summary.entity.js +101 -0
  31. package/audit/entities/entity-audit-log.entity.d.ts +10 -2
  32. package/audit/entities/entity-audit-log.entity.js +48 -9
  33. package/audit/entities/entity-transaction.entity.d.ts +11 -2
  34. package/audit/entities/entity-transaction.entity.js +42 -3
  35. package/audit/entities/index.d.ts +3 -0
  36. package/audit/entities/index.js +3 -0
  37. package/audit/entities/manual-operation-log.entity.d.ts +4 -2
  38. package/audit/entities/manual-operation-log.entity.js +12 -9
  39. package/audit/entities/operation-template.entity.d.ts +4 -0
  40. package/audit/entities/operation-template.entity.js +4 -0
  41. package/audit/enums/audit.enums.d.ts +29 -6
  42. package/audit/enums/audit.enums.js +31 -7
  43. package/audit/examples/decorator-value-mapping.example.d.ts +70 -0
  44. package/audit/examples/decorator-value-mapping.example.js +414 -0
  45. package/audit/index.d.ts +5 -1
  46. package/audit/index.js +38 -1
  47. package/audit/interceptors/audit-action.interceptor.d.ts +38 -0
  48. package/audit/interceptors/audit-action.interceptor.js +215 -0
  49. package/audit/interceptors/audit.interceptor.d.ts +16 -0
  50. package/audit/interceptors/audit.interceptor.js +41 -11
  51. package/audit/interceptors/index.d.ts +1 -0
  52. package/audit/interceptors/index.js +1 -0
  53. package/audit/interfaces/audit.interfaces.d.ts +174 -4
  54. package/audit/services/audit-action.service.d.ts +141 -0
  55. package/audit/services/audit-action.service.js +244 -0
  56. package/audit/services/audit-context.service.d.ts +106 -0
  57. package/audit/services/audit-context.service.js +185 -0
  58. package/audit/services/audit-strategy.service.d.ts +6 -0
  59. package/audit/services/audit-strategy.service.js +13 -0
  60. package/audit/services/entity-audit.service.d.ts +273 -5
  61. package/audit/services/entity-audit.service.js +840 -60
  62. package/audit/services/index.d.ts +3 -0
  63. package/audit/services/index.js +3 -0
  64. package/audit/services/manual-audit-log.service.d.ts +133 -9
  65. package/audit/services/manual-audit-log.service.js +157 -42
  66. package/audit/services/multi-database.service.d.ts +9 -2
  67. package/audit/services/multi-database.service.js +9 -21
  68. package/audit/services/operation-description.service.d.ts +71 -2
  69. package/audit/services/operation-description.service.js +231 -20
  70. package/audit/services/transaction-audit.service.d.ts +30 -0
  71. package/audit/services/transaction-audit.service.js +53 -5
  72. package/audit/subscribers/entity-audit.subscriber.d.ts +20 -0
  73. package/audit/subscribers/entity-audit.subscriber.js +98 -6
  74. package/cache/cache-metrics.service.d.ts +67 -0
  75. package/cache/cache-metrics.service.js +68 -4
  76. package/cache/cache-serialization.service.d.ts +31 -0
  77. package/cache/cache-serialization.service.js +25 -0
  78. package/cache/cache.constants.d.ts +9 -0
  79. package/cache/cache.constants.js +9 -0
  80. package/cache/cache.health.d.ts +26 -0
  81. package/cache/cache.health.js +30 -0
  82. package/cache/cache.module.d.ts +87 -2
  83. package/cache/cache.module.js +84 -11
  84. package/cache/cache.service.d.ts +143 -3
  85. package/cache/cache.service.js +173 -4
  86. package/cache/cache.warmup.service.d.ts +39 -0
  87. package/cache/cache.warmup.service.js +32 -0
  88. package/cache/decorators/cache-evict.decorator.d.ts +47 -0
  89. package/cache/decorators/cache-evict.decorator.js +56 -0
  90. package/cache/decorators/cache-put.decorator.d.ts +34 -0
  91. package/cache/decorators/cache-put.decorator.js +39 -0
  92. package/cache/decorators/cacheable.decorator.d.ts +40 -0
  93. package/cache/decorators/cacheable.decorator.js +55 -0
  94. package/cache/dependencies/callback.dependency.d.ts +33 -0
  95. package/cache/dependencies/callback.dependency.js +39 -1
  96. package/cache/dependencies/chain.dependency.d.ts +28 -0
  97. package/cache/dependencies/chain.dependency.js +34 -0
  98. package/cache/dependencies/db.dependency.d.ts +83 -7
  99. package/cache/dependencies/db.dependency.js +89 -14
  100. package/cache/dependencies/file.dependency.d.ts +32 -0
  101. package/cache/dependencies/file.dependency.js +34 -0
  102. package/cache/dependencies/tag.dependency.d.ts +75 -4
  103. package/cache/dependencies/tag.dependency.js +145 -11
  104. package/cache/dependencies/time.dependency.d.ts +43 -0
  105. package/cache/dependencies/time.dependency.js +43 -0
  106. package/cache/entities/index.d.ts +1 -0
  107. package/cache/entities/index.js +17 -0
  108. package/cache/entities/typeorm-cache.entity.d.ts +71 -0
  109. package/cache/entities/typeorm-cache.entity.js +110 -0
  110. package/cache/examples/basic-usage.d.ts +15 -0
  111. package/cache/examples/basic-usage.js +62 -8
  112. package/cache/index.d.ts +2 -1
  113. package/cache/index.js +28 -2
  114. package/cache/interfaces/cache-dependency.interface.d.ts +53 -0
  115. package/cache/interfaces/cache-options.interface.d.ts +89 -0
  116. package/cache/interfaces/cache-options.interface.js +6 -0
  117. package/cache/interfaces/cache-provider.interface.d.ts +78 -0
  118. package/cache/providers/base-cache.provider.d.ts +14 -0
  119. package/cache/providers/base-cache.provider.js +16 -0
  120. package/cache/providers/cls-cache.provider.d.ts +20 -0
  121. package/cache/providers/cls-cache.provider.js +28 -0
  122. package/cache/providers/index.d.ts +2 -1
  123. package/cache/providers/index.js +2 -1
  124. package/cache/providers/lrucache.provider.d.ts +76 -0
  125. package/cache/providers/lrucache.provider.js +226 -0
  126. package/cache/providers/redis-cache.provider.d.ts +26 -0
  127. package/cache/providers/redis-cache.provider.js +29 -0
  128. package/cache/providers/typeorm-cache.provider.d.ts +211 -0
  129. package/cache/providers/typeorm-cache.provider.js +483 -0
  130. package/cache/utils/dependency-manager.util.d.ts +52 -0
  131. package/cache/utils/dependency-manager.util.js +59 -0
  132. package/cache/utils/key-generator.util.d.ts +42 -0
  133. package/cache/utils/key-generator.util.js +53 -1
  134. package/common/abstract.entity.d.ts +14 -0
  135. package/common/abstract.entity.js +14 -0
  136. package/common/boilerplate.polyfill.d.ts +143 -0
  137. package/common/boilerplate.polyfill.js +35 -1
  138. package/common/dto/dto-container.d.ts +16 -0
  139. package/common/dto/dto-container.js +20 -0
  140. package/common/dto/dto-decorators.d.ts +18 -0
  141. package/common/dto/dto-decorators.js +14 -0
  142. package/common/dto/dto-extensions.d.ts +11 -0
  143. package/common/dto/dto-extensions.js +9 -0
  144. package/common/dto/dto-service-accessor.d.ts +17 -0
  145. package/common/dto/dto-service-accessor.js +18 -0
  146. package/common/dto/dto-transformer.d.ts +12 -0
  147. package/common/dto/dto-transformer.js +9 -0
  148. package/common/dto/index.js +2 -0
  149. package/common/examples/paginate-and-map.example.d.ts +6 -0
  150. package/common/examples/paginate-and-map.example.js +26 -0
  151. package/common/helpers/validation-metadata-helper.d.ts +55 -0
  152. package/common/helpers/validation-metadata-helper.js +60 -0
  153. package/common/index.d.ts +1 -0
  154. package/common/index.js +4 -0
  155. package/common/utils.d.ts +15 -0
  156. package/common/utils.js +15 -0
  157. package/constants/language-code.js +1 -0
  158. package/decorators/field.decorators.d.ts +72 -3
  159. package/decorators/field.decorators.js +155 -19
  160. package/decorators/property.decorators.js +1 -0
  161. package/decorators/public-route.decorator.js +1 -0
  162. package/decorators/transform.decorators.d.ts +27 -2
  163. package/decorators/transform.decorators.js +29 -23
  164. package/decorators/translate.decorator.js +1 -0
  165. package/decorators/user.decorator.js +1 -0
  166. package/decorators/validator.decorators.d.ts +8 -18
  167. package/decorators/validator.decorators.js +22 -190
  168. package/file-upload/controllers/file-access.controller.d.ts +23 -0
  169. package/file-upload/controllers/file-access.controller.js +128 -0
  170. package/file-upload/decorators/column.decorator.d.ts +151 -0
  171. package/file-upload/decorators/column.decorator.js +273 -0
  172. package/file-upload/decorators/csv-data.decorator.d.ts +30 -0
  173. package/file-upload/decorators/csv-data.decorator.js +85 -0
  174. package/file-upload/decorators/csv-import.decorator.d.ts +34 -0
  175. package/file-upload/decorators/csv-import.decorator.js +24 -0
  176. package/file-upload/decorators/examples/column-mapping.example.d.ts +76 -0
  177. package/file-upload/decorators/examples/column-mapping.example.js +122 -0
  178. package/file-upload/decorators/excel-data.decorator.d.ts +30 -0
  179. package/file-upload/decorators/excel-data.decorator.js +85 -0
  180. package/file-upload/decorators/file-upload.decorator.d.ts +83 -0
  181. package/file-upload/decorators/file-upload.decorator.js +172 -0
  182. package/file-upload/decorators/index.d.ts +5 -0
  183. package/file-upload/decorators/index.js +38 -0
  184. package/file-upload/decorators/process.decorator.d.ts +40 -0
  185. package/file-upload/decorators/process.decorator.js +52 -0
  186. package/file-upload/decorators/validate-data.decorator.d.ts +91 -0
  187. package/file-upload/decorators/validate-data.decorator.js +39 -0
  188. package/file-upload/dto/create-file.dto.d.ts +24 -0
  189. package/file-upload/dto/create-file.dto.js +112 -0
  190. package/file-upload/dto/find-files.dto.d.ts +15 -0
  191. package/file-upload/dto/find-files.dto.js +76 -0
  192. package/file-upload/dto/index.d.ts +4 -0
  193. package/file-upload/dto/index.js +20 -0
  194. package/file-upload/dto/pagination.dto.d.ts +7 -0
  195. package/file-upload/dto/pagination.dto.js +39 -0
  196. package/file-upload/dto/update-file.dto.d.ts +15 -0
  197. package/file-upload/dto/update-file.dto.js +67 -0
  198. package/file-upload/entities/file-metadata.entity.d.ts +25 -0
  199. package/file-upload/entities/file-metadata.entity.js +76 -0
  200. package/file-upload/entities/file.entity.d.ts +114 -0
  201. package/file-upload/entities/file.entity.js +350 -0
  202. package/file-upload/entities/index.d.ts +2 -0
  203. package/file-upload/entities/index.js +18 -0
  204. package/file-upload/enums/file-type.enum.d.ts +72 -0
  205. package/file-upload/enums/file-type.enum.js +212 -0
  206. package/file-upload/exceptions/file-upload.exception.d.ts +57 -0
  207. package/file-upload/exceptions/file-upload.exception.js +120 -0
  208. package/file-upload/exceptions/index.d.ts +1 -0
  209. package/file-upload/exceptions/index.js +17 -0
  210. package/file-upload/file-upload.module.d.ts +89 -0
  211. package/file-upload/file-upload.module.js +292 -0
  212. package/file-upload/index.d.ts +37 -0
  213. package/file-upload/index.js +77 -0
  214. package/file-upload/interceptors/file-upload.interceptor.d.ts +101 -0
  215. package/file-upload/interceptors/file-upload.interceptor.js +594 -0
  216. package/file-upload/interceptors/index.d.ts +1 -0
  217. package/file-upload/interceptors/index.js +17 -0
  218. package/file-upload/interfaces/custom-file-type.interface.d.ts +72 -0
  219. package/file-upload/interfaces/custom-file-type.interface.js +2 -0
  220. package/file-upload/interfaces/file-buffer.interface.d.ts +72 -0
  221. package/file-upload/interfaces/file-buffer.interface.js +2 -0
  222. package/file-upload/interfaces/file-entity.interface.d.ts +142 -0
  223. package/file-upload/interfaces/file-entity.interface.js +28 -0
  224. package/file-upload/interfaces/file-metadata.interface.d.ts +21 -0
  225. package/file-upload/interfaces/file-metadata.interface.js +2 -0
  226. package/file-upload/interfaces/file-processor.interface.d.ts +93 -0
  227. package/file-upload/interfaces/file-processor.interface.js +2 -0
  228. package/file-upload/interfaces/file-upload-options.interface.d.ts +74 -0
  229. package/file-upload/interfaces/file-upload-options.interface.js +5 -0
  230. package/file-upload/interfaces/index.d.ts +7 -0
  231. package/file-upload/interfaces/index.js +24 -0
  232. package/file-upload/interfaces/processor-options.interface.d.ts +102 -0
  233. package/file-upload/interfaces/processor-options.interface.js +2 -0
  234. package/file-upload/interfaces/storage-provider.interface.d.ts +239 -0
  235. package/file-upload/interfaces/storage-provider.interface.js +2 -0
  236. package/file-upload/interfaces/upload-options.interface.d.ts +19 -0
  237. package/file-upload/interfaces/upload-options.interface.js +2 -0
  238. package/file-upload/processors/csv.processor.d.ts +98 -0
  239. package/file-upload/processors/csv.processor.js +391 -0
  240. package/file-upload/processors/excel.processor.d.ts +130 -0
  241. package/file-upload/processors/excel.processor.js +547 -0
  242. package/file-upload/processors/image.processor.d.ts +199 -0
  243. package/file-upload/processors/image.processor.js +377 -0
  244. package/file-upload/providers/index.d.ts +2 -0
  245. package/file-upload/providers/index.js +18 -0
  246. package/file-upload/providers/local-storage.provider.d.ts +98 -0
  247. package/file-upload/providers/local-storage.provider.js +484 -0
  248. package/file-upload/providers/s3-storage.provider.d.ts +87 -0
  249. package/file-upload/providers/s3-storage.provider.js +455 -0
  250. package/file-upload/services/file-signature-validator.service.d.ts +118 -0
  251. package/file-upload/services/file-signature-validator.service.js +376 -0
  252. package/file-upload/services/file.service.d.ts +193 -0
  253. package/file-upload/services/file.service.js +638 -0
  254. package/file-upload/services/index.d.ts +4 -0
  255. package/file-upload/services/index.js +20 -0
  256. package/file-upload/services/malicious-file-detector.service.d.ts +300 -0
  257. package/file-upload/services/malicious-file-detector.service.js +1234 -0
  258. package/file-upload/services/mime-registry.service.d.ts +47 -0
  259. package/file-upload/services/mime-registry.service.js +167 -0
  260. package/file-upload/utils/checksum.util.d.ts +28 -0
  261. package/file-upload/utils/checksum.util.js +65 -0
  262. package/file-upload/utils/dynamic-import.util.d.ts +54 -0
  263. package/file-upload/utils/dynamic-import.util.js +156 -0
  264. package/file-upload/utils/filename.util.d.ts +59 -0
  265. package/file-upload/utils/filename.util.js +184 -0
  266. package/file-upload/utils/filepath.util.d.ts +70 -0
  267. package/file-upload/utils/filepath.util.js +152 -0
  268. package/file-upload/utils/index.d.ts +4 -0
  269. package/file-upload/utils/index.js +20 -0
  270. package/filters/bad-request.filter.js +19 -4
  271. package/filters/constraint-errors.js +1 -0
  272. package/helpers/common.helper.d.ts +13 -0
  273. package/helpers/common.helper.js +13 -0
  274. package/http-client/config/http-client.config.d.ts +20 -0
  275. package/http-client/config/http-client.config.js +48 -21
  276. package/http-client/decorators/http-client.decorators.d.ts +55 -14
  277. package/http-client/decorators/http-client.decorators.js +154 -78
  278. package/http-client/entities/http-log.entity.d.ts +217 -8
  279. package/http-client/entities/http-log.entity.js +7 -22
  280. package/http-client/errors/http-client.errors.d.ts +57 -0
  281. package/http-client/errors/http-client.errors.js +58 -0
  282. package/http-client/examples/advanced-usage.example.d.ts +40 -0
  283. package/http-client/examples/advanced-usage.example.js +53 -61
  284. package/http-client/examples/auth-with-waiting-lock.example.d.ts +31 -0
  285. package/http-client/examples/auth-with-waiting-lock.example.js +52 -5
  286. package/http-client/examples/basic-usage.example.d.ts +60 -0
  287. package/http-client/examples/basic-usage.example.js +60 -0
  288. package/http-client/examples/multi-api-configuration.example.d.ts +60 -0
  289. package/http-client/examples/multi-api-configuration.example.js +76 -5
  290. package/http-client/examples/proxy-from-environment.example.d.ts +133 -0
  291. package/http-client/examples/proxy-from-environment.example.js +409 -0
  292. package/http-client/http-client.module.d.ts +48 -2
  293. package/http-client/http-client.module.js +147 -68
  294. package/http-client/index.d.ts +1 -1
  295. package/http-client/index.js +8 -0
  296. package/http-client/interfaces/api-client-config.interface.d.ts +80 -45
  297. package/http-client/interfaces/api-client-config.interface.js +3 -0
  298. package/http-client/interfaces/http-client-config.interface.d.ts +109 -52
  299. package/http-client/services/api-client-registry.service.d.ts +50 -11
  300. package/http-client/services/api-client-registry.service.js +90 -250
  301. package/http-client/services/circuit-breaker.service.d.ts +115 -2
  302. package/http-client/services/circuit-breaker.service.js +237 -7
  303. package/http-client/services/http-client.service.d.ts +124 -14
  304. package/http-client/services/http-client.service.js +437 -148
  305. package/http-client/services/http-log-query.service.d.ts +83 -0
  306. package/http-client/services/http-log-query.service.js +121 -13
  307. package/http-client/services/http-replay.service.d.ts +101 -0
  308. package/http-client/services/http-replay.service.js +86 -0
  309. package/http-client/services/index.d.ts +0 -1
  310. package/http-client/services/index.js +0 -1
  311. package/http-client/services/log-cleanup.service.d.ts +63 -0
  312. package/http-client/services/log-cleanup.service.js +54 -2
  313. package/http-client/services/logging.service.d.ts +116 -7
  314. package/http-client/services/logging.service.js +349 -86
  315. package/http-client/utils/call-stack-extractor.util.d.ts +63 -0
  316. package/http-client/utils/call-stack-extractor.util.js +83 -0
  317. package/http-client/utils/context-extractor.util.d.ts +49 -0
  318. package/http-client/utils/context-extractor.util.js +54 -0
  319. package/http-client/utils/curl-generator.util.d.ts +21 -0
  320. package/http-client/utils/curl-generator.util.js +44 -3
  321. package/http-client/utils/index.d.ts +1 -0
  322. package/http-client/utils/index.js +1 -0
  323. package/http-client/utils/proxy-environment.util.d.ts +42 -0
  324. package/http-client/utils/proxy-environment.util.js +148 -0
  325. package/http-client/utils/request-id.util.d.ts +18 -0
  326. package/http-client/utils/request-id.util.js +20 -0
  327. package/http-client/utils/retry-recorder.util.d.ts +42 -0
  328. package/http-client/utils/retry-recorder.util.js +44 -0
  329. package/http-client/utils/security-validator.util.d.ts +118 -0
  330. package/http-client/utils/security-validator.util.js +352 -0
  331. package/index.d.ts +3 -1
  332. package/index.js +12 -1
  333. package/interceptors/translation-interceptor.service.js +5 -0
  334. package/ip-filter/constants.d.ts +21 -0
  335. package/ip-filter/constants.js +24 -0
  336. package/ip-filter/decorators/index.d.ts +1 -0
  337. package/ip-filter/decorators/index.js +17 -0
  338. package/ip-filter/decorators/ip-filter.decorator.d.ts +58 -0
  339. package/ip-filter/decorators/ip-filter.decorator.js +79 -0
  340. package/ip-filter/guards/index.d.ts +1 -0
  341. package/ip-filter/guards/index.js +17 -0
  342. package/ip-filter/guards/ip-filter.guard.d.ts +62 -0
  343. package/ip-filter/guards/ip-filter.guard.js +174 -0
  344. package/ip-filter/index.d.ts +7 -0
  345. package/ip-filter/index.js +23 -0
  346. package/ip-filter/interfaces/index.d.ts +4 -0
  347. package/ip-filter/interfaces/index.js +20 -0
  348. package/ip-filter/interfaces/ip-filter-async-options.interface.d.ts +15 -0
  349. package/ip-filter/interfaces/ip-filter-async-options.interface.js +2 -0
  350. package/ip-filter/interfaces/ip-filter-metadata.interface.d.ts +26 -0
  351. package/ip-filter/interfaces/ip-filter-metadata.interface.js +2 -0
  352. package/ip-filter/interfaces/ip-filter-options.interface.d.ts +34 -0
  353. package/ip-filter/interfaces/ip-filter-options.interface.js +2 -0
  354. package/ip-filter/interfaces/ip-rule.interface.d.ts +36 -0
  355. package/ip-filter/interfaces/ip-rule.interface.js +2 -0
  356. package/ip-filter/ip-filter.module.d.ts +55 -0
  357. package/ip-filter/ip-filter.module.js +105 -0
  358. package/ip-filter/services/index.d.ts +1 -0
  359. package/ip-filter/services/index.js +17 -0
  360. package/ip-filter/services/ip-filter.service.d.ts +92 -0
  361. package/ip-filter/services/ip-filter.service.js +238 -0
  362. package/ip-filter/utils/index.d.ts +1 -0
  363. package/ip-filter/utils/index.js +17 -0
  364. package/ip-filter/utils/ip-utils.d.ts +61 -0
  365. package/ip-filter/utils/ip-utils.js +162 -0
  366. package/package.json +32 -29
  367. package/providers/context.provider.d.ts +9 -0
  368. package/providers/context.provider.js +15 -0
  369. package/providers/generator.provider.d.ts +4 -0
  370. package/providers/generator.provider.js +4 -0
  371. package/redis-lock/comprehensive-lock-cleanup.service.d.ts +94 -0
  372. package/redis-lock/comprehensive-lock-cleanup.service.js +253 -0
  373. package/redis-lock/examples/lock-strategy.examples.d.ts +89 -0
  374. package/redis-lock/examples/lock-strategy.examples.js +130 -15
  375. package/redis-lock/index.d.ts +2 -0
  376. package/redis-lock/index.js +8 -1
  377. package/redis-lock/lock-heartbeat.service.d.ts +80 -0
  378. package/redis-lock/lock-heartbeat.service.js +232 -0
  379. package/redis-lock/redis-lock.decorator.d.ts +101 -0
  380. package/redis-lock/redis-lock.decorator.js +120 -0
  381. package/redis-lock/redis-lock.module.d.ts +66 -0
  382. package/redis-lock/redis-lock.module.js +175 -70
  383. package/redis-lock/redis-lock.service.d.ts +282 -0
  384. package/redis-lock/redis-lock.service.js +343 -20
  385. package/setup/bootstrap.setup.d.ts +2 -1
  386. package/setup/bootstrap.setup.js +22 -1
  387. package/setup/index.d.ts +1 -0
  388. package/setup/index.js +1 -0
  389. package/setup/mode.setup.d.ts +44 -0
  390. package/setup/mode.setup.js +44 -0
  391. package/setup/run-in-mode.decorator.d.ts +56 -0
  392. package/setup/run-in-mode.decorator.js +92 -0
  393. package/setup/schedule.decorator.d.ts +227 -0
  394. package/setup/schedule.decorator.js +240 -12
  395. package/setup/worker.decorator.d.ts +86 -0
  396. package/setup/worker.decorator.js +97 -0
  397. package/shared/index.d.ts +1 -1
  398. package/shared/index.js +1 -1
  399. package/shared/{serviceRegistryModule.js → service-registry.module.js} +19 -18
  400. package/shared/services/api-config.service.d.ts +3 -0
  401. package/shared/services/api-config.service.js +21 -9
  402. package/shared/services/index.d.ts +0 -1
  403. package/shared/services/index.js +0 -1
  404. package/validator-json/decorators.d.ts +17 -0
  405. package/validator-json/decorators.js +17 -2
  406. package/validator-json/default.d.ts +6 -0
  407. package/validator-json/default.js +30 -2
  408. package/validator-json/defaultConverters.js +1 -0
  409. package/validator-json/options.d.ts +23 -0
  410. package/validators/common-validators.d.ts +143 -0
  411. package/validators/common-validators.js +249 -0
  412. package/validators/custom-validate.examples.d.ts +23 -0
  413. package/validators/custom-validate.examples.js +78 -6
  414. package/validators/custom-validate.validator.d.ts +108 -0
  415. package/validators/custom-validate.validator.js +85 -0
  416. package/validators/file-mimetype.validator.d.ts +0 -2
  417. package/validators/file-mimetype.validator.js +4 -6
  418. package/validators/index.d.ts +1 -0
  419. package/validators/index.js +1 -0
  420. package/validators/is-exists.validator.d.ts +26 -6
  421. package/validators/is-exists.validator.js +30 -7
  422. package/validators/is-unique.validator.d.ts +33 -7
  423. package/validators/is-unique.validator.js +59 -17
  424. package/validators/skip-empty.validator.d.ts +5 -0
  425. package/validators/skip-empty.validator.js +5 -0
  426. package/vault/interfaces/vault-options.interface.d.ts +9 -0
  427. package/vault/vault-config.loader.d.ts +30 -0
  428. package/vault/vault-config.loader.js +48 -1
  429. package/vault/vault-config.service.d.ts +53 -0
  430. package/vault/vault-config.service.js +57 -0
  431. package/vault/vault.module.d.ts +4 -0
  432. package/vault/vault.module.js +4 -0
  433. package/cache/providers/memory-cache.provider.d.ts +0 -26
  434. package/cache/providers/memory-cache.provider.js +0 -171
  435. package/decorators/examples/validation-decorators.example.d.ts +0 -69
  436. package/decorators/examples/validation-decorators.example.js +0 -331
  437. package/http-client/services/cache.service.d.ts +0 -24
  438. package/http-client/services/cache.service.js +0 -264
  439. package/shared/services/validator.service.d.ts +0 -3
  440. package/shared/services/validator.service.js +0 -20
  441. /package/shared/{serviceRegistryModule.d.ts → service-registry.module.d.ts} +0 -0
@@ -21,22 +21,38 @@ Object.defineProperty(exports, "__esModule", { value: true });
21
21
  exports.AuditContextService = void 0;
22
22
  const common_1 = require("@nestjs/common");
23
23
  const nestjs_cls_1 = require("nestjs-cls");
24
+ const crypto_1 = require("crypto");
25
+ /**
26
+ * 审计上下文服务
27
+ */
24
28
  let AuditContextService = class AuditContextService {
25
29
  constructor(cls) {
26
30
  this.cls = cls;
27
31
  }
32
+ /**
33
+ * 获取当前上下文
34
+ */
28
35
  getCurrentContext() {
29
36
  return __awaiter(this, void 0, void 0, function* () {
30
37
  return this.cls.get('auditContext') || this.getDefaultContext();
31
38
  });
32
39
  }
40
+ /**
41
+ * 设置上下文
42
+ */
33
43
  setContext(context) {
34
44
  const currentContext = this.cls.get('auditContext') || this.getDefaultContext();
35
45
  this.cls.set('auditContext', Object.assign(Object.assign({}, currentContext), context));
36
46
  }
47
+ /**
48
+ * 清除上下文
49
+ */
37
50
  clearContext() {
38
51
  this.cls.set('auditContext', undefined);
39
52
  }
53
+ /**
54
+ * 获取默认上下文
55
+ */
40
56
  getDefaultContext() {
41
57
  return {
42
58
  userId: 'system',
@@ -47,6 +63,175 @@ let AuditContextService = class AuditContextService {
47
63
  timestamp: new Date(),
48
64
  };
49
65
  }
66
+ // ========== 审计动作上下文管理 ==========
67
+ /**
68
+ * 获取当前审计动作上下文
69
+ */
70
+ getCurrentActionContext() {
71
+ return this.cls.get('auditActionContext') || null;
72
+ }
73
+ /**
74
+ * 设置审计动作上下文
75
+ */
76
+ setActionContext(context) {
77
+ this.cls.set('auditActionContext', context);
78
+ }
79
+ /**
80
+ * 清除审计动作上下文
81
+ */
82
+ clearActionContext() {
83
+ this.cls.set('auditActionContext', null);
84
+ }
85
+ /**
86
+ * 记录实体变化到当前动作(简单版本)
87
+ */
88
+ recordEntityChangeInAction(entityType, entityId, operation) {
89
+ const actionContext = this.getCurrentActionContext();
90
+ if (actionContext) {
91
+ actionContext.entityChanges.push({
92
+ entityType,
93
+ entityId,
94
+ operation,
95
+ sequence: actionContext.entityChanges.length + 1,
96
+ });
97
+ }
98
+ }
99
+ /**
100
+ * 记录详细的实体变化
101
+ */
102
+ recordDetailedEntityChange(entityType, entityId, operation, oldValue, newValue, changedFields, metadata) {
103
+ const actionContext = this.getCurrentActionContext();
104
+ if (actionContext) {
105
+ const detail = {
106
+ entityType,
107
+ entityId,
108
+ operation,
109
+ oldValue,
110
+ newValue,
111
+ changedFields,
112
+ sequence: actionContext.detailedChanges.length + 1,
113
+ metadata,
114
+ };
115
+ actionContext.detailedChanges.push(detail);
116
+ }
117
+ }
118
+ /**
119
+ * 获取当前动作内的序号
120
+ */
121
+ getSequenceInAction() {
122
+ const actionContext = this.getCurrentActionContext();
123
+ return actionContext ? actionContext.entityChanges.length + 1 : 0;
124
+ }
125
+ /**
126
+ * 生成审计动作ID
127
+ */
128
+ generateActionId() {
129
+ return (0, crypto_1.randomBytes)(16).toString('hex');
130
+ }
131
+ /**
132
+ * 构建审计参数上下文
133
+ */
134
+ buildParamsContext() {
135
+ const actionContext = this.getCurrentActionContext();
136
+ if (!actionContext) {
137
+ return null;
138
+ }
139
+ const context = {
140
+ req: actionContext.req,
141
+ result: actionContext.result,
142
+ error: actionContext.error,
143
+ entityChanges: actionContext.detailedChanges,
144
+ // 查找单个实体
145
+ findEntity(entityType, operation) {
146
+ return context.entityChanges.find((change) => change.entityType === entityType &&
147
+ (operation === undefined || change.operation === operation)) || null;
148
+ },
149
+ // 查找多个实体
150
+ findEntities(entityType, operation) {
151
+ return context.entityChanges.filter((change) => change.entityType === entityType &&
152
+ (operation === undefined || change.operation === operation));
153
+ },
154
+ // 统计实体数量
155
+ countEntities(entityType, operation) {
156
+ return context.findEntities(entityType, operation).length;
157
+ },
158
+ // 路径提取
159
+ extractParams(mapping) {
160
+ const result = {};
161
+ for (const [key, value] of Object.entries(mapping)) {
162
+ if (typeof value === 'string') {
163
+ // 简单路径: 'Order.CREATE.orderSn'
164
+ result[key] = this.extractByPath(value);
165
+ }
166
+ else if (typeof value === 'object' && value.type) {
167
+ // 复杂提取: { type: 'join', path: 'OrderItem.CREATE', field: 'name' }
168
+ result[key] = this.extractByConfig(value);
169
+ }
170
+ }
171
+ return result;
172
+ },
173
+ extractByPath(path) {
174
+ const parts = path.split('.');
175
+ if (parts.length < 2)
176
+ return undefined;
177
+ const [entityType, operationStr, ...fieldParts] = parts;
178
+ const operation = operationStr;
179
+ const entity = context.findEntity(entityType, operation);
180
+ if (!entity)
181
+ return undefined;
182
+ // 支持嵌套字段访问
183
+ let value = entity.newValue;
184
+ for (const field of fieldParts) {
185
+ if (value && typeof value === 'object') {
186
+ value = value[field];
187
+ }
188
+ else {
189
+ return undefined;
190
+ }
191
+ }
192
+ return value;
193
+ },
194
+ extractByConfig(config) {
195
+ const { type, path, field, separator = ', ' } = config;
196
+ const parts = path.split('.');
197
+ const [entityType, operationStr] = parts;
198
+ const operation = operationStr;
199
+ const entities = context.findEntities(entityType, operation);
200
+ switch (type) {
201
+ case 'count':
202
+ return entities.length;
203
+ case 'join': {
204
+ const values = entities.map((e) => {
205
+ const fieldParts = field.split('.');
206
+ let value = e.newValue;
207
+ for (const part of fieldParts) {
208
+ if (part === 'metadata') {
209
+ value = e.metadata;
210
+ }
211
+ else if (value && typeof value === 'object') {
212
+ value = value[part];
213
+ }
214
+ else {
215
+ return undefined;
216
+ }
217
+ }
218
+ return value;
219
+ }).filter(Boolean);
220
+ return values.join(separator);
221
+ }
222
+ case 'sum': {
223
+ return entities.reduce((sum, e) => {
224
+ const value = e.newValue[field];
225
+ return sum + (typeof value === 'number' ? value : 0);
226
+ }, 0);
227
+ }
228
+ default:
229
+ return undefined;
230
+ }
231
+ },
232
+ };
233
+ return context;
234
+ }
50
235
  };
51
236
  exports.AuditContextService = AuditContextService;
52
237
  exports.AuditContextService = AuditContextService = __decorate([
@@ -1,5 +1,8 @@
1
1
  import { IAuditStrategy, IFieldFilter, AuditConfig } from '../interfaces';
2
2
  import { AuditOperation, RecordStrategy, MaskingStrategy } from '../enums';
3
+ /**
4
+ * 默认字段过滤器
5
+ */
3
6
  export declare class DefaultFieldFilter implements IFieldFilter {
4
7
  private readonly includeFields?;
5
8
  private readonly excludeFields?;
@@ -10,6 +13,9 @@ export declare class DefaultFieldFilter implements IFieldFilter {
10
13
  getMaskingStrategy(fieldName: string, path: string[]): MaskingStrategy;
11
14
  private matchPattern;
12
15
  }
16
+ /**
17
+ * 默认审计策略
18
+ */
13
19
  export declare class DefaultAuditStrategy implements IAuditStrategy {
14
20
  private readonly config?;
15
21
  constructor(config?: AuditConfig);
@@ -15,6 +15,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.DefaultAuditStrategy = exports.DefaultFieldFilter = void 0;
16
16
  const common_1 = require("@nestjs/common");
17
17
  const enums_1 = require("../enums");
18
+ /**
19
+ * 默认字段过滤器
20
+ */
18
21
  class DefaultFieldFilter {
19
22
  constructor(includeFields, excludeFields, maskFields) {
20
23
  this.includeFields = includeFields;
@@ -23,9 +26,11 @@ class DefaultFieldFilter {
23
26
  }
24
27
  shouldIncludeField(fieldName, path) {
25
28
  const fullPath = [...path, fieldName].join('.');
29
+ // 如果指定了包含字段,则只记录这些字段
26
30
  if (this.includeFields && this.includeFields.length > 0) {
27
31
  return this.includeFields.some((pattern) => this.matchPattern(fullPath, pattern));
28
32
  }
33
+ // 如果指定了排除字段,则排除这些字段
29
34
  if (this.excludeFields && this.excludeFields.length > 0) {
30
35
  return !this.excludeFields.some((pattern) => this.matchPattern(fullPath, pattern));
31
36
  }
@@ -40,6 +45,7 @@ class DefaultFieldFilter {
40
45
  return enums_1.MaskingStrategy.MASK;
41
46
  }
42
47
  matchPattern(path, pattern) {
48
+ // 支持通配符匹配,如 user.address.*
43
49
  if (pattern.endsWith('*')) {
44
50
  return path.startsWith(pattern.slice(0, -1));
45
51
  }
@@ -47,18 +53,24 @@ class DefaultFieldFilter {
47
53
  }
48
54
  }
49
55
  exports.DefaultFieldFilter = DefaultFieldFilter;
56
+ /**
57
+ * 默认审计策略
58
+ */
50
59
  let DefaultAuditStrategy = class DefaultAuditStrategy {
51
60
  constructor(config) {
52
61
  this.config = config;
53
62
  }
54
63
  shouldRecord(entityType, operation) {
55
64
  var _a, _b, _c, _d, _e;
65
+ // 检查全局配置
56
66
  const globalEnabled = ((_a = this.config) === null || _a === void 0 ? void 0 : _a.enabled) !== false;
57
67
  if (!globalEnabled)
58
68
  return false;
69
+ // 检查实体级别配置
59
70
  const entityConfig = (_c = (_b = this.config) === null || _b === void 0 ? void 0 : _b.entities) === null || _c === void 0 ? void 0 : _c[entityType];
60
71
  if (entityConfig && entityConfig.enabled === false)
61
72
  return false;
73
+ // 检查操作级别配置
62
74
  const operationConfig = (_e = (_d = this.config) === null || _d === void 0 ? void 0 : _d.operations) === null || _e === void 0 ? void 0 : _e[operation];
63
75
  if (operationConfig && operationConfig.enabled === false)
64
76
  return false;
@@ -66,6 +78,7 @@ let DefaultAuditStrategy = class DefaultAuditStrategy {
66
78
  }
67
79
  getRecordStrategy(entityType, operation) {
68
80
  var _a, _b, _c, _d, _e, _f, _g;
81
+ // 优先级: 实体级别 > 操作级别 > 全局默认
69
82
  const entityStrategy = (_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.entities) === null || _b === void 0 ? void 0 : _b[entityType]) === null || _c === void 0 ? void 0 : _c.strategy;
70
83
  if (entityStrategy)
71
84
  return entityStrategy;
@@ -1,37 +1,305 @@
1
1
  import { Repository, EntityManager } from 'typeorm';
2
- import { EntityAuditLogEntity, EntityTransactionEntity } from '../entities';
2
+ import { EntityAuditLogEntity, EntityTransactionEntity, ManualOperationLogEntity, AuditActionSummaryEntity } from '../entities';
3
3
  import { AuditOperation } from '../enums';
4
- import { AuditConfig, IAuditStrategy, EntityDifference, RestoreOptions, RestoreResult, PreCheckResult } from '../interfaces';
4
+ import { AuditConfig, IAuditStrategy, EntityDifference, RestoreOptions, RestoreResult, PreCheckResult, ManualOperationData, ChangeDetail } from '../interfaces';
5
5
  import { AuditContextService } from './audit-context.service';
6
6
  import { MultiDatabaseService } from './multi-database.service';
7
+ import { OperationDescriptionService } from './operation-description.service';
7
8
  import { PageDto } from '../../common/dto';
8
9
  import { AuditLogQueryDto } from '../dto';
10
+ /**
11
+ * 审计配置常量
12
+ */
13
+ export declare const AUDIT_CONSTANTS: {
14
+ /** 深度比较的最大深度限制 */
15
+ readonly MAX_DIFF_DEPTH: 5;
16
+ /** 深度比较的最大键数量限制 */
17
+ readonly MAX_KEYS: 100;
18
+ /** 描述的最大长度 */
19
+ readonly MAX_DESCRIPTION_LENGTH: 1000;
20
+ /** 哈希截断长度 */
21
+ readonly HASH_TRUNCATE_LENGTH: 64;
22
+ /** 部分掩码显示的字符数 */
23
+ readonly PARTIAL_MASK_CHARS: 2;
24
+ };
25
+ /**
26
+ * 注册实体类到注册表
27
+ */
28
+ export declare function registerEntityClass(entityType: string, entityClass: any): void;
29
+ /**
30
+ * 获取实体类
31
+ */
32
+ export declare function getEntityClass(entityType: string): any | undefined;
33
+ /**
34
+ * 实体审计服务
35
+ */
9
36
  export declare class EntityAuditService {
10
37
  private readonly auditLogRepository;
11
38
  private readonly transactionRepository;
39
+ private readonly manualOperationRepository;
12
40
  private readonly entityManager;
13
41
  private readonly contextService;
14
42
  private readonly multiDbService;
15
43
  private readonly auditStrategy;
16
44
  private readonly config?;
45
+ private readonly actionSummaryRepository?;
46
+ private readonly descriptionService?;
17
47
  private readonly auditConnectionName;
18
- constructor(auditLogRepository: Repository<EntityAuditLogEntity>, transactionRepository: Repository<EntityTransactionEntity>, entityManager: EntityManager, contextService: AuditContextService, multiDbService: MultiDatabaseService, auditStrategy?: IAuditStrategy, config?: AuditConfig, auditConnectionName?: string);
48
+ constructor(auditLogRepository: Repository<EntityAuditLogEntity>, transactionRepository: Repository<EntityTransactionEntity>, manualOperationRepository: Repository<ManualOperationLogEntity>, entityManager: EntityManager, contextService: AuditContextService, multiDbService: MultiDatabaseService, auditStrategy?: IAuditStrategy, config?: AuditConfig, auditConnectionName?: string, actionSummaryRepository?: Repository<AuditActionSummaryEntity>, descriptionService?: OperationDescriptionService);
49
+ /**
50
+ * 记录实体变更
51
+ */
19
52
  logEntityChange(entityType: string, entityId: string, operation: AuditOperation, oldValue: Record<string, any>, newValue: Record<string, any>, metadata?: Record<string, any>): Promise<EntityAuditLogEntity | null>;
53
+ /**
54
+ * 查询审计日志
55
+ */
20
56
  getAuditLogs(query: AuditLogQueryDto): Promise<PageDto<EntityAuditLogEntity>>;
57
+ /**
58
+ * 比较实体差异
59
+ */
21
60
  compareEntities(entityType: string, entityId: string, fromLogId?: string, toLogId?: string): Promise<EntityDifference>;
61
+ /**
62
+ * 预检查恢复操作
63
+ */
22
64
  preCheckRestore(entityType: string, entityId: string, auditLogId: string): Promise<PreCheckResult>;
65
+ /**
66
+ * 恢复实体
67
+ */
23
68
  restoreEntity(entityType: string, entityId: string, auditLogId: string, options?: RestoreOptions): Promise<RestoreResult>;
69
+ /**
70
+ * 计算变更字段(支持嵌套路径)
71
+ */
24
72
  private calculateChangedFields;
25
- private calculateChangedFieldPaths;
73
+ /**
74
+ * 生成字段级别的变更详情(前后对比,支持嵌套路径和装饰器值映射)
75
+ */
76
+ private generateChangeDetails;
77
+ /**
78
+ * 深度比较对象
79
+ */
26
80
  private deepEqual;
81
+ /**
82
+ * 深度差异比较
83
+ */
27
84
  private deepDiff;
85
+ /**
86
+ * 比较快照数据
87
+ */
28
88
  private compareSnapshotData;
89
+ /**
90
+ * 过滤和脱敏字段
91
+ */
29
92
  private filterAndMaskFields;
93
+ /**
94
+ * 应用脱敏策略
95
+ */
30
96
  private applyMasking;
97
+ /**
98
+ * 哈希值
99
+ */
31
100
  private hashValue;
101
+ /**
102
+ * 掩码值
103
+ */
32
104
  private maskValue;
105
+ /**
106
+ * 部分掩码值
107
+ */
33
108
  private partialMaskValue;
34
- private generateHashChain;
109
+ /**
110
+ * 生成描述(支持多语言)
111
+ * @param operation 操作类型
112
+ * @param entityType 实体类型
113
+ * @param entityId 实体ID
114
+ * @param changedFields 变更字段列表
115
+ * @param language 语言(默认中文)
116
+ * @param entityClass 实体类(可选,用于获取实体标签)
117
+ */
118
+ /**
119
+ * 使用模板生成描述(优先使用 OperationDescriptionService)
120
+ */
121
+ private generateDescriptionFromTemplate;
35
122
  private generateDescription;
123
+ /**
124
+ * 检测冲突
125
+ */
36
126
  private detectConflicts;
127
+ /**
128
+ * 增强的记录实体变更(支持模板和结构化变更详情)
129
+ * @param data 审计数据
130
+ * @returns 审计日志实体
131
+ */
132
+ logEntityChangeWithTemplate(data: {
133
+ entityType: string;
134
+ entityId: string;
135
+ operation: AuditOperation;
136
+ oldValue?: Record<string, any>;
137
+ newValue?: Record<string, any>;
138
+ changedFields?: string[];
139
+ operationTemplateKey?: string;
140
+ descriptionParams?: Record<string, any>;
141
+ changeDetails?: ChangeDetail[];
142
+ metadata?: Record<string, any>;
143
+ }): Promise<EntityAuditLogEntity | null>;
144
+ /**
145
+ * 记录手动操作
146
+ * @param data 手动操作数据
147
+ * @returns 手动操作日志实体
148
+ */
149
+ logManualOperation(data: ManualOperationData): Promise<ManualOperationLogEntity>;
150
+ /**
151
+ * 在事务中执行操作
152
+ * @param fn 执行函数
153
+ * @param options 事务选项
154
+ * @returns 执���结果
155
+ */
156
+ withTransaction<T>(fn: (transactionId: string) => Promise<T>, options?: {
157
+ userId?: string;
158
+ username?: string;
159
+ requestIp?: string;
160
+ operationTemplateKey?: string;
161
+ descriptionParams?: Record<string, any>;
162
+ metadata?: Record<string, any>;
163
+ }): Promise<T>;
164
+ /**
165
+ * 获取当前事务ID
166
+ * @returns 当前事务ID或null
167
+ */
168
+ getCurrentTransactionId(): Promise<string | null>;
169
+ /**
170
+ * 设置当前事务ID
171
+ * @param transactionId 事务ID
172
+ */
173
+ setCurrentTransactionId(transactionId: string | null): Promise<void>;
174
+ /**
175
+ * 开始事务
176
+ * @param userId 用户ID
177
+ * @param userName 用户名
178
+ * @param ip IP地址
179
+ * @param operationTemplateKey 操作模板键
180
+ * @param descriptionParams 描述参数
181
+ * @returns 事务ID
182
+ */
183
+ beginTransaction(userId?: string, userName?: string, ip?: string, operationTemplateKey?: string, descriptionParams?: Record<string, any>): Promise<string>;
184
+ /**
185
+ * 提交事务
186
+ * @param transactionId 事务ID
187
+ */
188
+ commitTransaction(transactionId: string): Promise<void>;
189
+ /**
190
+ * 回滚事务
191
+ * @param transactionId 事务ID
192
+ */
193
+ rollbackTransaction(transactionId: string): Promise<void>;
194
+ /**
195
+ * 查询审计动作汇总记录
196
+ */
197
+ getAuditActions(options: {
198
+ userId?: string;
199
+ username?: string;
200
+ actionName?: string;
201
+ success?: boolean;
202
+ startTime?: Date;
203
+ endTime?: Date;
204
+ page?: number;
205
+ limit?: number;
206
+ keyword?: string;
207
+ }): Promise<PageDto<AuditActionSummaryEntity>>;
208
+ /**
209
+ * 查询单个审计动作的详细信息(包含关联的实体变更)
210
+ * @param actionId 动作ID
211
+ * @param language 语言代码 (zh/en/ja),默认 zh
212
+ */
213
+ getAuditActionDetail(actionId: string, language?: string): Promise<{
214
+ summary: {
215
+ id: string;
216
+ actionName: string;
217
+ operationTemplateKey: string;
218
+ description: string;
219
+ descriptionParams: Record<string, any>;
220
+ success: boolean;
221
+ errorMessage: string;
222
+ duration: number;
223
+ userId: string;
224
+ username: string;
225
+ requestId: string;
226
+ requestIp: string;
227
+ userAgent: string;
228
+ entityChangesCount: number;
229
+ entityTypes: string[];
230
+ operationStats: Record<string, number>;
231
+ createdAt: Date;
232
+ metadata: Record<string, any>;
233
+ };
234
+ entityChanges: EntityAuditLogEntity[];
235
+ detailedChanges: {
236
+ id: string;
237
+ entityType: string;
238
+ entityId: string;
239
+ operation: AuditOperation;
240
+ operationLabel: string;
241
+ description: string;
242
+ sequenceInAction: number;
243
+ createdAt: Date;
244
+ oldValue: Record<string, any>;
245
+ newValue: Record<string, any>;
246
+ changeDetails: ChangeDetail[];
247
+ changedFieldsCount: number;
248
+ changedFields: string[];
249
+ }[];
250
+ statistics: {
251
+ totalChanges: number;
252
+ totalFieldChanges: number;
253
+ byEntityType: Record<string, number>;
254
+ byOperation: Record<string, number>;
255
+ operationSequence: {
256
+ sequence: number;
257
+ entityType: string;
258
+ operation: AuditOperation;
259
+ }[];
260
+ };
261
+ }>;
262
+ /**
263
+ * 生成本地化的描述文本
264
+ */
265
+ private generateLocalizedDescription;
266
+ /**
267
+ * 替换模板中的占位符
268
+ * @param template 模板字符串,如 "创建了产品 {name},价格 ¥{price}"
269
+ * @param params 参数对象,如 { name: "iPhone", price: 999 }
270
+ * @returns 替换后的字符串
271
+ */
272
+ private replaceTemplatePlaceholders;
273
+ /**
274
+ * 获取嵌套对象的值
275
+ * @param obj 对象
276
+ * @param path 路径,如 "user.name" 或 "user.profile.age"
277
+ * @returns 值或 undefined
278
+ */
279
+ private getNestedValue;
280
+ /**
281
+ * 本地化 changeDetails(根据语言转换 fieldLabel 和 displayValue)
282
+ */
283
+ private localizeChangeDetails;
284
+ /**
285
+ * 获取操作标签(支持多语言)
286
+ */
287
+ private getOperationLabel;
288
+ /**
289
+ * 分析字段变化(支持多语言)
290
+ * @param oldValue 旧值
291
+ * @param newValue 新值
292
+ * @param operation 操作类型
293
+ * @param entityClass 实体类(可选,用于获取字段和值的多语言标签)
294
+ * @param language 语言(默认中文)
295
+ */
296
+ private analyzeFieldChanges;
297
+ /**
298
+ * 格式化显示值
299
+ */
300
+ private formatDisplayValue;
301
+ /**
302
+ * 按字段分组统计
303
+ */
304
+ private groupBy;
37
305
  }