@nest-omni/core 4.1.3-2 → 4.1.3-20

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 (386) hide show
  1. package/audit/audit.module.d.ts +10 -0
  2. package/audit/audit.module.js +63 -1
  3. package/audit/controllers/audit.controller.d.ts +88 -0
  4. package/audit/controllers/audit.controller.js +74 -0
  5. package/audit/decorators/audit-action.decorator.d.ts +74 -0
  6. package/audit/decorators/audit-action.decorator.js +42 -0
  7. package/audit/decorators/audit-controller.decorator.d.ts +9 -1
  8. package/audit/decorators/audit-controller.decorator.js +11 -2
  9. package/audit/decorators/audit-operation.decorator.d.ts +45 -0
  10. package/audit/decorators/audit-operation.decorator.js +49 -0
  11. package/audit/decorators/entity-audit.decorator.d.ts +85 -1
  12. package/audit/decorators/entity-audit.decorator.js +153 -3
  13. package/audit/decorators/index.d.ts +2 -0
  14. package/audit/decorators/index.js +2 -0
  15. package/audit/dto/audit-log-query.dto.d.ts +3 -0
  16. package/audit/dto/audit-log-query.dto.js +3 -0
  17. package/audit/dto/begin-transaction.dto.d.ts +3 -0
  18. package/audit/dto/begin-transaction.dto.js +3 -0
  19. package/audit/dto/compare-entities.dto.d.ts +3 -0
  20. package/audit/dto/compare-entities.dto.js +3 -0
  21. package/audit/dto/pre-check-restore.dto.d.ts +3 -0
  22. package/audit/dto/pre-check-restore.dto.js +3 -0
  23. package/audit/dto/restore-entity.dto.d.ts +3 -0
  24. package/audit/dto/restore-entity.dto.js +3 -0
  25. package/audit/entities/audit-action-summary.entity.d.ts +23 -0
  26. package/audit/entities/audit-action-summary.entity.js +101 -0
  27. package/audit/entities/entity-audit-log.entity.d.ts +11 -0
  28. package/audit/entities/entity-audit-log.entity.js +57 -2
  29. package/audit/entities/entity-transaction.entity.d.ts +11 -2
  30. package/audit/entities/entity-transaction.entity.js +42 -3
  31. package/audit/entities/index.d.ts +3 -0
  32. package/audit/entities/index.js +3 -0
  33. package/audit/entities/manual-operation-log.entity.d.ts +4 -0
  34. package/audit/entities/manual-operation-log.entity.js +12 -1
  35. package/audit/entities/operation-template.entity.d.ts +4 -0
  36. package/audit/entities/operation-template.entity.js +4 -0
  37. package/audit/enums/audit.enums.d.ts +37 -6
  38. package/audit/enums/audit.enums.js +40 -7
  39. package/audit/index.d.ts +4 -1
  40. package/audit/index.js +34 -1
  41. package/audit/interceptors/audit-action.interceptor.d.ts +38 -0
  42. package/audit/interceptors/audit-action.interceptor.js +215 -0
  43. package/audit/interceptors/audit.interceptor.d.ts +15 -0
  44. package/audit/interceptors/audit.interceptor.js +23 -1
  45. package/audit/interceptors/index.d.ts +1 -0
  46. package/audit/interceptors/index.js +1 -0
  47. package/audit/interfaces/audit.interfaces.d.ts +187 -2
  48. package/audit/services/audit-action.service.d.ts +141 -0
  49. package/audit/services/audit-action.service.js +244 -0
  50. package/audit/services/audit-context.service.d.ts +97 -0
  51. package/audit/services/audit-context.service.js +185 -0
  52. package/audit/services/audit-strategy.service.d.ts +6 -0
  53. package/audit/services/audit-strategy.service.js +13 -0
  54. package/audit/services/entity-audit.service.d.ts +230 -3
  55. package/audit/services/entity-audit.service.js +607 -14
  56. package/audit/services/index.d.ts +3 -0
  57. package/audit/services/index.js +3 -0
  58. package/audit/services/manual-audit-log.service.d.ts +134 -9
  59. package/audit/services/manual-audit-log.service.js +157 -40
  60. package/audit/services/multi-database.service.d.ts +9 -2
  61. package/audit/services/multi-database.service.js +9 -21
  62. package/audit/services/operation-description.service.d.ts +71 -2
  63. package/audit/services/operation-description.service.js +231 -20
  64. package/audit/services/transaction-audit.service.d.ts +30 -0
  65. package/audit/services/transaction-audit.service.js +53 -5
  66. package/audit/subscribers/entity-audit.subscriber.d.ts +19 -0
  67. package/audit/subscribers/entity-audit.subscriber.js +76 -1
  68. package/cache/cache-metrics.service.d.ts +67 -0
  69. package/cache/cache-metrics.service.js +68 -4
  70. package/cache/cache-serialization.service.d.ts +31 -0
  71. package/cache/cache-serialization.service.js +25 -0
  72. package/cache/cache.constants.d.ts +9 -0
  73. package/cache/cache.constants.js +9 -0
  74. package/cache/cache.health.d.ts +26 -0
  75. package/cache/cache.health.js +30 -0
  76. package/cache/cache.module.d.ts +82 -2
  77. package/cache/cache.module.js +76 -5
  78. package/cache/cache.service.d.ts +140 -0
  79. package/cache/cache.service.js +169 -0
  80. package/cache/cache.warmup.service.d.ts +39 -0
  81. package/cache/cache.warmup.service.js +32 -0
  82. package/cache/decorators/cache-evict.decorator.d.ts +47 -0
  83. package/cache/decorators/cache-evict.decorator.js +56 -0
  84. package/cache/decorators/cache-put.decorator.d.ts +34 -0
  85. package/cache/decorators/cache-put.decorator.js +39 -0
  86. package/cache/decorators/cacheable.decorator.d.ts +40 -0
  87. package/cache/decorators/cacheable.decorator.js +55 -0
  88. package/cache/dependencies/callback.dependency.d.ts +33 -0
  89. package/cache/dependencies/callback.dependency.js +39 -1
  90. package/cache/dependencies/chain.dependency.d.ts +28 -0
  91. package/cache/dependencies/chain.dependency.js +34 -0
  92. package/cache/dependencies/db.dependency.d.ts +83 -7
  93. package/cache/dependencies/db.dependency.js +89 -14
  94. package/cache/dependencies/file.dependency.d.ts +32 -0
  95. package/cache/dependencies/file.dependency.js +34 -0
  96. package/cache/dependencies/tag.dependency.d.ts +75 -4
  97. package/cache/dependencies/tag.dependency.js +145 -11
  98. package/cache/dependencies/time.dependency.d.ts +43 -0
  99. package/cache/dependencies/time.dependency.js +43 -0
  100. package/cache/examples/basic-usage.d.ts +15 -0
  101. package/cache/examples/basic-usage.js +62 -8
  102. package/cache/index.js +9 -0
  103. package/cache/interfaces/cache-dependency.interface.d.ts +53 -0
  104. package/cache/interfaces/cache-options.interface.d.ts +89 -0
  105. package/cache/interfaces/cache-options.interface.js +6 -0
  106. package/cache/interfaces/cache-provider.interface.d.ts +78 -0
  107. package/cache/providers/base-cache.provider.d.ts +14 -0
  108. package/cache/providers/base-cache.provider.js +16 -0
  109. package/cache/providers/cls-cache.provider.d.ts +20 -0
  110. package/cache/providers/cls-cache.provider.js +28 -0
  111. package/cache/providers/memory-cache.provider.d.ts +43 -0
  112. package/cache/providers/memory-cache.provider.js +66 -0
  113. package/cache/providers/redis-cache.provider.d.ts +26 -0
  114. package/cache/providers/redis-cache.provider.js +29 -0
  115. package/cache/utils/dependency-manager.util.d.ts +52 -0
  116. package/cache/utils/dependency-manager.util.js +59 -0
  117. package/cache/utils/key-generator.util.d.ts +42 -0
  118. package/cache/utils/key-generator.util.js +53 -1
  119. package/common/abstract.entity.d.ts +14 -0
  120. package/common/abstract.entity.js +14 -0
  121. package/common/boilerplate.polyfill.d.ts +142 -0
  122. package/common/boilerplate.polyfill.js +18 -1
  123. package/common/dto/dto-container.d.ts +16 -0
  124. package/common/dto/dto-container.js +20 -0
  125. package/common/dto/dto-decorators.d.ts +18 -0
  126. package/common/dto/dto-decorators.js +14 -0
  127. package/common/dto/dto-extensions.d.ts +11 -0
  128. package/common/dto/dto-extensions.js +9 -0
  129. package/common/dto/dto-service-accessor.d.ts +17 -0
  130. package/common/dto/dto-service-accessor.js +18 -0
  131. package/common/dto/dto-transformer.d.ts +12 -0
  132. package/common/dto/dto-transformer.js +9 -0
  133. package/common/dto/index.js +2 -0
  134. package/common/examples/paginate-and-map.example.d.ts +6 -0
  135. package/common/examples/paginate-and-map.example.js +26 -0
  136. package/common/utils.d.ts +15 -0
  137. package/common/utils.js +15 -0
  138. package/constants/language-code.js +1 -0
  139. package/decorators/field.decorators.d.ts +1 -1
  140. package/decorators/field.decorators.js +8 -1
  141. package/decorators/property.decorators.js +1 -0
  142. package/decorators/public-route.decorator.js +1 -0
  143. package/decorators/transform.decorators.d.ts +27 -0
  144. package/decorators/transform.decorators.js +29 -0
  145. package/decorators/translate.decorator.js +1 -0
  146. package/decorators/user.decorator.js +1 -0
  147. package/decorators/validator.decorators.d.ts +8 -18
  148. package/decorators/validator.decorators.js +22 -190
  149. package/file-upload/controllers/file-access.controller.d.ts +23 -0
  150. package/file-upload/controllers/file-access.controller.js +128 -0
  151. package/file-upload/decorators/column.decorator.d.ts +151 -0
  152. package/file-upload/decorators/column.decorator.js +273 -0
  153. package/file-upload/decorators/csv-data.decorator.d.ts +30 -0
  154. package/file-upload/decorators/csv-data.decorator.js +85 -0
  155. package/file-upload/decorators/csv-import.decorator.d.ts +34 -0
  156. package/file-upload/decorators/csv-import.decorator.js +24 -0
  157. package/file-upload/decorators/examples/column-mapping.example.d.ts +76 -0
  158. package/file-upload/decorators/examples/column-mapping.example.js +122 -0
  159. package/file-upload/decorators/excel-data.decorator.d.ts +30 -0
  160. package/file-upload/decorators/excel-data.decorator.js +85 -0
  161. package/file-upload/decorators/file-upload.decorator.d.ts +83 -0
  162. package/file-upload/decorators/file-upload.decorator.js +172 -0
  163. package/file-upload/decorators/index.d.ts +5 -0
  164. package/file-upload/decorators/index.js +38 -0
  165. package/file-upload/decorators/process.decorator.d.ts +40 -0
  166. package/file-upload/decorators/process.decorator.js +52 -0
  167. package/file-upload/decorators/validate-data.decorator.d.ts +91 -0
  168. package/file-upload/decorators/validate-data.decorator.js +39 -0
  169. package/file-upload/dto/create-file.dto.d.ts +24 -0
  170. package/file-upload/dto/create-file.dto.js +112 -0
  171. package/file-upload/dto/find-files.dto.d.ts +15 -0
  172. package/file-upload/dto/find-files.dto.js +76 -0
  173. package/file-upload/dto/index.d.ts +4 -0
  174. package/file-upload/dto/index.js +20 -0
  175. package/file-upload/dto/pagination.dto.d.ts +7 -0
  176. package/file-upload/dto/pagination.dto.js +39 -0
  177. package/file-upload/dto/update-file.dto.d.ts +15 -0
  178. package/file-upload/dto/update-file.dto.js +67 -0
  179. package/file-upload/entities/file-metadata.entity.d.ts +25 -0
  180. package/file-upload/entities/file-metadata.entity.js +76 -0
  181. package/file-upload/entities/file.entity.d.ts +114 -0
  182. package/file-upload/entities/file.entity.js +350 -0
  183. package/file-upload/entities/index.d.ts +2 -0
  184. package/file-upload/entities/index.js +18 -0
  185. package/file-upload/enums/file-type.enum.d.ts +72 -0
  186. package/file-upload/enums/file-type.enum.js +212 -0
  187. package/file-upload/exceptions/file-upload.exception.d.ts +57 -0
  188. package/file-upload/exceptions/file-upload.exception.js +120 -0
  189. package/file-upload/exceptions/index.d.ts +1 -0
  190. package/file-upload/exceptions/index.js +17 -0
  191. package/file-upload/file-upload.module.d.ts +89 -0
  192. package/file-upload/file-upload.module.js +292 -0
  193. package/file-upload/index.d.ts +37 -0
  194. package/file-upload/index.js +77 -0
  195. package/file-upload/interceptors/file-upload.interceptor.d.ts +101 -0
  196. package/file-upload/interceptors/file-upload.interceptor.js +594 -0
  197. package/file-upload/interceptors/index.d.ts +1 -0
  198. package/file-upload/interceptors/index.js +17 -0
  199. package/file-upload/interfaces/custom-file-type.interface.d.ts +72 -0
  200. package/file-upload/interfaces/custom-file-type.interface.js +2 -0
  201. package/file-upload/interfaces/file-buffer.interface.d.ts +72 -0
  202. package/file-upload/interfaces/file-buffer.interface.js +2 -0
  203. package/file-upload/interfaces/file-entity.interface.d.ts +142 -0
  204. package/file-upload/interfaces/file-entity.interface.js +28 -0
  205. package/file-upload/interfaces/file-metadata.interface.d.ts +21 -0
  206. package/file-upload/interfaces/file-metadata.interface.js +2 -0
  207. package/file-upload/interfaces/file-processor.interface.d.ts +93 -0
  208. package/file-upload/interfaces/file-processor.interface.js +2 -0
  209. package/file-upload/interfaces/file-upload-options.interface.d.ts +74 -0
  210. package/file-upload/interfaces/file-upload-options.interface.js +5 -0
  211. package/file-upload/interfaces/index.d.ts +7 -0
  212. package/file-upload/interfaces/index.js +24 -0
  213. package/file-upload/interfaces/processor-options.interface.d.ts +102 -0
  214. package/file-upload/interfaces/processor-options.interface.js +2 -0
  215. package/file-upload/interfaces/storage-provider.interface.d.ts +239 -0
  216. package/file-upload/interfaces/storage-provider.interface.js +2 -0
  217. package/file-upload/interfaces/upload-options.interface.d.ts +19 -0
  218. package/file-upload/interfaces/upload-options.interface.js +2 -0
  219. package/file-upload/processors/csv.processor.d.ts +98 -0
  220. package/file-upload/processors/csv.processor.js +391 -0
  221. package/file-upload/processors/excel.processor.d.ts +130 -0
  222. package/file-upload/processors/excel.processor.js +547 -0
  223. package/file-upload/processors/image.processor.d.ts +199 -0
  224. package/file-upload/processors/image.processor.js +377 -0
  225. package/file-upload/providers/index.d.ts +2 -0
  226. package/file-upload/providers/index.js +18 -0
  227. package/file-upload/providers/local-storage.provider.d.ts +98 -0
  228. package/file-upload/providers/local-storage.provider.js +484 -0
  229. package/file-upload/providers/s3-storage.provider.d.ts +87 -0
  230. package/file-upload/providers/s3-storage.provider.js +455 -0
  231. package/file-upload/services/file-signature-validator.service.d.ts +118 -0
  232. package/file-upload/services/file-signature-validator.service.js +376 -0
  233. package/file-upload/services/file.service.d.ts +193 -0
  234. package/file-upload/services/file.service.js +638 -0
  235. package/file-upload/services/index.d.ts +4 -0
  236. package/file-upload/services/index.js +20 -0
  237. package/file-upload/services/malicious-file-detector.service.d.ts +300 -0
  238. package/file-upload/services/malicious-file-detector.service.js +1234 -0
  239. package/file-upload/services/mime-registry.service.d.ts +47 -0
  240. package/file-upload/services/mime-registry.service.js +167 -0
  241. package/file-upload/utils/checksum.util.d.ts +28 -0
  242. package/file-upload/utils/checksum.util.js +65 -0
  243. package/file-upload/utils/dynamic-import.util.d.ts +54 -0
  244. package/file-upload/utils/dynamic-import.util.js +156 -0
  245. package/file-upload/utils/filename.util.d.ts +59 -0
  246. package/file-upload/utils/filename.util.js +184 -0
  247. package/file-upload/utils/filepath.util.d.ts +70 -0
  248. package/file-upload/utils/filepath.util.js +152 -0
  249. package/file-upload/utils/index.d.ts +4 -0
  250. package/file-upload/utils/index.js +20 -0
  251. package/filters/constraint-errors.js +1 -0
  252. package/helpers/common.helper.d.ts +13 -0
  253. package/helpers/common.helper.js +13 -0
  254. package/http-client/config/http-client.config.d.ts +20 -0
  255. package/http-client/config/http-client.config.js +48 -21
  256. package/http-client/decorators/http-client.decorators.d.ts +55 -14
  257. package/http-client/decorators/http-client.decorators.js +154 -78
  258. package/http-client/entities/http-log.entity.d.ts +217 -8
  259. package/http-client/entities/http-log.entity.js +7 -22
  260. package/http-client/errors/http-client.errors.d.ts +57 -0
  261. package/http-client/errors/http-client.errors.js +58 -0
  262. package/http-client/examples/advanced-usage.example.d.ts +40 -0
  263. package/http-client/examples/advanced-usage.example.js +53 -61
  264. package/http-client/examples/auth-with-waiting-lock.example.d.ts +31 -0
  265. package/http-client/examples/auth-with-waiting-lock.example.js +52 -5
  266. package/http-client/examples/basic-usage.example.d.ts +60 -0
  267. package/http-client/examples/basic-usage.example.js +60 -0
  268. package/http-client/examples/multi-api-configuration.example.d.ts +60 -0
  269. package/http-client/examples/multi-api-configuration.example.js +76 -5
  270. package/http-client/examples/proxy-from-environment.example.d.ts +133 -0
  271. package/http-client/examples/proxy-from-environment.example.js +409 -0
  272. package/http-client/http-client.module.d.ts +48 -2
  273. package/http-client/http-client.module.js +147 -68
  274. package/http-client/index.d.ts +1 -1
  275. package/http-client/index.js +8 -0
  276. package/http-client/interfaces/api-client-config.interface.d.ts +80 -45
  277. package/http-client/interfaces/api-client-config.interface.js +3 -0
  278. package/http-client/interfaces/http-client-config.interface.d.ts +109 -52
  279. package/http-client/services/api-client-registry.service.d.ts +50 -11
  280. package/http-client/services/api-client-registry.service.js +90 -250
  281. package/http-client/services/circuit-breaker.service.d.ts +115 -2
  282. package/http-client/services/circuit-breaker.service.js +237 -7
  283. package/http-client/services/http-client.service.d.ts +124 -14
  284. package/http-client/services/http-client.service.js +437 -148
  285. package/http-client/services/http-log-query.service.d.ts +83 -0
  286. package/http-client/services/http-log-query.service.js +121 -13
  287. package/http-client/services/http-replay.service.d.ts +101 -0
  288. package/http-client/services/http-replay.service.js +86 -0
  289. package/http-client/services/index.d.ts +0 -1
  290. package/http-client/services/index.js +0 -1
  291. package/http-client/services/log-cleanup.service.d.ts +63 -0
  292. package/http-client/services/log-cleanup.service.js +54 -2
  293. package/http-client/services/logging.service.d.ts +116 -7
  294. package/http-client/services/logging.service.js +349 -86
  295. package/http-client/utils/call-stack-extractor.util.d.ts +63 -0
  296. package/http-client/utils/call-stack-extractor.util.js +83 -0
  297. package/http-client/utils/context-extractor.util.d.ts +49 -0
  298. package/http-client/utils/context-extractor.util.js +52 -0
  299. package/http-client/utils/curl-generator.util.d.ts +21 -0
  300. package/http-client/utils/curl-generator.util.js +44 -3
  301. package/http-client/utils/index.d.ts +1 -0
  302. package/http-client/utils/index.js +1 -0
  303. package/http-client/utils/proxy-environment.util.d.ts +42 -0
  304. package/http-client/utils/proxy-environment.util.js +148 -0
  305. package/http-client/utils/request-id.util.d.ts +18 -0
  306. package/http-client/utils/request-id.util.js +20 -0
  307. package/http-client/utils/retry-recorder.util.d.ts +42 -0
  308. package/http-client/utils/retry-recorder.util.js +44 -0
  309. package/http-client/utils/security-validator.util.d.ts +118 -0
  310. package/http-client/utils/security-validator.util.js +352 -0
  311. package/index.d.ts +3 -1
  312. package/index.js +12 -1
  313. package/interceptors/translation-interceptor.service.js +5 -0
  314. package/package.json +11 -7
  315. package/providers/context.provider.js +2 -0
  316. package/providers/generator.provider.d.ts +4 -0
  317. package/providers/generator.provider.js +4 -0
  318. package/redis-lock/comprehensive-lock-cleanup.service.d.ts +94 -0
  319. package/redis-lock/comprehensive-lock-cleanup.service.js +253 -0
  320. package/redis-lock/examples/lock-strategy.examples.d.ts +89 -0
  321. package/redis-lock/examples/lock-strategy.examples.js +130 -15
  322. package/redis-lock/index.d.ts +2 -0
  323. package/redis-lock/index.js +8 -1
  324. package/redis-lock/lock-heartbeat.service.d.ts +80 -0
  325. package/redis-lock/lock-heartbeat.service.js +232 -0
  326. package/redis-lock/redis-lock.decorator.d.ts +101 -0
  327. package/redis-lock/redis-lock.decorator.js +120 -0
  328. package/redis-lock/redis-lock.module.d.ts +66 -0
  329. package/redis-lock/redis-lock.module.js +175 -70
  330. package/redis-lock/redis-lock.service.d.ts +282 -0
  331. package/redis-lock/redis-lock.service.js +343 -20
  332. package/setup/bootstrap.setup.d.ts +1 -0
  333. package/setup/bootstrap.setup.js +21 -0
  334. package/setup/index.d.ts +1 -0
  335. package/setup/index.js +1 -0
  336. package/setup/mode.setup.d.ts +44 -0
  337. package/setup/mode.setup.js +44 -0
  338. package/setup/run-in-mode.decorator.d.ts +56 -0
  339. package/setup/run-in-mode.decorator.js +92 -0
  340. package/setup/schedule.decorator.d.ts +227 -0
  341. package/setup/schedule.decorator.js +240 -12
  342. package/setup/worker.decorator.d.ts +86 -0
  343. package/setup/worker.decorator.js +97 -0
  344. package/shared/index.d.ts +1 -1
  345. package/shared/index.js +1 -1
  346. package/shared/{serviceRegistryModule.js → service-registry.module.js} +19 -17
  347. package/shared/services/api-config.service.d.ts +3 -0
  348. package/shared/services/api-config.service.js +21 -9
  349. package/shared/services/index.d.ts +0 -1
  350. package/shared/services/index.js +0 -1
  351. package/validator-json/decorators.d.ts +17 -0
  352. package/validator-json/decorators.js +17 -2
  353. package/validator-json/default.d.ts +6 -0
  354. package/validator-json/default.js +30 -2
  355. package/validator-json/defaultConverters.js +1 -0
  356. package/validator-json/options.d.ts +23 -0
  357. package/validators/common-validators.d.ts +143 -0
  358. package/validators/common-validators.js +249 -0
  359. package/validators/custom-validate.examples.d.ts +23 -0
  360. package/validators/custom-validate.examples.js +78 -6
  361. package/validators/custom-validate.validator.d.ts +108 -0
  362. package/validators/custom-validate.validator.js +85 -0
  363. package/validators/file-mimetype.validator.d.ts +0 -2
  364. package/validators/file-mimetype.validator.js +4 -6
  365. package/validators/index.d.ts +1 -0
  366. package/validators/index.js +1 -0
  367. package/validators/is-exists.validator.d.ts +26 -6
  368. package/validators/is-exists.validator.js +30 -7
  369. package/validators/is-unique.validator.d.ts +33 -7
  370. package/validators/is-unique.validator.js +59 -17
  371. package/validators/skip-empty.validator.d.ts +5 -0
  372. package/validators/skip-empty.validator.js +5 -0
  373. package/vault/interfaces/vault-options.interface.d.ts +9 -0
  374. package/vault/vault-config.loader.d.ts +30 -0
  375. package/vault/vault-config.loader.js +48 -1
  376. package/vault/vault-config.service.d.ts +53 -0
  377. package/vault/vault-config.service.js +57 -0
  378. package/vault/vault.module.d.ts +4 -0
  379. package/vault/vault.module.js +4 -0
  380. package/decorators/examples/validation-decorators.example.d.ts +0 -69
  381. package/decorators/examples/validation-decorators.example.js +0 -331
  382. package/http-client/services/cache.service.d.ts +0 -24
  383. package/http-client/services/cache.service.js +0 -264
  384. package/shared/services/validator.service.d.ts +0 -3
  385. package/shared/services/validator.service.js +0 -20
  386. /package/shared/{serviceRegistryModule.d.ts → service-registry.module.d.ts} +0 -0
