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

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 (386) hide show
  1. package/audit/audit.module.d.ts +10 -0
  2. package/audit/audit.module.js +63 -1
  3. package/audit/controllers/audit.controller.d.ts +88 -0
  4. package/audit/controllers/audit.controller.js +74 -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 +45 -0
  10. package/audit/decorators/audit-operation.decorator.js +49 -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-log-query.dto.d.ts +3 -0
  16. package/audit/dto/audit-log-query.dto.js +3 -0
  17. package/audit/dto/begin-transaction.dto.d.ts +3 -0
  18. package/audit/dto/begin-transaction.dto.js +3 -0
  19. package/audit/dto/compare-entities.dto.d.ts +3 -0
  20. package/audit/dto/compare-entities.dto.js +3 -0
  21. package/audit/dto/pre-check-restore.dto.d.ts +3 -0
  22. package/audit/dto/pre-check-restore.dto.js +3 -0
  23. package/audit/dto/restore-entity.dto.d.ts +3 -0
  24. package/audit/dto/restore-entity.dto.js +3 -0
  25. package/audit/entities/audit-action-summary.entity.d.ts +23 -0
  26. package/audit/entities/audit-action-summary.entity.js +101 -0
  27. package/audit/entities/entity-audit-log.entity.d.ts +11 -0
  28. package/audit/entities/entity-audit-log.entity.js +57 -2
  29. package/audit/entities/entity-transaction.entity.d.ts +11 -2
  30. package/audit/entities/entity-transaction.entity.js +42 -3
  31. package/audit/entities/index.d.ts +3 -0
  32. package/audit/entities/index.js +3 -0
  33. package/audit/entities/manual-operation-log.entity.d.ts +4 -0
  34. package/audit/entities/manual-operation-log.entity.js +12 -1
  35. package/audit/entities/operation-template.entity.d.ts +4 -0
  36. package/audit/entities/operation-template.entity.js +4 -0
  37. package/audit/enums/audit.enums.d.ts +37 -6
  38. package/audit/enums/audit.enums.js +40 -7
  39. package/audit/index.d.ts +4 -1
  40. package/audit/index.js +34 -1
  41. package/audit/interceptors/audit-action.interceptor.d.ts +38 -0
  42. package/audit/interceptors/audit-action.interceptor.js +215 -0
  43. package/audit/interceptors/audit.interceptor.d.ts +15 -0
  44. package/audit/interceptors/audit.interceptor.js +23 -1
  45. package/audit/interceptors/index.d.ts +1 -0
  46. package/audit/interceptors/index.js +1 -0
  47. package/audit/interfaces/audit.interfaces.d.ts +187 -2
  48. package/audit/services/audit-action.service.d.ts +141 -0
  49. package/audit/services/audit-action.service.js +244 -0
  50. package/audit/services/audit-context.service.d.ts +97 -0
  51. package/audit/services/audit-context.service.js +185 -0
  52. package/audit/services/audit-strategy.service.d.ts +6 -0
  53. package/audit/services/audit-strategy.service.js +13 -0
  54. package/audit/services/entity-audit.service.d.ts +230 -3
  55. package/audit/services/entity-audit.service.js +607 -14
  56. package/audit/services/index.d.ts +3 -0
  57. package/audit/services/index.js +3 -0
  58. package/audit/services/manual-audit-log.service.d.ts +134 -9
  59. package/audit/services/manual-audit-log.service.js +157 -40
  60. package/audit/services/multi-database.service.d.ts +9 -2
  61. package/audit/services/multi-database.service.js +9 -21
  62. package/audit/services/operation-description.service.d.ts +71 -2
  63. package/audit/services/operation-description.service.js +231 -20
  64. package/audit/services/transaction-audit.service.d.ts +30 -0
  65. package/audit/services/transaction-audit.service.js +53 -5
  66. package/audit/subscribers/entity-audit.subscriber.d.ts +19 -0
  67. package/audit/subscribers/entity-audit.subscriber.js +76 -1
  68. package/cache/cache-metrics.service.d.ts +67 -0
  69. package/cache/cache-metrics.service.js +68 -4
  70. package/cache/cache-serialization.service.d.ts +31 -0
  71. package/cache/cache-serialization.service.js +25 -0
  72. package/cache/cache.constants.d.ts +9 -0
  73. package/cache/cache.constants.js +9 -0
  74. package/cache/cache.health.d.ts +26 -0
  75. package/cache/cache.health.js +30 -0
  76. package/cache/cache.module.d.ts +82 -2
  77. package/cache/cache.module.js +76 -5
  78. package/cache/cache.service.d.ts +140 -0
  79. package/cache/cache.service.js +169 -0
  80. package/cache/cache.warmup.service.d.ts +39 -0
  81. package/cache/cache.warmup.service.js +32 -0
  82. package/cache/decorators/cache-evict.decorator.d.ts +47 -0
  83. package/cache/decorators/cache-evict.decorator.js +56 -0
  84. package/cache/decorators/cache-put.decorator.d.ts +34 -0
  85. package/cache/decorators/cache-put.decorator.js +39 -0
  86. package/cache/decorators/cacheable.decorator.d.ts +40 -0
  87. package/cache/decorators/cacheable.decorator.js +55 -0
  88. package/cache/dependencies/callback.dependency.d.ts +33 -0
  89. package/cache/dependencies/callback.dependency.js +39 -1
  90. package/cache/dependencies/chain.dependency.d.ts +28 -0
  91. package/cache/dependencies/chain.dependency.js +34 -0
  92. package/cache/dependencies/db.dependency.d.ts +83 -7
  93. package/cache/dependencies/db.dependency.js +89 -14
  94. package/cache/dependencies/file.dependency.d.ts +32 -0
  95. package/cache/dependencies/file.dependency.js +34 -0
  96. package/cache/dependencies/tag.dependency.d.ts +75 -4
  97. package/cache/dependencies/tag.dependency.js +145 -11
  98. package/cache/dependencies/time.dependency.d.ts +43 -0
  99. package/cache/dependencies/time.dependency.js +43 -0
  100. package/cache/examples/basic-usage.d.ts +15 -0
  101. package/cache/examples/basic-usage.js +62 -8
  102. package/cache/index.js +9 -0
  103. package/cache/interfaces/cache-dependency.interface.d.ts +53 -0
  104. package/cache/interfaces/cache-options.interface.d.ts +89 -0
  105. package/cache/interfaces/cache-options.interface.js +6 -0
  106. package/cache/interfaces/cache-provider.interface.d.ts +78 -0
  107. package/cache/providers/base-cache.provider.d.ts +14 -0
  108. package/cache/providers/base-cache.provider.js +16 -0
  109. package/cache/providers/cls-cache.provider.d.ts +20 -0
  110. package/cache/providers/cls-cache.provider.js +28 -0
  111. package/cache/providers/memory-cache.provider.d.ts +43 -0
  112. package/cache/providers/memory-cache.provider.js +66 -0
  113. package/cache/providers/redis-cache.provider.d.ts +26 -0
  114. package/cache/providers/redis-cache.provider.js +29 -0
  115. package/cache/utils/dependency-manager.util.d.ts +52 -0
  116. package/cache/utils/dependency-manager.util.js +59 -0
  117. package/cache/utils/key-generator.util.d.ts +42 -0
  118. package/cache/utils/key-generator.util.js +53 -1
  119. package/common/abstract.entity.d.ts +14 -0
  120. package/common/abstract.entity.js +14 -0
  121. package/common/boilerplate.polyfill.d.ts +142 -0
  122. package/common/boilerplate.polyfill.js +18 -1
  123. package/common/dto/dto-container.d.ts +16 -0
  124. package/common/dto/dto-container.js +20 -0
  125. package/common/dto/dto-decorators.d.ts +18 -0
  126. package/common/dto/dto-decorators.js +14 -0
  127. package/common/dto/dto-extensions.d.ts +11 -0
  128. package/common/dto/dto-extensions.js +9 -0
  129. package/common/dto/dto-service-accessor.d.ts +17 -0
  130. package/common/dto/dto-service-accessor.js +18 -0
  131. package/common/dto/dto-transformer.d.ts +12 -0
  132. package/common/dto/dto-transformer.js +9 -0
  133. package/common/dto/index.js +2 -0
  134. package/common/examples/paginate-and-map.example.d.ts +6 -0
  135. package/common/examples/paginate-and-map.example.js +26 -0
  136. package/common/utils.d.ts +15 -0
  137. package/common/utils.js +15 -0
  138. package/constants/language-code.js +1 -0
  139. package/decorators/field.decorators.d.ts +1 -1
  140. package/decorators/field.decorators.js +8 -1
  141. package/decorators/property.decorators.js +1 -0
  142. package/decorators/public-route.decorator.js +1 -0
  143. package/decorators/transform.decorators.d.ts +27 -0
  144. package/decorators/transform.decorators.js +29 -0
  145. package/decorators/translate.decorator.js +1 -0
  146. package/decorators/user.decorator.js +1 -0
  147. package/decorators/validator.decorators.d.ts +8 -18
  148. package/decorators/validator.decorators.js +22 -190
  149. package/file-upload/controllers/file-access.controller.d.ts +23 -0
  150. package/file-upload/controllers/file-access.controller.js +128 -0
  151. package/file-upload/decorators/column.decorator.d.ts +151 -0
  152. package/file-upload/decorators/column.decorator.js +273 -0
  153. package/file-upload/decorators/csv-data.decorator.d.ts +30 -0
  154. package/file-upload/decorators/csv-data.decorator.js +85 -0
  155. package/file-upload/decorators/csv-import.decorator.d.ts +34 -0
  156. package/file-upload/decorators/csv-import.decorator.js +24 -0
  157. package/file-upload/decorators/examples/column-mapping.example.d.ts +76 -0
  158. package/file-upload/decorators/examples/column-mapping.example.js +122 -0
  159. package/file-upload/decorators/excel-data.decorator.d.ts +30 -0
  160. package/file-upload/decorators/excel-data.decorator.js +85 -0
  161. package/file-upload/decorators/file-upload.decorator.d.ts +83 -0
  162. package/file-upload/decorators/file-upload.decorator.js +172 -0
  163. package/file-upload/decorators/index.d.ts +5 -0
  164. package/file-upload/decorators/index.js +38 -0
  165. package/file-upload/decorators/process.decorator.d.ts +40 -0
  166. package/file-upload/decorators/process.decorator.js +52 -0
  167. package/file-upload/decorators/validate-data.decorator.d.ts +91 -0
  168. package/file-upload/decorators/validate-data.decorator.js +39 -0
  169. package/file-upload/dto/create-file.dto.d.ts +24 -0
  170. package/file-upload/dto/create-file.dto.js +112 -0
  171. package/file-upload/dto/find-files.dto.d.ts +15 -0
  172. package/file-upload/dto/find-files.dto.js +76 -0
  173. package/file-upload/dto/index.d.ts +4 -0
  174. package/file-upload/dto/index.js +20 -0
  175. package/file-upload/dto/pagination.dto.d.ts +7 -0
  176. package/file-upload/dto/pagination.dto.js +39 -0
  177. package/file-upload/dto/update-file.dto.d.ts +15 -0
  178. package/file-upload/dto/update-file.dto.js +67 -0
  179. package/file-upload/entities/file-metadata.entity.d.ts +25 -0
  180. package/file-upload/entities/file-metadata.entity.js +76 -0
  181. package/file-upload/entities/file.entity.d.ts +114 -0
  182. package/file-upload/entities/file.entity.js +350 -0
  183. package/file-upload/entities/index.d.ts +2 -0
  184. package/file-upload/entities/index.js +18 -0
  185. package/file-upload/enums/file-type.enum.d.ts +72 -0
  186. package/file-upload/enums/file-type.enum.js +212 -0
  187. package/file-upload/exceptions/file-upload.exception.d.ts +57 -0
  188. package/file-upload/exceptions/file-upload.exception.js +120 -0
  189. package/file-upload/exceptions/index.d.ts +1 -0
  190. package/file-upload/exceptions/index.js +17 -0
  191. package/file-upload/file-upload.module.d.ts +89 -0
  192. package/file-upload/file-upload.module.js +292 -0
  193. package/file-upload/index.d.ts +37 -0
  194. package/file-upload/index.js +77 -0
  195. package/file-upload/interceptors/file-upload.interceptor.d.ts +101 -0
  196. package/file-upload/interceptors/file-upload.interceptor.js +594 -0
  197. package/file-upload/interceptors/index.d.ts +1 -0
  198. package/file-upload/interceptors/index.js +17 -0
  199. package/file-upload/interfaces/custom-file-type.interface.d.ts +72 -0
  200. package/file-upload/interfaces/custom-file-type.interface.js +2 -0
  201. package/file-upload/interfaces/file-buffer.interface.d.ts +72 -0
  202. package/file-upload/interfaces/file-buffer.interface.js +2 -0
  203. package/file-upload/interfaces/file-entity.interface.d.ts +142 -0
  204. package/file-upload/interfaces/file-entity.interface.js +28 -0
  205. package/file-upload/interfaces/file-metadata.interface.d.ts +21 -0
  206. package/file-upload/interfaces/file-metadata.interface.js +2 -0
  207. package/file-upload/interfaces/file-processor.interface.d.ts +93 -0
  208. package/file-upload/interfaces/file-processor.interface.js +2 -0
  209. package/file-upload/interfaces/file-upload-options.interface.d.ts +74 -0
  210. package/file-upload/interfaces/file-upload-options.interface.js +5 -0
  211. package/file-upload/interfaces/index.d.ts +7 -0
  212. package/file-upload/interfaces/index.js +24 -0
  213. package/file-upload/interfaces/processor-options.interface.d.ts +102 -0
  214. package/file-upload/interfaces/processor-options.interface.js +2 -0
  215. package/file-upload/interfaces/storage-provider.interface.d.ts +239 -0
  216. package/file-upload/interfaces/storage-provider.interface.js +2 -0
  217. package/file-upload/interfaces/upload-options.interface.d.ts +19 -0
  218. package/file-upload/interfaces/upload-options.interface.js +2 -0
  219. package/file-upload/processors/csv.processor.d.ts +98 -0
  220. package/file-upload/processors/csv.processor.js +391 -0
  221. package/file-upload/processors/excel.processor.d.ts +130 -0
  222. package/file-upload/processors/excel.processor.js +547 -0
  223. package/file-upload/processors/image.processor.d.ts +199 -0
  224. package/file-upload/processors/image.processor.js +377 -0
  225. package/file-upload/providers/index.d.ts +2 -0
  226. package/file-upload/providers/index.js +18 -0
  227. package/file-upload/providers/local-storage.provider.d.ts +98 -0
  228. package/file-upload/providers/local-storage.provider.js +484 -0
  229. package/file-upload/providers/s3-storage.provider.d.ts +87 -0
  230. package/file-upload/providers/s3-storage.provider.js +455 -0
  231. package/file-upload/services/file-signature-validator.service.d.ts +118 -0
  232. package/file-upload/services/file-signature-validator.service.js +376 -0
  233. package/file-upload/services/file.service.d.ts +193 -0
  234. package/file-upload/services/file.service.js +638 -0
  235. package/file-upload/services/index.d.ts +4 -0
  236. package/file-upload/services/index.js +20 -0
  237. package/file-upload/services/malicious-file-detector.service.d.ts +300 -0
  238. package/file-upload/services/malicious-file-detector.service.js +1234 -0
  239. package/file-upload/services/mime-registry.service.d.ts +47 -0
  240. package/file-upload/services/mime-registry.service.js +167 -0
  241. package/file-upload/utils/checksum.util.d.ts +28 -0
  242. package/file-upload/utils/checksum.util.js +65 -0
  243. package/file-upload/utils/dynamic-import.util.d.ts +54 -0
  244. package/file-upload/utils/dynamic-import.util.js +156 -0
  245. package/file-upload/utils/filename.util.d.ts +59 -0
  246. package/file-upload/utils/filename.util.js +184 -0
  247. package/file-upload/utils/filepath.util.d.ts +70 -0
  248. package/file-upload/utils/filepath.util.js +152 -0
  249. package/file-upload/utils/index.d.ts +4 -0
  250. package/file-upload/utils/index.js +20 -0
  251. package/filters/constraint-errors.js +1 -0
  252. package/helpers/common.helper.d.ts +13 -0
  253. package/helpers/common.helper.js +13 -0
  254. package/http-client/config/http-client.config.d.ts +20 -0
  255. package/http-client/config/http-client.config.js +48 -21
  256. package/http-client/decorators/http-client.decorators.d.ts +55 -14
  257. package/http-client/decorators/http-client.decorators.js +154 -78
  258. package/http-client/entities/http-log.entity.d.ts +217 -8
  259. package/http-client/entities/http-log.entity.js +7 -22
  260. package/http-client/errors/http-client.errors.d.ts +57 -0
  261. package/http-client/errors/http-client.errors.js +58 -0
  262. package/http-client/examples/advanced-usage.example.d.ts +40 -0
  263. package/http-client/examples/advanced-usage.example.js +53 -61
  264. package/http-client/examples/auth-with-waiting-lock.example.d.ts +31 -0
  265. package/http-client/examples/auth-with-waiting-lock.example.js +52 -5
  266. package/http-client/examples/basic-usage.example.d.ts +60 -0
  267. package/http-client/examples/basic-usage.example.js +60 -0
  268. package/http-client/examples/multi-api-configuration.example.d.ts +60 -0
  269. package/http-client/examples/multi-api-configuration.example.js +76 -5
  270. package/http-client/examples/proxy-from-environment.example.d.ts +133 -0
  271. package/http-client/examples/proxy-from-environment.example.js +409 -0
  272. package/http-client/http-client.module.d.ts +48 -2
  273. package/http-client/http-client.module.js +147 -68
  274. package/http-client/index.d.ts +1 -1
  275. package/http-client/index.js +8 -0
  276. package/http-client/interfaces/api-client-config.interface.d.ts +80 -45
  277. package/http-client/interfaces/api-client-config.interface.js +3 -0
  278. package/http-client/interfaces/http-client-config.interface.d.ts +109 -52
  279. package/http-client/services/api-client-registry.service.d.ts +50 -11
  280. package/http-client/services/api-client-registry.service.js +90 -250
  281. package/http-client/services/circuit-breaker.service.d.ts +115 -2
  282. package/http-client/services/circuit-breaker.service.js +237 -7
  283. package/http-client/services/http-client.service.d.ts +124 -14
  284. package/http-client/services/http-client.service.js +437 -148
  285. package/http-client/services/http-log-query.service.d.ts +83 -0
  286. package/http-client/services/http-log-query.service.js +121 -13
  287. package/http-client/services/http-replay.service.d.ts +101 -0
  288. package/http-client/services/http-replay.service.js +86 -0
  289. package/http-client/services/index.d.ts +0 -1
  290. package/http-client/services/index.js +0 -1
  291. package/http-client/services/log-cleanup.service.d.ts +63 -0
  292. package/http-client/services/log-cleanup.service.js +54 -2
  293. package/http-client/services/logging.service.d.ts +116 -7
  294. package/http-client/services/logging.service.js +349 -86
  295. package/http-client/utils/call-stack-extractor.util.d.ts +63 -0
  296. package/http-client/utils/call-stack-extractor.util.js +83 -0
  297. package/http-client/utils/context-extractor.util.d.ts +49 -0
  298. package/http-client/utils/context-extractor.util.js +52 -0
  299. package/http-client/utils/curl-generator.util.d.ts +21 -0
  300. package/http-client/utils/curl-generator.util.js +44 -3
  301. package/http-client/utils/index.d.ts +1 -0
  302. package/http-client/utils/index.js +1 -0
  303. package/http-client/utils/proxy-environment.util.d.ts +42 -0
  304. package/http-client/utils/proxy-environment.util.js +148 -0
  305. package/http-client/utils/request-id.util.d.ts +18 -0
  306. package/http-client/utils/request-id.util.js +20 -0
  307. package/http-client/utils/retry-recorder.util.d.ts +42 -0
  308. package/http-client/utils/retry-recorder.util.js +44 -0
  309. package/http-client/utils/security-validator.util.d.ts +118 -0
  310. package/http-client/utils/security-validator.util.js +352 -0
  311. package/index.d.ts +3 -1
  312. package/index.js +12 -1
  313. package/interceptors/translation-interceptor.service.js +5 -0
  314. package/package.json +11 -7
  315. package/providers/context.provider.js +2 -0
  316. package/providers/generator.provider.d.ts +4 -0
  317. package/providers/generator.provider.js +4 -0
  318. package/redis-lock/comprehensive-lock-cleanup.service.d.ts +94 -0
  319. package/redis-lock/comprehensive-lock-cleanup.service.js +253 -0
  320. package/redis-lock/examples/lock-strategy.examples.d.ts +89 -0
  321. package/redis-lock/examples/lock-strategy.examples.js +130 -15
  322. package/redis-lock/index.d.ts +2 -0
  323. package/redis-lock/index.js +8 -1
  324. package/redis-lock/lock-heartbeat.service.d.ts +80 -0
  325. package/redis-lock/lock-heartbeat.service.js +232 -0
  326. package/redis-lock/redis-lock.decorator.d.ts +101 -0
  327. package/redis-lock/redis-lock.decorator.js +120 -0
  328. package/redis-lock/redis-lock.module.d.ts +66 -0
  329. package/redis-lock/redis-lock.module.js +175 -70
  330. package/redis-lock/redis-lock.service.d.ts +282 -0
  331. package/redis-lock/redis-lock.service.js +343 -20
  332. package/setup/bootstrap.setup.d.ts +1 -0
  333. package/setup/bootstrap.setup.js +21 -0
  334. package/setup/index.d.ts +1 -0
  335. package/setup/index.js +1 -0
  336. package/setup/mode.setup.d.ts +44 -0
  337. package/setup/mode.setup.js +44 -0
  338. package/setup/run-in-mode.decorator.d.ts +56 -0
  339. package/setup/run-in-mode.decorator.js +92 -0
  340. package/setup/schedule.decorator.d.ts +227 -0
  341. package/setup/schedule.decorator.js +240 -12
  342. package/setup/worker.decorator.d.ts +86 -0
  343. package/setup/worker.decorator.js +97 -0
  344. package/shared/index.d.ts +1 -1
  345. package/shared/index.js +1 -1
  346. package/shared/{serviceRegistryModule.js → service-registry.module.js} +19 -17
  347. package/shared/services/api-config.service.d.ts +3 -0
  348. package/shared/services/api-config.service.js +21 -9
  349. package/shared/services/index.d.ts +0 -1
  350. package/shared/services/index.js +0 -1
  351. package/validator-json/decorators.d.ts +17 -0
  352. package/validator-json/decorators.js +17 -2
  353. package/validator-json/default.d.ts +6 -0
  354. package/validator-json/default.js +30 -2
  355. package/validator-json/defaultConverters.js +1 -0
  356. package/validator-json/options.d.ts +23 -0
  357. package/validators/common-validators.d.ts +143 -0
  358. package/validators/common-validators.js +249 -0
  359. package/validators/custom-validate.examples.d.ts +23 -0
  360. package/validators/custom-validate.examples.js +78 -6
  361. package/validators/custom-validate.validator.d.ts +108 -0
  362. package/validators/custom-validate.validator.js +85 -0
  363. package/validators/file-mimetype.validator.d.ts +0 -2
  364. package/validators/file-mimetype.validator.js +4 -6
  365. package/validators/index.d.ts +1 -0
  366. package/validators/index.js +1 -0
  367. package/validators/is-exists.validator.d.ts +26 -6
  368. package/validators/is-exists.validator.js +30 -7
  369. package/validators/is-unique.validator.d.ts +33 -7
  370. package/validators/is-unique.validator.js +59 -17
  371. package/validators/skip-empty.validator.d.ts +5 -0
  372. package/validators/skip-empty.validator.js +5 -0
  373. package/vault/interfaces/vault-options.interface.d.ts +9 -0
  374. package/vault/vault-config.loader.d.ts +30 -0
  375. package/vault/vault-config.loader.js +48 -1
  376. package/vault/vault-config.service.d.ts +53 -0
  377. package/vault/vault-config.service.js +57 -0
  378. package/vault/vault.module.d.ts +4 -0
  379. package/vault/vault.module.js +4 -0
  380. package/decorators/examples/validation-decorators.example.d.ts +0 -69
  381. package/decorators/examples/validation-decorators.example.js +0 -331
  382. package/http-client/services/cache.service.d.ts +0 -24
  383. package/http-client/services/cache.service.js +0 -264
  384. package/shared/services/validator.service.d.ts +0 -3
  385. package/shared/services/validator.service.js +0 -20
  386. /package/shared/{serviceRegistryModule.d.ts → service-registry.module.d.ts} +0 -0
