@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,2 +1,11 @@
1
+ /**
2
+ * Cache constants and injection tokens
3
+ */
4
+ /**
5
+ * Injection token for cache compression enabled flag
6
+ */
1
7
  export declare const CACHE_COMPRESSION_ENABLED: unique symbol;
8
+ /**
9
+ * Injection token for cache compression threshold
10
+ */
2
11
  export declare const CACHE_COMPRESSION_THRESHOLD: unique symbol;
@@ -1,5 +1,14 @@
1
1
  "use strict";
2
+ /**
3
+ * Cache constants and injection tokens
4
+ */
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.CACHE_COMPRESSION_THRESHOLD = exports.CACHE_COMPRESSION_ENABLED = void 0;
7
+ /**
8
+ * Injection token for cache compression enabled flag
9
+ */
4
10
  exports.CACHE_COMPRESSION_ENABLED = Symbol('CACHE_COMPRESSION_ENABLED');
11
+ /**
12
+ * Injection token for cache compression threshold
13
+ */
5
14
  exports.CACHE_COMPRESSION_THRESHOLD = Symbol('CACHE_COMPRESSION_THRESHOLD');
@@ -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,106 @@
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 LRU cache in milliseconds
24
+ */
10
25
  memoryTtl?: number;
26
+ /**
27
+ * Namespace for LRU cache
28
+ */
11
29
  memoryNamespace?: string;
30
+ /**
31
+ * Max size for LRU cache
32
+ * @default 500
33
+ */
34
+ lruMaxSize?: number;
35
+ /**
36
+ * Enable compression for cache values
37
+ * @default false
38
+ */
12
39
  enableCompression?: boolean;
40
+ /**
41
+ * Compression threshold in bytes
42
+ * @default 1024
43
+ */
13
44
  compressionThreshold?: number;
14
45
  }
