@nest-omni/core 4.1.3-1 → 4.1.3-11

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 (249) hide show
  1. package/audit/audit.module.d.ts +10 -0
  2. package/audit/audit.module.js +39 -1
  3. package/audit/controllers/audit.controller.d.ts +24 -0
  4. package/audit/controllers/audit.controller.js +24 -0
  5. package/audit/decorators/audit-controller.decorator.d.ts +9 -1
  6. package/audit/decorators/audit-controller.decorator.js +11 -2
  7. package/audit/decorators/audit-operation.decorator.d.ts +45 -0
  8. package/audit/decorators/audit-operation.decorator.js +49 -0
  9. package/audit/decorators/entity-audit.decorator.d.ts +76 -1
  10. package/audit/decorators/entity-audit.decorator.js +135 -3
  11. package/audit/decorators/index.d.ts +1 -0
  12. package/audit/decorators/index.js +1 -0
  13. package/audit/dto/audit-log-query.dto.d.ts +3 -0
  14. package/audit/dto/audit-log-query.dto.js +3 -0
  15. package/audit/dto/begin-transaction.dto.d.ts +3 -0
  16. package/audit/dto/begin-transaction.dto.js +3 -0
  17. package/audit/dto/compare-entities.dto.d.ts +3 -0
  18. package/audit/dto/compare-entities.dto.js +3 -0
  19. package/audit/dto/pre-check-restore.dto.d.ts +3 -0
  20. package/audit/dto/pre-check-restore.dto.js +3 -0
  21. package/audit/dto/restore-entity.dto.d.ts +3 -0
  22. package/audit/dto/restore-entity.dto.js +3 -0
  23. package/audit/entities/entity-audit-log.entity.d.ts +8 -0
  24. package/audit/entities/entity-audit-log.entity.js +33 -1
  25. package/audit/entities/entity-transaction.entity.d.ts +10 -0
  26. package/audit/entities/entity-transaction.entity.js +33 -1
  27. package/audit/entities/index.d.ts +2 -0
  28. package/audit/entities/index.js +2 -0
  29. package/audit/entities/manual-operation-log.entity.d.ts +4 -0
  30. package/audit/entities/manual-operation-log.entity.js +4 -0
  31. package/audit/entities/operation-template.entity.d.ts +4 -0
  32. package/audit/entities/operation-template.entity.js +4 -0
  33. package/audit/enums/audit.enums.d.ts +45 -5
  34. package/audit/enums/audit.enums.js +47 -4
  35. package/audit/index.d.ts +3 -1
  36. package/audit/index.js +30 -1
  37. package/audit/interceptors/audit.interceptor.d.ts +15 -0
  38. package/audit/interceptors/audit.interceptor.js +23 -1
  39. package/audit/interfaces/audit.interfaces.d.ts +182 -2
  40. package/audit/services/audit-context.service.d.ts +15 -0
  41. package/audit/services/audit-context.service.js +15 -0
  42. package/audit/services/audit-strategy.service.d.ts +6 -0
  43. package/audit/services/audit-strategy.service.js +13 -0
  44. package/audit/services/entity-audit.service.d.ts +129 -3
  45. package/audit/services/entity-audit.service.js +301 -6
  46. package/audit/services/index.d.ts +2 -0
  47. package/audit/services/index.js +2 -0
  48. package/audit/services/manual-audit-log.service.d.ts +124 -0
  49. package/audit/services/manual-audit-log.service.js +138 -0
  50. package/audit/services/multi-database.service.d.ts +12 -0
  51. package/audit/services/multi-database.service.js +12 -0
  52. package/audit/services/operation-description.service.d.ts +59 -0
  53. package/audit/services/operation-description.service.js +76 -2
  54. package/audit/services/transaction-audit.service.d.ts +30 -0
  55. package/audit/services/transaction-audit.service.js +47 -0
  56. package/audit/subscribers/entity-audit.subscriber.d.ts +15 -0
  57. package/audit/subscribers/entity-audit.subscriber.js +29 -1
  58. package/cache/cache-metrics.service.d.ts +67 -0
  59. package/cache/cache-metrics.service.js +68 -4
  60. package/cache/cache-serialization.service.d.ts +31 -0
  61. package/cache/cache-serialization.service.js +25 -0
  62. package/cache/cache.constants.d.ts +9 -0
  63. package/cache/cache.constants.js +9 -0
  64. package/cache/cache.health.d.ts +26 -0
  65. package/cache/cache.health.js +30 -0
  66. package/cache/cache.module.d.ts +86 -0
  67. package/cache/cache.module.js +71 -0
  68. package/cache/cache.service.d.ts +140 -0
  69. package/cache/cache.service.js +157 -0
  70. package/cache/cache.warmup.service.d.ts +39 -0
  71. package/cache/cache.warmup.service.js +32 -0
  72. package/cache/decorators/cache-evict.decorator.d.ts +47 -0
  73. package/cache/decorators/cache-evict.decorator.js +56 -0
  74. package/cache/decorators/cache-put.decorator.d.ts +34 -0
  75. package/cache/decorators/cache-put.decorator.js +39 -0
  76. package/cache/decorators/cacheable.decorator.d.ts +40 -0
  77. package/cache/decorators/cacheable.decorator.js +55 -0
  78. package/cache/dependencies/callback.dependency.d.ts +33 -0
  79. package/cache/dependencies/callback.dependency.js +39 -1
  80. package/cache/dependencies/chain.dependency.d.ts +28 -0
  81. package/cache/dependencies/chain.dependency.js +34 -0
  82. package/cache/dependencies/db.dependency.d.ts +45 -0
  83. package/cache/dependencies/db.dependency.js +48 -1
  84. package/cache/dependencies/file.dependency.d.ts +32 -0
  85. package/cache/dependencies/file.dependency.js +34 -0
  86. package/cache/dependencies/tag.dependency.d.ts +36 -0
  87. package/cache/dependencies/tag.dependency.js +36 -0
  88. package/cache/dependencies/time.dependency.d.ts +43 -0
  89. package/cache/dependencies/time.dependency.js +43 -0
  90. package/cache/examples/basic-usage.d.ts +15 -0
  91. package/cache/examples/basic-usage.js +62 -8
  92. package/cache/index.js +9 -0
  93. package/cache/interfaces/cache-dependency.interface.d.ts +53 -0
  94. package/cache/interfaces/cache-options.interface.d.ts +81 -0
  95. package/cache/interfaces/cache-options.interface.js +6 -0
  96. package/cache/interfaces/cache-provider.interface.d.ts +78 -0
  97. package/cache/providers/base-cache.provider.d.ts +14 -0
  98. package/cache/providers/base-cache.provider.js +16 -0
  99. package/cache/providers/cls-cache.provider.d.ts +20 -0
  100. package/cache/providers/cls-cache.provider.js +28 -0
  101. package/cache/providers/memory-cache.provider.d.ts +23 -0
  102. package/cache/providers/memory-cache.provider.js +26 -0
  103. package/cache/providers/redis-cache.provider.d.ts +26 -0
  104. package/cache/providers/redis-cache.provider.js +29 -0
  105. package/cache/utils/dependency-manager.util.d.ts +52 -0
  106. package/cache/utils/dependency-manager.util.js +59 -0
  107. package/cache/utils/key-generator.util.d.ts +42 -0
  108. package/cache/utils/key-generator.util.js +53 -1
  109. package/common/abstract.entity.d.ts +14 -0
  110. package/common/abstract.entity.js +14 -0
  111. package/common/boilerplate.polyfill.d.ts +142 -4
  112. package/common/boilerplate.polyfill.js +24 -100
  113. package/common/dto/dto-container.d.ts +16 -0
  114. package/common/dto/dto-container.js +20 -0
  115. package/common/dto/dto-decorators.d.ts +18 -0
  116. package/common/dto/dto-decorators.js +14 -0
  117. package/common/dto/dto-extensions.d.ts +11 -0
  118. package/common/dto/dto-extensions.js +9 -0
  119. package/common/dto/dto-service-accessor.d.ts +17 -0
  120. package/common/dto/dto-service-accessor.js +18 -0
  121. package/common/dto/dto-transformer.d.ts +12 -0
  122. package/common/dto/dto-transformer.js +9 -0
  123. package/common/dto/index.js +2 -0
  124. package/common/examples/paginate-and-map.example.d.ts +6 -0
  125. package/common/examples/paginate-and-map.example.js +26 -0
  126. package/common/utils.d.ts +15 -0
  127. package/common/utils.js +15 -0
  128. package/constants/language-code.js +1 -0
  129. package/decorators/field.decorators.js +8 -1
  130. package/decorators/property.decorators.js +1 -0
  131. package/decorators/public-route.decorator.js +1 -0
  132. package/decorators/transform.decorators.d.ts +27 -0
  133. package/decorators/transform.decorators.js +29 -0
  134. package/decorators/translate.decorator.js +1 -0
  135. package/decorators/user.decorator.js +1 -0
  136. package/decorators/validator.decorators.d.ts +8 -18
  137. package/decorators/validator.decorators.js +22 -190
  138. package/filters/constraint-errors.js +1 -0
  139. package/helpers/common.helper.d.ts +13 -0
  140. package/helpers/common.helper.js +13 -0
  141. package/http-client/config/http-client.config.d.ts +15 -0
  142. package/http-client/config/http-client.config.js +25 -9
  143. package/http-client/decorators/http-client.decorators.d.ts +63 -0
  144. package/http-client/decorators/http-client.decorators.js +71 -3
  145. package/http-client/entities/http-log.entity.d.ts +229 -0
  146. package/http-client/entities/http-log.entity.js +6 -1
  147. package/http-client/errors/http-client.errors.d.ts +57 -0
  148. package/http-client/errors/http-client.errors.js +58 -0
  149. package/http-client/examples/advanced-usage.example.d.ts +41 -0
  150. package/http-client/examples/advanced-usage.example.js +68 -24
  151. package/http-client/examples/auth-with-waiting-lock.example.d.ts +31 -0
  152. package/http-client/examples/auth-with-waiting-lock.example.js +52 -5
  153. package/http-client/examples/basic-usage.example.d.ts +60 -0
  154. package/http-client/examples/basic-usage.example.js +60 -0
  155. package/http-client/examples/multi-api-configuration.example.d.ts +60 -0
  156. package/http-client/examples/multi-api-configuration.example.js +76 -5
  157. package/http-client/http-client.module.d.ts +13 -0
  158. package/http-client/http-client.module.js +20 -5
  159. package/http-client/index.js +8 -0
  160. package/http-client/interfaces/api-client-config.interface.d.ts +125 -0
  161. package/http-client/interfaces/api-client-config.interface.js +3 -0
  162. package/http-client/interfaces/http-client-config.interface.d.ts +60 -0
  163. package/http-client/services/api-client-registry.service.d.ts +57 -0
  164. package/http-client/services/api-client-registry.service.js +84 -1
  165. package/http-client/services/cache.service.d.ts +52 -0
  166. package/http-client/services/cache.service.js +72 -3
  167. package/http-client/services/circuit-breaker.service.d.ts +46 -0
  168. package/http-client/services/circuit-breaker.service.js +52 -0
  169. package/http-client/services/http-client.service.d.ts +67 -0
  170. package/http-client/services/http-client.service.js +105 -4
  171. package/http-client/services/http-log-query.service.d.ts +83 -0
  172. package/http-client/services/http-log-query.service.js +122 -1
  173. package/http-client/services/http-replay.service.d.ts +101 -0
  174. package/http-client/services/http-replay.service.js +86 -0
  175. package/http-client/services/log-cleanup.service.d.ts +63 -0
  176. package/http-client/services/log-cleanup.service.js +54 -2
  177. package/http-client/services/logging.service.d.ts +40 -0
  178. package/http-client/services/logging.service.js +53 -0
  179. package/http-client/utils/call-stack-extractor.util.d.ts +37 -0
  180. package/http-client/utils/call-stack-extractor.util.js +48 -0
  181. package/http-client/utils/context-extractor.util.d.ts +49 -0
  182. package/http-client/utils/context-extractor.util.js +52 -0
  183. package/http-client/utils/curl-generator.util.d.ts +21 -0
  184. package/http-client/utils/curl-generator.util.js +44 -3
  185. package/http-client/utils/request-id.util.d.ts +18 -0
  186. package/http-client/utils/request-id.util.js +20 -0
  187. package/http-client/utils/retry-recorder.util.d.ts +42 -0
  188. package/http-client/utils/retry-recorder.util.js +44 -0
  189. package/i18n/en_US/validation.json +2 -1
  190. package/i18n/zh_CN/validation.json +2 -1
  191. package/index.js +8 -0
  192. package/interceptors/translation-interceptor.service.js +5 -0
  193. package/package.json +1 -1
  194. package/providers/context.provider.js +2 -0
  195. package/providers/generator.provider.d.ts +4 -0
  196. package/providers/generator.provider.js +4 -0
  197. package/redis-lock/comprehensive-lock-cleanup.service.d.ts +94 -0
  198. package/redis-lock/comprehensive-lock-cleanup.service.js +253 -0
  199. package/redis-lock/examples/lock-strategy.examples.d.ts +89 -0
  200. package/redis-lock/examples/lock-strategy.examples.js +130 -15
  201. package/redis-lock/index.d.ts +2 -0
  202. package/redis-lock/index.js +8 -1
  203. package/redis-lock/lock-heartbeat.service.d.ts +78 -0
  204. package/redis-lock/lock-heartbeat.service.js +222 -0
  205. package/redis-lock/redis-lock.decorator.d.ts +101 -0
  206. package/redis-lock/redis-lock.decorator.js +120 -0
  207. package/redis-lock/redis-lock.module.d.ts +66 -0
  208. package/redis-lock/redis-lock.module.js +175 -70
  209. package/redis-lock/redis-lock.service.d.ts +278 -0
  210. package/redis-lock/redis-lock.service.js +282 -12
  211. package/setup/bootstrap.setup.js +20 -0
  212. package/setup/mode.setup.d.ts +44 -0
  213. package/setup/mode.setup.js +44 -0
  214. package/setup/schedule.decorator.d.ts +227 -0
  215. package/setup/schedule.decorator.js +235 -12
  216. package/setup/worker.decorator.d.ts +86 -0
  217. package/setup/worker.decorator.js +88 -0
  218. package/shared/serviceRegistryModule.js +27 -14
  219. package/shared/services/api-config.service.d.ts +3 -0
  220. package/shared/services/api-config.service.js +20 -9
  221. package/validator-json/decorators.d.ts +17 -0
  222. package/validator-json/decorators.js +17 -2
  223. package/validator-json/default.d.ts +6 -0
  224. package/validator-json/default.js +30 -2
  225. package/validator-json/defaultConverters.js +1 -0
  226. package/validator-json/options.d.ts +23 -0
  227. package/validators/common-validators.d.ts +143 -0
  228. package/validators/common-validators.js +249 -0
  229. package/validators/custom-validate.examples.d.ts +96 -0
  230. package/validators/custom-validate.examples.js +400 -0
  231. package/validators/custom-validate.validator.d.ts +134 -0
  232. package/validators/custom-validate.validator.js +214 -0
  233. package/validators/index.d.ts +2 -0
  234. package/validators/index.js +2 -0
  235. package/validators/is-exists.validator.d.ts +18 -4
  236. package/validators/is-exists.validator.js +67 -6
  237. package/validators/is-unique.validator.d.ts +32 -5
  238. package/validators/is-unique.validator.js +99 -17
  239. package/validators/skip-empty.validator.d.ts +5 -0
  240. package/validators/skip-empty.validator.js +5 -0
  241. package/vault/interfaces/vault-options.interface.d.ts +9 -0
  242. package/vault/vault-config.loader.d.ts +30 -0
  243. package/vault/vault-config.loader.js +48 -1
  244. package/vault/vault-config.service.d.ts +53 -0
  245. package/vault/vault-config.service.js +57 -0
  246. package/vault/vault.module.d.ts +4 -0
  247. package/vault/vault.module.js +4 -0
  248. package/decorators/examples/validation-decorators.example.d.ts +0 -69
  249. package/decorators/examples/validation-decorators.example.js +0 -331
