@nest-omni/core 4.1.3-3 → 4.1.3-31

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 (370) hide show
  1. package/audit/audit.module.d.ts +1 -0
  2. package/audit/audit.module.js +51 -2
  3. package/audit/controllers/audit.controller.d.ts +57 -1
  4. package/audit/controllers/audit.controller.js +43 -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 +1 -1
  8. package/audit/decorators/audit-controller.decorator.js +2 -2
  9. package/audit/decorators/audit-operation.decorator.d.ts +0 -7
  10. package/audit/decorators/audit-operation.decorator.js +0 -7
  11. package/audit/decorators/entity-audit.decorator.d.ts +78 -2
  12. package/audit/decorators/entity-audit.decorator.js +145 -4
  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/index.d.ts +1 -0
  18. package/audit/dto/index.js +1 -0
  19. package/audit/entities/audit-action-summary.entity.d.ts +23 -0
  20. package/audit/entities/audit-action-summary.entity.js +101 -0
  21. package/audit/entities/entity-audit-log.entity.d.ts +7 -2
  22. package/audit/entities/entity-audit-log.entity.js +45 -9
  23. package/audit/entities/entity-transaction.entity.d.ts +8 -2
  24. package/audit/entities/entity-transaction.entity.js +39 -3
  25. package/audit/entities/index.d.ts +3 -0
  26. package/audit/entities/index.js +3 -0
  27. package/audit/entities/manual-operation-log.entity.d.ts +0 -2
  28. package/audit/entities/manual-operation-log.entity.js +8 -9
  29. package/audit/enums/audit.enums.d.ts +14 -6
  30. package/audit/enums/audit.enums.js +18 -9
  31. package/audit/examples/decorator-value-mapping.example.d.ts +70 -0
  32. package/audit/examples/decorator-value-mapping.example.js +414 -0
  33. package/audit/index.d.ts +5 -1
  34. package/audit/index.js +29 -2
  35. package/audit/interceptors/audit-action.interceptor.d.ts +39 -0
  36. package/audit/interceptors/audit-action.interceptor.js +217 -0
  37. package/audit/interceptors/audit.interceptor.d.ts +1 -0
  38. package/audit/interceptors/audit.interceptor.js +19 -11
  39. package/audit/interceptors/index.d.ts +1 -0
  40. package/audit/interceptors/index.js +1 -0
  41. package/audit/interfaces/audit.interfaces.d.ts +132 -4
  42. package/audit/services/audit-action.service.d.ts +142 -0
  43. package/audit/services/audit-action.service.js +246 -0
  44. package/audit/services/audit-context.service.d.ts +91 -0
  45. package/audit/services/audit-context.service.js +170 -0
  46. package/audit/services/entity-audit.service.d.ts +220 -9
  47. package/audit/services/entity-audit.service.js +761 -72
  48. package/audit/services/index.d.ts +3 -0
  49. package/audit/services/index.js +3 -0
  50. package/audit/services/manual-audit-log.service.d.ts +23 -23
  51. package/audit/services/manual-audit-log.service.js +34 -57
  52. package/audit/services/multi-database.service.d.ts +0 -5
  53. package/audit/services/multi-database.service.js +0 -24
  54. package/audit/services/operation-description.service.d.ts +14 -3
  55. package/audit/services/operation-description.service.js +165 -26
  56. package/audit/services/transaction-audit.service.d.ts +1 -0
  57. package/audit/services/transaction-audit.service.js +12 -9
  58. package/audit/subscribers/entity-audit.subscriber.d.ts +5 -0
  59. package/audit/subscribers/entity-audit.subscriber.js +69 -5
  60. package/cache/cache.module.d.ts +7 -8
  61. package/cache/cache.module.js +15 -13
  62. package/cache/cache.service.d.ts +6 -4
  63. package/cache/cache.service.js +24 -12
  64. package/cache/decorators/cache-put.decorator.js +5 -4
  65. package/cache/dependencies/callback.dependency.js +9 -0
  66. package/cache/dependencies/db.dependency.d.ts +43 -12
  67. package/cache/dependencies/db.dependency.js +46 -18
  68. package/cache/dependencies/tag.dependency.d.ts +31 -4
  69. package/cache/dependencies/tag.dependency.js +100 -11
  70. package/cache/entities/index.d.ts +1 -0
  71. package/cache/entities/index.js +17 -0
  72. package/cache/entities/typeorm-cache.entity.d.ts +71 -0
  73. package/cache/entities/typeorm-cache.entity.js +110 -0
  74. package/cache/index.d.ts +2 -1
  75. package/cache/index.js +19 -2
  76. package/cache/interfaces/cache-options.interface.d.ts +8 -0
  77. package/cache/providers/index.d.ts +2 -1
  78. package/cache/providers/index.js +2 -1
  79. package/cache/providers/lrucache.provider.d.ts +77 -0
  80. package/cache/providers/lrucache.provider.js +228 -0
  81. package/cache/providers/redis-cache.provider.d.ts +1 -0
  82. package/cache/providers/redis-cache.provider.js +8 -6
  83. package/cache/providers/typeorm-cache.provider.d.ts +211 -0
  84. package/cache/providers/typeorm-cache.provider.js +483 -0
  85. package/common/boilerplate.polyfill.d.ts +1 -0
  86. package/common/boilerplate.polyfill.js +18 -1
  87. package/common/helpers/validation-metadata-helper.d.ts +112 -0
  88. package/common/helpers/validation-metadata-helper.js +164 -0
  89. package/common/index.d.ts +1 -0
  90. package/common/index.js +4 -0
  91. package/decorators/examples/field-i18n.example.d.ts +294 -0
  92. package/decorators/examples/field-i18n.example.js +478 -0
  93. package/decorators/field.decorators.d.ts +95 -3
  94. package/decorators/field.decorators.js +152 -18
  95. package/decorators/transform.decorators.d.ts +0 -2
  96. package/decorators/transform.decorators.js +0 -23
  97. package/decorators/translate.decorator.d.ts +26 -0
  98. package/decorators/translate.decorator.js +26 -1
  99. package/email-log/email-log.constants.d.ts +8 -0
  100. package/email-log/email-log.constants.js +11 -0
  101. package/email-log/email-log.module.d.ts +47 -0
  102. package/email-log/email-log.module.js +140 -0
  103. package/email-log/index.d.ts +11 -0
  104. package/email-log/index.js +48 -0
  105. package/email-log/interfaces/email-log-options.interface.d.ts +61 -0
  106. package/email-log/interfaces/email-log-options.interface.js +134 -0
  107. package/email-log/interfaces/email-log-transport.interface.d.ts +20 -0
  108. package/email-log/interfaces/email-log-transport.interface.js +2 -0
  109. package/email-log/interfaces/index.d.ts +2 -0
  110. package/email-log/interfaces/index.js +18 -0
  111. package/email-log/providers/email-provider.d.ts +42 -0
  112. package/email-log/providers/email-provider.js +127 -0
  113. package/email-log/providers/index.d.ts +1 -0
  114. package/email-log/providers/index.js +17 -0
  115. package/email-log/services/email-log-alert.service.d.ts +46 -0
  116. package/email-log/services/email-log-alert.service.js +162 -0
  117. package/email-log/services/email-log-formatter.service.d.ts +78 -0
  118. package/email-log/services/email-log-formatter.service.js +442 -0
  119. package/email-log/services/email-log-logger.service.d.ts +85 -0
  120. package/email-log/services/email-log-logger.service.js +168 -0
  121. package/email-log/services/email-log-rate-limiter.service.d.ts +42 -0
  122. package/email-log/services/email-log-rate-limiter.service.js +110 -0
  123. package/email-log/services/email-log-transport.service.d.ts +80 -0
  124. package/email-log/services/email-log-transport.service.js +271 -0
  125. package/email-log/services/index.d.ts +5 -0
  126. package/email-log/services/index.js +21 -0
  127. package/email-log/transports/index.d.ts +1 -0
  128. package/email-log/transports/index.js +17 -0
  129. package/email-log/transports/pino-email.transport.d.ts +56 -0
  130. package/email-log/transports/pino-email.transport.js +188 -0
  131. package/email-log/utils/index.d.ts +2 -0
  132. package/email-log/utils/index.js +18 -0
  133. package/email-log/utils/log-level.helper.d.ts +46 -0
  134. package/email-log/utils/log-level.helper.js +74 -0
  135. package/email-log/utils/pino-transport.utils.d.ts +135 -0
  136. package/email-log/utils/pino-transport.utils.js +238 -0
  137. package/file-upload/controllers/file-access.controller.d.ts +23 -0
  138. package/file-upload/controllers/file-access.controller.js +128 -0
  139. package/file-upload/decorators/column.decorator.d.ts +151 -0
  140. package/file-upload/decorators/column.decorator.js +273 -0
  141. package/file-upload/decorators/csv-data.decorator.d.ts +30 -0
  142. package/file-upload/decorators/csv-data.decorator.js +85 -0
  143. package/file-upload/decorators/csv-import.decorator.d.ts +34 -0
  144. package/file-upload/decorators/csv-import.decorator.js +24 -0
  145. package/file-upload/decorators/examples/column-mapping.example.d.ts +76 -0
  146. package/file-upload/decorators/examples/column-mapping.example.js +122 -0
  147. package/file-upload/decorators/excel-data.decorator.d.ts +30 -0
  148. package/file-upload/decorators/excel-data.decorator.js +85 -0
  149. package/file-upload/decorators/file-upload.decorator.d.ts +83 -0
  150. package/file-upload/decorators/file-upload.decorator.js +172 -0
  151. package/file-upload/decorators/index.d.ts +5 -0
  152. package/file-upload/decorators/index.js +38 -0
  153. package/file-upload/decorators/process.decorator.d.ts +40 -0
  154. package/file-upload/decorators/process.decorator.js +52 -0
  155. package/file-upload/decorators/validate-data.decorator.d.ts +91 -0
  156. package/file-upload/decorators/validate-data.decorator.js +39 -0
  157. package/file-upload/dto/create-file.dto.d.ts +24 -0
  158. package/file-upload/dto/create-file.dto.js +112 -0
  159. package/file-upload/dto/find-files.dto.d.ts +15 -0
  160. package/file-upload/dto/find-files.dto.js +76 -0
  161. package/file-upload/dto/index.d.ts +4 -0
  162. package/file-upload/dto/index.js +20 -0
  163. package/file-upload/dto/pagination.dto.d.ts +7 -0
  164. package/file-upload/dto/pagination.dto.js +39 -0
  165. package/file-upload/dto/update-file.dto.d.ts +15 -0
  166. package/file-upload/dto/update-file.dto.js +67 -0
  167. package/file-upload/entities/file-metadata.entity.d.ts +25 -0
  168. package/file-upload/entities/file-metadata.entity.js +76 -0
  169. package/file-upload/entities/file.entity.d.ts +114 -0
  170. package/file-upload/entities/file.entity.js +350 -0
  171. package/file-upload/entities/index.d.ts +2 -0
  172. package/file-upload/entities/index.js +18 -0
  173. package/file-upload/enums/file-type.enum.d.ts +72 -0
  174. package/file-upload/enums/file-type.enum.js +212 -0
  175. package/file-upload/exceptions/file-upload.exception.d.ts +57 -0
  176. package/file-upload/exceptions/file-upload.exception.js +120 -0
  177. package/file-upload/exceptions/index.d.ts +1 -0
  178. package/file-upload/exceptions/index.js +17 -0
  179. package/file-upload/file-upload.module.d.ts +89 -0
  180. package/file-upload/file-upload.module.js +292 -0
  181. package/file-upload/index.d.ts +37 -0
  182. package/file-upload/index.js +77 -0
  183. package/file-upload/interceptors/file-upload.interceptor.d.ts +101 -0
  184. package/file-upload/interceptors/file-upload.interceptor.js +594 -0
  185. package/file-upload/interceptors/index.d.ts +1 -0
  186. package/file-upload/interceptors/index.js +17 -0
  187. package/file-upload/interfaces/custom-file-type.interface.d.ts +72 -0
  188. package/file-upload/interfaces/custom-file-type.interface.js +2 -0
  189. package/file-upload/interfaces/file-buffer.interface.d.ts +72 -0
  190. package/file-upload/interfaces/file-buffer.interface.js +2 -0
  191. package/file-upload/interfaces/file-entity.interface.d.ts +142 -0
  192. package/file-upload/interfaces/file-entity.interface.js +28 -0
  193. package/file-upload/interfaces/file-metadata.interface.d.ts +21 -0
  194. package/file-upload/interfaces/file-metadata.interface.js +2 -0
  195. package/file-upload/interfaces/file-processor.interface.d.ts +93 -0
  196. package/file-upload/interfaces/file-processor.interface.js +2 -0
  197. package/file-upload/interfaces/file-upload-options.interface.d.ts +74 -0
  198. package/file-upload/interfaces/file-upload-options.interface.js +5 -0
  199. package/file-upload/interfaces/index.d.ts +7 -0
  200. package/file-upload/interfaces/index.js +24 -0
  201. package/file-upload/interfaces/processor-options.interface.d.ts +102 -0
  202. package/file-upload/interfaces/processor-options.interface.js +2 -0
  203. package/file-upload/interfaces/storage-provider.interface.d.ts +239 -0
  204. package/file-upload/interfaces/storage-provider.interface.js +2 -0
  205. package/file-upload/interfaces/upload-options.interface.d.ts +19 -0
  206. package/file-upload/interfaces/upload-options.interface.js +2 -0
  207. package/file-upload/processors/csv.processor.d.ts +98 -0
  208. package/file-upload/processors/csv.processor.js +391 -0
  209. package/file-upload/processors/excel.processor.d.ts +130 -0
  210. package/file-upload/processors/excel.processor.js +547 -0
  211. package/file-upload/processors/image.processor.d.ts +199 -0
  212. package/file-upload/processors/image.processor.js +377 -0
  213. package/file-upload/providers/index.d.ts +2 -0
  214. package/file-upload/providers/index.js +18 -0
  215. package/file-upload/providers/local-storage.provider.d.ts +98 -0
  216. package/file-upload/providers/local-storage.provider.js +484 -0
  217. package/file-upload/providers/s3-storage.provider.d.ts +87 -0
  218. package/file-upload/providers/s3-storage.provider.js +455 -0
  219. package/file-upload/services/file-signature-validator.service.d.ts +118 -0
  220. package/file-upload/services/file-signature-validator.service.js +376 -0
  221. package/file-upload/services/file.service.d.ts +193 -0
  222. package/file-upload/services/file.service.js +638 -0
  223. package/file-upload/services/index.d.ts +4 -0
  224. package/file-upload/services/index.js +20 -0
  225. package/file-upload/services/malicious-file-detector.service.d.ts +300 -0
  226. package/file-upload/services/malicious-file-detector.service.js +1234 -0
  227. package/file-upload/services/mime-registry.service.d.ts +47 -0
  228. package/file-upload/services/mime-registry.service.js +167 -0
  229. package/file-upload/utils/checksum.util.d.ts +28 -0
  230. package/file-upload/utils/checksum.util.js +65 -0
  231. package/file-upload/utils/dynamic-import.util.d.ts +54 -0
  232. package/file-upload/utils/dynamic-import.util.js +156 -0
  233. package/file-upload/utils/filename.util.d.ts +59 -0
  234. package/file-upload/utils/filename.util.js +184 -0
  235. package/file-upload/utils/filepath.util.d.ts +70 -0
  236. package/file-upload/utils/filepath.util.js +152 -0
  237. package/file-upload/utils/index.d.ts +4 -0
  238. package/file-upload/utils/index.js +20 -0
  239. package/filters/bad-request.filter.d.ts +9 -0
  240. package/filters/bad-request.filter.js +57 -16
  241. package/http-client/config/http-client.config.d.ts +5 -0
  242. package/http-client/config/http-client.config.js +27 -14
  243. package/http-client/decorators/http-client.decorators.d.ts +7 -28
  244. package/http-client/decorators/http-client.decorators.js +124 -99
  245. package/http-client/entities/http-log.entity.d.ts +0 -20
  246. package/http-client/entities/http-log.entity.js +1 -21
  247. package/http-client/examples/advanced-usage.example.d.ts +4 -5
  248. package/http-client/examples/advanced-usage.example.js +7 -59
  249. package/http-client/examples/axios-config-extended.example.d.ts +17 -0
  250. package/http-client/examples/axios-config-extended.example.js +311 -0
  251. package/http-client/examples/flexible-response-example.d.ts +28 -0
  252. package/http-client/examples/flexible-response-example.js +120 -0
  253. package/http-client/examples/index.d.ts +2 -0
  254. package/http-client/examples/index.js +2 -0
  255. package/http-client/examples/proxy-from-environment.example.d.ts +133 -0
  256. package/http-client/examples/proxy-from-environment.example.js +409 -0
  257. package/http-client/examples/ssl-certificate.example.d.ts +47 -0
  258. package/http-client/examples/ssl-certificate.example.js +432 -0
  259. package/http-client/http-client.module.d.ts +43 -2
  260. package/http-client/http-client.module.js +150 -90
  261. package/http-client/index.d.ts +1 -1
  262. package/http-client/interfaces/api-client-config.interface.d.ts +24 -103
  263. package/http-client/interfaces/http-client-config.interface.d.ts +137 -62
  264. package/http-client/services/api-client-registry.service.d.ts +8 -21
  265. package/http-client/services/api-client-registry.service.js +31 -282
  266. package/http-client/services/circuit-breaker.service.d.ts +69 -2
  267. package/http-client/services/circuit-breaker.service.js +185 -7
  268. package/http-client/services/http-client.service.d.ts +85 -23
  269. package/http-client/services/http-client.service.js +512 -168
  270. package/http-client/services/http-log-query.service.js +0 -13
  271. package/http-client/services/index.d.ts +0 -1
  272. package/http-client/services/index.js +0 -1
  273. package/http-client/services/logging.service.d.ts +69 -16
  274. package/http-client/services/logging.service.js +290 -170
  275. package/http-client/utils/call-stack-extractor.util.d.ts +26 -0
  276. package/http-client/utils/call-stack-extractor.util.js +35 -0
  277. package/http-client/utils/context-extractor.util.d.ts +2 -0
  278. package/http-client/utils/context-extractor.util.js +17 -3
  279. package/http-client/utils/curl-generator.util.js +2 -5
  280. package/http-client/utils/index.d.ts +2 -0
  281. package/http-client/utils/index.js +2 -0
  282. package/http-client/utils/proxy-environment.util.d.ts +42 -0
  283. package/http-client/utils/proxy-environment.util.js +154 -0
  284. package/http-client/utils/retry-recorder.util.d.ts +0 -4
  285. package/http-client/utils/retry-recorder.util.js +2 -27
  286. package/http-client/utils/sanitize.util.d.ts +58 -0
  287. package/http-client/utils/sanitize.util.js +188 -0
  288. package/http-client/utils/security-validator.util.d.ts +118 -0
  289. package/http-client/utils/security-validator.util.js +354 -0
  290. package/index.d.ts +4 -1
  291. package/index.js +6 -1
  292. package/interceptors/translation-interceptor.service.d.ts +7 -0
  293. package/interceptors/translation-interceptor.service.js +40 -8
  294. package/ip-filter/constants.d.ts +21 -0
  295. package/ip-filter/constants.js +24 -0
  296. package/ip-filter/decorators/index.d.ts +1 -0
  297. package/ip-filter/decorators/index.js +17 -0
  298. package/ip-filter/decorators/ip-filter.decorator.d.ts +58 -0
  299. package/ip-filter/decorators/ip-filter.decorator.js +79 -0
  300. package/ip-filter/guards/index.d.ts +1 -0
  301. package/ip-filter/guards/index.js +17 -0
  302. package/ip-filter/guards/ip-filter.guard.d.ts +62 -0
  303. package/ip-filter/guards/ip-filter.guard.js +174 -0
  304. package/ip-filter/index.d.ts +7 -0
  305. package/ip-filter/index.js +23 -0
  306. package/ip-filter/interfaces/index.d.ts +4 -0
  307. package/ip-filter/interfaces/index.js +20 -0
  308. package/ip-filter/interfaces/ip-filter-async-options.interface.d.ts +15 -0
  309. package/ip-filter/interfaces/ip-filter-async-options.interface.js +2 -0
  310. package/ip-filter/interfaces/ip-filter-metadata.interface.d.ts +26 -0
  311. package/ip-filter/interfaces/ip-filter-metadata.interface.js +2 -0
  312. package/ip-filter/interfaces/ip-filter-options.interface.d.ts +34 -0
  313. package/ip-filter/interfaces/ip-filter-options.interface.js +2 -0
  314. package/ip-filter/interfaces/ip-rule.interface.d.ts +36 -0
  315. package/ip-filter/interfaces/ip-rule.interface.js +2 -0
  316. package/ip-filter/ip-filter.module.d.ts +55 -0
  317. package/ip-filter/ip-filter.module.js +105 -0
  318. package/ip-filter/services/index.d.ts +1 -0
  319. package/ip-filter/services/index.js +17 -0
  320. package/ip-filter/services/ip-filter.service.d.ts +92 -0
  321. package/ip-filter/services/ip-filter.service.js +238 -0
  322. package/ip-filter/utils/index.d.ts +1 -0
  323. package/ip-filter/utils/index.js +17 -0
  324. package/ip-filter/utils/ip-utils.d.ts +61 -0
  325. package/ip-filter/utils/ip-utils.js +162 -0
  326. package/package.json +34 -29
  327. package/providers/context.provider.d.ts +9 -0
  328. package/providers/context.provider.js +13 -0
  329. package/redis-lock/comprehensive-lock-cleanup.service.d.ts +94 -0
  330. package/redis-lock/comprehensive-lock-cleanup.service.js +253 -0
  331. package/redis-lock/index.d.ts +2 -0
  332. package/redis-lock/index.js +5 -1
  333. package/redis-lock/lock-heartbeat.service.d.ts +80 -0
  334. package/redis-lock/lock-heartbeat.service.js +232 -0
  335. package/redis-lock/redis-lock.module.d.ts +6 -0
  336. package/redis-lock/redis-lock.module.js +136 -77
  337. package/redis-lock/redis-lock.service.d.ts +31 -0
  338. package/redis-lock/redis-lock.service.js +124 -17
  339. package/setup/bootstrap.setup.d.ts +2 -1
  340. package/setup/bootstrap.setup.js +3 -2
  341. package/setup/index.d.ts +1 -0
  342. package/setup/index.js +1 -0
  343. package/setup/run-in-mode.decorator.d.ts +56 -0
  344. package/setup/run-in-mode.decorator.js +92 -0
  345. package/setup/schedule.decorator.d.ts +1 -0
  346. package/setup/schedule.decorator.js +28 -13
  347. package/setup/worker.decorator.js +10 -1
  348. package/shared/index.d.ts +1 -1
  349. package/shared/index.js +1 -1
  350. package/shared/{serviceRegistryModule.js → service-registry.module.js} +28 -17
  351. package/shared/services/api-config.service.d.ts +41 -0
  352. package/shared/services/api-config.service.js +175 -8
  353. package/shared/services/index.d.ts +0 -1
  354. package/shared/services/index.js +0 -1
  355. package/validators/custom-validate.validator.d.ts +1 -0
  356. package/validators/custom-validate.validator.js +1 -0
  357. package/validators/file-mimetype.validator.d.ts +0 -2
  358. package/validators/file-mimetype.validator.js +4 -6
  359. package/validators/is-exists.validator.d.ts +15 -6
  360. package/validators/is-exists.validator.js +8 -7
  361. package/validators/is-unique.validator.d.ts +22 -7
  362. package/validators/is-unique.validator.js +41 -17
  363. package/vault/vault-config.service.js +1 -1
  364. package/cache/providers/memory-cache.provider.d.ts +0 -49
  365. package/cache/providers/memory-cache.provider.js +0 -197
  366. package/http-client/services/cache.service.d.ts +0 -76
  367. package/http-client/services/cache.service.js +0 -333
  368. package/shared/services/validator.service.d.ts +0 -3
  369. package/shared/services/validator.service.js +0 -20
  370. /package/shared/{serviceRegistryModule.d.ts → service-registry.module.d.ts} +0 -0