46
+ /**
47
+ * Unified cache module with three-tier architecture
48
+ *
49
+ * Provides CacheService and cache decorators (@Cacheable, @CacheEvict, @CachePut)
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * // Basic usage (without Redis)
54
+ * @Module({
55
+ * imports: [
56
+ * CacheModule.forRoot()
57
+ * ]
58
+ * })
59
+ * export class AppModule {}
60
+ *
61
+ * // With Redis
62
+ * import { RedisModule } from '@songkeys/nestjs-redis';
63
+ *
64
+ * @Module({
65
+ * imports: [
66
+ * RedisModule.forRoot({ ... }),
67
+ * CacheModule.forRootAsync({
68
+ * imports: [RedisModule],
69
+ * inject: [RedisService],
70
+ * useFactory: (redisService: RedisService) => ({
71
+ * redisClient: redisService.getClient()
72
+ * })
73
+ * })
74
+ * ]
75
+ * })
76
+ * export class AppModule {}
77
+ *
78
+ * // With TypeORM DataSource for DbDependency
79
+ * @Module({
80
+ * imports: [
81
+ * TypeOrmModule.forRoot({ ... }),
82
+ * CacheModule.forRootAsync({
83
+ * imports: [TypeOrmModule],
84
+ * inject: [DataSource],
85
+ * useFactory: (dataSource: DataSource) => ({
86
+ * dataSource
87
+ * })
88
+ * })
89
+ * ]
90
+ * })
91
+ * export class AppModule {}
92
+ * ```
93
+ */
15
94
  export declare class CacheModule implements OnModuleInit {
16
95
  private readonly cacheService;
17
96
  constructor(cacheService: CacheService);
97
+ /**
98
+ * Register cache module with options
99
+ */
18
100
  static forRoot(options?: CacheModuleOptions): DynamicModule;
101
+ /**
102
+ * Register cache module asynchronously
103
+ */
19
104
  static forRootAsync(options: {
20
105
  imports?: any[];
21
106
  inject?: any[];
@@ -20,28 +20,86 @@ 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, lruMaxSize = 500, 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
- provide: providers_1.MemoryCacheProvider,
40
- useValue: new providers_1.MemoryCacheProvider({
95
+ provide: providers_1.LRUCacheProvider,
96
+ useValue: new providers_1.LRUCacheProvider({
97
+ maxSize: lruMaxSize,
41
98
  ttl: memoryTtl,
42
- namespace: memoryNamespace,
99
+ namespace: memoryNamespace || 'cache:lru',
43
100
  }),
44
101
  },
102
+ // Redis client provider (optional)
45
103
  ...(redisClient
46
104
  ? [
47
105
  {
@@ -51,6 +109,7 @@ let CacheModule = CacheModule_1 = class CacheModule {
51
109
  ]
52
110
  : []),
53
111
  providers_1.RedisCacheProvider,
112
+ // Compression configuration providers
54
113
  {
55
114
  provide: cache_constants_1.CACHE_COMPRESSION_ENABLED,
56
115
  useValue: enableCompression,
@@ -59,12 +118,14 @@ let CacheModule = CacheModule_1 = class CacheModule {
59
118
  provide: cache_constants_1.CACHE_COMPRESSION_THRESHOLD,
60
119
  useValue: compressionThreshold,
61
120
  },
121
+ // Additional services
62
122
  cache_warmup_service_1.CacheWarmupService,
63
123
  cache_metrics_service_1.CacheMetricsService,
64
124
  {
65
125
  provide: cache_serialization_service_1.CacheSerializationService,
66
126
  useFactory: () => new cache_serialization_service_1.CacheSerializationService(),
67
127
  },
128
+ // CacheService
68
129
  {
69
130
  provide: exports.CACHE_SERVICE,
70
131
  useClass: cache_service_1.CacheService,
@@ -80,6 +141,9 @@ let CacheModule = CacheModule_1 = class CacheModule {
80
141
  ],
81
142
  };
82
143
  }
144
+ /**
145
+ * Register cache module asynchronously
146
+ */
83
147
  static forRootAsync(options) {
84
148
  var _a;
85
149
  return {
@@ -87,37 +151,44 @@ let CacheModule = CacheModule_1 = class CacheModule {
87
151
  global: (_a = options.isGlobal) !== null && _a !== void 0 ? _a : true,
88
152
  imports: options.imports || [],
89
153
  providers: [
154
+ // Async options provider
90
155
  {
91
156
  provide: 'CACHE_MODULE_OPTIONS',
92
157
  useFactory: options.useFactory,
93
158
  inject: options.inject || [],
94
159
  },
160
+ // Providers
95
161
  providers_1.ClsCacheProvider,
96
162
  {
97
- provide: providers_1.MemoryCacheProvider,
163
+ provide: providers_1.LRUCacheProvider,
98
164
  useFactory: (moduleOptions) => {
99
- if (moduleOptions.dataSource) {
100
- dependencies_1.DbDependency.setDataSource(moduleOptions.dataSource);
165
+ // Set Redis client for TagDependency for distributed tag support
166
+ if (moduleOptions.redisClient) {
167
+ dependencies_1.TagDependency.setRedisClient(moduleOptions.redisClient);
101
168
  }
102
- return new providers_1.MemoryCacheProvider({
169
+ return new providers_1.LRUCacheProvider({
170
+ maxSize: moduleOptions.lruMaxSize || 500,
103
171
  ttl: moduleOptions.memoryTtl,
104
- namespace: moduleOptions.memoryNamespace,
172
+ namespace: moduleOptions.memoryNamespace || 'cache:lru',
105
173
  });
106
174
  },
107
175
  inject: ['CACHE_MODULE_OPTIONS'],
108
176
  },
177
+ // Redis client provider (optional)
109
178
  {
110
179
  provide: providers_1.REDIS_CLIENT,
111
180
  useFactory: (moduleOptions) => moduleOptions.redisClient,
112
181
  inject: ['CACHE_MODULE_OPTIONS'],
113
182
  },
114
183
  providers_1.RedisCacheProvider,
184
+ // Additional services
115
185
  cache_warmup_service_1.CacheWarmupService,
116
186
  cache_metrics_service_1.CacheMetricsService,
117
187
  {
118
188
  provide: cache_serialization_service_1.CacheSerializationService,
119
189
  useFactory: () => new cache_serialization_service_1.CacheSerializationService(),
120
190
  },
191
+ // Compression configuration providers
121
192
  {
122
193
  provide: cache_constants_1.CACHE_COMPRESSION_ENABLED,
123
194
  useFactory: (moduleOptions) => moduleOptions.enableCompression || false,
@@ -128,6 +199,7 @@ let CacheModule = CacheModule_1 = class CacheModule {
128
199
  useFactory: (moduleOptions) => moduleOptions.compressionThreshold || 1024,
129
200
  inject: ['CACHE_MODULE_OPTIONS'],
130
201
  },
202
+ // CacheService
131
203
  {
132
204
  provide: exports.CACHE_SERVICE,
133
205
  useClass: cache_service_1.CacheService,
@@ -144,6 +216,7 @@ let CacheModule = CacheModule_1 = class CacheModule {
144
216
  };
145
217
  }
146
218
  onModuleInit() {
219
+ // Set global cache service for decorators
147
220
  (0, decorators_1.setCacheService)(this.cacheService);
148
221
  }
149
222
  };
@@ -1,37 +1,177 @@
1
1
  import type { CacheOptions, CacheStats } from './interfaces';
2
2
  import { CacheLayer } from './interfaces';
3
- import { ClsCacheProvider, MemoryCacheProvider, RedisCacheProvider } from './providers';
3
+ import { ClsCacheProvider, LRUCacheProvider, RedisCacheProvider } from './providers';
4
+ /**
5
+ * Unified cache service with three-tier architecture
6
+ *
7
+ * L1: CLS (request-level)
8
+ * L2: LRU (process-level with automatic eviction)
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
- private readonly memoryProvider;
15
+ private readonly lruProvider;
7
16
  private readonly redisProvider;
8
17
  private readonly enableCompression;
9
18
  private readonly compressionThreshold;
10
19
  private readonly logger;
11
20
  private readonly providers;
12
21
  private readonly stats;
13
- constructor(clsProvider: ClsCacheProvider, memoryProvider: MemoryCacheProvider, redisProvider: RedisCacheProvider, enableCompression?: boolean, compressionThreshold?: number);
22
+ constructor(clsProvider: ClsCacheProvider, lruProvider: LRUCacheProvider, 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
  }