@@ -2,20 +2,106 @@ import { DynamicModule, OnModuleInit } from '@nestjs/common';
2
2
  import type { DataSource } from 'typeorm';
3
3
  import type { Redis } from 'ioredis';
4
4
  import { CacheService } from './cache.service';
5
+ /**
6
+ * Injection token for CacheService
7
+ */
5
8
  export declare const CACHE_SERVICE: unique symbol;
9
+ /**
10
+ * Cache module configuration options
11
+ */
6
12
  export interface CacheModuleOptions {
13
+ /**
14
+ * Whether to make the module global
15
+ * @default true
16
+ */
7
17
  isGlobal?: boolean;
18
+ /**
19
+ * Redis client instance (optional)
20
+ * If not provided, Redis caching will be disabled
21
+ */
8
22
  redisClient?: Redis;
23
+ /**
24
+ * TypeORM DataSource for DbDependency
25
+ * If not provided, DbDependency will throw error when used
26
+ */
9
27
  dataSource?: DataSource;
28
+ /**
29
+ * Default TTL for memory cache in milliseconds
30
+ */
10
31
  memoryTtl?: number;
32
+ /**
33
+ * Namespace for memory cache
34
+ */
11
35
  memoryNamespace?: string;
36
+ /**
37
+ * Enable compression for cache values
38
+ * @default false
39
+ */
12
40
  enableCompression?: boolean;
41
+ /**
42
+ * Compression threshold in bytes
43
+ * @default 1024
44
+ */
13
45
  compressionThreshold?: number;
14
46
  }