@@ -0,0 +1,71 @@
1
+ /**
2
+ * TypeORM Cache Entity
3
+ *
4
+ * Stores cached data in the database with automatic expiration support.
5
+ * Used by TypeormCacheProvider for persistent caching.
6
+ *
7
+ * Features:
8
+ * - Namespace isolation for different cache segments
9
+ * - Automatic expiration handling
10
+ * - TTL tracking
11
+ * - Value JSON serialization
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * // In your TypeORM configuration:
16
+ * {
17
+ * entities: [TypeormCacheEntity],
18
+ * // ... other options
19
+ * }
20
+ * ```
21
+ */
22
+ export declare class TypeormCacheEntity {
23
+ /**
24
+ * Composite key: namespace + key
25
+ * Allows same key in different namespaces
26
+ */
27
+ key: string;
28
+ /**
29
+ * Namespace for cache isolation
30
+ * Multiple applications can share the same table
31
+ */
32
+ namespace: string;
33
+ /**
34
+ * Cached value (JSON serialized)
35
+ */
36
+ value: string;
37
+ /**
38
+ * Expiration timestamp
39
+ * NULL means no expiration
40
+ */
41
+ expires_at: Date | null;
42
+ /**
43
+ * Time to live in seconds
44
+ * Stored for reference and debugging
45
+ */
46
+ ttl: number | null;
47
+ /**
48
+ * Creation timestamp
49
+ */
50
+ created_at: Date;
51
+ /**
52
+ * Last update timestamp
53
+ */
54
+ updated_at: Date;
55
+ /**
56
+ * Check if entry is expired
57
+ */
58
+ isExpired(): boolean;
59
+ /**
60
+ * Check if entry is valid (not expired)
61
+ */
62
+ isValid(): boolean;
63
+ /**
64
+ * Update value and expiration
65
+ */
66
+ updateValue(newValue: string, ttl?: number): void;
67
+ /**
68
+ * Get remaining time to live in milliseconds
69
+ */
70
+ getRemainingTTL(): number;
71
+ }
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.TypeormCacheEntity = void 0;
13
+ const typeorm_1 = require("typeorm");
14
+ /**
15
+ * TypeORM Cache Entity
16
+ *
17
+ * Stores cached data in the database with automatic expiration support.
18
+ * Used by TypeormCacheProvider for persistent caching.
19
+ *
20
+ * Features:
21
+ * - Namespace isolation for different cache segments
22
+ * - Automatic expiration handling
23
+ * - TTL tracking
24
+ * - Value JSON serialization
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * // In your TypeORM configuration:
29
+ * {
30
+ * entities: [TypeormCacheEntity],
31
+ * // ... other options
32
+ * }
33
+ * ```
34
+ */
35
+ let TypeormCacheEntity = class TypeormCacheEntity {
36
+ /**
37
+ * Check if entry is expired
38
+ */
39
+ isExpired() {
40
+ if (!this.expires_at) {
41
+ return false;
42
+ }
43
+ return new Date() > this.expires_at;
44
+ }
45
+ /**
46
+ * Check if entry is valid (not expired)
47
+ */
48
+ isValid() {
49
+ return !this.isExpired();
50
+ }
51
+ /**
52
+ * Update value and expiration
53
+ */
54
+ updateValue(newValue, ttl) {
55
+ this.value = newValue;
56
+ if (ttl && ttl > 0) {
57
+ this.ttl = Math.floor(ttl / 1000);
58
+ this.expires_at = new Date(Date.now() + ttl);
59
+ }
60
+ else {
61
+ this.ttl = null;
62
+ this.expires_at = null;
63
+ }
64
+ }
65
+ /**
66
+ * Get remaining time to live in milliseconds
67
+ */
68
+ getRemainingTTL() {
69
+ if (!this.expires_at) {
70
+ return -1; // No expiration
71
+ }
72
+ const remaining = this.expires_at.getTime() - Date.now();
73
+ return Math.max(0, remaining);
74
+ }
75
+ };
76
+ exports.TypeormCacheEntity = TypeormCacheEntity;
77
+ __decorate([
78
+ (0, typeorm_1.PrimaryColumn)({ type: 'varchar', length: 255 }),
79
+ (0, typeorm_1.Index)(),
80
+ __metadata("design:type", String)
81
+ ], TypeormCacheEntity.prototype, "key", void 0);
82
+ __decorate([
83
+ (0, typeorm_1.PrimaryColumn)({ type: 'varchar', length: 255 }),
84
+ (0, typeorm_1.Index)(),
85
+ __metadata("design:type", String)
86
+ ], TypeormCacheEntity.prototype, "namespace", void 0);
87
+ __decorate([
88
+ (0, typeorm_1.Column)({ type: 'text' }),
89
+ __metadata("design:type", String)
90
+ ], TypeormCacheEntity.prototype, "value", void 0);
91
+ __decorate([
92
+ (0, typeorm_1.Column)({ type: 'datetime', nullable: true }),
93
+ (0, typeorm_1.Index)(),
94
+ __metadata("design:type", Date)
95
+ ], TypeormCacheEntity.prototype, "expires_at", void 0);
96
+ __decorate([
97
+ (0, typeorm_1.Column)({ type: 'int', nullable: true }),
98
+ __metadata("design:type", Number)
99
+ ], TypeormCacheEntity.prototype, "ttl", void 0);
100
+ __decorate([
101
+ (0, typeorm_1.CreateDateColumn)({ type: 'datetime', name: 'created_at' }),
102
+ __metadata("design:type", Date)
103
+ ], TypeormCacheEntity.prototype, "created_at", void 0);
104
+ __decorate([
105
+ (0, typeorm_1.UpdateDateColumn)({ type: 'datetime', name: 'updated_at' }),
106
+ __metadata("design:type", Date)
107
+ ], TypeormCacheEntity.prototype, "updated_at", void 0);
108
+ exports.TypeormCacheEntity = TypeormCacheEntity = __decorate([
109
+ (0, typeorm_1.Entity)('typeorm_cache')
110
+ ], TypeormCacheEntity);
package/cache/index.d.ts CHANGED
@@ -6,9 +6,10 @@ export { CacheWarmupService, type CacheWarmupConfig, type CacheWarmupResult, } f
6
6
  export { CacheMetricsService, type CacheMetrics, type CacheOperationRecord, } from './cache-metrics.service';