@@ -5,6 +5,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
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
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
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
+ };
8
11
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9
12
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10
13
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -18,32 +21,96 @@ var HttpCircuitBreakerService_1;
18
21
  Object.defineProperty(exports, "__esModule", { value: true });
19
22
  exports.HttpCircuitBreakerService = void 0;
20
23
  const common_1 = require("@nestjs/common");
24
+ /**
25
+ * 熔断器状态
26
+ */
21
27
  var CircuitBreakerState;
22
28
  (function (CircuitBreakerState) {
23
29
  CircuitBreakerState["CLOSED"] = "CLOSED";
24
30
  CircuitBreakerState["OPEN"] = "OPEN";
25
31
  CircuitBreakerState["HALF_OPEN"] = "HALF_OPEN";
26
32
  })(CircuitBreakerState || (CircuitBreakerState = {}));
33
+ /**
34
+ * 熔断器服务
35
+ * 基于Spring Cloud CircuitBreaker的设计理念
36
+ */
27
37
  let HttpCircuitBreakerService = HttpCircuitBreakerService_1 = class HttpCircuitBreakerService {
28
38
  constructor() {
29
39
  this.logger = new common_1.Logger(HttpCircuitBreakerService_1.name);
30
40
  this.circuitBreakers = new Map();
41
+ /** 默认清理配置 */
42
+ this.cleanupConfig = {
43
+ maxIdleTimeMs: 30 * 60 * 1000, // 30分钟
44
+ cleanupIntervalMs: 5 * 60 * 1000, // 5分钟
45
+ maxSize: 1000, // 最多1000个circuit breaker
46
+ };
47
+ // 启动定期清理任务
48
+ this.startCleanupTask();
31
49
  }
50
+ onModuleDestroy() {
51
+ // 清理定时器
52
+ if (this.cleanupTimer) {
53
+ clearInterval(this.cleanupTimer);
54
+ }
55
+ }
56
+ /**
57
+ * 获取或创建熔断器
58
+ */
32
59
  getCircuitBreaker(key, config) {
33
- if (!this.circuitBreakers.has(key)) {
34
- this.circuitBreakers.set(key, new CircuitBreaker(key, config, this.logger));
60
+ let circuitBreaker = this.circuitBreakers.get(key);
61
+ if (!circuitBreaker) {
62
+ this.logger.debug(`Creating new circuit breaker with key: ${key}`);
63
+ circuitBreaker = new CircuitBreaker(key, config, this.logger);
64
+ this.circuitBreakers.set(key, circuitBreaker);
65
+ // 检查是否超过最大数量,如果是则触发LRU清理
66
+ if (this.circuitBreakers.size > this.cleanupConfig.maxSize) {
67
+ this.cleanupLRU();
68
+ }
35
69
  }
36
- return this.circuitBreakers.get(key);
70
+ else {
71
+ this.logger.debug(`Reusing existing circuit breaker with key: ${key}`);
72
+ // 更新最后访问时间
73
+ circuitBreaker.updateLastAccessTime();
74
+ }
75
+ return circuitBreaker;
37
76
  }
38
- executeWithCircuitBreaker(key, requestFn, config) {
77
+ /**
78
+ * 执行带熔断保护的请求
79
+ */
80
+ executeWithCircuitBreaker(key, requestFn, config, onStateChange) {
39
81
  return __awaiter(this, void 0, void 0, function* () {
40
82
  const circuitBreaker = this.getCircuitBreaker(key, config);
41
- return circuitBreaker.execute(requestFn);
83
+ return circuitBreaker.execute(requestFn, onStateChange);
42
84
  });
43
85
  }
86
+ /**
87
+ * 获取熔断器当前状态
88
+ */
89
+ getCircuitBreakerState(key) {
90
+ // Log all current circuit breaker keys for debugging
91
+ this.logger.debug(`Looking for circuit breaker key: ${key}. Available keys: [${Array.from(this.circuitBreakers.keys()).join(', ')}]`);
92
+ const circuitBreaker = this.circuitBreakers.get(key);
93
+ if (!circuitBreaker) {
94
+ this.logger.debug(`Circuit breaker not found for key: ${key}`);
95
+ return undefined;
96
+ }
97
+ const state = circuitBreaker.getState();
98
+ if (!state) {
99
+ this.logger.debug(`Circuit breaker getState() returned undefined for key: ${key}`);
100
+ return undefined;
101
+ }
102
+ this.logger.debug(`Circuit breaker state for ${key}: ${state.state}`);
103
+ return state.state;
104
+ }
105
+ /**
106
+ * 重置所有熔断器
107
+ */
44
108
  resetAll() {
45
109
  this.circuitBreakers.forEach((cb) => cb.reset());
46
110
  }
111
+ /**
112
+ * 获取所有熔断器状态
113
+ */
47
114
  getAllStates() {
48
115
  const states = {};
49
116
  this.circuitBreakers.forEach((cb, key) => {
@@ -51,11 +118,115 @@ let HttpCircuitBreakerService = HttpCircuitBreakerService_1 = class HttpCircuitB
51
118
  });
52
119
  return states;
53
120
  }
121
+ /**
122
+ * 获取Circuit Breaker统计信息
123
+ */
124
+ getStats() {
125
+ const stats = {
126
+ total: this.circuitBreakers.size,
127
+ byState: {
128
+ CLOSED: 0,
129
+ OPEN: 0,
130
+ HALF_OPEN: 0,
131
+ },
132
+ };
133
+ this.circuitBreakers.forEach((cb) => {
134
+ const state = cb.getState();
135
+ if (state && state.state) {
136
+ stats.byState[state.state]++;
137
+ }
138
+ });
139
+ return stats;
140
+ }
141
+ /**
142
+ * 清理空闲的Circuit Breaker
143
+ * 清理超过最大空闲时间的Circuit Breaker
144
+ */
145
+ cleanupIdle() {
146
+ const now = Date.now();
147
+ const keysToDelete = [];
148
+ this.circuitBreakers.forEach((cb, key) => {
149
+ const lastAccess = cb.getLastAccessTime();
150
+ if (now - lastAccess > this.cleanupConfig.maxIdleTimeMs) {
151
+ keysToDelete.push(key);
152
+ }
153
+ });
154
+ keysToDelete.forEach((key) => {
155
+ this.circuitBreakers.delete(key);
156
+ this.logger.debug(`Removed idle circuit breaker: ${key}`);
157
+ });
158
+ if (keysToDelete.length > 0) {
159
+ this.logger.log(`Cleaned up ${keysToDelete.length} idle circuit breaker(s)`);
160
+ }
161
+ return keysToDelete.length;
162
+ }
163
+ /**
164
+ * 基于LRU策略清理Circuit Breaker
165
+ * 删除最久未访问的Circuit Breaker直到数量降到maxSize以下
166
+ */
167
+ cleanupLRU() {
168
+ const entries = Array.from(this.circuitBreakers.entries());
169
+ // 按最后访问时间排序(最老的在前)
170
+ entries.sort((a, b) => {
171
+ return a[1].getLastAccessTime() - b[1].getLastAccessTime();
172
+ });
173
+ // 计算需要删除的数量
174
+ const toDelete = entries.slice(0, entries.length - this.cleanupConfig.maxSize);
175
+ toDelete.forEach(([key]) => {
176
+ this.circuitBreakers.delete(key);
177
+ this.logger.debug(`Removed LRU circuit breaker: ${key}`);
178
+ });
179
+ if (toDelete.length > 0) {
180
+ this.logger.warn(`LRU cleanup: removed ${toDelete.length} circuit breaker(s) to maintain max size of ${this.cleanupConfig.maxSize}`);
181
+ }
182
+ }
183
+ /**
184
+ * 启动定期清理任务
185
+ */
186
+ startCleanupTask() {
187
+ this.cleanupTimer = setInterval(() => {
188
+ try {
189
+ this.cleanupIdle();
190
+ }
191
+ catch (error) {
192
+ this.logger.error('Error during circuit breaker cleanup', error);
193
+ }
194
+ }, this.cleanupConfig.cleanupIntervalMs);
195
+ this.logger.log(`Circuit breaker cleanup task started (interval: ${this.cleanupConfig.cleanupIntervalMs}ms, maxIdleTime: ${this.cleanupConfig.maxIdleTimeMs}ms)`);
196
+ }
197
+ /**
198
+ * 手动触发清理(用于测试)
199
+ */
200
+ manualCleanup() {
201
+ return this.cleanupIdle();
202
+ }
203
+ /**
204
+ * 设置清理配置
205
+ */
206
+ setCleanupConfig(config) {
207
+ Object.assign(this.cleanupConfig, config);
208
+ // 重启清理任务
209
+ if (this.cleanupTimer) {
210
+ clearInterval(this.cleanupTimer);
211
+ }
212
+ this.startCleanupTask();
213
+ this.logger.log(`Circuit breaker cleanup config updated: ${JSON.stringify(this.cleanupConfig)}`);
214
+ }
215
+ /**
216
+ * 获取清理配置
217
+ */
218
+ getCleanupConfig() {
219
+ return Object.assign({}, this.cleanupConfig);
220
+ }
54
221
  };
55
222
  exports.HttpCircuitBreakerService = HttpCircuitBreakerService;
56
223
  exports.HttpCircuitBreakerService = HttpCircuitBreakerService = HttpCircuitBreakerService_1 = __decorate([
57
- (0, common_1.Injectable)()
224
+ (0, common_1.Injectable)(),
225
+ __metadata("design:paramtypes", [])
58
226
  ], HttpCircuitBreakerService);
227
+ /**
228
+ * 熔断器类
229
+ */
59
230
  class CircuitBreaker {
60
231
  constructor(key, config, logger) {
61
232
  this.key = key;
@@ -68,10 +239,29 @@ class CircuitBreaker {
68
239
  this.nextAttemptTime = 0;
69
240
  this.requestCount = 0;
70
241
  this.windowStartTime = Date.now();
242
+ this.lastAccessTime = Date.now(); // 添加最后访问时间跟踪
71
243
  }
72
- execute(requestFn) {
244
+ /**
245
+ * 更新最后访问时间
246
+ */
247
+ updateLastAccessTime() {
248
+ this.lastAccessTime = Date.now();
249
+ }
250
+ /**
251
+ * 获取最后访问时间
252
+ */
253
+ getLastAccessTime() {
254
+ return this.lastAccessTime;
255
+ }
256
+ /**
257
+ * 执行请求
258
+ */
259
+ execute(requestFn, onStateChange) {
73
260
  return __awaiter(this, void 0, void 0, function* () {
261
+ // 保存状态变化回调
262
+ this.onStateChange = onStateChange;
74
263
  const currentTime = Date.now();
264
+ // 检查是否需要重置监控窗口
75
265
  if (currentTime - this.windowStartTime > this.config.monitoringPeriodMs) {
76
266
  this.resetMonitoringWindow();
77
267
  }
@@ -87,6 +277,7 @@ class CircuitBreaker {
87
277
  break;
88
278
  case CircuitBreakerState.CLOSED:
89
279
  default:
280
+ // 正常状态,继续执行
90
281
  break;
91
282
  }
92
283
  this.requestCount++;
@@ -101,10 +292,16 @@ class CircuitBreaker {
101
292
  }
102
293
  });
103
294
  }
295
+ /**
296
+ * 重置熔断器
297
+ */
104
298
  reset() {
105
299
  this.transitionToClosed();
106
300
  this.resetMonitoringWindow();
107
301
  }
302
+ /**
303
+ * 获取熔断器状态
304
+ */
108
305
  getState() {
109
306
  return {
110
307
  state: this.state,
@@ -117,6 +314,9 @@ class CircuitBreaker {
117
314
  config: this.config,
118
315
  };
119
316
  }
317
+ /**
318
+ * 处理成功请求
319
+ */
120
320
  onSuccess() {
121
321
  this.failureCount = 0;
122
322
  switch (this.state) {
@@ -128,9 +328,13 @@ class CircuitBreaker {
128
328
  break;
129
329
  case CircuitBreakerState.CLOSED:
130
330
  default:
331
+ // 保持关闭状态
131
332
  break;
132
333
  }
133
334
  }
335
+ /**
336
+ * 处理失败请求
337
+ */
134
338
  onFailure() {
135
339
  this.failureCount++;
136
340
  this.lastFailureTime = Date.now();
@@ -148,29 +352,55 @@ class CircuitBreaker {
148
352
  break;
149
353
  }
150
354
  }
355
+ /**
356
+ * 转换到关闭状态
357
+ */
151
358
  transitionToClosed() {
152
359
  if (this.state !== CircuitBreakerState.CLOSED) {
153
360
  this.logger.log(`Circuit breaker ${this.key} transitioned to CLOSED`);
154
361
  this.state = CircuitBreakerState.CLOSED;
155
362
  this.failureCount = 0;
156
363
  this.successCount = 0;
364
+ // 通知状态变化
365
+ this.notifyStateChange(CircuitBreakerState.CLOSED);
157
366
  }
158
367
  }
368
+ /**
369
+ * 转换到开启状态
370
+ */
159
371
  transitionToOpen() {
160
372
  if (this.state !== CircuitBreakerState.OPEN) {
161
373
  this.logger.warn(`Circuit breaker ${this.key} transitioned to OPEN due to ${this.failureCount} failures`);
162
374
  this.state = CircuitBreakerState.OPEN;
163
375
  this.nextAttemptTime = Date.now() + this.config.recoveryTimeoutMs;
164
376
  this.successCount = 0;
377
+ // 通知状态变化
378
+ this.notifyStateChange(CircuitBreakerState.OPEN);
165
379
  }
166
380
  }
381
+ /**
382
+ * 转换到半开状态
383
+ */
167
384
  transitionToHalfOpen() {
168
385
  if (this.state !== CircuitBreakerState.HALF_OPEN) {
169
386
  this.logger.log(`Circuit breaker ${this.key} transitioned to HALF_OPEN`);
170
387
  this.state = CircuitBreakerState.HALF_OPEN;
171
388
  this.successCount = 0;
389
+ // 通知状态变化
390
+ this.notifyStateChange(CircuitBreakerState.HALF_OPEN);
391
+ }
392
+ }
393
+ /**
394
+ * 通知状态变化
395
+ */
396
+ notifyStateChange(state) {
397
+ if (this.onStateChange) {
398
+ this.onStateChange(state);
172
399
  }
173
400
  }
401
+ /**
402
+ * 重置监控窗口
403
+ */
174
404
  resetMonitoringWindow() {
175
405
  this.windowStartTime = Date.now();
176
406
  this.requestCount = 0;
@@ -1,8 +1,8 @@
1
1
  import { AxiosRequestConfig, AxiosResponse } from 'axios';
2
2
  import { HttpClientConfig } from '../interfaces/http-client-config.interface';
3
+ import { AuthType, ApiKeyConfig, BasicAuthConfig, BearerTokenConfig, CustomAuthConfig, OAuth2Config } from '../interfaces/api-client-config.interface';
3
4
  import { HttpCircuitBreakerService } from './circuit-breaker.service';
4
5
  import { HttpLoggingService } from './logging.service';
5
- import { HttpCacheService } from './cache.service';
6
6
  import { RedisLockService } from '../../redis-lock/redis-lock.service';
7
7
  interface ExtendedAxiosRequestConfig extends AxiosRequestConfig {
8
8
  metadata?: {
@@ -11,32 +11,106 @@ interface ExtendedAxiosRequestConfig extends AxiosRequestConfig {
11
11
  [key: string]: any;
12
12
  };
13
13
  }
14
+ /**
15
+ * 认证配置接口
16
+ */
17
+ interface AuthConfig {
18
+ type: AuthType;
19
+ config?: ApiKeyConfig | BasicAuthConfig | BearerTokenConfig | OAuth2Config | CustomAuthConfig;
20
+ }
21
+ /**
22
+ * HTTP客户端服务
23
+ * 基于Spring RestTemplate的设计理念,集成axios-retry库
24
+ * 支持两种创建模式:
25
+ * 1. 直接创建: 用于简单的HTTP请求场景
26
+ * 2. API客户端模式: 用于需要认证、统计等高级功能的API客户端
27
+ */
14
28
  export declare class HttpClientService {
15
29
  private readonly circuitBreakerService;
16
30
  private readonly loggingService;
17
- private readonly cacheService;
18
31
  private readonly redisLockService?;
19
32
  private readonly logger;
20
33
  private readonly axiosInstance;
21
34
  private readonly defaultConfig;
35
+ private readonly authConfig?;
36
+ private readonly clientName?;
22
37
  private requestStats;
23
- constructor(circuitBreakerService: HttpCircuitBreakerService, loggingService: HttpLoggingService, cacheService: HttpCacheService, redisLockService?: RedisLockService, config?: HttpClientConfig);
24
- request<T = any>(config: ExtendedAxiosRequestConfig, decoratorContext?: any): Promise<T>;
38
+ constructor(circuitBreakerService: HttpCircuitBreakerService, loggingService: HttpLoggingService, redisLockService?: RedisLockService, config?: HttpClientConfig, clientName?: string, authConfig?: AuthConfig);
39
+ /**
40
+ * 静态工厂方法:创建API客户端模式的 HttpClientService
41
+ * @param dependencies 依赖服务
42
+ * @param config API客户端配置
43
+ * @returns HttpClientService 实例
44
+ */
45
+ static createApiClient(dependencies: {
46
+ circuitBreakerService: HttpCircuitBreakerService;
47
+ loggingService: HttpLoggingService;
48
+ redisLockService?: RedisLockService;
49
+ }, config: {
50
+ name: string;
51
+ baseURL?: string;
52
+ timeout?: number;
53
+ httpConfig?: HttpClientConfig;
54
+ auth?: AuthConfig;
55
+ }): HttpClientService;
56
+ /**
57
+ * 执行HTTP请求
58
+ */
59
+ request<T = any>(config: ExtendedAxiosRequestConfig, decoratorContext?: any, clientName?: string): Promise<T>;
60
+ /**
61
+ * 生成curl命令(动态生成,不存储)
62
+ */
25
63
  generateCurlCommand(config: ExtendedAxiosRequestConfig): string;
64
+ /**
65
+ * 生成调试curl命令(动态生成,不存储)
66
+ */
26
67
  generateDebugCurlCommand(config: ExtendedAxiosRequestConfig, response?: AxiosResponse): string;
68
+ /**
69
+ * 获取请求统计信息
70
+ */
27
71
  getStats(): any;
72
+ /**
73
+ * 重置统计信息
74
+ */
28
75
  resetStats(): void;
29
- get<T = any>(url: string, config?: AxiosRequestConfig): Promise<T>;
30
- post<T = any>(url: string, data?: any, config?: AxiosRequestConfig): Promise<T>;
31
- put<T = any>(url: string, data?: any, config?: AxiosRequestConfig): Promise<T>;
32
- patch<T = any>(url: string, data?: any, config?: AxiosRequestConfig): Promise<T>;
33
- delete<T = any>(url: string, config?: AxiosRequestConfig): Promise<T>;
76
+ /**
77
+ * 获取客户端名称
78
+ */
79
+ getName(): string | undefined;
80
+ /**
81
+ * Capture calling context information
82
+ * @returns Calling context with service class and method name
83
+ */
84
+ private captureCallingContext;
85
+ get<T = any>(url: string, config?: AxiosRequestConfig, clientName?: string): Promise<T>;
86
+ post<T = any>(url: string, data?: any, config?: AxiosRequestConfig, clientName?: string): Promise<T>;
87
+ put<T = any>(url: string, data?: any, config?: AxiosRequestConfig, clientName?: string): Promise<T>;
88
+ patch<T = any>(url: string, data?: any, config?: AxiosRequestConfig, clientName?: string): Promise<T>;
89
+ delete<T = any>(url: string, config?: AxiosRequestConfig, clientName?: string): Promise<T>;
90
+ /**
91
+ * 带等待锁的认证请求方法
92
+ * 用于需要确保只有一个进程执行认证相关操作的场景
93
+ *
94
+ * @param config 请求配置
95
+ * @param tokenProvider token提供函数
96
+ * @param options 等待锁选项
97
+ * @returns 响应数据
98
+ */
34
99
  authRequest<T = any>(config: AxiosRequestConfig, tokenProvider: () => Promise<string>, options?: {
35
100
  lockKey?: string;
36
101
  lockTimeout?: number;
37
102
  waitTimeout?: number;
38
103
  enableRetry?: boolean;
39
- }): Promise<T>;
104
+ }, clientName?: string): Promise<T>;
105
+ /**
106
+ * 带等待锁的批量认证请求
107
+ * 用于需要批量执行认证相关操作但避免重复认证的场景
108
+ *
109
+ * @param requests 请求数组
110
+ * @param tokenProvider token提供函数
111
+ * @param options 等待锁选项
112
+ * @returns 响应数组
113
+ */
40
114
  authBatchRequest<T = any>(requests: Array<{
41
115
  config: AxiosRequestConfig;
42
116
  key: string;
@@ -45,16 +119,52 @@ export declare class HttpClientService {
45
119
  lockTimeout?: number;
46
120
  waitTimeout?: number;
47
121
  maxConcurrency?: number;
48
- }): Promise<Array<T | null>>;
122
+ }, clientName?: string): Promise<Array<T | null>>;
123
+ /**
124
+ * 创建Axios实例并配置axios-retry
125
+ */
49
126
  private createAxiosInstance;
127
+ /**
128
+ * 执行带特性的请求(重试、熔断器等)
129
+ * 返回响应和熔断器状态
130
+ */
50
131
  private executeWithFeatures;
132
+ /**
133
+ * 计算重试延迟
134
+ */
51
135
  private calculateRetryDelay;
136
+ /**
137
+ * 应用装饰器配置
138
+ */
52
139
  private applyDecoratorConfig;
53
- private shouldCacheRequest;
140
+ /**
141
+ * 生成熔断器键
142
+ */
54
143
  private generateCircuitBreakerKey;
55
- private updateStats;
56
- private updateErrorStats;
144
+ /**
145
+ * 合并默认配置
146
+ */
57
147
  private mergeWithDefaults;
148
+ /**
149
+ * 深度合并对象
150
+ */
58
151
  private deepMerge;
152
+ /**
153
+ * 解析代理配置
154
+ * 支持从环境变量或手动配置中读取
155
+ * @param proxyConfig 代理配置
156
+ * @param targetUrl 目标 URL(用于 NO_PROXY 检查)
157
+ * @returns 解析后的代理配置,如果不应使用代理则返回 false 或 undefined
158
+ */
159
+ private resolveProxyConfig;
160
+ /**
161
+ * 应用认证配置到请求配置
162
+ */
163
+ private applyAuthToConfig;
164
+ /**
165
+ * 更新请求统计信息
166
+ * 统一管理所有统计,避免在拦截器中重复统计
167
+ */
168
+ private updateRequestStats;
59
169
  }
60
170
  export {};