@@ -0,0 +1,253 @@
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 ComprehensiveLockCleanupService_1;
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.ComprehensiveLockCleanupService = void 0;
23
+ const common_1 = require("@nestjs/common");
24
+ const redis_lock_service_1 = require("./redis-lock.service");
25
+ const lock_heartbeat_service_1 = require("./lock-heartbeat.service");
26
+ /**
27
+ * Comprehensive lock cleanup service
28
+ *
29
+ * Provides safe and comprehensive lock cleanup mechanism for distributed environments.
30
+ * Combines instance-based precise cleanup with heartbeat-based dead instance detection.
31
+ *
32
+ * **Cleanup Strategy:**
33
+ * 1. **Immediate Precise Cleanup (0s):**
34
+ * - Only cleans locks from the current instance
35
+ * - Safe during rolling updates - won't affect other running instances
36
+ *
37
+ * 2. **Delayed Conservative Cleanup (60s):**
38
+ * - Checks heartbeat of other instances
39
+ * - Only cleans locks from dead instances (no heartbeat)
40
+ * - Gives enough time for rolling updates to complete
41
+ *
42
+ * 3. **Graceful Shutdown Cleanup:**
43
+ * - On SIGTERM/SIGINT, immediately cleans own locks
44
+ * - Ensures locks are released before process exits
45
+ * - Works with PM2 reload and Kubernetes rolling updates
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * // In your module
50
+ * @Module({
51
+ * providers: [
52
+ * RedisLockService,
53
+ * LockHeartbeatService,
54
+ * ComprehensiveLockCleanupService,
55
+ * ],
56
+ * })
57
+ * export class AppModule {}
58
+ * ```
59
+ */
60
+ let ComprehensiveLockCleanupService = ComprehensiveLockCleanupService_1 = class ComprehensiveLockCleanupService {
61
+ constructor(lockService, heartbeatService) {
62
+ this.lockService = lockService;
63
+ this.heartbeatService = heartbeatService;
64
+ this.logger = new common_1.Logger(ComprehensiveLockCleanupService_1.name);
65
+ /**
66
+ * Grace period before cleaning other instances' locks (milliseconds)
67
+ * @default 60000 (60 seconds)
68
+ */
69
+ this.gracePeriod = 60000;
70
+ this.instanceId = this.getInstanceId();
71
+ }
72
+ onModuleInit() {
73
+ return __awaiter(this, void 0, void 0, function* () {
74
+ this.logger.log('Starting comprehensive lock cleanup...');
75
+ // Step 1: Immediate precise cleanup - only clean own instance's locks
76
+ yield this.cleanupOwnLocks();
77
+ // Step 2: Delayed cleanup - clean dead instances' locks after grace period
78
+ setTimeout(() => {
79
+ this.cleanupDeadInstanceLocks().catch((error) => {
80
+ this.logger.error('Failed to cleanup dead instance locks:', error);
81
+ });
82
+ }, this.gracePeriod);
83
+ });
84
+ }
85
+ /**
86
+ * Clean up locks from the current instance
87
+ * Safe to run immediately - only affects locks created by this instance
88
+ */
89
+ cleanupOwnLocks() {
90
+ return __awaiter(this, void 0, void 0, function* () {
91
+ this.logger.log(`Cleaning locks for this instance: ${this.instanceId}`);
92
+ try {
93
+ const allLocks = yield this.lockService.getActiveLocks('*', 'lock');
94
+ let deletedCount = 0;
95
+ for (const lock of allLocks) {
96
+ if (this.isOwnLock(lock.value)) {
97
+ this.logger.warn(`Found stale lock from this instance: ${lock.key}`);
98
+ yield this.lockService.forceRelease(lock.key);
99
+ deletedCount++;
100
+ }
101
+ }
102
+ this.logger.log(`Cleaned up ${deletedCount} locks from this instance`);
103
+ }
104
+ catch (error) {
105
+ this.logger.error('Failed to cleanup own locks:', error);
106
+ }
107
+ });
108
+ }
109
+ /**
110
+ * Clean up locks from dead instances
111
+ * Only runs after grace period to avoid cleaning locks during rolling updates
112
+ */
113
+ cleanupDeadInstanceLocks() {
114
+ return __awaiter(this, void 0, void 0, function* () {
115
+ this.logger.log('Cleaning locks from dead instances...');
116
+ try {
117
+ const allLocks = yield this.lockService.getActiveLocks('*', 'lock');
118
+ let deletedCount = 0;
119
+ for (const lock of allLocks) {
120
+ // Skip own instance's locks
121
+ if (this.isOwnLock(lock.value)) {
122
+ continue;
123
+ }
124
+ // Extract instance ID from lock value
125
+ const instanceId = this.extractInstanceId(lock.value);
126
+ if (!instanceId) {
127
+ // Cannot determine instance, skip (might be old format)
128
+ continue;
129
+ }
130
+ // Check if instance is alive via heartbeat
131
+ const isAlive = yield this.heartbeatService.isInstanceAlive(instanceId);
132
+ if (!isAlive) {
133
+ this.logger.warn(`Instance ${instanceId} is dead, removing lock: ${lock.key}`);
134
+ yield this.lockService.forceRelease(lock.key);
135
+ deletedCount++;
136
+ }
137
+ }
138
+ this.logger.log(`Cleaned up ${deletedCount} locks from dead instances`);
139
+ }
140
+ catch (error) {
141
+ this.logger.error('Failed to cleanup dead instance locks:', error);
142
+ }
143
+ });
144
+ }
145
+ /**
146
+ * Check if a lock belongs to the current instance
147
+ *
148
+ * @param lockValue - Lock value to check
149
+ * @returns True if lock belongs to current instance
150
+ */
151
+ isOwnLock(lockValue) {
152
+ if (!lockValue) {
153
+ return false;
154
+ }
155
+ const instanceId = this.extractInstanceId(lockValue);
156
+ return instanceId === this.instanceId;
157
+ }
158
+ /**
159
+ * Extract instance ID from lock value
160
+ * Lock value format: instanceId:timestamp:random:pid
161
+ *
162
+ * @param lockValue - Lock value
163
+ * @returns Instance ID or null if cannot be extracted
164
+ */
165
+ extractInstanceId(lockValue) {
166
+ if (!lockValue) {
167
+ return null;
168
+ }
169
+ // New format: instanceId:timestamp:random:pid
170
+ const parts = lockValue.split(':');
171
+ return parts.length >= 1 ? parts[0] : null;
172
+ }
173
+ /**
174
+ * Get instance identifier
175
+ */
176
+ getInstanceId() {
177
+ return (process.env.HOSTNAME ||
178
+ process.env.INSTANCE_ID ||
179
+ `instance-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`);
180
+ }
181
+ /**
182
+ * Manually trigger cleanup of all stale locks
183
+ * Use with caution - this will clean both own and dead instance locks
184
+ */
185
+ manualCleanup() {
186
+ return __awaiter(this, void 0, void 0, function* () {
187
+ this.logger.log('Manual cleanup triggered');
188
+ const ownLocksCount = yield this.cleanupOwnLocksCount();
189
+ const deadLocksCount = yield this.cleanupDeadInstanceLocksCount();
190
+ this.logger.log(`Manual cleanup completed: ${ownLocksCount} own locks, ${deadLocksCount} dead locks`);
191
+ return {
192
+ ownLocks: ownLocksCount,
193
+ deadLocks: deadLocksCount,
194
+ };
195
+ });
196
+ }
197
+ cleanupOwnLocksCount() {
198
+ return __awaiter(this, void 0, void 0, function* () {
199
+ const allLocks = yield this.lockService.getActiveLocks('*', 'lock');
200
+ let deletedCount = 0;
201
+ for (const lock of allLocks) {
202
+ if (this.isOwnLock(lock.value)) {
203
+ yield this.lockService.forceRelease(lock.key);
204
+ deletedCount++;
205
+ }
206
+ }
207
+ return deletedCount;
208
+ });
209
+ }
210
+ cleanupDeadInstanceLocksCount() {
211
+ return __awaiter(this, void 0, void 0, function* () {
212
+ const allLocks = yield this.lockService.getActiveLocks('*', 'lock');
213
+ let deletedCount = 0;
214
+ for (const lock of allLocks) {
215
+ if (this.isOwnLock(lock.value)) {
216
+ continue;
217
+ }
218
+ const instanceId = this.extractInstanceId(lock.value);
219
+ if (!instanceId) {
220
+ continue;
221
+ }
222
+ const isAlive = yield this.heartbeatService.isInstanceAlive(instanceId);
223
+ if (!isAlive) {
224
+ yield this.lockService.forceRelease(lock.key);
225
+ deletedCount++;
226
+ }
227
+ }
228
+ return deletedCount;
229
+ });
230
+ }
231
+ /**
232
+ * Cleanup own locks on application shutdown
233
+ * Called when receiving SIGTERM/SIGINT (graceful shutdown)
234
+ */
235
+ onApplicationShutdown(signal) {
236
+ return __awaiter(this, void 0, void 0, function* () {
237
+ this.logger.log(`Application shutting down (signal: ${signal}), cleaning own locks...`);
238
+ try {
239
+ const deletedCount = yield this.cleanupOwnLocksCount();
240
+ this.logger.log(`Graceful shutdown cleanup completed: cleaned ${deletedCount} lock(s) from this instance`);
241
+ }
242
+ catch (error) {
243
+ this.logger.error('Failed to cleanup own locks on shutdown:', error);
244
+ }
245
+ });
246
+ }
247
+ };
248
+ exports.ComprehensiveLockCleanupService = ComprehensiveLockCleanupService;
249
+ exports.ComprehensiveLockCleanupService = ComprehensiveLockCleanupService = ComprehensiveLockCleanupService_1 = __decorate([
250
+ (0, common_1.Injectable)(),
251
+ __metadata("design:paramtypes", [redis_lock_service_1.RedisLockService,
252
+ lock_heartbeat_service_1.LockHeartbeatService])
253
+ ], ComprehensiveLockCleanupService);
@@ -1,9 +1,25 @@
1
+ /**
2
+ * Lock Strategy Examples
3
+ *
4
+ * This file demonstrates the different lock acquisition strategies available in Redis Lock module.
5
+ */
1
6
  import { RedisLockService } from '../index';