7
7
  export { CacheSerializationService, type CacheSerializationOptions, type SerializationResult, type DeserializationResult, } from './cache-serialization.service';
8
8
  export { Cacheable, CacheEvict, CachePut, getCacheService, setCacheService, } from './decorators';
9
- export { ClsCacheProvider, MemoryCacheProvider, RedisCacheProvider, BaseCacheProvider, } from './providers';
9
+ export { ClsCacheProvider, LRUCacheProvider, TypeormCacheProvider, RedisCacheProvider, BaseCacheProvider, } from './providers';
10
10
  export { REDIS_CLIENT } from './providers/redis-cache.provider';
11
11
  export type { CacheProvider } from './interfaces/cache-provider.interface';
12
+ export * from './entities';
12
13
  export { CallbackDependency, ChainDependency, DbDependency, FileDependency, TagDependency, TimeDependency, } from './dependencies';
13
14
  export { CacheLayer, type CacheDependency, type CacheEvictOptions, type CacheOptions, type CachePutOptions, type CacheableOptions, type CacheStats, type DependencyData, } from './interfaces';
14
15
  export { DependencyManager, KeyGenerator, type CachedValueWithDependencies, } from './utils';
package/cache/index.js CHANGED
@@ -1,6 +1,20 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.KeyGenerator = exports.DependencyManager = exports.CacheLayer = exports.TimeDependency = exports.TagDependency = exports.FileDependency = exports.DbDependency = exports.ChainDependency = exports.CallbackDependency = exports.REDIS_CLIENT = exports.BaseCacheProvider = exports.RedisCacheProvider = exports.MemoryCacheProvider = exports.ClsCacheProvider = exports.setCacheService = exports.getCacheService = exports.CachePut = exports.CacheEvict = exports.Cacheable = exports.CacheSerializationService = exports.CacheMetricsService = exports.CacheWarmupService = exports.CacheHealthChecker = exports.CacheService = exports.CACHE_COMPRESSION_THRESHOLD = exports.CACHE_COMPRESSION_ENABLED = exports.CACHE_SERVICE = exports.CacheModule = void 0;
17
+ exports.KeyGenerator = exports.DependencyManager = exports.CacheLayer = exports.TimeDependency = exports.TagDependency = exports.FileDependency = exports.DbDependency = exports.ChainDependency = exports.CallbackDependency = exports.REDIS_CLIENT = exports.BaseCacheProvider = exports.RedisCacheProvider = exports.TypeormCacheProvider = exports.LRUCacheProvider = exports.ClsCacheProvider = exports.setCacheService = exports.getCacheService = exports.CachePut = exports.CacheEvict = exports.Cacheable = exports.CacheSerializationService = exports.CacheMetricsService = exports.CacheWarmupService = exports.CacheHealthChecker = exports.CacheService = exports.CACHE_COMPRESSION_THRESHOLD = exports.CACHE_COMPRESSION_ENABLED = exports.CACHE_SERVICE = exports.CacheModule = void 0;
4
18
  // Module
