@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
@@ -0,0 +1,215 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
15
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16
+ return new (P || (P = Promise))(function (resolve, reject) {
17
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
18
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
19
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
21
+ });
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.AuditActionInterceptor = void 0;
25
+ const common_1 = require("@nestjs/common");
26
+ const core_1 = require("@nestjs/core");
27
+ const rxjs_1 = require("rxjs");
28
+ const operators_1 = require("rxjs/operators");
29
+ const typeorm_1 = require("@nestjs/typeorm");
30
+ const typeorm_2 = require("typeorm");
31
+ const audit_context_service_1 = require("../services/audit-context.service");
32
+ const operation_description_service_1 = require("../services/operation-description.service");
33
+ const entities_1 = require("../entities");
34
+ const audit_action_decorator_1 = require("../decorators/audit-action.decorator");
35
+ /**
36
+ * 审计动作拦截器
37
+ * 在请求开始时创建审计动作上下文,在请求结束时生成汇总记录
38
+ */
39
+ let AuditActionInterceptor = class AuditActionInterceptor {
40
+ constructor(reflector, contextService, summaryRepository, descriptionService) {
41
+ this.reflector = reflector;
42
+ this.contextService = contextService;
43
+ this.summaryRepository = summaryRepository;
44
+ this.descriptionService = descriptionService;
45
+ }
46
+ intercept(context, next) {
47
+ // 获取装饰器元数据
48
+ const metadata = this.reflector.get(audit_action_decorator_1.AUDIT_ACTION_METADATA, context.getHandler());
49
+ // 如果没有 @AuditAction 装饰器或已禁用,直接放行
50
+ if (!metadata || metadata.options.enabled === false) {
51
+ return next.handle();
52
+ }
53
+ const request = context.switchToHttp().getRequest();
54
+ const actionId = this.contextService.generateActionId();
55
+ const startTime = new Date();
56
+ // 创建审计动作上下文
57
+ const actionContext = {
58
+ actionId,
59
+ actionName: metadata.actionName,
60
+ operationTemplateKey: metadata.options.templateKey,
61
+ paramsBuilder: metadata.options.paramsBuilder,
62
+ startTime,
63
+ entityChanges: [],
64
+ detailedChanges: [],
65
+ req: request,
66
+ };
67
+ // 设置到 CLS
68
+ this.contextService.setActionContext(actionContext);
69
+ return next.handle().pipe((0, operators_1.tap)((result) => __awaiter(this, void 0, void 0, function* () {
70
+ // 请求成功,记录结果
71
+ actionContext.result = result;
72
+ yield this.generateSummary(actionContext, metadata, false);
73
+ })), (0, operators_1.catchError)((error) => __awaiter(this, void 0, void 0, function* () {
74
+ // 请求失败,记录错误
75
+ actionContext.error = error;
76
+ yield this.generateSummary(actionContext, metadata, true, error);
77
+ return (0, rxjs_1.throwError)(() => error);
78
+ })));
79
+ }
80
+ /**
81
+ * 生成审计汇总记录
82
+ */
83
+ generateSummary(actionContext, metadata, hasError, error) {
84
+ return __awaiter(this, void 0, void 0, function* () {
85
+ try {
86
+ const duration = Date.now() - actionContext.startTime.getTime();
87
+ const auditContext = yield this.contextService.getCurrentContext();
88
+ // 构建描述参数
89
+ let descriptionParams = {};
90
+ if (metadata.options.paramsBuilder) {
91
+ const paramsContext = this.contextService.buildParamsContext();
92
+ if (paramsContext) {
93
+ descriptionParams = metadata.options.paramsBuilder(paramsContext);
94
+ }
95
+ }
96
+ // 生成描述文本
97
+ const description = yield this.generateDescription(actionContext.operationTemplateKey, actionContext.actionName, descriptionParams, !hasError);
98
+ // 统计实体类型和操作
99
+ const entityTypes = Array.from(new Set(actionContext.detailedChanges.map((c) => c.entityType)));
100
+ const operationStats = {};
101
+ actionContext.detailedChanges.forEach((change) => {
102
+ const op = change.operation;
103
+ operationStats[op] = (operationStats[op] || 0) + 1;
104
+ });
105
+ // 创建汇总记录
106
+ const summary = this.summaryRepository.create({
107
+ id: actionContext.actionId,
108
+ actionName: actionContext.actionName,
109
+ operationTemplateKey: actionContext.operationTemplateKey,
110
+ descriptionParams,
111
+ description,
112
+ requestId: auditContext.requestId || '',
113
+ userId: auditContext.userId || '',
114
+ username: auditContext.username || '',
115
+ requestIp: auditContext.requestIp || '',
116
+ userAgent: auditContext.userAgent || '',
117
+ entityChangesCount: actionContext.detailedChanges.length,
118
+ entityTypes,
119
+ operationStats,
120
+ success: !hasError,
121
+ errorMessage: error === null || error === void 0 ? void 0 : error.message,
122
+ duration,
123
+ metadata: metadata.options.metadata,
124
+ });
125
+ yield this.summaryRepository.save(summary);
126
+ }
127
+ catch (err) {
128
+ console.error('Failed to generate audit action summary:', err);
129
+ }
130
+ finally {
131
+ // 清除审计动作上下文
132
+ this.contextService.clearActionContext();
133
+ }
134
+ });
135
+ }
136
+ /**
137
+ * 生成操作描述文本
138
+ * 优先从 OperationDescriptionService 获取多语言模板
139
+ * 如果没有,则使用默认格式
140
+ */
141
+ generateDescription(templateKey, actionName, params, success) {
142
+ return __awaiter(this, void 0, void 0, function* () {
143
+ let template;
144
+ // 1. 尝试从模板服务获取模板
145
+ if (templateKey && this.descriptionService) {
146
+ try {
147
+ template = yield this.descriptionService.getTemplate(templateKey);
148
+ }
149
+ catch (error) {
150
+ // 如果获取模板失败,继续使用默认逻辑
151
+ }
152
+ }
153
+ // 2. 如果没有模板,使用默认格式
154
+ if (!template) {
155
+ template = success
156
+ ? `执行操作: ${actionName}`
157
+ : `执行操作失败: ${actionName}`;
158
+ }
159
+ // 3. 执行模板替换
160
+ return this.replaceTemplatePlaceholders(template, params);
161
+ });
162
+ }
163
+ /**
164
+ * 替换模板中的占位符
165
+ * 支持格式:{key} 或 {key:format}
166
+ */
167
+ replaceTemplatePlaceholders(template, params) {
168
+ let result = template;
169
+ // 遍历所有参数,替换占位符
170
+ Object.entries(params).forEach(([key, value]) => {
171
+ const placeholder = `{${key}}`;
172
+ const valueStr = this.formatValue(value);
173
+ // 替换所有匹配的占位符
174
+ const regex = new RegExp(placeholder.replace(/[{}]/g, '\\$&'), 'g');
175
+ result = result.replace(regex, valueStr);
176
+ });
177
+ // 清理未替换的占位符
178
+ result = result.replace(/\{[^}]+\}/g, '');
179
+ return result;
180
+ }
181
+ /**
182
+ * 格式化值为字符串
183
+ */
184
+ formatValue(value) {
185
+ if (value === null || value === undefined) {
186
+ return '';
187
+ }
188
+ if (Array.isArray(value)) {
189
+ // 处理数组
190
+ if (value.length === 0) {
191
+ return '';
192
+ }
193
+ // 如果是对象数组,序列化
194
+ if (typeof value[0] === 'object') {
195
+ return JSON.stringify(value);
196
+ }
197
+ // 否则用顿号连接
198
+ return value.join('、');
199
+ }
200
+ if (typeof value === 'object') {
201
+ return JSON.stringify(value);
202
+ }
203
+ return String(value);
204
+ }
205
+ };
206
+ exports.AuditActionInterceptor = AuditActionInterceptor;
207
+ exports.AuditActionInterceptor = AuditActionInterceptor = __decorate([
208
+ (0, common_1.Injectable)(),
209
+ __param(2, (0, common_1.Inject)((0, typeorm_1.getRepositoryToken)(entities_1.AuditActionSummaryEntity))),
210
+ __param(3, (0, common_1.Optional)()),
211
+ __metadata("design:paramtypes", [core_1.Reflector,
212
+ audit_context_service_1.AuditContextService,
213
+ typeorm_2.Repository,
214
+ operation_description_service_1.OperationDescriptionService])
215
+ ], AuditActionInterceptor);
@@ -1,12 +1,28 @@
1
1
  import { NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';
2
2
  import { Observable } from 'rxjs';
3
3
  import { AuditContextService } from '../services/audit-context.service';
4
+ /**
5
+ * 审计拦截器
6
+ */
4
7
  export declare class AuditInterceptor implements NestInterceptor {
5
8
  private readonly contextService;
9
+ private readonly logger;
6
10
  constructor(contextService: AuditContextService);
7
11
  intercept(context: ExecutionContext, next: CallHandler): Observable<any>;
12
+ /**
13
+ * 设置请求上下文
14
+ */
8
15
  private setRequestContext;
16
+ /**
17
+ * 处理错误
18
+ */
9
19
  private handleError;
20
+ /**
21
+ * 检查是否启用了审计
22
+ */
10
23
  private isAuditEnabled;
24
+ /**
25
+ * 生成请求ID
26
+ */
11
27
  private generateRequestId;
12
28
  }
@@ -17,6 +17,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
17
17
  step((generator = generator.apply(thisArg, _arguments || [])).next());
18
18
  });
