@nest-omni/core 4.1.3-0 → 4.1.3-10

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 (242) hide show
  1. package/audit/audit.module.d.ts +10 -0
  2. package/audit/audit.module.js +15 -0
  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 +8 -0
  6. package/audit/decorators/audit-controller.decorator.js +9 -0
  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 +8 -0
  10. package/audit/decorators/entity-audit.decorator.js +9 -0
  11. package/audit/dto/audit-log-query.dto.d.ts +3 -0
  12. package/audit/dto/audit-log-query.dto.js +3 -0
  13. package/audit/dto/begin-transaction.dto.d.ts +3 -0
  14. package/audit/dto/begin-transaction.dto.js +3 -0
  15. package/audit/dto/compare-entities.dto.d.ts +3 -0
  16. package/audit/dto/compare-entities.dto.js +3 -0
  17. package/audit/dto/pre-check-restore.dto.d.ts +3 -0
  18. package/audit/dto/pre-check-restore.dto.js +3 -0
  19. package/audit/dto/restore-entity.dto.d.ts +3 -0
  20. package/audit/dto/restore-entity.dto.js +3 -0
  21. package/audit/entities/entity-audit-log.entity.d.ts +3 -0
  22. package/audit/entities/entity-audit-log.entity.js +3 -0
  23. package/audit/entities/entity-transaction.entity.d.ts +3 -0
  24. package/audit/entities/entity-transaction.entity.js +3 -0
  25. package/audit/entities/manual-operation-log.entity.d.ts +4 -0
  26. package/audit/entities/manual-operation-log.entity.js +4 -0
  27. package/audit/entities/operation-template.entity.d.ts +4 -0
  28. package/audit/entities/operation-template.entity.js +4 -0
  29. package/audit/enums/audit.enums.d.ts +17 -2
  30. package/audit/enums/audit.enums.js +15 -0
  31. package/audit/index.js +10 -0
  32. package/audit/interceptors/audit.interceptor.d.ts +15 -0
  33. package/audit/interceptors/audit.interceptor.js +23 -1
  34. package/audit/interfaces/audit.interfaces.d.ts +42 -0
  35. package/audit/services/audit-context.service.d.ts +15 -0
  36. package/audit/services/audit-context.service.js +15 -0
  37. package/audit/services/audit-strategy.service.d.ts +6 -0
  38. package/audit/services/audit-strategy.service.js +13 -0
  39. package/audit/services/entity-audit.service.d.ts +57 -0
  40. package/audit/services/entity-audit.service.js +91 -0
  41. package/audit/services/manual-audit-log.service.d.ts +124 -0
  42. package/audit/services/manual-audit-log.service.js +138 -0
  43. package/audit/services/multi-database.service.d.ts +12 -0
  44. package/audit/services/multi-database.service.js +12 -0
  45. package/audit/services/operation-description.service.d.ts +59 -0
  46. package/audit/services/operation-description.service.js +76 -2
  47. package/audit/services/transaction-audit.service.d.ts +30 -0
  48. package/audit/services/transaction-audit.service.js +47 -0
  49. package/audit/subscribers/entity-audit.subscriber.d.ts +15 -0
  50. package/audit/subscribers/entity-audit.subscriber.js +29 -1
  51. package/cache/cache-metrics.service.d.ts +67 -0
  52. package/cache/cache-metrics.service.js +68 -4
  53. package/cache/cache-serialization.service.d.ts +31 -0
  54. package/cache/cache-serialization.service.js +25 -0
  55. package/cache/cache.constants.d.ts +9 -0
  56. package/cache/cache.constants.js +9 -0
  57. package/cache/cache.health.d.ts +26 -0
  58. package/cache/cache.health.js +30 -0
  59. package/cache/cache.module.d.ts +86 -0
  60. package/cache/cache.module.js +71 -0
  61. package/cache/cache.service.d.ts +140 -0
  62. package/cache/cache.service.js +157 -0
  63. package/cache/cache.warmup.service.d.ts +39 -0
  64. package/cache/cache.warmup.service.js +32 -0
  65. package/cache/decorators/cache-evict.decorator.d.ts +47 -0
  66. package/cache/decorators/cache-evict.decorator.js +56 -0
  67. package/cache/decorators/cache-put.decorator.d.ts +34 -0
  68. package/cache/decorators/cache-put.decorator.js +39 -0
  69. package/cache/decorators/cacheable.decorator.d.ts +40 -0
  70. package/cache/decorators/cacheable.decorator.js +55 -0
  71. package/cache/dependencies/callback.dependency.d.ts +33 -0
  72. package/cache/dependencies/callback.dependency.js +39 -1
  73. package/cache/dependencies/chain.dependency.d.ts +28 -0
  74. package/cache/dependencies/chain.dependency.js +34 -0
  75. package/cache/dependencies/db.dependency.d.ts +45 -0
  76. package/cache/dependencies/db.dependency.js +48 -1
  77. package/cache/dependencies/file.dependency.d.ts +32 -0
  78. package/cache/dependencies/file.dependency.js +34 -0
  79. package/cache/dependencies/tag.dependency.d.ts +36 -0
  80. package/cache/dependencies/tag.dependency.js +36 -0
  81. package/cache/dependencies/time.dependency.d.ts +43 -0
  82. package/cache/dependencies/time.dependency.js +43 -0
  83. package/cache/examples/basic-usage.d.ts +15 -0
  84. package/cache/examples/basic-usage.js +62 -8
  85. package/cache/index.js +9 -0
  86. package/cache/interfaces/cache-dependency.interface.d.ts +53 -0
  87. package/cache/interfaces/cache-options.interface.d.ts +81 -0
  88. package/cache/interfaces/cache-options.interface.js +6 -0
  89. package/cache/interfaces/cache-provider.interface.d.ts +78 -0
  90. package/cache/providers/base-cache.provider.d.ts +14 -0
  91. package/cache/providers/base-cache.provider.js +16 -0
  92. package/cache/providers/cls-cache.provider.d.ts +20 -0
  93. package/cache/providers/cls-cache.provider.js +28 -0
  94. package/cache/providers/memory-cache.provider.d.ts +23 -0
  95. package/cache/providers/memory-cache.provider.js +26 -0
  96. package/cache/providers/redis-cache.provider.d.ts +26 -0
  97. package/cache/providers/redis-cache.provider.js +29 -0
  98. package/cache/utils/dependency-manager.util.d.ts +52 -0
  99. package/cache/utils/dependency-manager.util.js +59 -0
  100. package/cache/utils/key-generator.util.d.ts +42 -0
  101. package/cache/utils/key-generator.util.js +53 -1
  102. package/common/abstract.entity.d.ts +14 -0
  103. package/common/abstract.entity.js +14 -0
  104. package/common/boilerplate.polyfill.d.ts +142 -4
  105. package/common/boilerplate.polyfill.js +24 -131
  106. package/common/dto/dto-container.d.ts +16 -0
  107. package/common/dto/dto-container.js +20 -0
  108. package/common/dto/dto-decorators.d.ts +18 -0
  109. package/common/dto/dto-decorators.js +14 -0
  110. package/common/dto/dto-extensions.d.ts +11 -0
  111. package/common/dto/dto-extensions.js +9 -0
  112. package/common/dto/dto-service-accessor.d.ts +17 -0
  113. package/common/dto/dto-service-accessor.js +18 -0
  114. package/common/dto/dto-transformer.d.ts +12 -0
  115. package/common/dto/dto-transformer.js +9 -0
  116. package/common/dto/index.js +2 -0
  117. package/common/examples/paginate-and-map.example.d.ts +6 -0
  118. package/common/examples/paginate-and-map.example.js +26 -0
  119. package/common/utils.d.ts +15 -0
  120. package/common/utils.js +15 -0
  121. package/constants/language-code.js +1 -0
  122. package/decorators/field.decorators.js +8 -1
  123. package/decorators/property.decorators.js +1 -0
  124. package/decorators/public-route.decorator.js +1 -0
  125. package/decorators/transform.decorators.d.ts +27 -0
  126. package/decorators/transform.decorators.js +29 -0
  127. package/decorators/translate.decorator.js +1 -0
  128. package/decorators/user.decorator.js +1 -0
  129. package/decorators/validator.decorators.d.ts +8 -18
  130. package/decorators/validator.decorators.js +22 -190
  131. package/filters/constraint-errors.js +1 -0
  132. package/helpers/common.helper.d.ts +13 -0
  133. package/helpers/common.helper.js +13 -0
  134. package/http-client/config/http-client.config.d.ts +15 -0
  135. package/http-client/config/http-client.config.js +25 -9
  136. package/http-client/decorators/http-client.decorators.d.ts +63 -0
  137. package/http-client/decorators/http-client.decorators.js +71 -3
  138. package/http-client/entities/http-log.entity.d.ts +229 -0
  139. package/http-client/entities/http-log.entity.js +6 -1
  140. package/http-client/errors/http-client.errors.d.ts +57 -0
  141. package/http-client/errors/http-client.errors.js +58 -0
  142. package/http-client/examples/advanced-usage.example.d.ts +41 -0
  143. package/http-client/examples/advanced-usage.example.js +68 -24
  144. package/http-client/examples/auth-with-waiting-lock.example.d.ts +31 -0
  145. package/http-client/examples/auth-with-waiting-lock.example.js +52 -5
  146. package/http-client/examples/basic-usage.example.d.ts +60 -0
  147. package/http-client/examples/basic-usage.example.js +60 -0
  148. package/http-client/examples/multi-api-configuration.example.d.ts +60 -0
  149. package/http-client/examples/multi-api-configuration.example.js +76 -5
  150. package/http-client/http-client.module.d.ts +13 -0
  151. package/http-client/http-client.module.js +19 -0
  152. package/http-client/index.js +8 -0
  153. package/http-client/interfaces/api-client-config.interface.d.ts +125 -0
  154. package/http-client/interfaces/api-client-config.interface.js +3 -0
  155. package/http-client/interfaces/http-client-config.interface.d.ts +60 -0
  156. package/http-client/services/api-client-registry.service.d.ts +57 -0
  157. package/http-client/services/api-client-registry.service.js +84 -1
  158. package/http-client/services/cache.service.d.ts +52 -0
  159. package/http-client/services/cache.service.js +72 -3
  160. package/http-client/services/circuit-breaker.service.d.ts +46 -0
  161. package/http-client/services/circuit-breaker.service.js +52 -0
  162. package/http-client/services/http-client.service.d.ts +67 -0
  163. package/http-client/services/http-client.service.js +105 -4
  164. package/http-client/services/http-log-query.service.d.ts +83 -0
  165. package/http-client/services/http-log-query.service.js +122 -1
  166. package/http-client/services/http-replay.service.d.ts +101 -0
  167. package/http-client/services/http-replay.service.js +86 -0
  168. package/http-client/services/log-cleanup.service.d.ts +63 -0
  169. package/http-client/services/log-cleanup.service.js +54 -2
  170. package/http-client/services/logging.service.d.ts +40 -0
  171. package/http-client/services/logging.service.js +53 -0
  172. package/http-client/utils/call-stack-extractor.util.d.ts +37 -0
  173. package/http-client/utils/call-stack-extractor.util.js +48 -0
  174. package/http-client/utils/context-extractor.util.d.ts +49 -0
  175. package/http-client/utils/context-extractor.util.js +52 -0
  176. package/http-client/utils/curl-generator.util.d.ts +21 -0
  177. package/http-client/utils/curl-generator.util.js +44 -3
  178. package/http-client/utils/request-id.util.d.ts +18 -0
  179. package/http-client/utils/request-id.util.js +20 -0
  180. package/http-client/utils/retry-recorder.util.d.ts +42 -0
  181. package/http-client/utils/retry-recorder.util.js +44 -0
  182. package/i18n/en_US/validation.json +2 -1
  183. package/i18n/zh_CN/validation.json +2 -1
  184. package/index.js +8 -0
  185. package/interceptors/translation-interceptor.service.js +5 -0
  186. package/package.json +1 -1
  187. package/providers/context.provider.js +2 -0
  188. package/providers/generator.provider.d.ts +4 -0
  189. package/providers/generator.provider.js +4 -0
  190. package/redis-lock/comprehensive-lock-cleanup.service.d.ts +94 -0
  191. package/redis-lock/comprehensive-lock-cleanup.service.js +253 -0
  192. package/redis-lock/examples/lock-strategy.examples.d.ts +89 -0
  193. package/redis-lock/examples/lock-strategy.examples.js +130 -15
  194. package/redis-lock/index.d.ts +2 -0
  195. package/redis-lock/index.js +8 -1
  196. package/redis-lock/lock-heartbeat.service.d.ts +78 -0
  197. package/redis-lock/lock-heartbeat.service.js +222 -0
  198. package/redis-lock/redis-lock.decorator.d.ts +101 -0
  199. package/redis-lock/redis-lock.decorator.js +120 -0
  200. package/redis-lock/redis-lock.module.d.ts +66 -0
  201. package/redis-lock/redis-lock.module.js +175 -70
  202. package/redis-lock/redis-lock.service.d.ts +260 -0
  203. package/redis-lock/redis-lock.service.js +244 -4
  204. package/setup/bootstrap.setup.js +20 -0
  205. package/setup/mode.setup.d.ts +44 -0
  206. package/setup/mode.setup.js +44 -0
  207. package/setup/schedule.decorator.d.ts +227 -0
  208. package/setup/schedule.decorator.js +219 -6
  209. package/setup/worker.decorator.d.ts +86 -0
  210. package/setup/worker.decorator.js +88 -0
  211. package/shared/serviceRegistryModule.js +9 -1
  212. package/shared/services/api-config.service.d.ts +3 -0
  213. package/shared/services/api-config.service.js +20 -9
  214. package/validator-json/decorators.d.ts +17 -0
  215. package/validator-json/decorators.js +17 -2
  216. package/validator-json/default.d.ts +6 -0
  217. package/validator-json/default.js +30 -2
  218. package/validator-json/defaultConverters.js +1 -0
  219. package/validator-json/options.d.ts +23 -0
  220. package/validators/common-validators.d.ts +143 -0
  221. package/validators/common-validators.js +249 -0
  222. package/validators/custom-validate.examples.d.ts +96 -0
  223. package/validators/custom-validate.examples.js +400 -0
  224. package/validators/custom-validate.validator.d.ts +134 -0
  225. package/validators/custom-validate.validator.js +214 -0
  226. package/validators/index.d.ts +2 -0
  227. package/validators/index.js +2 -0
  228. package/validators/is-exists.validator.d.ts +18 -4
  229. package/validators/is-exists.validator.js +67 -6
  230. package/validators/is-unique.validator.d.ts +32 -5
  231. package/validators/is-unique.validator.js +99 -17
  232. package/validators/skip-empty.validator.d.ts +5 -0
  233. package/validators/skip-empty.validator.js +5 -0
  234. package/vault/interfaces/vault-options.interface.d.ts +9 -0
  235. package/vault/vault-config.loader.d.ts +30 -0
  236. package/vault/vault-config.loader.js +48 -1
  237. package/vault/vault-config.service.d.ts +53 -0
  238. package/vault/vault-config.service.js +57 -0
  239. package/vault/vault.module.d.ts +4 -0
  240. package/vault/vault.module.js +4 -0
  241. package/decorators/examples/validation-decorators.example.d.ts +0 -69
  242. package/decorators/examples/validation-decorators.example.js +0 -331