5
19
  var cache_module_1 = require("./cache.module");
6
20
  Object.defineProperty(exports, "CacheModule", { enumerable: true, get: function () { return cache_module_1.CacheModule; } });
@@ -31,11 +45,14 @@ Object.defineProperty(exports, "setCacheService", { enumerable: true, get: funct
31
45
  // Providers
32
46
  var providers_1 = require("./providers");
33
47
  Object.defineProperty(exports, "ClsCacheProvider", { enumerable: true, get: function () { return providers_1.ClsCacheProvider; } });
34
- Object.defineProperty(exports, "MemoryCacheProvider", { enumerable: true, get: function () { return providers_1.MemoryCacheProvider; } });
48
+ Object.defineProperty(exports, "LRUCacheProvider", { enumerable: true, get: function () { return providers_1.LRUCacheProvider; } });
49
+ Object.defineProperty(exports, "TypeormCacheProvider", { enumerable: true, get: function () { return providers_1.TypeormCacheProvider; } });
35
50
  Object.defineProperty(exports, "RedisCacheProvider", { enumerable: true, get: function () { return providers_1.RedisCacheProvider; } });
36
51
  Object.defineProperty(exports, "BaseCacheProvider", { enumerable: true, get: function () { return providers_1.BaseCacheProvider; } });
37
52
  var redis_cache_provider_1 = require("./providers/redis-cache.provider");
38
53
  Object.defineProperty(exports, "REDIS_CLIENT", { enumerable: true, get: function () { return redis_cache_provider_1.REDIS_CLIENT; } });
54
+ // Entities
55
+ __exportStar(require("./entities"), exports);
39
56
  // Dependencies
40
57
  var dependencies_1 = require("./dependencies");
41
58
  Object.defineProperty(exports, "CallbackDependency", { enumerable: true, get: function () { return dependencies_1.CallbackDependency; } });
@@ -35,6 +35,14 @@ export interface CacheOptions {
35
35
  * @returns true to cache, false to skip
36
36
  */
37
37
  condition?: (...args: any[]) => boolean | Promise<boolean>;
38
+ /**
39
+ * Unless condition - skip caching when this condition is true
40
+ * Can be a function (safe) or a string expression (use with caution)
41
+ * @param result - Method return value
42
+ * @param args - Method arguments
43
+ * @returns true to skip caching, false to cache normally
44
+ */
45
+ unless?: ((result: any, args: any[]) => boolean) | string;
38
46
  /**
39
47
  * Cache dependencies - cache will be invalidated when dependencies change
40
48
  * Similar to Yii2 cache dependency system
@@ -1,4 +1,5 @@
1
1
  export * from './base-cache.provider';
2
2
  export * from './cls-cache.provider';
3
- export * from './memory-cache.provider';
3
+ export * from './lrucache.provider';
4
+ export * from './typeorm-cache.provider';
4
5
  export { REDIS_CLIENT, RedisCacheProvider } from './redis-cache.provider';
@@ -17,7 +17,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.RedisCacheProvider = exports.REDIS_CLIENT = void 0;
18
18
  __exportStar(require("./base-cache.provider"), exports);
19
19
  __exportStar(require("./cls-cache.provider"), exports);
20
- __exportStar(require("./memory-cache.provider"), exports);
20
+ __exportStar(require("./lrucache.provider"), exports);
21
+ __exportStar(require("./typeorm-cache.provider"), exports);
21
22
  var redis_cache_provider_1 = require("./redis-cache.provider");
22
23
  Object.defineProperty(exports, "REDIS_CLIENT", { enumerable: true, get: function () { return redis_cache_provider_1.REDIS_CLIENT; } });
23
24
  Object.defineProperty(exports, "RedisCacheProvider", { enumerable: true, get: function () { return redis_cache_provider_1.RedisCacheProvider; } });
@@ -0,0 +1,77 @@
1
+ import { OnModuleDestroy } from '@nestjs/common';
2
+ import { BaseCacheProvider } from './base-cache.provider';
3
+ /**
4
+ * LRU Memory Cache Provider
5
+ *
6
+ * High-performance in-memory LRU (Least Recently Used) cache provider.
7
+ * This is an L2 cache layer with fast access and automatic eviction.
8
+ *
9
+ * Features:
10
+ * - O(1) get/set operations
11
+ * - Automatic LRU eviction when cache is full
12
+ * - Optional TTL (Time To Live) support
13
+ * - Namespace isolation
14
+ * - Cache statistics (size, hit rate, usage percentage)
15
+ *
16
+ * Use Cases:
17
+ * - Session data caching
18
+ * - Frequently accessed configuration
19
+ * - API response caching
20
+ * - Temporary data storage
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * const provider = new LRUCacheProvider({
25
+ * maxSize: 1000,
26
+ * ttl: 60000, // optional TTL
27
+ * namespace: 'my-cache',
28
+ * });
29
+ * ```
30
+ */
31
+ export declare class LRUCacheProvider extends BaseCacheProvider implements OnModuleDestroy {
32
+ private readonly logger;
33
+ private cache;
34
+ private namespace;
35
+ private defaultTtl?;
36
+ constructor(options?: {
37
+ maxSize?: number;
38
+ ttl?: number;
39
+ namespace?: string;
40
+ });
41
+ getName(): string;
42
+ get<T>(key: string): Promise<T | null>;
43
+ set<T>(key: string, value: T, ttl?: number): Promise<void>;
44
+ delete(key: string | string[]): Promise<void>;
45
+ deletePattern(pattern: string): Promise<number>;
46
+ clear(): Promise<void>;
47
+ has(key: string): Promise<boolean>;
48
+ mget<T>(keys: string[]): Promise<(T | null)[]>;
49
+ mset(items: Array<{
50
+ key: string;
51
+ value: any;
52
+ }>, ttl?: number): Promise<void>;
53
+ /**
54
+ * Get cache size
55
+ */
56
+ getSize(): number;
57
+ /**
58
+ * Get cache statistics
59
+ */
60
+ getStats(): {
61
+ provider: string;
62
+ namespace: string;
63
+ size: any;
64
+ maxSize: any;
65
+ calculatedSize: any;
66
+ usagePercentage: number;
67
+ };
68
+ /**
69
+ * Clean up expired items
70
+ */
71
+ cleanup(): number;
72
+ /**
73
+ * Destroy the provider
74
+ */
75
+ onModuleDestroy(): void;
76
+ private getFullKey;
77
+ }
@@ -0,0 +1,228 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
12
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
13
+ return new (P || (P = Promise))(function (resolve, reject) {
14
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
15
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
16
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
17
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
18
+ });
19
+ };
20
+ var LRUCacheProvider_1;
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.LRUCacheProvider = void 0;
23
+ const common_1 = require("@nestjs/common");
24
+ const base_cache_provider_1 = require("./base-cache.provider");
25
+ // Dynamic import to handle ESM/CommonJS interop
26
+ const LRUCacheClass = require('lru-cache').LRUCache;
27
+ /**
28
+ * LRU Memory Cache Provider
29
+ *
30
+ * High-performance in-memory LRU (Least Recently Used) cache provider.
31
+ * This is an L2 cache layer with fast access and automatic eviction.
32
+ *
33
+ * Features:
34
+ * - O(1) get/set operations
35
+ * - Automatic LRU eviction when cache is full
36
+ * - Optional TTL (Time To Live) support
37
+ * - Namespace isolation
38
+ * - Cache statistics (size, hit rate, usage percentage)
39
+ *
40
+ * Use Cases:
41
+ * - Session data caching
42
+ * - Frequently accessed configuration
43
+ * - API response caching
44
+ * - Temporary data storage
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * const provider = new LRUCacheProvider({
49
+ * maxSize: 1000,
50
+ * ttl: 60000, // optional TTL
51
+ * namespace: 'my-cache',
52
+ * });
53
+ * ```
54
+ */
55
+ let LRUCacheProvider = LRUCacheProvider_1 = class LRUCacheProvider extends base_cache_provider_1.BaseCacheProvider {
56
+ constructor(options) {
57
+ super();
58
+ this.logger = new common_1.Logger(LRUCacheProvider_1.name);
59
+ const { maxSize = 500, ttl, namespace = 'cache:lru' } = options || {};
60
+ this.namespace = namespace;
61
+ this.defaultTtl = ttl;
62
+ this.cache = new LRUCacheClass({
63
+ max: maxSize,
64
+ ttl: ttl,
65
+ updateAgeOnGet: true,
66
+ updateAgeOnHas: true,
67
+ });
68
+ }
69
+ getName() {
70
+ return 'LRUMemory';
71
+ }
72
+ get(key) {
73
+ return __awaiter(this, void 0, void 0, function* () {
74
+ try {
75
+ const fullKey = this.getFullKey(key);
76
+ const value = this.cache.get(fullKey);
77
+ return value !== undefined ? value : null;
78
+ }
79
+ catch (error) {
80
+ this.logger.warn(`Failed to get key ${key}: ${error instanceof Error ? error.message : String(error)}`);
81
+ return null;
82
+ }
83
+ });
84
+ }
85
+ set(key, value, ttl) {
86
+ return __awaiter(this, void 0, void 0, function* () {
87
+ try {
88
+ const fullKey = this.getFullKey(key);
89
+ const effectiveTtl = ttl !== null && ttl !== void 0 ? ttl : this.defaultTtl;
90
+ this.cache.set(fullKey, value, { ttl: effectiveTtl });
91
+ }
92
+ catch (error) {
93
+ throw new Error(`LRUCacheProvider: Failed to set key ${key}: ${error}`);
94
+ }
95
+ });
96
+ }
97
+ delete(key) {
98
+ return __awaiter(this, void 0, void 0, function* () {
99
+ try {
100
+ if (Array.isArray(key)) {
101
+ key.forEach((k) => {
102
+ const fullKey = this.getFullKey(k);
103
+ this.cache.delete(fullKey);
104
+ });
105
+ }
106
+ else {
107
+ const fullKey = this.getFullKey(key);
108
+ this.cache.delete(fullKey);
109
+ }
110
+ }
111
+ catch (error) {
112
+ throw new Error(`LRUCacheProvider: Failed to delete keys: ${error}`);
113
+ }
114
+ });
115
+ }
116
+ deletePattern(pattern) {
117
+ return __awaiter(this, void 0, void 0, function* () {
118
+ try {
119
+ const regex = this.patternToRegex(pattern);
120
+ const keys = Array.from(this.cache.keys());
121
+ let deleted = 0;
122
+ for (const key of keys) {
123
+ if (regex.test(String(key))) {
124
+ this.cache.delete(key);
125
+ deleted++;
126
+ }
127
+ }
128
+ return deleted;
129
+ }
130
+ catch (error) {
131
+ throw new Error(`LRUCacheProvider: Failed to delete pattern ${pattern}: ${error}`);
132
+ }
133
+ });
134
+ }
135
+ clear() {
136
+ return __awaiter(this, void 0, void 0, function* () {
137
+ try {
138
+ this.cache.clear();
139
+ }
140
+ catch (error) {
141
+ throw new Error(`LRUCacheProvider: Failed to clear cache: ${error}`);
142
+ }
143
+ });
144
+ }
145
+ has(key) {
146
+ return __awaiter(this, void 0, void 0, function* () {
147
+ try {
148
+ const fullKey = this.getFullKey(key);
149
+ return this.cache.has(fullKey);
150
+ }
151
+ catch (error) {
152
+ return false;
153
+ }
154
+ });
155
+ }
156
+ mget(keys) {
157
+ return __awaiter(this, void 0, void 0, function* () {
158
+ try {
159
+ return keys.map((key) => {
160
+ const fullKey = this.getFullKey(key);
161
+ const value = this.cache.get(fullKey);
162
+ return value !== undefined ? value : null;
163
+ });
164
+ }
165
+ catch (error) {
166
+ this.logger.warn(`Failed to mget: ${error instanceof Error ? error.message : String(error)}`);
167
+ return keys.map(() => null);
168
+ }
169
+ });
170
+ }
171
+ mset(items, ttl) {
172
+ return __awaiter(this, void 0, void 0, function* () {
173
+ try {
174
+ const effectiveTtl = ttl !== null && ttl !== void 0 ? ttl : this.defaultTtl;
175
+ items.forEach((item) => {
176
+ const fullKey = this.getFullKey(item.key);
177
+ this.cache.set(fullKey, item.value, { ttl: effectiveTtl });
178
+ });
179
+ }
180
+ catch (error) {
181
+ throw new Error(`LRUCacheProvider: Failed to mset: ${error}`);
182
+ }
183
+ });
184
+ }
185
+ /**
186
+ * Get cache size
187
+ */
188
+ getSize() {
189
+ return this.cache.size;
190
+ }
191
+ /**
192
+ * Get cache statistics
193
+ */
194
+ getStats() {
195
+ return {
196
+ provider: 'LRUMemory',
197
+ namespace: this.namespace,
198
+ size: this.cache.size,
199
+ maxSize: this.cache.max,
200
+ calculatedSize: this.cache.calculatedSize,
201
+ usagePercentage: this.cache.max
202
+ ? (this.cache.size / this.cache.max) * 100
203
+ : 0,
204
+ };
205
+ }
206
+ /**
207
+ * Clean up expired items
208
+ */
209
+ cleanup() {
210
+ const beforeSize = this.cache.size;
211
+ this.cache.purgeStale();
212
+ return beforeSize - this.cache.size;
213
+ }
214
+ /**
215
+ * Destroy the provider
216
+ */
217
+ onModuleDestroy() {
218
+ this.cache.clear();
219
+ }
220
+ getFullKey(key) {
221
+ return `${this.namespace}:${key}`;
222
+ }
223
+ };
224
+ exports.LRUCacheProvider = LRUCacheProvider;
225
+ exports.LRUCacheProvider = LRUCacheProvider = LRUCacheProvider_1 = __decorate([
226
+ (0, common_1.Injectable)(),
227
+ __metadata("design:paramtypes", [Object])
228
+ ], LRUCacheProvider);
@@ -14,6 +14,7 @@ export declare const REDIS_CLIENT: unique symbol;
14
14
  */
15
15
  export declare class RedisCacheProvider extends BaseCacheProvider {
16
16
  private readonly redis?;
17
+ private readonly logger;
17
18
  private readonly keyPrefix;
18
19
  constructor(redis?: Redis);
19
20
  getName(): string;
@@ -20,6 +20,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
20
20
  step((generator = generator.apply(thisArg, _arguments || [])).next());
21
21
  });
22
22
  };
