@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
@@ -1,7 +1,18 @@
1
1
  import { DynamicModule } from '@nestjs/common';
2
2
  import { AuditConfig } from './interfaces';
3
+ /**
4
+ * 审计模块
5
+ */
3
6
  export declare class AuditModule {
7
+ private static readonly logger;
8
+ /**
9
+ * 注册审计模块
10
+ * @param config 审计配置
11
+ */
4
12
  static forRoot(config?: AuditConfig): DynamicModule;
13
+ /**
14
+ * 注册审计模块(异步)
15
+ */
5
16
  static forRootAsync(options: {
6
17
  imports?: any[];
7
18
  inject?: any[];
@@ -25,11 +25,23 @@ const services_1 = require("./services");
25
25
  const subscribers_1 = require("./subscribers");
26
26
  const interceptors_1 = require("./interceptors");
27
27
  const controllers_1 = require("./controllers");
28
+ /**
29
+ * 审计模块
30
+ */
28
31
  let AuditModule = AuditModule_1 = class AuditModule {
32
+ /**
33
+ * 注册审计模块
34
+ * @param config 审计配置
35
+ */
29
36
  static forRoot(config) {
30
37
  var _a, _b;
31
38
  const auditConnectionName = ((_a = config === null || config === void 0 ? void 0 : config.connections) === null || _a === void 0 ? void 0 : _a.audit) || 'default';
32
39
  const monitoredConnections = ((_b = config === null || config === void 0 ? void 0 : config.connections) === null || _b === void 0 ? void 0 : _b.monitored) || ['default'];
40
+ if (process.env.NODE_ENV !== 'prod') {
41
+ this.logger.log(`Initializing AuditModule with connection: ${auditConnectionName}`);
42
+ this.logger.log(`Monitoring connections: ${monitoredConnections.join(', ')}`);
43
+ }
44
+ // 创建多个订阅者提供者,每个监听的数据库连接一个
33
45
  const subscriberProviders = monitoredConnections.map((connectionName) => ({
34
46
  provide: `AUDIT_SUBSCRIBER_${connectionName}`,
35
47
  useFactory: (auditService, contextService, auditStrategy, dataSource) => {
@@ -43,6 +55,7 @@ let AuditModule = AuditModule_1 = class AuditModule {
43
55
  (0, typeorm_1.getDataSourceToken)(connectionName),
44
56
  ],
45
57
  }));
58
+ // 创建repository别名提供者,使service能够注入正确连接的repository
46
59
  const repositoryProviders = [
47
60
  {
48
61
  provide: (0, typeorm_1.getRepositoryToken)(entities_1.EntityAuditLogEntity),
@@ -58,6 +71,27 @@ let AuditModule = AuditModule_1 = class AuditModule {
58
71
  },
59
72
  inject: [(0, typeorm_1.getDataSourceToken)(auditConnectionName)],
60
73
  },
74
+ {
75
+ provide: (0, typeorm_1.getRepositoryToken)(entities_1.OperationTemplateEntity),
76
+ useFactory: (dataSource) => {
77
+ return dataSource.getRepository(entities_1.OperationTemplateEntity);
78
+ },
79
+ inject: [(0, typeorm_1.getDataSourceToken)(auditConnectionName)],
80
+ },
81
+ {
82
+ provide: (0, typeorm_1.getRepositoryToken)(entities_1.ManualOperationLogEntity),
83
+ useFactory: (dataSource) => {
84
+ return dataSource.getRepository(entities_1.ManualOperationLogEntity);
85
+ },
86
+ inject: [(0, typeorm_1.getDataSourceToken)(auditConnectionName)],
87
+ },
88
+ {
89
+ provide: (0, typeorm_1.getRepositoryToken)(entities_1.AuditActionSummaryEntity),
90
+ useFactory: (dataSource) => {
91
+ return dataSource.getRepository(entities_1.AuditActionSummaryEntity);
92
+ },
93
+ inject: [(0, typeorm_1.getDataSourceToken)(auditConnectionName)],
94
+ },
61
95
  {
62
96
  provide: 'AUDIT_ENTITY_MANAGER',
63
97
  useFactory: (dataSource) => {
@@ -69,7 +103,14 @@ let AuditModule = AuditModule_1 = class AuditModule {
69
103
  return {
70
104
  module: AuditModule_1,
71
105
  imports: [
72
- typeorm_1.TypeOrmModule.forFeature([entities_1.EntityAuditLogEntity, entities_1.EntityTransactionEntity], auditConnectionName),
106
+ // ��计日志存储到指定的数据库连接
107
+ typeorm_1.TypeOrmModule.forFeature([
108
+ entities_1.EntityAuditLogEntity,
109
+ entities_1.EntityTransactionEntity,
110
+ entities_1.OperationTemplateEntity,
111
+ entities_1.ManualOperationLogEntity,
112
+ entities_1.AuditActionSummaryEntity,
113
+ ], auditConnectionName),
73
114
  nestjs_cls_1.ClsModule.forRoot({
74
115
  global: true,
75
116
  middleware: { mount: true },
@@ -95,7 +136,11 @@ let AuditModule = AuditModule_1 = class AuditModule {
95
136
  ...repositoryProviders,
96
137
  services_1.EntityAuditService,
97
138
  services_1.TransactionAuditService,
139
+ services_1.OperationDescriptionService,
140
+ services_1.AuditActionService,
141
+ services_1.ManualAuditLogService,
98
142
  interceptors_1.AuditInterceptor,
143
+ interceptors_1.AuditActionInterceptor,
99
144
  ...subscriberProviders,
100
145
  ],
101
146
  exports: [
@@ -104,11 +149,20 @@ let AuditModule = AuditModule_1 = class AuditModule {
104
149
  services_1.MultiDatabaseService,
105
150
  services_1.EntityAuditService,
106
151
  services_1.TransactionAuditService,
152
+ services_1.OperationDescriptionService,
153
+ services_1.AuditActionService,
154
+ services_1.ManualAuditLogService,
107
155
  interceptors_1.AuditInterceptor,
156
+ interceptors_1.AuditActionInterceptor,
157
+ (0, typeorm_1.getRepositoryToken)(entities_1.AuditActionSummaryEntity),
108
158
  ],
109
159
  };
110
160
  }
161
+ /**
162
+ * 注册审计模块(异步)
163
+ */
111
164
  static forRootAsync(options) {
165
+ // 创建repository别名提供者,使service能够注入正确连接的repository
112
166
  const repositoryProviders = [
113
167
  {
114
168
  provide: (0, typeorm_1.getRepositoryToken)(entities_1.EntityAuditLogEntity),
@@ -195,6 +249,7 @@ let AuditModule = AuditModule_1 = class AuditModule {
195
249
  const config = yield options.useFactory(...args);
196
250
  const monitoredConnections = ((_a = config === null || config === void 0 ? void 0 : config.connections) === null || _a === void 0 ? void 0 : _a.monitored) || ['default'];
197
251
  const auditConnectionName = ((_b = config === null || config === void 0 ? void 0 : config.connections) === null || _b === void 0 ? void 0 : _b.audit) || 'default';
252
+ // 动态注册 TypeORM 实体
198
253
  const typeOrmModule = typeorm_1.TypeOrmModule.forFeature([entities_1.EntityAuditLogEntity, entities_1.EntityTransactionEntity], auditConnectionName);
199
254
  return monitoredConnections;
200
255
  }),
@@ -211,7 +266,11 @@ let AuditModule = AuditModule_1 = class AuditModule {
211
266
  ...repositoryProviders,
212
267
  services_1.EntityAuditService,
213
268
  services_1.TransactionAuditService,
269
+ services_1.OperationDescriptionService,
270
+ services_1.AuditActionService,
271
+ services_1.ManualAuditLogService,
214
272
  interceptors_1.AuditInterceptor,
273
+ interceptors_1.AuditActionInterceptor,
215
274
  ],
216
275
  exports: [
217
276
  services_1.AuditContextService,
@@ -219,12 +278,17 @@ let AuditModule = AuditModule_1 = class AuditModule {
219
278
  services_1.MultiDatabaseService,
220
279
  services_1.EntityAuditService,
221
280
  services_1.TransactionAuditService,
281
+ services_1.OperationDescriptionService,
282
+ services_1.AuditActionService,
283
+ services_1.ManualAuditLogService,
222
284
  interceptors_1.AuditInterceptor,
285
+ interceptors_1.AuditActionInterceptor,
223
286
  ],
224
287
  };
225
288
  }
226
289
  };
227
290
  exports.AuditModule = AuditModule;
291
+ AuditModule.logger = new common_1.Logger(AuditModule_1.name);
228
292
  exports.AuditModule = AuditModule = AuditModule_1 = __decorate([
229
293
  (0, common_1.Global)(),
230
294
  (0, common_1.Module)({})
@@ -1,20 +1,100 @@
1
1
  import { EntityAuditService } from '../services/entity-audit.service';
2
2
  import { TransactionAuditService } from '../services/transaction-audit.service';
3
- import { AuditLogQueryDto, CompareEntitiesDto, RestoreEntityDto, PreCheckRestoreDto, BeginTransactionDto } from '../dto';
3
+ import { AuditLogQueryDto, AuditActionQueryDto, CompareEntitiesDto, RestoreEntityDto, PreCheckRestoreDto, BeginTransactionDto } from '../dto';
4
4
  import { EntityAuditLogEntity } from '../entities';
5
5
  import { EntityDifference, PreCheckResult, RestoreResult } from '../interfaces';
6
6
  import { PageDto } from '../../common/dto';
7
+ /**
8
+ * 审计控制器
9
+ */
7
10
  export declare class AuditController {
8
11
  private readonly entityAuditService;
9
12
  private readonly transactionAuditService;
10
13
  constructor(entityAuditService: EntityAuditService, transactionAuditService: TransactionAuditService);
14
+ /**
15
+ * 查询实体审计日志
16
+ */
11
17
  getAuditLogs(query: AuditLogQueryDto): Promise<PageDto<EntityAuditLogEntity>>;
18
+ /**
19
+ * 比较实体版本
20
+ */
12
21
  compareEntities(query: CompareEntitiesDto): Promise<EntityDifference>;
22
+ /**
23
+ * 预检查恢复操作
24
+ */
13
25
  preCheckRestore(preCheckDto: PreCheckRestoreDto): Promise<PreCheckResult>;
26
+ /**
27
+ * 恢复实体到指定版本
28
+ */
14
29
  restoreEntity(restoreDto: RestoreEntityDto): Promise<RestoreResult>;
30
+ /**
31
+ * 开始审计事务
32
+ */
15
33
  beginTransaction(beginTransactionDto: BeginTransactionDto): Promise<{
16
34
  transactionId: string;
17
35
  }>;
36
+ /**
37
+ * 提交审计事务
38
+ */
18
39
  commitTransaction(transactionId: string): Promise<void>;
40
+ /**
41
+ * 回滚审计事务
42
+ */
19
43
  rollbackTransaction(transactionId: string): Promise<void>;
44
+ /**
45
+ * 查询审计动作汇总记录
46
+ */
47
+ getAuditActions(query: AuditActionQueryDto): Promise<PageDto<import("../entities").AuditActionSummaryEntity>>;
48
+ /**
49
+ * 查询单个审计动作的详细信息
50
+ */
51
+ getAuditActionDetail(actionId: string): Promise<{
52
+ summary: {
53
+ id: string;
54
+ actionName: string;
55
+ operationTemplateKey: string;
56
+ description: string;
57
+ descriptionParams: Record<string, any>;
58
+ success: boolean;
59
+ errorMessage: string;
60
+ duration: number;
61
+ userId: string;
62
+ username: string;
63
+ requestId: string;
64
+ requestIp: string;
65
+ userAgent: string;
66
+ entityChangesCount: number;
67
+ entityTypes: string[];
68
+ operationStats: Record<string, number>;
69
+ createdAt: Date;
70
+ metadata: Record<string, any>;
71
+ };
72
+ entityChanges: EntityAuditLogEntity[];
73
+ detailedChanges: {
74
+ id: string;
75
+ entityType: string;
76
+ entityId: string;
77
+ operation: import("..").AuditOperation;
78
+ operationLabel: string;
79
+ description: string;
80
+ sequenceInAction: number;
81
+ createdAt: Date;
82
+ oldValue: Record<string, any>;
83
+ newValue: Record<string, any>;
84
+ changeDetails: import("../interfaces").ChangeDetail[];
85
+ changedFieldsCount: number;
86
+ changedFields: string[];
87
+ }[];
88
+ statistics: {
89
+ totalChanges: number;
90
+ totalFieldChanges: number;
91
+ byEntityType: Record<string, number>;
92
+ byOperation: Record<string, number>;
93
+ operationSequence: {
94
+ sequence: number;
95
+ entityType: string;
96
+ operation: import("..").AuditOperation;
97
+ }[];
98
+ };
99
+ }>;
20
100
  }
@@ -27,48 +27,97 @@ const swagger_1 = require("@nestjs/swagger");
27
27
  const entity_audit_service_1 = require("../services/entity-audit.service");
28
28
  const transaction_audit_service_1 = require("../services/transaction-audit.service");
29
29
  const dto_1 = require("../dto");
30
+ /**
31
+ * 审计控制器
32
+ */
30
33
  let AuditController = class AuditController {
31
34
  constructor(entityAuditService, transactionAuditService) {
32
35
  this.entityAuditService = entityAuditService;
33
36
  this.transactionAuditService = transactionAuditService;
34
37
  }
38
+ /**
39
+ * 查询实体审计日志
40
+ */
35
41
  getAuditLogs(query) {
36
42
  return __awaiter(this, void 0, void 0, function* () {
37
43
  return this.entityAuditService.getAuditLogs(query);
38
44
  });
39
45
  }
46
+ /**
47
+ * 比较实体版本
48
+ */
40
49
  compareEntities(query) {
41
50
  return __awaiter(this, void 0, void 0, function* () {
42
51
  var _a, _b;
43
52
  return this.entityAuditService.compareEntities(query.entityType, query.entityId, (_a = query.fromVersion) === null || _a === void 0 ? void 0 : _a.toString(), (_b = query.toVersion) === null || _b === void 0 ? void 0 : _b.toString());
44
53
  });
45
54
  }
55
+ /**
56
+ * 预检查恢复操作
57
+ */
46
58
  preCheckRestore(preCheckDto) {
47
59
  return __awaiter(this, void 0, void 0, function* () {
48
60
  return this.entityAuditService.preCheckRestore(preCheckDto.entityType, preCheckDto.entityId, preCheckDto.auditLogId);
49
61
  });
50
62
  }
63
+ /**
64
+ * 恢复实体到指定版本
65
+ */
51
66
  restoreEntity(restoreDto) {
52
67
  return __awaiter(this, void 0, void 0, function* () {
53
68
  return this.entityAuditService.restoreEntity(restoreDto.entityType, restoreDto.entityId, restoreDto.auditLogId, restoreDto.options);
54
69
  });
55
70
  }
71
+ /**
72
+ * 开始审计事务
73
+ */
56
74
  beginTransaction(beginTransactionDto) {
57
75
  return __awaiter(this, void 0, void 0, function* () {
58
76
  const transactionId = yield this.transactionAuditService.beginTransaction(beginTransactionDto.description);
59
77
  return { transactionId };
60
78
  });
61
79
  }
80
+ /**
81
+ * 提交审计事务
82
+ */
62
83
  commitTransaction(transactionId) {
63
84
  return __awaiter(this, void 0, void 0, function* () {
64
85
  return this.transactionAuditService.commitTransaction(transactionId);
65
86
  });
66
87
  }
88
+ /**
89
+ * 回滚审计事务
90
+ */
67
91
  rollbackTransaction(transactionId) {
68
92
  return __awaiter(this, void 0, void 0, function* () {
69
93
  return this.transactionAuditService.rollbackTransaction(transactionId);
70
94
  });
71
95
  }
96
+ /**
97
+ * 查询审计动作汇总记录
98
+ */
99
+ getAuditActions(query) {
100
+ return __awaiter(this, void 0, void 0, function* () {
101
+ return this.entityAuditService.getAuditActions({
102
+ userId: query.userId,
103
+ username: query.username,
104
+ actionName: query.actionName,
105
+ success: query.success,
106
+ startTime: query.startTime ? new Date(query.startTime) : undefined,
107
+ endTime: query.endTime ? new Date(query.endTime) : undefined,
108
+ page: query.page,
109
+ limit: query.limit,
110
+ });
111
+ });
112
+ }
113
+ /**
114
+ * 查询单个审计动作的详细信息
115
+ */
116
+ getAuditActionDetail(actionId) {
117
+ return __awaiter(this, void 0, void 0, function* () {
118
+ return this.entityAuditService.getAuditActionDetail(actionId);
119
+ });
120
+ }
72
121
  };
73
122
  exports.AuditController = AuditController;
74
123
  __decorate([
@@ -134,6 +183,24 @@ __decorate([
134
183
  __metadata("design:paramtypes", [String]),
135
184
  __metadata("design:returntype", Promise)
136
185
  ], AuditController.prototype, "rollbackTransaction", null);
186
+ __decorate([
187
+ (0, common_1.Get)('actions'),
188
+ (0, swagger_1.ApiOperation)({ summary: '查询审计动作汇总记录' }),
189
+ (0, swagger_1.ApiResponse)({ status: 200, description: '返回审计动作汇总列表' }),
190
+ __param(0, (0, common_1.Query)()),
191
+ __metadata("design:type", Function),
192
+ __metadata("design:paramtypes", [dto_1.AuditActionQueryDto]),
193
+ __metadata("design:returntype", Promise)
194
+ ], AuditController.prototype, "getAuditActions", null);
195
+ __decorate([
196
+ (0, common_1.Get)('actions/:actionId'),
197
+ (0, swagger_1.ApiOperation)({ summary: '查询审计动作详细信息' }),
198
+ (0, swagger_1.ApiResponse)({ status: 200, description: '返回审计动作详细信息' }),
199
+ __param(0, (0, common_1.Param)('actionId')),
200
+ __metadata("design:type", Function),
201
+ __metadata("design:paramtypes", [String]),
202
+ __metadata("design:returntype", Promise)
203
+ ], AuditController.prototype, "getAuditActionDetail", null);
137
204
  exports.AuditController = AuditController = __decorate([
138
205
  (0, common_1.Controller)('audit'),
139
206
  (0, swagger_1.ApiTags)('audit'),
@@ -0,0 +1,74 @@
1
+ import { AuditParamsContext } from '../services/audit-context.service';
2
+ export declare const AUDIT_ACTION_METADATA = "AUDIT_ACTION_METADATA";
3
+ /**
4
+ * 审计动作选项
5
+ */
6
+ export interface AuditActionOptions {
7
+ /**
8
+ * 操作模板键(可选)
9
+ * @example 'order.create'
10
+ */
11
+ templateKey?: string;
12
+ /**
13
+ * 参数构建器,用于从请求和实体变更中提取描述参数
14
+ * @param context - 包含 req, result, error, entityChanges 的上下文
15
+ * @returns 描述参数对象
16
+ *
17
+ * @example
18
+ * paramsBuilder: (context) => {
19
+ * const order = context.findEntity('Order', 'CREATE');
20
+ * const items = context.findEntities('OrderItem', 'CREATE');
21
+ * return {
22
+ * 'order.sn': order?.newValue.orderSn,
23
+ * 'product.count': items.length,
24
+ * 'receiver': order?.newValue.receiverName,
25
+ * };
26
+ * }
27
+ */
28
+ paramsBuilder?: (context: AuditParamsContext) => Record<string, any>;
29
+ /**
30
+ * 是否启用审计(默认 true)
31
+ */
32
+ enabled?: boolean;
33
+ /**
34
+ * 扩展元数据
35
+ */
36
+ metadata?: Record<string, any>;
37
+ }
38
+ /**
39
+ * 审计动作装饰器元数据
40
+ */
41
+ export interface AuditActionMetadata {
42
+ actionName: string;
43
+ options: AuditActionOptions;
44
+ }
45
+ /**
46
+ * 审计动作装饰器
47
+ * 用于在控制器方法上标记审计动作,自动收集该请求中的所有实体变更
48
+ *
49
+ * @param actionName - 操作名称,如 'createOrder', 'cancelOrder'
50
+ * @param options - 审计动作选项
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * @Post()
55
+ * @AuditAction('createOrder', {
56
+ * templateKey: 'order.create',
57
+ * paramsBuilder: (context) => {
58
+ * const order = context.findEntity('Order', 'CREATE');
59
+ * const items = context.findEntities('OrderItem', 'CREATE');
60
+ * return {
61
+ * 'order.sn': order?.newValue.orderSn,
62
+ * 'product.count': items.length,
63
+ * 'product.names': items.map(i => i.metadata?.productName).join('、'),
64
+ * 'receiver': order?.newValue.receiverName,
65
+ * 'totalAmount': order?.newValue.totalAmount,
66
+ * };
67
+ * }
68
+ * })
69
+ * async createOrder(@Body() dto: CreateOrderDto) {
70
+ * return await this.orderService.create(dto);
71
+ * }
72
+ * ```
73
+ */
74
+ export declare function AuditAction(actionName: string, options?: AuditActionOptions): MethodDecorator;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AUDIT_ACTION_METADATA = void 0;
4
+ exports.AuditAction = AuditAction;
5
+ const common_1 = require("@nestjs/common");
6
+ exports.AUDIT_ACTION_METADATA = 'AUDIT_ACTION_METADATA';
7
+ /**
8
+ * 审计动作装饰器
9
+ * 用于在控制器方法上标记审计动作,自动收集该请求中的所有实体变更
10
+ *
11
+ * @param actionName - 操作名称,如 'createOrder', 'cancelOrder'
12
+ * @param options - 审计动作选项
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * @Post()
17
+ * @AuditAction('createOrder', {
18
+ * templateKey: 'order.create',
19
+ * paramsBuilder: (context) => {
20
+ * const order = context.findEntity('Order', 'CREATE');
21
+ * const items = context.findEntities('OrderItem', 'CREATE');
22
+ * return {
23
+ * 'order.sn': order?.newValue.orderSn,
24
+ * 'product.count': items.length,
25
+ * 'product.names': items.map(i => i.metadata?.productName).join('、'),
26
+ * 'receiver': order?.newValue.receiverName,
27
+ * 'totalAmount': order?.newValue.totalAmount,
28
+ * };
29
+ * }
30
+ * })
31
+ * async createOrder(@Body() dto: CreateOrderDto) {
32
+ * return await this.orderService.create(dto);
33
+ * }
34
+ * ```
35
+ */
36
+ function AuditAction(actionName, options = {}) {
37
+ const metadata = {
38
+ actionName,
39
+ options: Object.assign({ enabled: true }, options),
40
+ };
41
+ return (0, common_1.SetMetadata)(exports.AUDIT_ACTION_METADATA, metadata);
42
+ }
@@ -1,5 +1,13 @@
1
1
  import { ControllerAuditOptions, MethodAuditOptions } from '../interfaces';
2
2
  export declare const CONTROLLER_AUDIT_OPTIONS: unique symbol;
3
3
  export declare const METHOD_AUDIT_OPTIONS: unique symbol;
4
- export declare function EntityAuditController(options?: ControllerAuditOptions): ClassDecorator;
4
+ /**
5
+ * 控制器审计装饰器
6
+ * @param options 控制器审计选项
7
+ */
8
+ export declare function AuditController(options?: ControllerAuditOptions): ClassDecorator;
9
+ /**
10
+ * 方法审计装饰器
11
+ * @param options 方法审计选项
12
+ */
5
13
  export declare function AuditMethod(options?: MethodAuditOptions): MethodDecorator;
@@ -1,15 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.METHOD_AUDIT_OPTIONS = exports.CONTROLLER_AUDIT_OPTIONS = void 0;
4
- exports.EntityAuditController = EntityAuditController;
4
+ exports.AuditController = AuditController;
5
5
  exports.AuditMethod = AuditMethod;
6
+ // 元数据键
6
7
  exports.CONTROLLER_AUDIT_OPTIONS = Symbol('CONTROLLER_AUDIT_OPTIONS');
7
8
  exports.METHOD_AUDIT_OPTIONS = Symbol('METHOD_AUDIT_OPTIONS');
8
- function EntityAuditController(options) {
9
+ /**
10
+ * 控制器审计装饰器
11
+ * @param options 控制器审计选项
12
+ */
13
+ function AuditController(options) {
9
14
  return (target) => {
10
15
  Reflect.defineMetadata(exports.CONTROLLER_AUDIT_OPTIONS, options || {}, target);
11
16
  };
12
17
  }
18
+ /**
19
+ * 方法审计装饰器
20
+ * @param options 方法审计选项
21
+ */
13
22
  function AuditMethod(options) {
14
23
  return (target, propertyKey, descriptor) => {
15
24
  Reflect.defineMetadata(exports.METHOD_AUDIT_OPTIONS, options || {}, descriptor.value);
@@ -1,5 +1,43 @@
1
1
  import { AuditOperationOptions } from '../interfaces';
2
2
  export declare const AUDIT_OPERATION_OPTIONS: unique symbol;
3
+ /**
4
+ * 方法审计装饰器
5
+ *
6
+ * @description
7
+ * 用于手动记录业务操作的审计日志,支持:
8
+ * - 自定义操作模板
9
+ * - 动态描述参数
10
+ * - 自动事务管理
11
+ *
12
+ * @param options 审计操作选项
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * @AuditLog({
17
+ * templateKey: 'user.approve',
18
+ * descriptionParams: (args, result) => ({
19
+ * username: args[0].username,
20
+ * approver: result.approver
21
+ * }),
22
+ * autoTransaction: true
23
+ * })
24
+ * async approveUser(user: User): Promise<ApprovalResult> {
25
+ * // 业务逻辑
26
+ * }
27
+ * ```
28
+ */
3
29
  export declare function AuditLog(options: AuditOperationOptions): MethodDecorator;
30
+ /**
31
+ * 获取方法的审计配置
32
+ * @param target 目标类或实例
33
+ * @param propertyKey 方法名
34
+ * @returns 审计操作选项
35
+ */
4
36
  export declare function getAuditOperationConfig(target: any, propertyKey: string | symbol): AuditOperationOptions | undefined;
37
+ /**
38
+ * 检查方法是否配置了审计
39
+ * @param target 目标类或实例
40
+ * @param propertyKey 方法名
41
+ * @returns 是否配置了审计
42
+ */
5
43
  export declare function hasAuditOperation(target: any, propertyKey: string | symbol): boolean;
@@ -4,20 +4,62 @@ exports.AUDIT_OPERATION_OPTIONS = void 0;
4
4
  exports.AuditLog = AuditLog;
5
5
  exports.getAuditOperationConfig = getAuditOperationConfig;
6
6
  exports.hasAuditOperation = hasAuditOperation;
7
+ // 元数据键
7
8
  exports.AUDIT_OPERATION_OPTIONS = Symbol('AUDIT_OPERATION_OPTIONS');
9
+ /**
10
+ * 方法审计装饰器
11
+ *
12
+ * @description
13
+ * 用于手动记录业务操作的审计日志,支持:
14
+ * - 自定义操作模板
15
+ * - 动态描述参数
16
+ * - 自动事务管理
17
+ *
18
+ * @param options 审计操作选项
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * @AuditLog({
23
+ * templateKey: 'user.approve',
24
+ * descriptionParams: (args, result) => ({
25
+ * username: args[0].username,
26
+ * approver: result.approver
27
+ * }),
28
+ * autoTransaction: true
29
+ * })
30
+ * async approveUser(user: User): Promise<ApprovalResult> {
31
+ * // 业务逻辑
32
+ * }
33
+ * ```
34
+ */
8
35
  function AuditLog(options) {
9
36
  return (target, propertyKey, descriptor) => {
37
+ // 验证必需参数
10
38
  if (!options.templateKey) {
11
39
  throw new Error(`@AuditLog requires templateKey for method ${String(propertyKey)}`);
12
40
  }
41
+ // 存储元数据
13
42
  const methodMetadata = Object.assign(Object.assign({}, options), { methodName: String(propertyKey) });
14
43
  Reflect.defineMetadata(exports.AUDIT_OPERATION_OPTIONS, methodMetadata, target, propertyKey);
44
+ // 返回原始描述符,实际的拦截逻辑由 AuditInterceptor 处理
15
45
  return descriptor;
16
46
  };
17
47
  }
48
+ /**
49
+ * 获取方法的审计配置
50
+ * @param target 目标类或实例
51
+ * @param propertyKey 方法名
52
+ * @returns 审计操作选项
53
+ */
18
54
  function getAuditOperationConfig(target, propertyKey) {
19
55
  return Reflect.getMetadata(exports.AUDIT_OPERATION_OPTIONS, target, propertyKey);
20
56
  }
57
+ /**
58
+ * 检查方法是否配置了审计
59
+ * @param target 目标类或实例
60
+ * @param propertyKey 方法名
61
+ * @returns 是否配置了审计
62
+ */
21
63
  function hasAuditOperation(target, propertyKey) {
22
64
  return Reflect.hasMetadata(exports.AUDIT_OPERATION_OPTIONS, target, propertyKey);
23
65
  }