@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
@@ -1,66 +1,344 @@
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;
72
+ /**
73
+ * Whether to use exponential backoff for retry attempts
74
+ * If true, retry delay will increase exponentially: retryDelay * 2^(attempt-1)
75
+ * @default false
76
+ */
77
+ useExponentialBackoff?: boolean;
78
+ /**
79
+ * Maximum retry delay in milliseconds when using exponential backoff
80
+ * Ensures retry delay doesn't grow indefinitely
81
+ * @default 60000 (60 seconds)
82
+ */
83
+ maxRetryDelay?: number;
84
+ /**
85
+ * Random jitter to add to retry delay in milliseconds
86
+ * Helps prevent synchronized retries across multiple instances
87
+ * @default 0 (no jitter)
88
+ */
89
+ retryJitter?: number;
17
90
  }
18
91
  export interface LockResult {
92
+ /**
93
+ * Whether the lock was successfully acquired
94
+ */
19
95
  acquired: boolean;
96
+ /**
97
+ * Lock value (identifier) if acquired
98
+ */
20
99
  lockValue?: string;
100
+ /**
101
+ * Error message if acquisition failed
102
+ */
21
103
  error?: string;
104
+ /**
105
+ * Timer ID for auto-extension if enabled
106
+ */
22
107
  autoExtendTimer?: NodeJS.Timeout;
23
108
  }