23
+ var RedisCacheProvider_1;
23
24
  Object.defineProperty(exports, "__esModule", { value: true });
24
25
  exports.RedisCacheProvider = exports.REDIS_CLIENT = void 0;
25
26
  const common_1 = require("@nestjs/common");
@@ -36,13 +37,14 @@ exports.REDIS_CLIENT = Symbol('REDIS_CLIENT');
36
37
  *
37
38
  * Slowest but most persistent and widely shared cache layer.
38
39
  */
39
- let RedisCacheProvider = class RedisCacheProvider extends base_cache_provider_1.BaseCacheProvider {
40
+ let RedisCacheProvider = RedisCacheProvider_1 = class RedisCacheProvider extends base_cache_provider_1.BaseCacheProvider {
40
41
  constructor(redis) {
41
42
  super();
42
43
  this.redis = redis;
44
+ this.logger = new common_1.Logger(RedisCacheProvider_1.name);
43
45
  this.keyPrefix = 'cache:';
44
46
  if (!redis) {
45
- console.warn('RedisCacheProvider: Redis client not injected. Redis caching will be disabled.');
47
+ this.logger.warn('Redis client not injected. Redis caching will be disabled.');
46
48
  }
47
49
  }
48
50
  getName() {
@@ -62,7 +64,7 @@ let RedisCacheProvider = class RedisCacheProvider extends base_cache_provider_1.
62
64
  return JSON.parse(value);
63
65
  }
64
66
  catch (error) {
65
- console.warn(`RedisCacheProvider: Failed to get key ${key}: ${error instanceof Error ? error.message : String(error)}`);
67
+ this.logger.warn(`Failed to get key ${key}: ${error instanceof Error ? error.message : String(error)}`);
66
68
  return null;
67
69
  }
68
70
  });