47
+ /**
48
+ * Unified cache module with three-tier architecture
49
+ *
50
+ * Provides CacheService and cache decorators (@Cacheable, @CacheEvict, @CachePut)
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * // Basic usage (without Redis)
55
+ * @Module({
56
+ * imports: [
57
+ * CacheModule.forRoot()
58
+ * ]
59
+ * })
60
+ * export class AppModule {}
61
+ *
62
+ * // With Redis
63
+ * import { RedisModule } from '@songkeys/nestjs-redis';
64
+ *
65
+ * @Module({
66
+ * imports: [
67
+ * RedisModule.forRoot({ ... }),
68
+ * CacheModule.forRootAsync({
69
+ * imports: [RedisModule],
70
+ * inject: [RedisService],
71
+ * useFactory: (redisService: RedisService) => ({
72
+ * redisClient: redisService.getClient()
73
+ * })
74
+ * })
75
+ * ]
76
+ * })
77
+ * export class AppModule {}
78
+ *
79
+ * // With TypeORM DataSource for DbDependency
80
+ * @Module({
81
+ * imports: [
82
+ * TypeOrmModule.forRoot({ ... }),
83
+ * CacheModule.forRootAsync({
84
+ * imports: [TypeOrmModule],
85
+ * inject: [DataSource],
86
+ * useFactory: (dataSource: DataSource) => ({
87
+ * dataSource
88
+ * })
89
+ * })
90
+ * ]
91
+ * })
92
+ * export class AppModule {}
93
+ * ```
94
+ */
15
95
  export declare class CacheModule implements OnModuleInit {
16
96
  private readonly cacheService;
17
97
  constructor(cacheService: CacheService);
98
+ /**
99
+ * Register cache module with options
100
+ */
18
101
  static forRoot(options?: CacheModuleOptions): DynamicModule;
102
+ /**
103
+ * Register cache module asynchronously
104
+ */
19
105
  static forRootAsync(options: {
20
106
  imports?: any[];
21
107
  inject?: any[];
@@ -20,13 +20,68 @@ 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
83
  const { isGlobal = true, redisClient, dataSource, memoryTtl, memoryNamespace, enableCompression = false, compressionThreshold = 1024, } = options;
84
+ // Set DataSource for DbDependency if provided
30
85
  if (dataSource) {
31
86
  dependencies_1.DbDependency.setDataSource(dataSource);
32
87
  }
@@ -34,6 +89,7 @@ let CacheModule = CacheModule_1 = class CacheModule {
34
89
  module: CacheModule_1,
35
90
  global: isGlobal,
36
91
  providers: [
92
+ // Providers
37
93
  providers_1.ClsCacheProvider,
38
94
  {
39
95
  provide: providers_1.MemoryCacheProvider,
@@ -42,6 +98,7 @@ let CacheModule = CacheModule_1 = class CacheModule {
42
98
  namespace: memoryNamespace,
43
99
  }),
44
100
  },
101
+ // Redis client provider (optional)
45
102
  ...(redisClient
46
103
  ? [
47
104
  {
@@ -51,6 +108,7 @@ let CacheModule = CacheModule_1 = class CacheModule {
51
108
  ]
52
109
  : []),
53
110
  providers_1.RedisCacheProvider,
111
+ // Compression configuration providers
54
112
  {
55
113
  provide: cache_constants_1.CACHE_COMPRESSION_ENABLED,
56
114
  useValue: enableCompression,
@@ -59,12 +117,14 @@ let CacheModule = CacheModule_1 = class CacheModule {
59
117
  provide: cache_constants_1.CACHE_COMPRESSION_THRESHOLD,
60
118
  useValue: compressionThreshold,
61
119
  },
120
+ // Additional services
62
121
  cache_warmup_service_1.CacheWarmupService,
63
122
  cache_metrics_service_1.CacheMetricsService,
64
123
  {
65
124
  provide: cache_serialization_service_1.CacheSerializationService,
66
125
  useFactory: () => new cache_serialization_service_1.CacheSerializationService(),
67
126
  },
127
+ // CacheService
68
128
  {
69
129
  provide: exports.CACHE_SERVICE,
70
130
  useClass: cache_service_1.CacheService,
@@ -80,6 +140,9 @@ let CacheModule = CacheModule_1 = class CacheModule {
80
140
  ],
81
141
  };
82
142
  }
143
+ /**
144
+ * Register cache module asynchronously
145
+ */
83
146
  static forRootAsync(options) {
84
147
  var _a;
85
148
  return {
@@ -87,15 +150,18 @@ let CacheModule = CacheModule_1 = class CacheModule {
87
150
  global: (_a = options.isGlobal) !== null && _a !== void 0 ? _a : true,
88
151
  imports: options.imports || [],
89
152
  providers: [
153
+ // Async options provider
90
154
  {
91
155
  provide: 'CACHE_MODULE_OPTIONS',
92
156
  useFactory: options.useFactory,
93
157
  inject: options.inject || [],
94
158
  },
159
+ // Providers
95
160
  providers_1.ClsCacheProvider,
96
161
  {
97
162
  provide: providers_1.MemoryCacheProvider,
98
163
  useFactory: (moduleOptions) => {
164
+ // Set DataSource for DbDependency if provided
99
165
  if (moduleOptions.dataSource) {
100
166
  dependencies_1.DbDependency.setDataSource(moduleOptions.dataSource);
101
167
  }
@@ -106,18 +172,21 @@ let CacheModule = CacheModule_1 = class CacheModule {
106
172
  },
107
173
  inject: ['CACHE_MODULE_OPTIONS'],
108
174
  },
175
+ // Redis client provider (optional)
109
176
  {
110
177
  provide: providers_1.REDIS_CLIENT,
111
178
  useFactory: (moduleOptions) => moduleOptions.redisClient,
112
179
  inject: ['CACHE_MODULE_OPTIONS'],
113
180
  },
114
181
  providers_1.RedisCacheProvider,
182
+ // Additional services
115
183
  cache_warmup_service_1.CacheWarmupService,
116
184
  cache_metrics_service_1.CacheMetricsService,
117
185
  {
118
186
  provide: cache_serialization_service_1.CacheSerializationService,
119
187
  useFactory: () => new cache_serialization_service_1.CacheSerializationService(),
120
188
  },
189
+ // Compression configuration providers
121
190
  {
122
191
  provide: cache_constants_1.CACHE_COMPRESSION_ENABLED,
123
192
  useFactory: (moduleOptions) => moduleOptions.enableCompression || false,
@@ -128,6 +197,7 @@ let CacheModule = CacheModule_1 = class CacheModule {
128
197
  useFactory: (moduleOptions) => moduleOptions.compressionThreshold || 1024,
129
198
  inject: ['CACHE_MODULE_OPTIONS'],
130
199
  },
200
+ // CacheService
131
201
  {
132
202
  provide: exports.CACHE_SERVICE,
133
203
  useClass: cache_service_1.CacheService,
@@ -144,6 +214,7 @@ let CacheModule = CacheModule_1 = class CacheModule {
144
214
  };
145
215
  }
146
216
  onModuleInit() {
217
+ // Set global cache service for decorators
147
218
  (0, decorators_1.setCacheService)(this.cacheService);
148
219
  }
149
220
  };
@@ -1,6 +1,15 @@
1
1
  import type { CacheOptions, CacheStats } from './interfaces';
2
2
  import { CacheLayer } from './interfaces';
3
3
  import { ClsCacheProvider, MemoryCacheProvider, RedisCacheProvider } from './providers';
4
+ /**
5
+ * Unified cache service with three-tier architecture
6
+ *
7
+ * L1: CLS (request-level)
8
+ * L2: Memory (process-level)
9
+ * L3: Redis (distributed)
10
+ *
11
+ * Supports automatic fallback, backfill, and dependency-based invalidation.
12
+ */
4
13
  export declare class CacheService {
5
14
  private readonly clsProvider;
6
15
  private readonly memoryProvider;
@@ -11,27 +20,158 @@ export declare class CacheService {
11
20
  private readonly providers;
12
21
  private readonly stats;
13
22
  constructor(clsProvider: ClsCacheProvider, memoryProvider: MemoryCacheProvider, redisProvider: RedisCacheProvider, enableCompression?: boolean, compressionThreshold?: number);
23
+ /**
24
+ * Get or set cache value with factory function
25
+ *
26
+ * @param key - Cache key
27
+ * @param factory - Function to generate value if not cached
28
+ * @param options - Cache options
29
+ * @returns Cached or generated value
30
+ */
14
31
  getOrSet<T>(key: string, factory: () => Promise<T>, options?: CacheOptions): Promise<T>;
32
+ /**
33
+ * Get value from cache with optional layer specification
34
+ *
35
+ * @param key - Cache key
36
+ * @param options - Cache options including layer preference
37
+ * @returns Cached value or null
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * // Try memory only
42
+ * const data = await this.cacheService.get('user:123', {
43
+ * layers: [CacheLayer.MEMORY]
44
+ * });
45
+ *
46
+ * // Try all layers in order (CLS -> MEMORY -> REDIS)
47
+ * const data = await this.cacheService.get('config:app', {
48
+ * layers: [CacheLayer.CLS, CacheLayer.MEMORY, CacheLayer.REDIS]
49
+ * });
50
+ * ```
51
+ */
15
52
  get<T>(key: string, options?: CacheOptions): Promise<T | null>;
53
+ /**
54
+ * Set value in cache with optional layer specification
55
+ *
56
+ * Supports both new API (CacheOptions) and legacy API (TTL number) for backward compatibility.
57
+ *
58
+ * @param key - Cache key
59
+ * @param value - Value to cache
60
+ * @param options - Cache options including layer selection OR TTL (number) for legacy compatibility
61
+ *
62
+ * @example
63
+ * ```typescript
64
+ * // New API - Cache in memory only
65
+ * await this.cacheService.set('user:123', userData, {
66
+ * layers: [CacheLayer.MEMORY],
67
+ * ttl: 300000
68
+ * });
69
+ *
70
+ * // Legacy API - TTL as third parameter (still works for backward compatibility)
71
+ * await this.cacheService.set('user:123', userData, 300000);
72
+ *
73
+ * // Cache in all layers (default behavior)
74
+ * await this.cacheService.set('config:app', configData, {
75
+ * layers: [CacheLayer.CLS, CacheLayer.MEMORY, CacheLayer.REDIS],
76
+ * ttl: 3600000
77
+ * });
78
+ *
79
+ * // Cache in Redis only (distributed)
80
+ * await this.cacheService.set('global:settings', settings, {
81
+ * layers: [CacheLayer.REDIS],
82
+ * ttl: 86400000
83
+ * });
84
+ * ```
85
+ */
16
86
  set<T>(key: string, value: T, options?: CacheOptions | number): Promise<void>;
87
+ /**
88
+ * Delete value from cache
89
+ *
90
+ * @param key - Cache key or array of keys
91
+ * @param layers - Specific layers to delete from (default: all)
92
+ */
17
93
  del(key: string | string[], layers?: CacheLayer[]): Promise<void>;
94
+ /**
95
+ * Delete keys matching pattern
96
+ *
97
+ * @param pattern - Pattern to match (e.g., 'user:*')
98
+ * @param layers - Specific layers to delete from (default: Memory and Redis only)
99
+ */
18
100
  deletePattern(pattern: string, layers?: CacheLayer[]): Promise<void>;
101
+ /**
102
+ * Clear all cache
103
+ *
104
+ * @param layers - Specific layers to clear (default: all)
105
+ */
19
106
  clear(layers?: CacheLayer[]): Promise<void>;
107
+ /**
108
+ * Invalidate tags (for TagDependency)
109
+ *
110
+ * @param tags - Tags to invalidate
111
+ */
20
112
  invalidateTags(tags: string[]): Promise<void>;
113
+ /**
114
+ * Get multiple values
115
+ *
116
+ * @param keys - Array of cache keys
117
+ * @param options - Cache options
118
+ * @returns Array of values (null for missing keys)
119
+ */
21
120
  mget<T>(keys: string[], options?: CacheOptions): Promise<(T | null)[]>;
121
+ /**
122
+ * Set multiple values
123
+ *
124
+ * @param items - Array of key-value pairs
125
+ * @param options - Cache options
126
+ */
22
127
  mset(items: Array<{
23
128
  key: string;
24
129
  value: any;
25
130
  }>, options?: CacheOptions): Promise<void>;
131
+ /**
132
+ * Get cache statistics
133
+ *
134
+ * @returns Cache statistics
135
+ */
26
136
  getStats(): CacheStats;
137
+ /**
138
+ * Reset statistics
139
+ */
27
140
  resetStats(): void;
141
+ /**
142
+ * Internal method to set cache value with options
143
+ */
28
144
  private setWithOptions;
145
+ /**
146
+ * Resolve cache layers from options
147
+ */
29
148
  private resolveLayers;
149
+ /**
150
+ * Get default cache layers
151
+ */
30
152
  private getDefaultLayers;
153
+ /**
154
+ * Build full cache key with namespace
155
+ */
31
156
  private buildKey;
157
+ /**
158
+ * Backfill upper cache layers
159
+ */
32
160
  private backfillUpperLayers;
161
+ /**
162
+ * Record cache hit
163
+ */
33
164
  private recordHit;
165
+ /**
166
+ * Record cache miss
167
+ */
34
168
  private recordMiss;
169
+ /**
170
+ * Update hit rate for a layer
171
+ */
35
172
  private updateLayerHitRate;
173
+ /**
174
+ * Initialize statistics for all layers
175
+ */
36
176
  private initializeStats;
37
177
  }