@@ -1,66 +1,326 @@
1
1
  import { OnModuleInit } from '@nestjs/common';
2
2
  import type Redis from 'ioredis';
3
+ /**
4
+ * Lock acquisition strategy
5
+ */
3
6
  export declare enum LockStrategy {
7
+ /**
8
+ * Skip execution if lock cannot be acquired immediately
9
+ * This is the default behavior for backward compatibility
10
+ */
4
11
  SKIP = "SKIP",
12
+ /**
13
+ * Throw an error if lock cannot be acquired
14
+ * Useful for critical operations that must have exclusive access
15
+ */
5
16
  THROW = "THROW",
17
+ /**
18
+ * Wait/block until the lock can be acquired
19
+ * Will retry indefinitely with the specified retry delay
20
+ */
6
21
  WAIT = "WAIT"
7
22
  }
8
23
  export interface LockOptions {
24
+ /**
25
+ * Lock expiration time in milliseconds
26
+ * @default 300000 (5 minutes)
27
+ */
9
28
  ttl?: number;
29
+ /**
30
+ * Maximum number of retry attempts to acquire the lock
31
+ * Only applies when strategy is SKIP or THROW
32
+ * For WAIT strategy, this is ignored (infinite retries)
33
+ * @default 0 (no retries)
34
+ */
10
35
  retryCount?: number;
36
+ /**
37
+ * Delay between retry attempts in milliseconds
38
+ * @default 100
39
+ */
11
40
  retryDelay?: number;
41
+ /**
42
+ * Custom lock key prefix
43
+ * @default 'lock'
44
+ */
12
45
  keyPrefix?: string;
46
+ /**
47
+ * Whether to throw an error if lock acquisition fails
48
+ * @deprecated Use strategy: LockStrategy.THROW instead
49
+ * @default false
50
+ */
13
51
  throwOnFailure?: boolean;
52
+ /**
53
+ * Lock acquisition strategy
54
+ * - SKIP: Skip execution if lock cannot be acquired (default)
55
+ * - THROW: Throw error if lock cannot be acquired
56
+ * - WAIT: Wait/block until lock can be acquired (indefinite retries)
57
+ * @default LockStrategy.SKIP
58
+ */
14
59
  strategy?: LockStrategy;
60
+ /**
61
+ * Maximum wait time in milliseconds when using WAIT strategy
62
+ * If set, will timeout after this duration
63
+ * @default undefined (no timeout, wait indefinitely)
64
+ */
15
65
  waitTimeout?: number;
66
+ /**
67
+ * Automatic lock extension interval in milliseconds
68
+ * If set, the lock will be automatically extended at this interval
69
+ * @default 0 (no automatic extension)
70
+ */
16
71
  autoExtend?: number;
17
72
  }
