@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
@@ -1,4 +1,7 @@
1
1
  import { CacheService } from './cache.service';
2
+ /**
3
+ * Cache health check result
4
+ */
2
5
  export interface CacheHealthResult {
3
6
  status: 'healthy' | 'degraded' | 'unhealthy';
4
7
  layers: {
@@ -22,14 +25,37 @@ export interface CacheHealthResult {
22
25
  timestamp: Date;
23
26
  overallLatency: number;
24
27
  }
28
+ /**
29
+ * Cache health checker
30
+ *
31
+ * Provides health monitoring for all cache layers
32
+ */
25
33
  export declare class CacheHealthChecker {
26
34
  private readonly cacheService;
27
35
  private readonly logger;
28
36
  constructor(cacheService: CacheService);
37
+ /**
38
+ * Check health of all cache layers
39
+ */
29
40
  checkHealth(): Promise<CacheHealthResult>;
41
+ /**
42
+ * Get detailed cache statistics
43
+ */
30
44
  getDetailedStats(): Promise<any>;
45
+ /**
46
+ * Check CLS cache health
47
+ */
31
48
  private checkClsHealth;
49
+ /**
50
+ * Check Memory cache health
51
+ */
32
52
  private checkMemoryHealth;
53
+ /**
54
+ * Check Redis cache health
55
+ */
33
56
  private checkRedisHealth;
57
+ /**
58
+ * Generate recommendations based on health and stats
59
+ */
34
60
  private generateRecommendations;
35
61
  }
@@ -23,11 +23,19 @@ exports.CacheHealthChecker = void 0;
23
23
  const common_1 = require("@nestjs/common");
24
24
  const cache_service_1 = require("./cache.service");
25
25
  const cache_options_interface_1 = require("./interfaces/cache-options.interface");
26
+ /**
27
+ * Cache health checker
28
+ *
29
+ * Provides health monitoring for all cache layers
30
+ */
26
31
  let CacheHealthChecker = CacheHealthChecker_1 = class CacheHealthChecker {
27
32
  constructor(cacheService) {
28
33
  this.cacheService = cacheService;
29
34
  this.logger = new common_1.Logger(CacheHealthChecker_1.name);
30
35
  }
36
+ /**
37
+ * Check health of all cache layers
38
+ */
31
39
  checkHealth() {
32
40
  return __awaiter(this, void 0, void 0, function* () {
33
41
  const startTime = Date.now();
@@ -37,6 +45,7 @@ let CacheHealthChecker = CacheHealthChecker_1 = class CacheHealthChecker {
37
45
  redis: yield this.checkRedisHealth(),
38
46
  };
39
47
  const overallLatency = Date.now() - startTime;
48
+ // Determine overall status
40
49
  const layerStatuses = Object.values(results);
41
50
  const healthyCount = layerStatuses.filter((layer) => layer.available).length;
42
51
  const totalCount = layerStatuses.length;
@@ -58,6 +67,9 @@ let CacheHealthChecker = CacheHealthChecker_1 = class CacheHealthChecker {
58
67
  };
59
68
  });
60
69
  }
70
+ /**
71
+ * Get detailed cache statistics
72
+ */
61
73
  getDetailedStats() {
62
74
  return __awaiter(this, void 0, void 0, function* () {
63
75
  const stats = this.cacheService.getStats();
@@ -69,10 +81,14 @@ let CacheHealthChecker = CacheHealthChecker_1 = class CacheHealthChecker {
69
81
  };
70
82
  });
71
83
  }
84
+ /**
85
+ * Check CLS cache health
86
+ */
72
87
  checkClsHealth() {
73
88
  return __awaiter(this, void 0, void 0, function* () {
74
89
  const startTime = Date.now();
75
90
  try {
91
+ // Try to write and read a test value
76
92
  yield this.cacheService.set('health:cls:test', 'test-value', {
77
93
  layers: [cache_options_interface_1.CacheLayer.CLS],
78
94
  });
@@ -101,10 +117,14 @@ let CacheHealthChecker = CacheHealthChecker_1 = class CacheHealthChecker {
101
117
  }
102
118
  });
103
119
  }
120
+ /**
121
+ * Check Memory cache health
122
+ */
104
123
  checkMemoryHealth() {
105
124
  return __awaiter(this, void 0, void 0, function* () {
106
125
  const startTime = Date.now();
107
126
  try {
127
+ // Try to write and read a test value
108
128
  yield this.cacheService.set('health:memory:test', 'test-value', {
109
129
  layers: [cache_options_interface_1.CacheLayer.MEMORY],
110
130
  });
@@ -113,6 +133,7 @@ let CacheHealthChecker = CacheHealthChecker_1 = class CacheHealthChecker {
113
133
  });
114
134
  const latency = Date.now() - startTime;
115
135
  if (result === 'test-value') {
136
+ // Get memory cache size (if available)
116
137
  const stats = this.cacheService.getStats();
117
138
  return { available: true, latency, size: stats.totalSets };
118
139
  }
@@ -134,10 +155,14 @@ let CacheHealthChecker = CacheHealthChecker_1 = class CacheHealthChecker {
134
155
  }
135
156
  });
136
157
  }
158
+ /**
159
+ * Check Redis cache health
160
+ */
137
161
  checkRedisHealth() {
138
162
  return __awaiter(this, void 0, void 0, function* () {
139
163
  const startTime = Date.now();
140
164
  try {
165
+ // Try to write and read a test value
141
166
  yield this.cacheService.set('health:redis:test', 'test-value', {
142
167
  layers: [cache_options_interface_1.CacheLayer.REDIS],
143
168
  });
@@ -166,8 +191,12 @@ let CacheHealthChecker = CacheHealthChecker_1 = class CacheHealthChecker {
166
191
  }
167
192
  });
168
193
  }
194
+ /**
195
+ * Generate recommendations based on health and stats
196
+ */
169
197
  generateRecommendations(health, stats) {
170
198
  const recommendations = [];
199
+ // Health-based recommendations
171
200
  if (!health.layers.redis.available) {
172
201
  recommendations.push('Redis is unavailable. Check Redis connection and configuration.');
173
202
  }
@@ -177,6 +206,7 @@ let CacheHealthChecker = CacheHealthChecker_1 = class CacheHealthChecker {
177
206
  if (health.overallLatency > 100) {
178
207
  recommendations.push('Cache latency is high. Consider optimizing cache operations or increasing resources.');
179
208
  }
209
+ // Statistics-based recommendations
180
210
  if (stats.hitRate < 0.5) {
181
211
  recommendations.push('Cache hit rate is low. Review cache TTL and key patterns.');
182
212
  }
@@ -1,21 +1,101 @@
1
1
  import { DynamicModule, OnModuleInit } from '@nestjs/common';
2
- import type { DataSource } from 'typeorm';
3
2
  import type { Redis } from 'ioredis';
4
3
  import { CacheService } from './cache.service';
4
+ /**
5
+ * Injection token for CacheService
6
+ */
5
7
  export declare const CACHE_SERVICE: unique symbol;
8
+ /**
9
+ * Cache module configuration options
10
+ */
6
11
  export interface CacheModuleOptions {
12
+ /**
13
+ * Whether to make the module global
14
+ * @default true
15
+ */
7
16
  isGlobal?: boolean;
17
+ /**
18
+ * Redis client instance (optional)
19
+ * If not provided, Redis caching will be disabled
20
+ */
8
21
  redisClient?: Redis;
9
- dataSource?: DataSource;
22
+ /**
23
+ * Default TTL for memory cache in milliseconds
24
+ */
10
25
  memoryTtl?: number;
26
+ /**
27
+ * Namespace for memory cache
28
+ */
11
29
  memoryNamespace?: string;
30
+ /**
31
+ * Enable compression for cache values
32
+ * @default false
33
+ */
12
34
  enableCompression?: boolean;
35
+ /**
36
+ * Compression threshold in bytes
37
+ * @default 1024
38
+ */
13
39
  compressionThreshold?: number;
14
40
  }
41
+ /**
42
+ * Unified cache module with three-tier architecture
43
+ *
44
+ * Provides CacheService and cache decorators (@Cacheable, @CacheEvict, @CachePut)
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * // Basic usage (without Redis)
49
+ * @Module({
50
+ * imports: [
51
+ * CacheModule.forRoot()
52
+ * ]
53
+ * })
54
+ * export class AppModule {}
55
+ *
56
+ * // With Redis
57
+ * import { RedisModule } from '@songkeys/nestjs-redis';
58
+ *
59
+ * @Module({
60
+ * imports: [
61
+ * RedisModule.forRoot({ ... }),
62
+ * CacheModule.forRootAsync({
63
+ * imports: [RedisModule],
64
+ * inject: [RedisService],
65
+ * useFactory: (redisService: RedisService) => ({
66
+ * redisClient: redisService.getClient()
67
+ * })
68
+ * })
69
+ * ]
70
+ * })
71
+ * export class AppModule {}
72
+ *
73
+ * // With TypeORM DataSource for DbDependency
74
+ * @Module({
75
+ * imports: [
76
+ * TypeOrmModule.forRoot({ ... }),
77
+ * CacheModule.forRootAsync({
78
+ * imports: [TypeOrmModule],
79
+ * inject: [DataSource],
80
+ * useFactory: (dataSource: DataSource) => ({
81
+ * dataSource
82
+ * })
83
+ * })
84
+ * ]
85
+ * })
86
+ * export class AppModule {}
87
+ * ```
88
+ */
15
89
  export declare class CacheModule implements OnModuleInit {
16
90
  private readonly cacheService;
17
91
  constructor(cacheService: CacheService);
92
+ /**
93
+ * Register cache module with options
94
+ */
18
95
  static forRoot(options?: CacheModuleOptions): DynamicModule;
96
+ /**
97
+ * Register cache module asynchronously
98
+ */
19
99
  static forRootAsync(options: {
20
100
  imports?: any[];
21
101
  inject?: any[];
@@ -20,20 +20,76 @@ const dependencies_1 = require("./dependencies");
20
20
  const decorators_1 = require("./decorators");
21
21
  const providers_1 = require("./providers");
22
22
  const cache_constants_1 = require("./cache.constants");
23
+ /**
24
+ * Injection token for CacheService
25
+ */
23
26
  exports.CACHE_SERVICE = Symbol('CACHE_SERVICE');
27
+ /**
28
+ * Unified cache module with three-tier architecture
29
+ *
30
+ * Provides CacheService and cache decorators (@Cacheable, @CacheEvict, @CachePut)
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * // Basic usage (without Redis)
35
+ * @Module({
36
+ * imports: [
37
+ * CacheModule.forRoot()
38
+ * ]
39
+ * })
40
+ * export class AppModule {}
41
+ *
42
+ * // With Redis
43
+ * import { RedisModule } from '@songkeys/nestjs-redis';
44
+ *
45
+ * @Module({
46
+ * imports: [
47
+ * RedisModule.forRoot({ ... }),
48
+ * CacheModule.forRootAsync({
49
+ * imports: [RedisModule],
50
+ * inject: [RedisService],
51
+ * useFactory: (redisService: RedisService) => ({
52
+ * redisClient: redisService.getClient()
53
+ * })
54
+ * })
55
+ * ]
56
+ * })
57
+ * export class AppModule {}
58
+ *
59
+ * // With TypeORM DataSource for DbDependency
60
+ * @Module({
61
+ * imports: [
62
+ * TypeOrmModule.forRoot({ ... }),
63
+ * CacheModule.forRootAsync({
64
+ * imports: [TypeOrmModule],
65
+ * inject: [DataSource],
66
+ * useFactory: (dataSource: DataSource) => ({
67
+ * dataSource
68
+ * })
69
+ * })
70
+ * ]
71
+ * })
72
+ * export class AppModule {}
73
+ * ```
74
+ */
24
75
  let CacheModule = CacheModule_1 = class CacheModule {
25
76
  constructor(cacheService) {
26
77
  this.cacheService = cacheService;
27
78
  }
79
+ /**
80
+ * Register cache module with options
81
+ */
28
82
  static forRoot(options = {}) {
29
- const { isGlobal = true, redisClient, dataSource, memoryTtl, memoryNamespace, enableCompression = false, compressionThreshold = 1024, } = options;
30
- if (dataSource) {
31
- dependencies_1.DbDependency.setDataSource(dataSource);
83
+ const { isGlobal = true, redisClient, memoryTtl, memoryNamespace, enableCompression = false, compressionThreshold = 1024, } = options;
84
+ // Set Redis client for TagDependency for distributed tag support
85
+ if (redisClient) {
86
+ dependencies_1.TagDependency.setRedisClient(redisClient);
32
87
  }
33
88
  return {
34
89
  module: CacheModule_1,
35
90
  global: isGlobal,
36
91
  providers: [
92
+ // Providers
37
93
  providers_1.ClsCacheProvider,
38
94
  {
39
95
  provide: providers_1.MemoryCacheProvider,
@@ -42,6 +98,7 @@ let CacheModule = CacheModule_1 = class CacheModule {
42
98
  namespace: memoryNamespace,
43
99
  }),
44
100
  },
101
+ // Redis client provider (optional)
45
102
  ...(redisClient
46
103
  ? [
47
104
  {
@@ -51,6 +108,7 @@ let CacheModule = CacheModule_1 = class CacheModule {
51
108
  ]
52
109
  : []),
53
110
  providers_1.RedisCacheProvider,
111
+ // Compression configuration providers
54
112
  {
55
113
  provide: cache_constants_1.CACHE_COMPRESSION_ENABLED,
56
114
  useValue: enableCompression,
@@ -59,12 +117,14 @@ let CacheModule = CacheModule_1 = class CacheModule {
59
117
  provide: cache_constants_1.CACHE_COMPRESSION_THRESHOLD,
60
118
  useValue: compressionThreshold,
61
119
  },
120
+ // Additional services
62
121
  cache_warmup_service_1.CacheWarmupService,
63
122
  cache_metrics_service_1.CacheMetricsService,
64
123
  {
65
124
  provide: cache_serialization_service_1.CacheSerializationService,
66
125
  useFactory: () => new cache_serialization_service_1.CacheSerializationService(),
67
126
  },
127
+ // CacheService
68
128
  {
69
129
  provide: exports.CACHE_SERVICE,
70
130
  useClass: cache_service_1.CacheService,
@@ -80,6 +140,9 @@ let CacheModule = CacheModule_1 = class CacheModule {
80
140
  ],
81
141
  };
82
142
  }
143
+ /**
144
+ * Register cache module asynchronously
145
+ */
83
146
  static forRootAsync(options) {
84
147
  var _a;
85
148
  return {
@@ -87,17 +150,20 @@ let CacheModule = CacheModule_1 = class CacheModule {
87
150
  global: (_a = options.isGlobal) !== null && _a !== void 0 ? _a : true,
88
151
  imports: options.imports || [],
89
152
  providers: [
153
+ // Async options provider
90
154
  {
91
155
  provide: 'CACHE_MODULE_OPTIONS',
92
156
  useFactory: options.useFactory,
93
157
  inject: options.inject || [],
94
158
  },
159
+ // Providers
95
160
  providers_1.ClsCacheProvider,
96
161
  {
97
162
  provide: providers_1.MemoryCacheProvider,
98
163
  useFactory: (moduleOptions) => {
99
- if (moduleOptions.dataSource) {
100
- dependencies_1.DbDependency.setDataSource(moduleOptions.dataSource);
164
+ // Set Redis client for TagDependency for distributed tag support
165
+ if (moduleOptions.redisClient) {
166
+ dependencies_1.TagDependency.setRedisClient(moduleOptions.redisClient);
101
167
  }
102
168
  return new providers_1.MemoryCacheProvider({
103
169
  ttl: moduleOptions.memoryTtl,
@@ -106,18 +172,21 @@ let CacheModule = CacheModule_1 = class CacheModule {
106
172
  },
107
173
  inject: ['CACHE_MODULE_OPTIONS'],
108
174
  },
175
+ // Redis client provider (optional)
109
176
  {
110
177
  provide: providers_1.REDIS_CLIENT,
111
178
  useFactory: (moduleOptions) => moduleOptions.redisClient,
112
179
  inject: ['CACHE_MODULE_OPTIONS'],
113
180
  },
114
181
  providers_1.RedisCacheProvider,
182
+ // Additional services
115
183
  cache_warmup_service_1.CacheWarmupService,
116
184
  cache_metrics_service_1.CacheMetricsService,
117
185
  {
118
186
  provide: cache_serialization_service_1.CacheSerializationService,
119
187
  useFactory: () => new cache_serialization_service_1.CacheSerializationService(),
120
188
  },
189
+ // Compression configuration providers
121
190
  {
122
191
  provide: cache_constants_1.CACHE_COMPRESSION_ENABLED,
123
192
  useFactory: (moduleOptions) => moduleOptions.enableCompression || false,
@@ -128,6 +197,7 @@ let CacheModule = CacheModule_1 = class CacheModule {
128
197
  useFactory: (moduleOptions) => moduleOptions.compressionThreshold || 1024,
129
198
  inject: ['CACHE_MODULE_OPTIONS'],
130
199
  },
200
+ // CacheService
131
201
  {
132
202
  provide: exports.CACHE_SERVICE,
133
203
  useClass: cache_service_1.CacheService,
@@ -144,6 +214,7 @@ let CacheModule = CacheModule_1 = class CacheModule {
144
214
  };
145
215
  }
146
216
  onModuleInit() {
217
+ // Set global cache service for decorators
147
218
  (0, decorators_1.setCacheService)(this.cacheService);
148
219
  }
149
220
  };
@@ -1,6 +1,15 @@
1
1
  import type { CacheOptions, CacheStats } from './interfaces';
2
2
  import { CacheLayer } from './interfaces';
3
3
  import { ClsCacheProvider, MemoryCacheProvider, RedisCacheProvider } from './providers';
4
+ /**
5
+ * Unified cache service with three-tier architecture
6
+ *
7
+ * L1: CLS (request-level)
8
+ * L2: Memory (process-level)
9
+ * L3: Redis (distributed)
10
+ *
11
+ * Supports automatic fallback, backfill, and dependency-based invalidation.
12
+ */
4
13
  export declare class CacheService {
5
14
  private readonly clsProvider;
6
15
  private readonly memoryProvider;
@@ -11,27 +20,158 @@ export declare class CacheService {
11
20
  private readonly providers;
12
21
  private readonly stats;
13
22
  constructor(clsProvider: ClsCacheProvider, memoryProvider: MemoryCacheProvider, redisProvider: RedisCacheProvider, enableCompression?: boolean, compressionThreshold?: number);
23
+ /**
24
+ * Get or set cache value with factory function
25
+ *
26
+ * @param key - Cache key
27
+ * @param factory - Function to generate value if not cached
28
+ * @param options - Cache options
29
+ * @returns Cached or generated value
30
+ */
14
31
  getOrSet<T>(key: string, factory: () => Promise<T>, options?: CacheOptions): Promise<T>;
32
+ /**
33
+ * Get value from cache with optional layer specification
34
+ *
35
+ * @param key - Cache key
36
+ * @param options - Cache options including layer preference
37
+ * @returns Cached value or null
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * // Try memory only
42
+ * const data = await this.cacheService.get('user:123', {
43
+ * layers: [CacheLayer.MEMORY]
44
+ * });
45
+ *
46
+ * // Try all layers in order (CLS -> MEMORY -> REDIS)
47
+ * const data = await this.cacheService.get('config:app', {
48
+ * layers: [CacheLayer.CLS, CacheLayer.MEMORY, CacheLayer.REDIS]
49
+ * });
50
+ * ```
51
+ */
15
52
  get<T>(key: string, options?: CacheOptions): Promise<T | null>;
53
+ /**
54
+ * Set value in cache with optional layer specification
55
+ *
56
+ * Supports both new API (CacheOptions) and legacy API (TTL number) for backward compatibility.
57
+ *
58
+ * @param key - Cache key
59
+ * @param value - Value to cache
60
+ * @param options - Cache options including layer selection OR TTL (number) for legacy compatibility
61
+ *
62
+ * @example
63
+ * ```typescript
64
+ * // New API - Cache in memory only
65
+ * await this.cacheService.set('user:123', userData, {
66
+ * layers: [CacheLayer.MEMORY],
67
+ * ttl: 300000
68
+ * });
69
+ *
70
+ * // Legacy API - TTL as third parameter (still works for backward compatibility)
71
+ * await this.cacheService.set('user:123', userData, 300000);
72
+ *
73
+ * // Cache in all layers (default behavior)
74
+ * await this.cacheService.set('config:app', configData, {
75
+ * layers: [CacheLayer.CLS, CacheLayer.MEMORY, CacheLayer.REDIS],
76
+ * ttl: 3600000
77
+ * });
78
+ *
79
+ * // Cache in Redis only (distributed)
80
+ * await this.cacheService.set('global:settings', settings, {
81
+ * layers: [CacheLayer.REDIS],
82
+ * ttl: 86400000
83
+ * });
84
+ * ```
85
+ */
16
86
  set<T>(key: string, value: T, options?: CacheOptions | number): Promise<void>;
87
+ /**
88
+ * Delete value from cache
89
+ *
90
+ * @param key - Cache key or array of keys
91
+ * @param layers - Specific layers to delete from (default: all)
92
+ */
17
93
  del(key: string | string[], layers?: CacheLayer[]): Promise<void>;
94
+ /**
95
+ * Delete keys matching pattern
96
+ *
97
+ * @param pattern - Pattern to match (e.g., 'user:*')
98
+ * @param layers - Specific layers to delete from (default: Memory and Redis only)
99
+ */
18
100
  deletePattern(pattern: string, layers?: CacheLayer[]): Promise<void>;
101
+ /**
102
+ * Clear all cache
103
+ *
104
+ * @param layers - Specific layers to clear (default: all)
105
+ */
19
106
  clear(layers?: CacheLayer[]): Promise<void>;
107
+ /**
108
+ * Invalidate tags (for TagDependency)
109
+ *
110
+ * @param tags - Tags to invalidate
111
+ */
20
112
  invalidateTags(tags: string[]): Promise<void>;
113
+ /**
114
+ * Get multiple values
115
+ *
116
+ * @param keys - Array of cache keys
117
+ * @param options - Cache options
118
+ * @returns Array of values (null for missing keys)
119
+ */
21
120
  mget<T>(keys: string[], options?: CacheOptions): Promise<(T | null)[]>;
121
+ /**
122
+ * Set multiple values
123
+ *
124
+ * @param items - Array of key-value pairs
125
+ * @param options - Cache options
126
+ */
22
127
  mset(items: Array<{
23
128
  key: string;
24
129
  value: any;
25
130
  }>, options?: CacheOptions): Promise<void>;
131
+ /**
132
+ * Get cache statistics
133
+ *
134
+ * @returns Cache statistics
135
+ */
26
136
  getStats(): CacheStats;
137
+ /**
138
+ * Reset statistics
139
+ */
27
140
  resetStats(): void;
141
+ /**
142
+ * Internal method to set cache value with options
143
+ */
28
144
  private setWithOptions;
145
+ /**
146
+ * Resolve cache layers from options
147
+ */
29
148
  private resolveLayers;
149
+ /**
150
+ * Get default cache layers
151
+ */
30
152
  private getDefaultLayers;
153
+ /**
154
+ * Build full cache key with namespace
155
+ */
31
156
  private buildKey;
157
+ /**
158
+ * Backfill upper cache layers
159
+ */
32
160
  private backfillUpperLayers;
161
+ /**
162
+ * Record cache hit
163
+ */
33
164
  private recordHit;
165
+ /**
166
+ * Record cache miss
167
+ */
34
168
  private recordMiss;
169
+ /**
170
+ * Update hit rate for a layer
171
+ */
35
172
  private updateLayerHitRate;
173
+ /**
174
+ * Initialize statistics for all layers
175
+ */
36
176
  private initializeStats;
37
177
  }