@@ -126,7 +128,7 @@ let RedisCacheProvider = class RedisCacheProvider extends base_cache_provider_1.
126
128
  return deletedCount;
127
129
  }
128
130
  catch (error) {
129
- console.warn(`RedisCacheProvider: deletePattern failed: ${error instanceof Error ? error.message : String(error)}`);
131
+ this.logger.warn(`deletePattern failed: ${error instanceof Error ? error.message : String(error)}`);
130
132
  return 0;
131
133
  }
132
134
  });
@@ -184,7 +186,7 @@ let RedisCacheProvider = class RedisCacheProvider extends base_cache_provider_1.
184
186
  });
185
187
  }
186
188
  catch (error) {
187
- console.warn(`RedisCacheProvider: mget failed: ${error instanceof Error ? error.message : String(error)}`);
189
+ this.logger.warn(`mget failed: ${error instanceof Error ? error.message : String(error)}`);
188
190
  return keys.map(() => null);
189
191
  }
190
192
  });
@@ -236,7 +238,7 @@ let RedisCacheProvider = class RedisCacheProvider extends base_cache_provider_1.
236
238
  }
237
239
  };
238
240
  exports.RedisCacheProvider = RedisCacheProvider;
239
- exports.RedisCacheProvider = RedisCacheProvider = __decorate([
241
+ exports.RedisCacheProvider = RedisCacheProvider = RedisCacheProvider_1 = __decorate([
240
242
  (0, common_1.Injectable)(),
241
243
  __param(0, (0, common_1.Optional)()),
242
244
  __param(0, (0, common_1.Inject)(exports.REDIS_CLIENT)),