18
73
  export interface LockResult {
74
+ /**
75
+ * Whether the lock was successfully acquired
76
+ */
19
77
  acquired: boolean;
78
+ /**
79
+ * Lock value (identifier) if acquired
80
+ */
20
81
  lockValue?: string;
82
+ /**
83
+ * Error message if acquisition failed
84
+ */
21
85
  error?: string;
86
+ /**
87
+ * Timer ID for auto-extension if enabled
88
+ */
22
89
  autoExtendTimer?: NodeJS.Timeout;
23
90
  }
91
+ /**
92
+ * Redis-based distributed lock service
93
+ *
94
+ * Provides thread-safe, distributed locking mechanism using Redis.
95
+ * Supports automatic lock expiration, retries, proper lock release,
96
+ * and automatic lock extension.
97
+ *
98
+ * @example
99
+ * ```typescript
100
+ * constructor(private lockService: RedisLockService) {}
101
+ *
102
+ * async processTask() {
103
+ * const result = await this.lockService.acquireLock('task:process', { ttl: 60000 });
104
+ *
105
+ * if (result.acquired) {
106
+ * try {
107
+ * // Do work
108
+ * } finally {
109
+ * await this.lockService.releaseLock('task:process', result.lockValue);
110
+ * }
111
+ * }
112
+ * }
113
+ * ```
114
+ */
24
115
  export declare class RedisLockService implements OnModuleInit {
25
116
  private static globalInstance;
26
117
  private readonly logger;
27
118
  private redis;
119
+ private instanceId;
28
120
  private readonly defaultOptions;
29
121
  constructor();
122
+ /**
123
+ * Get the global singleton instance
124
+ * This allows decorators to access the service without dependency injection
125
+ */
30
126
  static getGlobalInstance(): RedisLockService | null;
127
+ /**
128
+ * Get or create the global singleton instance
129
+ * If no instance exists, it will create one
130
+ */
31
131
  static getOrCreateGlobalInstance(): RedisLockService;
132
+ /**
133
+ * Set the global singleton instance
134
+ * Useful for testing or manual setup
135
+ */
32
136
  static setGlobalInstance(instance: RedisLockService): void;
33
137
  onModuleInit(): Promise<void>;
34
138
  onModuleDestroy(): Promise<void>;
139
+ /**
140
+ * Set Redis client (required for dependency injection)
141
+ * This service requires an external Redis client to function
142
+ */
35
143
  setRedisClient(redis: Redis): void;
144
+ /**
145
+ * Set default TTL for locks
146
+ */
36
147
  setDefaultTtl(ttl: number): void;
148
+ /**
149
+ * Set default key prefix for locks
150
+ */
37
151
  setDefaultKeyPrefix(prefix: string): void;
152
+ /**
153
+ * Set default retry count for lock acquisition
154
+ */
38
155
  setDefaultRetryCount(count: number): void;
156
+ /**
157
+ * Set default retry delay for lock acquisition
158
+ */
39
159
  setDefaultRetryDelay(delay: number): void;
160
+ /**
161
+ * Acquire a distributed lock
162
+ *
163
+ * @param key - Lock key (will be prefixed with 'lock:')
164
+ * @param options - Lock options
165
+ * @returns Lock acquisition result
166
+ */
40
167
  acquireLock(key: string, options?: LockOptions): Promise<LockResult>;
168
+ /**
169
+ * Release a distributed lock
170
+ *
171
+ * Uses Lua script to ensure atomic check-and-delete operation
172
+ * Only releases the lock if the value matches (prevents releasing someone else's lock)
173
+ *
174
+ * @param key - Lock key
175
+ * @param lockValue - Lock value obtained during acquisition
176
+ * @param keyPrefix - Key prefix (must match acquisition)
177
+ * @returns True if lock was released, false otherwise
178
+ */
41
179
  releaseLock(key: string, lockValue: string, keyPrefix?: string): Promise<boolean>;
180
+ /**
181
+ * Extend the expiration time of an existing lock
182
+ *
183
+ * @param key - Lock key
184
+ * @param lockValue - Lock value obtained during acquisition
185
+ * @param ttl - New TTL in milliseconds
186
+ * @param keyPrefix - Key prefix (must match acquisition)
187
+ * @returns True if lock was extended, false otherwise
188
+ */
42
189
  extendLock(key: string, lockValue: string, ttl: number, keyPrefix?: string): Promise<boolean>;
190
+ /**
191
+ * Check if a lock exists
192
+ *
193
+ * @param key - Lock key
194
+ * @param keyPrefix - Key prefix
195
+ * @returns True if lock exists, false otherwise
196
+ */
43
197
  isLocked(key: string, keyPrefix?: string): Promise<boolean>;
198
+ /**
199
+ * Execute a function with automatic lock acquisition and release
200
+ *
201
+ * @param key - Lock key
202
+ * @param fn - Function to execute while holding the lock
203
+ * @param options - Lock options
204
+ * @returns Result of the function execution, or null if lock couldn't be acquired
205
+ */
44
206
  withLock<T>(key: string, fn: () => Promise<T>, options?: LockOptions): Promise<T | null>;
207
+ /**
208
+ * Get lock information from Redis
209
+ *
210
+ * @param key - Lock key
211
+ * @param keyPrefix - Key prefix
212
+ * @returns Lock information including TTL and value
213
+ */
45
214
  getLockInfo(key: string, keyPrefix?: string): Promise<{
46
215
  value: string | null;
47
216
  ttl: number | null;
48
217
  }>;
218
+ /**
219
+ * Force release a lock (use with caution)
220
+ *
221
+ * @param key - Lock key
222
+ * @param keyPrefix - Key prefix
223
+ * @returns True if lock was released, false otherwise
224
+ */
49
225
  forceRelease(key: string, keyPrefix?: string): Promise<boolean>;
226
+ /**
227
+ * Clean up locks by pattern
228
+ * Useful for cleaning up locks after process restart or for specific services
229
+ *
230
+ * WARNING: Use with caution in production! This will forcefully delete locks.
231
+ *
232
+ * @param pattern - Lock pattern (e.g., 'MyService:*' or '*:migration:*')
233
+ * @param keyPrefix - Key prefix (default: 'lock')
234
+ * @returns Number of locks deleted
235
+ *
236
+ * @example
237
+ * ```typescript
238
+ * // Clean up all locks for MyService
239
+ * await lockService.cleanupLocksByPattern('MyService:*');
240
+ *
241
+ * // Clean up all migration locks
242
+ * await lockService.cleanupLocksByPattern('*:migration:*');
243
+ * ```
244
+ */
50
245
  cleanupLocksByPattern(pattern: string, keyPrefix?: string): Promise<number>;
246
+ /**
247
+ * Clean up locks on startup
248
+ * This method is useful for cleaning up stale locks from previous process instances
249
+ *
250
+ * WARNING: Only use this if you're sure the locks are from previous process instances!
251
+ *
252
+ * @param patterns - Array of lock patterns to clean up
253
+ * @param keyPrefix - Key prefix (default: 'lock')
254
+ * @returns Total number of locks deleted
255
+ *
256
+ * @example
257
+ * ```typescript
258
+ * // In your module's onModuleInit
259
+ * async onModuleInit() {
260
+ * // Clean up locks from this service that might be left from previous restart
261
+ * await this.lockService.cleanupOnStartup([
262
+ * 'MyService:*',
263
+ * 'AnotherService:*'
264
+ * ]);
265
+ * }
266
+ * ```
267
+ */
51
268
  cleanupOnStartup(patterns: string[], keyPrefix?: string): Promise<number>;
269
+ /**
270
+ * Health check for Redis connection
271
+ * Returns information about Redis connectivity and lock service status
272
+ *
273
+ * @returns Health check result
274
+ */
52
275
  healthCheck(): Promise<{
53
276
  healthy: boolean;
54
277
  redis: boolean;
55
278
  message: string;
56
279
  }>;
280
+ /**
281
+ * Get all active locks with optional pattern filtering
282
+ * Useful for monitoring and debugging
283
+ *
284
+ * @param pattern - Optional pattern to filter locks (e.g., 'MyService:*')
285
+ * @param keyPrefix - Key prefix (default: 'lock')
286
+ * @returns Array of active lock information
287
+ */
57
288
  getActiveLocks(pattern?: string, keyPrefix?: string): Promise<Array<{
58
289
  key: string;
59
290
  value: string | null;
60
291
  ttl: number | null;
61
292
  }>>;
293
+ /**
294
+ * Get Redis connection
295
+ * Requires external Redis client to be set
296
+ */
62
297
  private getRedis;
298
+ /**
299
+ * Generate a unique lock value
300
+ * Format: instanceId:timestamp:random:pid
301
+ *
302
+ * @returns Unique lock identifier
303
+ */
63
304
  private generateLockValue;
305
+ /**
306
+ * Get instance identifier
307
+ * Used to distinguish different process instances in distributed environments
308
+ *
309
+ * @returns Instance identifier
310
+ */
311
+ private getInstanceId;
312
+ /**
313
+ * Build the full Redis key for a lock
314
+ *
315
+ * @param key - Lock key
316
+ * @param prefix - Key prefix
317
+ * @returns Full Redis key
318
+ */
64
319
  private buildLockKey;
320
+ /**
321
+ * Sleep for a specified duration
322
+ *
323
+ * @param ms - Milliseconds to sleep
324
+ */
65
325
  private sleep;
66
326
  }