19
19
  };
20
+ var AuditInterceptor_1;
20
21
  Object.defineProperty(exports, "__esModule", { value: true });
21
22
  exports.AuditInterceptor = void 0;
22
23
  const common_1 = require("@nestjs/common");
@@ -24,24 +25,35 @@ const operators_1 = require("rxjs/operators");
24
25
  const crypto_1 = require("crypto");
25
26
  const audit_context_service_1 = require("../services/audit-context.service");
26
27
  const decorators_1 = require("../decorators");
27
- let AuditInterceptor = class AuditInterceptor {
28
+ /**
29
+ * 审计拦截器
30
+ */
31
+ let AuditInterceptor = AuditInterceptor_1 = class AuditInterceptor {
28
32
  constructor(contextService) {
29
33
  this.contextService = contextService;
34
+ this.logger = new common_1.Logger(AuditInterceptor_1.name);
30
35
  }
31
36
  intercept(context, next) {
32
37
  const request = context.switchToHttp().getRequest();
33
38
  const handler = context.getHandler();
34
39
  const controller = context.getClass();
40
+ // 检查是否启用了审计
35
41
  if (!this.isAuditEnabled(controller, handler)) {
36
42
  return next.handle();
37
43
  }
44
+ // 设置请求上下文
38
45
  this.setRequestContext(request);
39
46
  return next.handle().pipe((0, operators_1.tap)(() => {
47
+ // 在响应后执行的操作
40
48
  }), (0, operators_1.catchError)((error) => __awaiter(this, void 0, void 0, function* () {
49
+ // 处理错误情况
41
50
  yield this.handleError(error, request);
42
51
  throw error;
43
52
  })));
44
53
  }
54
+ /**
55
+ * 设置请求上下文
56
+ */
45
57
  setRequestContext(request) {
46
58
  var _a, _b, _c;
47
59
  const user = request.user || {};
@@ -55,25 +67,40 @@ let AuditInterceptor = class AuditInterceptor {
55
67
  };
56
68
  this.contextService.setContext(auditContext);
57
69
  }
70
+ /**
71
+ * 处理错误
72
+ */
58
73
  handleError(error, request) {
59
74
  return __awaiter(this, void 0, void 0, function* () {
60
- this.contextService.setContext({
61
- metadata: {
62
- error: {
63
- message: error.message,
64
- stack: error.stack,
65
- status: error.status,
75
+ try {
76
+ // 记录错误信息到上下文
77
+ this.contextService.setContext({
78
+ metadata: {
79
+ error: {
80
+ message: error.message,
81
+ stack: error.stack,
82
+ status: error.status,
83
+ },
66
84
  },
67
- },
68
- });
85
+ });
86
+ }
87
+ catch (contextError) {
88
+ // 不影响请求处理,只记录日志
89
+ this.logger.warn(`Failed to set error context: ${contextError.message}`);
90
+ }
69
91
  });
70
92
  }
93
+ /**
94
+ * 检查是否启用了审计
95
+ */
71
96
  isAuditEnabled(controller, handler) {
72
97
  try {
98
+ // 检查控制器级别设置
73
99
  const controllerMetadata = Reflect.getMetadata(decorators_1.CONTROLLER_AUDIT_OPTIONS, controller);
74
100
  if (controllerMetadata && controllerMetadata.enabled === false) {
75
101
  return false;
76
102
  }
103
+ // 检查方法级别设置
77
104
  const handlerMetadata = Reflect.getMetadata(decorators_1.METHOD_AUDIT_OPTIONS, handler);
78
105
  if (handlerMetadata && handlerMetadata.enabled === false) {
79
106
  return false;
@@ -81,15 +108,18 @@ let AuditInterceptor = class AuditInterceptor {
81
108
  return true;
82
109
  }
83
110
  catch (error) {
84
- return true;
111
+ return true; // 默认启用
85
112
  }
86
113
  }
114
+ /**
115
+ * 生成请求ID
116
+ */
87
117
  generateRequestId() {
88
118
  return (0, crypto_1.randomBytes)(16).toString('hex');
89
119
  }
90
120
  };
91
121
  exports.AuditInterceptor = AuditInterceptor;
92
- exports.AuditInterceptor = AuditInterceptor = __decorate([
122
+ exports.AuditInterceptor = AuditInterceptor = AuditInterceptor_1 = __decorate([
93
123
  (0, common_1.Injectable)(),
94
124
  __metadata("design:paramtypes", [audit_context_service_1.AuditContextService])
95
125
  ], AuditInterceptor);
@@ -1 +1,2 @@
1
1
  export * from './audit.interceptor';
2
+ export * from './audit-action.interceptor';
@@ -15,3 +15,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./audit.interceptor"), exports);
18
+ __exportStar(require("./audit-action.interceptor"), exports);
@@ -1,4 +1,7 @@
1
- import { AuditOperation, MaskingStrategy, RecordStrategy } from '../enums/audit.enums';
1
+ import { AuditOperation, MaskingStrategy, RecordStrategy, ChangeType } from '../enums/audit.enums';
2
+ /**
3
+ * 审计上下文
4
+ */
2
5
  export interface AuditContext {
3
6
  userId?: string;
4
7
  username?: string;
@@ -9,16 +12,25 @@ export interface AuditContext {
9
12
  transactionId?: string;
10
13
  metadata?: Record<string, any>;
11
14
  }
15
+ /**
16
+ * 审计策略接口
17
+ */
12
18
  export interface IAuditStrategy {
13
19
  shouldRecord(entityType: string, operation: AuditOperation): boolean;
14
20
  getRecordStrategy(entityType: string, operation: AuditOperation): RecordStrategy;
15
21
  getFieldFilter(entityType: string): IFieldFilter;
16
22
  }
23
+ /**
24
+ * 字段过滤器接口
25
+ */
17
26
  export interface IFieldFilter {
18
27
  shouldIncludeField(fieldName: string, path: string[]): boolean;
19
28
  shouldMaskField(fieldName: string, path: string[]): boolean;
20
29
  getMaskingStrategy(fieldName: string, path: string[]): MaskingStrategy;
21
30
  }
31
+ /**
32
+ * 实体差异
33
+ */
22
34
  export interface EntityDifference {
23
35
  changes: Array<{
24
36
  path: string[];
@@ -32,6 +44,9 @@ export interface EntityDifference {
32
44
  changed: number;
33
45
  };
34
46
  }
47
+ /**
48
+ * 恢复选项
49
+ */
35
50
  export interface RestoreOptions {
36
51
  force?: boolean;
37
52
  dryRun?: boolean;
@@ -40,6 +55,9 @@ export interface RestoreOptions {
40
55
  skipDependencies?: boolean;
41
56
  connectionName?: string;
42
57
  }
58
+ /**
59
+ * 恢复结果
60
+ */
43
61
  export interface RestoreResult {
44
62
  success: boolean;
45
63
  message?: string;
@@ -54,6 +72,9 @@ export interface RestoreResult {
54
72
  entityId: string;
55
73
  }>;
56
74
  }
75
+ /**
76
+ * 预检查结果
77
+ */
57
78
  export interface PreCheckResult {
58
79
  canRestore: boolean;
59
80
  conflicts: Array<{
@@ -64,6 +85,9 @@ export interface PreCheckResult {
64
85
  }>;
65
86
  warnings: string[];
66
87
  }
88
+ /**
89
+ * 批量操作结果
90
+ */
67
91
  export interface BatchOperationResult {
68
92
  total: number;
69
93
  success: number;
@@ -74,6 +98,9 @@ export interface BatchOperationResult {
74
98
  }>;
75
99
  results: any[];
76
100
  }
101
+ /**
102
+ * 审计配置
103
+ */
77
104
  export interface AuditConfig {
78
105
  enabled?: boolean;
79
106
  defaultStrategy?: RecordStrategy;
@@ -86,34 +113,177 @@ export interface AuditConfig {
86
113
  entities?: Record<string, EntityAuditConfig>;
87
114
  operations?: Record<string, OperationAuditConfig>;
88
115
  security?: {
89
- hashChainEnabled?: boolean;
90
- hashAlgorithm?: string;
91
116
  masking?: {
92
117
  defaultStrategy?: MaskingStrategy;
93
118
  strategies?: Record<string, MaskingStrategy>;
94
119
  };
95
120
  };
96
121
  }
122
+ /**
123
+ * 实体级别审计配置
124
+ */
125
+ /**
126
+ * 实体审计配置
127
+ *
128
+ * @description
129
+ * 支持基础审计配置
130
+ *
131
+ * @example
132
+ * ```typescript
133
+ * @EntityAudit({
134
+ * enabled: true,
135
+ * excludeFields: ['password'],
136
+ * maskFields: ['email', 'phone'],
137
+ * templateKey: 'user',
138
+ * })
139
+ * ```
140
+ */
97
141
  export interface EntityAuditConfig {
98
142
  enabled?: boolean;
99
143
  strategy?: RecordStrategy;
100
144
  includeFields?: string[];
101
145
  excludeFields?: string[];
102
146
  maskFields?: string[];
147
+ /**
148
+ * 实体标签(支持多语言)
149
+ * @example
150
+ * // 单语言
151
+ * label: '订单'
152
+ *
153
+ * // 多语言
154
+ * label: { zh: '订单', en: 'Order', ja: '注文' }
155
+ */
156
+ label?: string | Record<string, string>;
157
+ /**
158
+ * 操作模板键前缀
159
+ * @example 'user' -> 生成 'user.create', 'user.update', 'user.delete'
160
+ */
161
+ templateKey?: string;
103
162
  }
163
+ /**
164
+ * 操作级别审计配置
165
+ */
104
166
  export interface OperationAuditConfig {
105
167
  enabled?: boolean;
106
168
  strategy?: RecordStrategy;
107
169
  }
170
+ /**
171
+ * 字段显示选项
172
+ */
108
173
  export interface FieldDisplayOptions {
109
- displayName?: string;
174
+ /**
175
+ * 字段标签(支持多语言)
176
+ * @example
177
+ * // 单语言
178
+ * label: '姓名'
179
+ *
180
+ * // 多语言
181
+ * label: { zh: '姓名', en: 'Name' }
182
+ */
183
+ label?: string | Record<string, string>;
184
+ /**
185
+ * 字段值的多语言标签映射
186
+ * @example
187
+ * valueLabels: {
188
+ * active: { zh: '激活', en: 'Active' },
189
+ * inactive: { zh: '未激活', en: 'Inactive' }
190
+ * }
191
+ */
192
+ valueLabels?: Record<string, Record<string, string>>;
110
193
  sensitive?: boolean;
111
194
  formatter?: (value: any) => string;
112
195
  }
196
+ /**
197
+ * 控制器审计选项
198
+ */
113
199
  export interface ControllerAuditOptions {
114
200
  enabled?: boolean;
115
201
  operations?: AuditOperation[];
116
202
  }
203
+ /**
204
+ * 方法审计选项
205
+ */
117
206
  export interface MethodAuditOptions {
118
207
  enabled?: boolean;
119
208
  }
209
+ /**
210
+ * 变更详情
211
+ */
212
+ export interface ChangeDetail {
213
+ fieldName: string;
214
+ fieldLabels?: Record<string, string>;
215
+ oldValue: any;
216
+ newValue: any;
217
+ displayOldValue?: Record<string, string>;
218
+ displayNewValue?: Record<string, string>;
219
+ changeType: ChangeType;
220
+ }
221
+ /**
222
+ * 操作模板配置(用于数据库存储)
223
+ */
224
+ export interface OperationTemplateData {
225
+ key: string;
226
+ entityName: string;
227
+ operation: AuditOperation;
228
+ nameTemplates: Record<string, string>;
229
+ descriptionTemplates: Record<string, string>;
230
+ fieldLabels?: Record<string, Record<string, string>>;
231
+ valueDisplays?: Record<string, Record<string, Record<string, string>>>;
232
+ }
233
+ /**
234
+ * 手动操作日志数据
235
+ */
236
+ export interface ManualOperationData {
237
+ transactionId: string;
238
+ operationTemplateKey: string;
239
+ descriptionParams: Record<string, any>;
240
+ userId?: string;
241
+ username?: string;
242
+ requestIp?: string;
243
+ }
244
+ /**
245
+ * 手动日志记录选项(支持三种模式)
246
+ */
247
+ export interface ManualLogOptions {
248
+ templateKey?: string;
249
+ descriptionParams?: Record<string, any>;
250
+ description?: string | Record<string, string>;
251
+ descriptionTemplate?: Record<string, string>;
252
+ userId?: string;
253
+ username?: string;
254
+ requestIp?: string;
255
+ transactionId?: string;
256
+ autoCreateTransaction?: boolean;
257
+ }
258
+ /**
259
+ * 方法审计选项(支持模板)
260
+ */
261
+ export interface AuditOperationOptions {
262
+ templateKey: string;
263
+ descriptionParams?: (args: any[], result: any, context: any) => Record<string, any>;
264
+ autoTransaction?: boolean;
265
+ }
266
+ /**
267
+ * 增强的实体审计配置(支持多语言)
268
+ */
269
+ export interface EnhancedEntityAuditConfig extends EntityAuditConfig {
270
+ templateKey?: string;
271
+ fieldLabels?: Record<string, Record<string, string>>;
272
+ valueDisplays?: Record<string, Record<string, Record<string, string>>>;
273
+ }
274
+ /**
275
+ * 事务描述结果
276
+ */
277
+ export interface TransactionDescription {
278
+ operationName: string;
279
+ description: string;
280
+ changes: Array<{
281
+ entityName?: string;
282
+ entityId?: string;
283
+ operation?: AuditOperation;
284
+ type?: string;
285
+ description: string;
286
+ details: any;
287
+ createdAt: Date;
288
+ }>;
289
+ }