7
+ /**
8
+ * SKIP strategy - Skip execution if lock cannot be acquired
9
+ * This is the default behavior and is useful for scheduled tasks where you don't
10
+ * want to queue up requests if a previous execution is still running.
11
+ */
2
12
  export declare class SkipStrategyExample {
3
13
  private readonly lockService;
4
14
  private readonly logger;
5
15
  constructor(lockService: RedisLockService);
16
+ /**
17
+ * Example 1: Using decorator with SKIP strategy (default)
18
+ */
6
19
  scheduledTask(): Promise<void>;
20
+ /**
21
+ * Example 2: Using service directly with SKIP strategy
22
+ */
7
23
  processWithSkip(): Promise<{
8
24
  skipped: boolean;
9
25
  success?: undefined;
@@ -11,6 +27,9 @@ export declare class SkipStrategyExample {
11
27
  success: boolean;
12
28
  skipped?: undefined;
13
29
  }>;
30
+ /**
31
+ * Example 3: SKIP with retries
32
+ */
14
33
  processWithRetries(): Promise<{
15
34
  skipped: boolean;
16
35
  success?: undefined;
@@ -20,14 +39,28 @@ export declare class SkipStrategyExample {
20
39
  }>;
21
40
  private simulateLongRunning;
22
41
  }
42
+ /**
43
+ * THROW strategy - Throw an error if lock cannot be acquired
44
+ * Use this for critical operations that must have exclusive access.
45
+ * If the lock cannot be acquired, an exception will be thrown.
46
+ */
23
47
  export declare class ThrowStrategyExample {
24
48
  private readonly lockService;
25
49
  private readonly logger;
26
50
  constructor(lockService: RedisLockService);
51
+ /**
52
+ * Example 1: Using decorator with THROW strategy
53
+ */
27
54
  criticalOperation(): Promise<void>;
55
+ /**
56
+ * Example 2: Using service with error handling
57
+ */
28
58
  processWithThrow(): Promise<{
29
59
  success: boolean;
30
60
  }>;
61
+ /**
62
+ * Example 3: Critical payment processing
63
+ */
31
64
  processPayment(orderId: string, amount: number): Promise<{
32
65
  success: boolean;
33
66
  }>;
@@ -35,11 +68,22 @@ export declare class ThrowStrategyExample {
35
68
  private chargePayment;
36
69
  private updateOrderStatus;
37
70
  }
71
+ /**
72
+ * WAIT strategy - Block/wait until lock can be acquired
73
+ * Use this when you want to queue execution and ensure the operation eventually runs.
74
+ * The function will wait indefinitely (or until waitTimeout) for the lock to become available.
75
+ */
38
76
  export declare class WaitStrategyExample {
39
77
  private readonly lockService;
40
78
  private readonly logger;
41
79
  constructor(lockService: RedisLockService);
80
+ /**
81
+ * Example 1: Using decorator with WAIT strategy
82
+ */
42
83
  sequentialTask(): Promise<void>;
84
+ /**
85
+ * Example 2: WAIT with timeout
86
+ */
43
87
  processWithWaitTimeout(): Promise<{
44
88
  timeout: boolean;
45
89
  success?: undefined;
@@ -47,12 +91,24 @@ export declare class WaitStrategyExample {
47
91
  success: boolean;
48
92
  timeout?: undefined;
49
93
  }>;
94
+ /**
95
+ * Example 3: Sequential data processing
96
+ * Perfect for operations that must be processed in order
97
+ */
50
98
  processDataSequentially(userId: string, data: any): Promise<{
51
99
  success: boolean;
52
100
  }>;
101
+ /**
102
+ * Example 4: Queue-like behavior
103
+ * Multiple requests will queue and execute one by one
104
+ */
53
105
  processQueue(queueName: string, item: any): Promise<{
54
106
  success: boolean;
55
107
  }>;
108
+ /**
109
+ * Example 5: Database migration with WAIT
110
+ * Ensures migrations run sequentially across all instances
111
+ */
56
112
  runMigration(migrationName: string): Promise<{
57
113
  success: boolean;
58
114
  }>;
@@ -63,11 +119,44 @@ export declare class WaitStrategyExample {
63
119
  private processQueueItem;
64
120
  private executeMigration;
65
121
  }
122
+ /**
123
+ * USE SKIP WHEN:
124
+ * - Running scheduled tasks where you don't want overlapping executions
125
+ * - Cron jobs that should skip if previous run is still in progress
126
+ * - Non-critical background tasks
127
+ * - Operations where it's okay to skip if busy
128
+ *
129
+ * USE THROW WHEN:
130
+ * - Critical operations that require exclusive access
131
+ * - Financial transactions
132
+ * - Operations where failure to acquire lock is an error
133
+ * - When you want to alert/fail fast if resource is busy
134
+ *
135
+ * USE WAIT WHEN:
136
+ * - Operations that must execute eventually
137
+ * - Sequential processing requirements
138
+ * - Queue-like behavior needed
139
+ * - Database migrations
140
+ * - Operations where order matters
141
+ * - When you want to ensure the operation runs (with optional timeout)
142
+ */
143
+ /**
144
+ * Example: Combining strategies in a single service
145
+ */
66
146
  export declare class CombinedStrategiesExample {
67
147
  private readonly lockService;
68
148
  private readonly logger;
69
149
  constructor(lockService: RedisLockService);
150
+ /**
151
+ * Background cleanup - SKIP if already running
152
+ */
70
153
  cleanupOldData(): Promise<void>;
154
+ /**
155
+ * Payment processing - THROW if cannot get exclusive access
156
+ */
71
157
  processPayment(orderId: string): Promise<void>;
158
+ /**
159
+ * Report generation - WAIT to ensure it runs eventually
160
+ */
72
161
  generateReport(reportId: string): Promise<void>;
73
162
  }