109
+ /**
110
+ * Redis-based distributed lock service
111
+ *
112
+ * Provides thread-safe, distributed locking mechanism using Redis.
113
+ * Supports automatic lock expiration, retries, proper lock release,
114
+ * and automatic lock extension.
115
+ *
116
+ * @example
117
+ * ```typescript
118
+ * constructor(private lockService: RedisLockService) {}
119
+ *
120
+ * async processTask() {
121
+ * const result = await this.lockService.acquireLock('task:process', { ttl: 60000 });
122
+ *
123
+ * if (result.acquired) {
124
+ * try {
125
+ * // Do work
126
+ * } finally {
127
+ * await this.lockService.releaseLock('task:process', result.lockValue);
128
+ * }
129
+ * }
130
+ * }
131
+ * ```
132
+ */
24
133
  export declare class RedisLockService implements OnModuleInit {
25
134
  private static globalInstance;
26
135
  private readonly logger;
27
136
  private redis;
137
+ private instanceId;
28
138
  private readonly defaultOptions;
29
139
  constructor();
140
+ /**
141
+ * Get the global singleton instance
142
+ * This allows decorators to access the service without dependency injection
143
+ */
30
144
  static getGlobalInstance(): RedisLockService | null;
145
+ /**
146
+ * Get or create the global singleton instance
147
+ * If no instance exists, it will create one
148
+ */
31
149
  static getOrCreateGlobalInstance(): RedisLockService;
150
+ /**
151
+ * Set the global singleton instance
152
+ * Useful for testing or manual setup
153
+ */
32
154
  static setGlobalInstance(instance: RedisLockService): void;
33
155
  onModuleInit(): Promise<void>;
34
156
  onModuleDestroy(): Promise<void>;
157
+ /**
158
+ * Set Redis client (required for dependency injection)
159
+ * This service requires an external Redis client to function
160
+ */
35
161
  setRedisClient(redis: Redis): void;
162
+ /**
163
+ * Set default TTL for locks
164
+ */
36
165
  setDefaultTtl(ttl: number): void;
166
+ /**
167
+ * Set default key prefix for locks
168
+ */
37
169
  setDefaultKeyPrefix(prefix: string): void;
170
+ /**
171
+ * Set default retry count for lock acquisition
172
+ */
38
173
  setDefaultRetryCount(count: number): void;
174
+ /**
175
+ * Set default retry delay for lock acquisition
176
+ */
39
177
  setDefaultRetryDelay(delay: number): void;
178
+ /**
179
+ * Acquire a distributed lock
180
+ *
181
+ * @param key - Lock key (will be prefixed with 'lock:')
182
+ * @param options - Lock options
183
+ * @returns Lock acquisition result
184
+ */
40
185
  acquireLock(key: string, options?: LockOptions): Promise<LockResult>;
186
+ /**
187
+ * Release a distributed lock
188
+ *
189
+ * Uses Lua script to ensure atomic check-and-delete operation
190
+ * Only releases the lock if the value matches (prevents releasing someone else's lock)
191
+ *
192
+ * @param key - Lock key
193
+ * @param lockValue - Lock value obtained during acquisition
194
+ * @param keyPrefix - Key prefix (must match acquisition)
195
+ * @returns True if lock was released, false otherwise
196
+ */
41
197
  releaseLock(key: string, lockValue: string, keyPrefix?: string): Promise<boolean>;
198
+ /**
199
+ * Extend the expiration time of an existing lock
200
+ *
201
+ * @param key - Lock key
202
+ * @param lockValue - Lock value obtained during acquisition
203
+ * @param ttl - New TTL in milliseconds
204
+ * @param keyPrefix - Key prefix (must match acquisition)
205
+ * @returns True if lock was extended, false otherwise
206
+ */
42
207
  extendLock(key: string, lockValue: string, ttl: number, keyPrefix?: string): Promise<boolean>;
208
+ /**
209
+ * Check if a lock exists
210
+ *
211
+ * @param key - Lock key
212
+ * @param keyPrefix - Key prefix
213
+ * @returns True if lock exists, false otherwise
214
+ */
43
215
  isLocked(key: string, keyPrefix?: string): Promise<boolean>;
216
+ /**
217
+ * Execute a function with automatic lock acquisition and release
218
+ *
219
+ * @param key - Lock key
220
+ * @param fn - Function to execute while holding the lock
221
+ * @param options - Lock options
222
+ * @returns Result of the function execution, or null if lock couldn't be acquired
223
+ */
44
224
  withLock<T>(key: string, fn: () => Promise<T>, options?: LockOptions): Promise<T | null>;
225
+ /**
226
+ * Get lock information from Redis
227
+ *
228
+ * @param key - Lock key
229
+ * @param keyPrefix - Key prefix
230
+ * @returns Lock information including TTL and value
231
+ */
45
232
  getLockInfo(key: string, keyPrefix?: string): Promise<{
46
233
  value: string | null;
47
234
  ttl: number | null;
48
235
  }>;
236
+ /**
237
+ * Force release a lock (use with caution)
238
+ *
239
+ * @param key - Lock key
240
+ * @param keyPrefix - Key prefix
241
+ * @returns True if lock was released, false otherwise
242
+ */
49
243
  forceRelease(key: string, keyPrefix?: string): Promise<boolean>;
244
+ /**
245
+ * Clean up locks by pattern
246
+ * Useful for cleaning up locks after process restart or for specific services
247
+ *
248
+ * WARNING: Use with caution in production! This will forcefully delete locks.
249
+ *
250
+ * @param pattern - Lock pattern (e.g., 'MyService:*' or '*:migration:*')
251
+ * @param keyPrefix - Key prefix (default: 'lock')
252
+ * @returns Number of locks deleted
253
+ *
254
+ * @example
255
+ * ```typescript
256
+ * // Clean up all locks for MyService
257
+ * await lockService.cleanupLocksByPattern('MyService:*');
258
+ *
259
+ * // Clean up all migration locks
260
+ * await lockService.cleanupLocksByPattern('*:migration:*');
261
+ * ```
262
+ */
50
263
  cleanupLocksByPattern(pattern: string, keyPrefix?: string): Promise<number>;
264
+ /**
265
+ * Clean up locks on startup
266
+ * This method is useful for cleaning up stale locks from previous process instances
267
+ *
268
+ * WARNING: Only use this if you're sure the locks are from previous process instances!
269
+ *
270
+ * @param patterns - Array of lock patterns to clean up
271
+ * @param keyPrefix - Key prefix (default: 'lock')
272
+ * @returns Total number of locks deleted
273
+ *
274
+ * @example
275
+ * ```typescript
276
+ * // In your module's onModuleInit
277
+ * async onModuleInit() {
278
+ * // Clean up locks from this service that might be left from previous restart
279
+ * await this.lockService.cleanupOnStartup([
280
+ * 'MyService:*',
281
+ * 'AnotherService:*'
282
+ * ]);
283
+ * }
284
+ * ```
285
+ */
51
286
  cleanupOnStartup(patterns: string[], keyPrefix?: string): Promise<number>;
287
+ /**
288
+ * Health check for Redis connection
289
+ * Returns information about Redis connectivity and lock service status
290
+ *
291
+ * @returns Health check result
292
+ */
52
293
  healthCheck(): Promise<{
53
294
  healthy: boolean;
54
295
  redis: boolean;
55
296
  message: string;
56
297
  }>;
298
+ /**
299
+ * Get all active locks with optional pattern filtering
300
+ * Useful for monitoring and debugging
301
+ *
302
+ * @param pattern - Optional pattern to filter locks (e.g., 'MyService:*')
303
+ * @param keyPrefix - Key prefix (default: 'lock')
304
+ * @returns Array of active lock information
305
+ */
57
306
  getActiveLocks(pattern?: string, keyPrefix?: string): Promise<Array<{
58
307
  key: string;
59
308
  value: string | null;
60
309
  ttl: number | null;
61
310
  }>>;
311
+ /**
312
+ * Get Redis connection
313
+ * Requires external Redis client to be set
314
+ */
62
315
  private getRedis;
316
+ /**
317
+ * Generate a unique lock value
318
+ * Format: instanceId:timestamp:random:pid
319
+ *
320
+ * @returns Unique lock identifier
321
+ */
63
322
  private generateLockValue;
323
+ /**
324
+ * Get instance identifier
325
+ * Used to distinguish different process instances in distributed environments
326
+ *
327
+ * @returns Instance identifier
328
+ */
329
+ private getInstanceId;
330
+ /**
331
+ * Build the full Redis key for a lock
332
+ *
333
+ * @param key - Lock key
334
+ * @param prefix - Key prefix
335
+ * @returns Full Redis key
336
+ */
64
337
  private buildLockKey;
338
+ /**
339
+ * Sleep for a specified duration
340
+ *
341
+ * @param ms - Milliseconds to sleep
342
+ */
65
343
  private sleep;
66
344
  }