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

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 (441) hide show
  1. package/audit/audit.module.d.ts +11 -0
  2. package/audit/audit.module.js +65 -1
  3. package/audit/controllers/audit.controller.d.ts +81 -1
  4. package/audit/controllers/audit.controller.js +67 -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 +38 -0
  10. package/audit/decorators/audit-operation.decorator.js +42 -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-action-query.dto.d.ts +13 -0
  16. package/audit/dto/audit-action-query.dto.js +77 -0
  17. package/audit/dto/audit-log-query.dto.d.ts +3 -0
  18. package/audit/dto/audit-log-query.dto.js +3 -0
  19. package/audit/dto/begin-transaction.dto.d.ts +3 -0
  20. package/audit/dto/begin-transaction.dto.js +3 -0
  21. package/audit/dto/compare-entities.dto.d.ts +3 -0
  22. package/audit/dto/compare-entities.dto.js +3 -0
  23. package/audit/dto/index.d.ts +1 -0
  24. package/audit/dto/index.js +1 -0
  25. package/audit/dto/pre-check-restore.dto.d.ts +3 -0
  26. package/audit/dto/pre-check-restore.dto.js +3 -0
  27. package/audit/dto/restore-entity.dto.d.ts +3 -0
  28. package/audit/dto/restore-entity.dto.js +3 -0
  29. package/audit/entities/audit-action-summary.entity.d.ts +23 -0
  30. package/audit/entities/audit-action-summary.entity.js +101 -0
  31. package/audit/entities/entity-audit-log.entity.d.ts +10 -2
  32. package/audit/entities/entity-audit-log.entity.js +48 -9
  33. package/audit/entities/entity-transaction.entity.d.ts +11 -2
  34. package/audit/entities/entity-transaction.entity.js +42 -3
  35. package/audit/entities/index.d.ts +3 -0
  36. package/audit/entities/index.js +3 -0
  37. package/audit/entities/manual-operation-log.entity.d.ts +4 -2
  38. package/audit/entities/manual-operation-log.entity.js +12 -9
  39. package/audit/entities/operation-template.entity.d.ts +4 -0
  40. package/audit/entities/operation-template.entity.js +4 -0
  41. package/audit/enums/audit.enums.d.ts +29 -6
  42. package/audit/enums/audit.enums.js +31 -7
  43. package/audit/examples/decorator-value-mapping.example.d.ts +70 -0
  44. package/audit/examples/decorator-value-mapping.example.js +414 -0
  45. package/audit/index.d.ts +5 -1
  46. package/audit/index.js +38 -1
  47. package/audit/interceptors/audit-action.interceptor.d.ts +38 -0
  48. package/audit/interceptors/audit-action.interceptor.js +215 -0
  49. package/audit/interceptors/audit.interceptor.d.ts +16 -0
  50. package/audit/interceptors/audit.interceptor.js +41 -11
  51. package/audit/interceptors/index.d.ts +1 -0
  52. package/audit/interceptors/index.js +1 -0
  53. package/audit/interfaces/audit.interfaces.d.ts +174 -4
  54. package/audit/services/audit-action.service.d.ts +141 -0
  55. package/audit/services/audit-action.service.js +244 -0
  56. package/audit/services/audit-context.service.d.ts +106 -0
  57. package/audit/services/audit-context.service.js +185 -0
  58. package/audit/services/audit-strategy.service.d.ts +6 -0
  59. package/audit/services/audit-strategy.service.js +13 -0
  60. package/audit/services/entity-audit.service.d.ts +273 -5
  61. package/audit/services/entity-audit.service.js +840 -60
  62. package/audit/services/index.d.ts +3 -0
  63. package/audit/services/index.js +3 -0
  64. package/audit/services/manual-audit-log.service.d.ts +133 -9
  65. package/audit/services/manual-audit-log.service.js +157 -42
  66. package/audit/services/multi-database.service.d.ts +9 -2
  67. package/audit/services/multi-database.service.js +9 -21
  68. package/audit/services/operation-description.service.d.ts +71 -2
  69. package/audit/services/operation-description.service.js +231 -20
  70. package/audit/services/transaction-audit.service.d.ts +30 -0
  71. package/audit/services/transaction-audit.service.js +53 -5
  72. package/audit/subscribers/entity-audit.subscriber.d.ts +20 -0
  73. package/audit/subscribers/entity-audit.subscriber.js +98 -6
  74. package/cache/cache-metrics.service.d.ts +67 -0
  75. package/cache/cache-metrics.service.js +68 -4
  76. package/cache/cache-serialization.service.d.ts +31 -0
  77. package/cache/cache-serialization.service.js +25 -0
  78. package/cache/cache.constants.d.ts +9 -0
  79. package/cache/cache.constants.js +9 -0
  80. package/cache/cache.health.d.ts +26 -0
  81. package/cache/cache.health.js +30 -0
  82. package/cache/cache.module.d.ts +87 -2
  83. package/cache/cache.module.js +84 -11
  84. package/cache/cache.service.d.ts +143 -3
  85. package/cache/cache.service.js +173 -4
  86. package/cache/cache.warmup.service.d.ts +39 -0
  87. package/cache/cache.warmup.service.js +32 -0
  88. package/cache/decorators/cache-evict.decorator.d.ts +47 -0
  89. package/cache/decorators/cache-evict.decorator.js +56 -0
  90. package/cache/decorators/cache-put.decorator.d.ts +34 -0
  91. package/cache/decorators/cache-put.decorator.js +39 -0
  92. package/cache/decorators/cacheable.decorator.d.ts +40 -0
  93. package/cache/decorators/cacheable.decorator.js +55 -0
  94. package/cache/dependencies/callback.dependency.d.ts +33 -0
  95. package/cache/dependencies/callback.dependency.js +39 -1
  96. package/cache/dependencies/chain.dependency.d.ts +28 -0
  97. package/cache/dependencies/chain.dependency.js +34 -0
  98. package/cache/dependencies/db.dependency.d.ts +83 -7
  99. package/cache/dependencies/db.dependency.js +89 -14
  100. package/cache/dependencies/file.dependency.d.ts +32 -0
  101. package/cache/dependencies/file.dependency.js +34 -0
  102. package/cache/dependencies/tag.dependency.d.ts +75 -4
  103. package/cache/dependencies/tag.dependency.js +145 -11
  104. package/cache/dependencies/time.dependency.d.ts +43 -0
  105. package/cache/dependencies/time.dependency.js +43 -0
  106. package/cache/entities/index.d.ts +1 -0
  107. package/cache/entities/index.js +17 -0
  108. package/cache/entities/typeorm-cache.entity.d.ts +71 -0
  109. package/cache/entities/typeorm-cache.entity.js +110 -0
  110. package/cache/examples/basic-usage.d.ts +15 -0
  111. package/cache/examples/basic-usage.js +62 -8
  112. package/cache/index.d.ts +2 -1
  113. package/cache/index.js +28 -2
  114. package/cache/interfaces/cache-dependency.interface.d.ts +53 -0
  115. package/cache/interfaces/cache-options.interface.d.ts +89 -0
  116. package/cache/interfaces/cache-options.interface.js +6 -0
  117. package/cache/interfaces/cache-provider.interface.d.ts +78 -0
  118. package/cache/providers/base-cache.provider.d.ts +14 -0
  119. package/cache/providers/base-cache.provider.js +16 -0
  120. package/cache/providers/cls-cache.provider.d.ts +20 -0
  121. package/cache/providers/cls-cache.provider.js +28 -0
  122. package/cache/providers/index.d.ts +2 -1
  123. package/cache/providers/index.js +2 -1
  124. package/cache/providers/lrucache.provider.d.ts +76 -0
  125. package/cache/providers/lrucache.provider.js +226 -0
  126. package/cache/providers/redis-cache.provider.d.ts +26 -0
  127. package/cache/providers/redis-cache.provider.js +29 -0
  128. package/cache/providers/typeorm-cache.provider.d.ts +211 -0
  129. package/cache/providers/typeorm-cache.provider.js +483 -0
  130. package/cache/utils/dependency-manager.util.d.ts +52 -0
  131. package/cache/utils/dependency-manager.util.js +59 -0
  132. package/cache/utils/key-generator.util.d.ts +42 -0
  133. package/cache/utils/key-generator.util.js +53 -1
  134. package/common/abstract.entity.d.ts +14 -0
  135. package/common/abstract.entity.js +14 -0
  136. package/common/boilerplate.polyfill.d.ts +143 -0
  137. package/common/boilerplate.polyfill.js +35 -1
  138. package/common/dto/dto-container.d.ts +16 -0
  139. package/common/dto/dto-container.js +20 -0
  140. package/common/dto/dto-decorators.d.ts +18 -0
  141. package/common/dto/dto-decorators.js +14 -0
  142. package/common/dto/dto-extensions.d.ts +11 -0
  143. package/common/dto/dto-extensions.js +9 -0
  144. package/common/dto/dto-service-accessor.d.ts +17 -0
  145. package/common/dto/dto-service-accessor.js +18 -0
  146. package/common/dto/dto-transformer.d.ts +12 -0
  147. package/common/dto/dto-transformer.js +9 -0
  148. package/common/dto/index.js +2 -0
  149. package/common/examples/paginate-and-map.example.d.ts +6 -0
  150. package/common/examples/paginate-and-map.example.js +26 -0
  151. package/common/helpers/validation-metadata-helper.d.ts +55 -0
  152. package/common/helpers/validation-metadata-helper.js +60 -0
  153. package/common/index.d.ts +1 -0
  154. package/common/index.js +4 -0
  155. package/common/utils.d.ts +15 -0
  156. package/common/utils.js +15 -0
  157. package/constants/language-code.js +1 -0
  158. package/decorators/field.decorators.d.ts +72 -3
  159. package/decorators/field.decorators.js +155 -19
  160. package/decorators/property.decorators.js +1 -0
  161. package/decorators/public-route.decorator.js +1 -0
  162. package/decorators/transform.decorators.d.ts +27 -2
  163. package/decorators/transform.decorators.js +29 -23
  164. package/decorators/translate.decorator.js +1 -0
  165. package/decorators/user.decorator.js +1 -0
  166. package/decorators/validator.decorators.d.ts +8 -18
  167. package/decorators/validator.decorators.js +22 -190
  168. package/file-upload/controllers/file-access.controller.d.ts +23 -0
  169. package/file-upload/controllers/file-access.controller.js +128 -0
  170. package/file-upload/decorators/column.decorator.d.ts +151 -0
  171. package/file-upload/decorators/column.decorator.js +273 -0
  172. package/file-upload/decorators/csv-data.decorator.d.ts +30 -0
  173. package/file-upload/decorators/csv-data.decorator.js +85 -0
  174. package/file-upload/decorators/csv-import.decorator.d.ts +34 -0
  175. package/file-upload/decorators/csv-import.decorator.js +24 -0
  176. package/file-upload/decorators/examples/column-mapping.example.d.ts +76 -0
  177. package/file-upload/decorators/examples/column-mapping.example.js +122 -0
  178. package/file-upload/decorators/excel-data.decorator.d.ts +30 -0
  179. package/file-upload/decorators/excel-data.decorator.js +85 -0
  180. package/file-upload/decorators/file-upload.decorator.d.ts +83 -0
  181. package/file-upload/decorators/file-upload.decorator.js +172 -0
  182. package/file-upload/decorators/index.d.ts +5 -0
  183. package/file-upload/decorators/index.js +38 -0
  184. package/file-upload/decorators/process.decorator.d.ts +40 -0
  185. package/file-upload/decorators/process.decorator.js +52 -0
  186. package/file-upload/decorators/validate-data.decorator.d.ts +91 -0
  187. package/file-upload/decorators/validate-data.decorator.js +39 -0
  188. package/file-upload/dto/create-file.dto.d.ts +24 -0
  189. package/file-upload/dto/create-file.dto.js +112 -0
  190. package/file-upload/dto/find-files.dto.d.ts +15 -0
  191. package/file-upload/dto/find-files.dto.js +76 -0
  192. package/file-upload/dto/index.d.ts +4 -0
  193. package/file-upload/dto/index.js +20 -0
  194. package/file-upload/dto/pagination.dto.d.ts +7 -0
  195. package/file-upload/dto/pagination.dto.js +39 -0
  196. package/file-upload/dto/update-file.dto.d.ts +15 -0
  197. package/file-upload/dto/update-file.dto.js +67 -0
  198. package/file-upload/entities/file-metadata.entity.d.ts +25 -0
  199. package/file-upload/entities/file-metadata.entity.js +76 -0
  200. package/file-upload/entities/file.entity.d.ts +114 -0
  201. package/file-upload/entities/file.entity.js +350 -0
  202. package/file-upload/entities/index.d.ts +2 -0
  203. package/file-upload/entities/index.js +18 -0
  204. package/file-upload/enums/file-type.enum.d.ts +72 -0
  205. package/file-upload/enums/file-type.enum.js +212 -0
  206. package/file-upload/exceptions/file-upload.exception.d.ts +57 -0
  207. package/file-upload/exceptions/file-upload.exception.js +120 -0
  208. package/file-upload/exceptions/index.d.ts +1 -0
  209. package/file-upload/exceptions/index.js +17 -0
  210. package/file-upload/file-upload.module.d.ts +89 -0
  211. package/file-upload/file-upload.module.js +292 -0
  212. package/file-upload/index.d.ts +37 -0
  213. package/file-upload/index.js +77 -0
  214. package/file-upload/interceptors/file-upload.interceptor.d.ts +101 -0
  215. package/file-upload/interceptors/file-upload.interceptor.js +594 -0
  216. package/file-upload/interceptors/index.d.ts +1 -0
  217. package/file-upload/interceptors/index.js +17 -0
  218. package/file-upload/interfaces/custom-file-type.interface.d.ts +72 -0
  219. package/file-upload/interfaces/custom-file-type.interface.js +2 -0
  220. package/file-upload/interfaces/file-buffer.interface.d.ts +72 -0
  221. package/file-upload/interfaces/file-buffer.interface.js +2 -0
  222. package/file-upload/interfaces/file-entity.interface.d.ts +142 -0
  223. package/file-upload/interfaces/file-entity.interface.js +28 -0
  224. package/file-upload/interfaces/file-metadata.interface.d.ts +21 -0
  225. package/file-upload/interfaces/file-metadata.interface.js +2 -0
  226. package/file-upload/interfaces/file-processor.interface.d.ts +93 -0
  227. package/file-upload/interfaces/file-processor.interface.js +2 -0
  228. package/file-upload/interfaces/file-upload-options.interface.d.ts +74 -0
  229. package/file-upload/interfaces/file-upload-options.interface.js +5 -0
  230. package/file-upload/interfaces/index.d.ts +7 -0
  231. package/file-upload/interfaces/index.js +24 -0
  232. package/file-upload/interfaces/processor-options.interface.d.ts +102 -0
  233. package/file-upload/interfaces/processor-options.interface.js +2 -0
  234. package/file-upload/interfaces/storage-provider.interface.d.ts +239 -0
  235. package/file-upload/interfaces/storage-provider.interface.js +2 -0
  236. package/file-upload/interfaces/upload-options.interface.d.ts +19 -0
  237. package/file-upload/interfaces/upload-options.interface.js +2 -0
  238. package/file-upload/processors/csv.processor.d.ts +98 -0
  239. package/file-upload/processors/csv.processor.js +391 -0
  240. package/file-upload/processors/excel.processor.d.ts +130 -0
  241. package/file-upload/processors/excel.processor.js +547 -0
  242. package/file-upload/processors/image.processor.d.ts +199 -0
  243. package/file-upload/processors/image.processor.js +377 -0
  244. package/file-upload/providers/index.d.ts +2 -0
  245. package/file-upload/providers/index.js +18 -0
  246. package/file-upload/providers/local-storage.provider.d.ts +98 -0
  247. package/file-upload/providers/local-storage.provider.js +484 -0
  248. package/file-upload/providers/s3-storage.provider.d.ts +87 -0
  249. package/file-upload/providers/s3-storage.provider.js +455 -0
  250. package/file-upload/services/file-signature-validator.service.d.ts +118 -0
  251. package/file-upload/services/file-signature-validator.service.js +376 -0
  252. package/file-upload/services/file.service.d.ts +193 -0
  253. package/file-upload/services/file.service.js +638 -0
  254. package/file-upload/services/index.d.ts +4 -0
  255. package/file-upload/services/index.js +20 -0
  256. package/file-upload/services/malicious-file-detector.service.d.ts +300 -0
  257. package/file-upload/services/malicious-file-detector.service.js +1234 -0
  258. package/file-upload/services/mime-registry.service.d.ts +47 -0
  259. package/file-upload/services/mime-registry.service.js +167 -0
  260. package/file-upload/utils/checksum.util.d.ts +28 -0
  261. package/file-upload/utils/checksum.util.js +65 -0
  262. package/file-upload/utils/dynamic-import.util.d.ts +54 -0
  263. package/file-upload/utils/dynamic-import.util.js +156 -0
  264. package/file-upload/utils/filename.util.d.ts +59 -0
  265. package/file-upload/utils/filename.util.js +184 -0
  266. package/file-upload/utils/filepath.util.d.ts +70 -0
  267. package/file-upload/utils/filepath.util.js +152 -0
  268. package/file-upload/utils/index.d.ts +4 -0
  269. package/file-upload/utils/index.js +20 -0
  270. package/filters/bad-request.filter.js +19 -4
  271. package/filters/constraint-errors.js +1 -0
  272. package/helpers/common.helper.d.ts +13 -0
  273. package/helpers/common.helper.js +13 -0
  274. package/http-client/config/http-client.config.d.ts +20 -0
  275. package/http-client/config/http-client.config.js +48 -21
  276. package/http-client/decorators/http-client.decorators.d.ts +55 -14
  277. package/http-client/decorators/http-client.decorators.js +154 -78
  278. package/http-client/entities/http-log.entity.d.ts +217 -8
  279. package/http-client/entities/http-log.entity.js +7 -22
  280. package/http-client/errors/http-client.errors.d.ts +57 -0
  281. package/http-client/errors/http-client.errors.js +58 -0
  282. package/http-client/examples/advanced-usage.example.d.ts +40 -0
  283. package/http-client/examples/advanced-usage.example.js +53 -61
  284. package/http-client/examples/auth-with-waiting-lock.example.d.ts +31 -0
  285. package/http-client/examples/auth-with-waiting-lock.example.js +52 -5
  286. package/http-client/examples/basic-usage.example.d.ts +60 -0
  287. package/http-client/examples/basic-usage.example.js +60 -0
  288. package/http-client/examples/multi-api-configuration.example.d.ts +60 -0
  289. package/http-client/examples/multi-api-configuration.example.js +76 -5
  290. package/http-client/examples/proxy-from-environment.example.d.ts +133 -0
  291. package/http-client/examples/proxy-from-environment.example.js +409 -0
  292. package/http-client/http-client.module.d.ts +48 -2
  293. package/http-client/http-client.module.js +147 -68
  294. package/http-client/index.d.ts +1 -1
  295. package/http-client/index.js +8 -0
  296. package/http-client/interfaces/api-client-config.interface.d.ts +80 -45
  297. package/http-client/interfaces/api-client-config.interface.js +3 -0
  298. package/http-client/interfaces/http-client-config.interface.d.ts +109 -52
  299. package/http-client/services/api-client-registry.service.d.ts +50 -11
  300. package/http-client/services/api-client-registry.service.js +90 -250
  301. package/http-client/services/circuit-breaker.service.d.ts +115 -2
  302. package/http-client/services/circuit-breaker.service.js +237 -7
  303. package/http-client/services/http-client.service.d.ts +124 -14
  304. package/http-client/services/http-client.service.js +437 -148
  305. package/http-client/services/http-log-query.service.d.ts +83 -0
  306. package/http-client/services/http-log-query.service.js +121 -13
  307. package/http-client/services/http-replay.service.d.ts +101 -0
  308. package/http-client/services/http-replay.service.js +86 -0
  309. package/http-client/services/index.d.ts +0 -1
  310. package/http-client/services/index.js +0 -1
  311. package/http-client/services/log-cleanup.service.d.ts +63 -0
  312. package/http-client/services/log-cleanup.service.js +54 -2
  313. package/http-client/services/logging.service.d.ts +116 -7
  314. package/http-client/services/logging.service.js +349 -86
  315. package/http-client/utils/call-stack-extractor.util.d.ts +63 -0
  316. package/http-client/utils/call-stack-extractor.util.js +83 -0
  317. package/http-client/utils/context-extractor.util.d.ts +49 -0
  318. package/http-client/utils/context-extractor.util.js +54 -0
  319. package/http-client/utils/curl-generator.util.d.ts +21 -0
  320. package/http-client/utils/curl-generator.util.js +44 -3
  321. package/http-client/utils/index.d.ts +1 -0
  322. package/http-client/utils/index.js +1 -0
  323. package/http-client/utils/proxy-environment.util.d.ts +42 -0
  324. package/http-client/utils/proxy-environment.util.js +148 -0
  325. package/http-client/utils/request-id.util.d.ts +18 -0
  326. package/http-client/utils/request-id.util.js +20 -0
  327. package/http-client/utils/retry-recorder.util.d.ts +42 -0
  328. package/http-client/utils/retry-recorder.util.js +44 -0
  329. package/http-client/utils/security-validator.util.d.ts +118 -0
  330. package/http-client/utils/security-validator.util.js +352 -0
  331. package/index.d.ts +3 -1
  332. package/index.js +12 -1
  333. package/interceptors/translation-interceptor.service.js +5 -0
  334. package/ip-filter/constants.d.ts +21 -0
  335. package/ip-filter/constants.js +24 -0
  336. package/ip-filter/decorators/index.d.ts +1 -0
  337. package/ip-filter/decorators/index.js +17 -0
  338. package/ip-filter/decorators/ip-filter.decorator.d.ts +58 -0
  339. package/ip-filter/decorators/ip-filter.decorator.js +79 -0
  340. package/ip-filter/guards/index.d.ts +1 -0
  341. package/ip-filter/guards/index.js +17 -0
  342. package/ip-filter/guards/ip-filter.guard.d.ts +62 -0
  343. package/ip-filter/guards/ip-filter.guard.js +174 -0
  344. package/ip-filter/index.d.ts +7 -0
  345. package/ip-filter/index.js +23 -0
  346. package/ip-filter/interfaces/index.d.ts +4 -0
  347. package/ip-filter/interfaces/index.js +20 -0
  348. package/ip-filter/interfaces/ip-filter-async-options.interface.d.ts +15 -0
  349. package/ip-filter/interfaces/ip-filter-async-options.interface.js +2 -0
  350. package/ip-filter/interfaces/ip-filter-metadata.interface.d.ts +26 -0
  351. package/ip-filter/interfaces/ip-filter-metadata.interface.js +2 -0
  352. package/ip-filter/interfaces/ip-filter-options.interface.d.ts +34 -0
  353. package/ip-filter/interfaces/ip-filter-options.interface.js +2 -0
  354. package/ip-filter/interfaces/ip-rule.interface.d.ts +36 -0
  355. package/ip-filter/interfaces/ip-rule.interface.js +2 -0
  356. package/ip-filter/ip-filter.module.d.ts +55 -0
  357. package/ip-filter/ip-filter.module.js +105 -0
  358. package/ip-filter/services/index.d.ts +1 -0
  359. package/ip-filter/services/index.js +17 -0
  360. package/ip-filter/services/ip-filter.service.d.ts +92 -0
  361. package/ip-filter/services/ip-filter.service.js +238 -0
  362. package/ip-filter/utils/index.d.ts +1 -0
  363. package/ip-filter/utils/index.js +17 -0
  364. package/ip-filter/utils/ip-utils.d.ts +61 -0
  365. package/ip-filter/utils/ip-utils.js +162 -0
  366. package/package.json +32 -29
  367. package/providers/context.provider.d.ts +9 -0
  368. package/providers/context.provider.js +15 -0
  369. package/providers/generator.provider.d.ts +4 -0
  370. package/providers/generator.provider.js +4 -0
  371. package/redis-lock/comprehensive-lock-cleanup.service.d.ts +94 -0
  372. package/redis-lock/comprehensive-lock-cleanup.service.js +253 -0
  373. package/redis-lock/examples/lock-strategy.examples.d.ts +89 -0
  374. package/redis-lock/examples/lock-strategy.examples.js +130 -15
  375. package/redis-lock/index.d.ts +2 -0
  376. package/redis-lock/index.js +8 -1
  377. package/redis-lock/lock-heartbeat.service.d.ts +80 -0
  378. package/redis-lock/lock-heartbeat.service.js +232 -0
  379. package/redis-lock/redis-lock.decorator.d.ts +101 -0
  380. package/redis-lock/redis-lock.decorator.js +120 -0
  381. package/redis-lock/redis-lock.module.d.ts +66 -0
  382. package/redis-lock/redis-lock.module.js +175 -70
  383. package/redis-lock/redis-lock.service.d.ts +282 -0
  384. package/redis-lock/redis-lock.service.js +343 -20
  385. package/setup/bootstrap.setup.d.ts +2 -1
  386. package/setup/bootstrap.setup.js +22 -1
  387. package/setup/index.d.ts +1 -0
  388. package/setup/index.js +1 -0
  389. package/setup/mode.setup.d.ts +44 -0
  390. package/setup/mode.setup.js +44 -0
  391. package/setup/run-in-mode.decorator.d.ts +56 -0
  392. package/setup/run-in-mode.decorator.js +92 -0
  393. package/setup/schedule.decorator.d.ts +227 -0
  394. package/setup/schedule.decorator.js +240 -12
  395. package/setup/worker.decorator.d.ts +86 -0
  396. package/setup/worker.decorator.js +97 -0
  397. package/shared/index.d.ts +1 -1
  398. package/shared/index.js +1 -1
  399. package/shared/{serviceRegistryModule.js → service-registry.module.js} +19 -18
  400. package/shared/services/api-config.service.d.ts +3 -0
  401. package/shared/services/api-config.service.js +21 -9
  402. package/shared/services/index.d.ts +0 -1
  403. package/shared/services/index.js +0 -1
  404. package/validator-json/decorators.d.ts +17 -0
  405. package/validator-json/decorators.js +17 -2
  406. package/validator-json/default.d.ts +6 -0
  407. package/validator-json/default.js +30 -2
  408. package/validator-json/defaultConverters.js +1 -0
  409. package/validator-json/options.d.ts +23 -0
  410. package/validators/common-validators.d.ts +143 -0
  411. package/validators/common-validators.js +249 -0
  412. package/validators/custom-validate.examples.d.ts +23 -0
  413. package/validators/custom-validate.examples.js +78 -6
  414. package/validators/custom-validate.validator.d.ts +108 -0
  415. package/validators/custom-validate.validator.js +85 -0
  416. package/validators/file-mimetype.validator.d.ts +0 -2
  417. package/validators/file-mimetype.validator.js +4 -6
  418. package/validators/index.d.ts +1 -0
  419. package/validators/index.js +1 -0
  420. package/validators/is-exists.validator.d.ts +26 -6
  421. package/validators/is-exists.validator.js +30 -7
  422. package/validators/is-unique.validator.d.ts +33 -7
  423. package/validators/is-unique.validator.js +59 -17
  424. package/validators/skip-empty.validator.d.ts +5 -0
  425. package/validators/skip-empty.validator.js +5 -0
  426. package/vault/interfaces/vault-options.interface.d.ts +9 -0
  427. package/vault/vault-config.loader.d.ts +30 -0
  428. package/vault/vault-config.loader.js +48 -1
  429. package/vault/vault-config.service.d.ts +53 -0
  430. package/vault/vault-config.service.js +57 -0
  431. package/vault/vault.module.d.ts +4 -0
  432. package/vault/vault.module.js +4 -0
  433. package/cache/providers/memory-cache.provider.d.ts +0 -26
  434. package/cache/providers/memory-cache.provider.js +0 -171
  435. package/decorators/examples/validation-decorators.example.d.ts +0 -69
  436. package/decorators/examples/validation-decorators.example.js +0 -331
  437. package/http-client/services/cache.service.d.ts +0 -24
  438. package/http-client/services/cache.service.js +0 -264
  439. package/shared/services/validator.service.d.ts +0 -3
  440. package/shared/services/validator.service.js +0 -20
  441. /package/shared/{serviceRegistryModule.d.ts → service-registry.module.d.ts} +0 -0
@@ -0,0 +1,483 @@
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 __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
15
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16
+ return new (P || (P = Promise))(function (resolve, reject) {
17
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
18
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
19
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
21
+ });
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.TypeormCacheProvider = void 0;
25
+ const common_1 = require("@nestjs/common");
26
+ const typeorm_1 = require("typeorm");
27
+ const base_cache_provider_1 = require("./base-cache.provider");
28
+ const entities_1 = require("../entities");
29
+ /**
30
+ * TypeORM Cache Provider
31
+ *
32
+ * Database-backed cache provider using TypeORM for persistent caching.
33
+ * This is an L3 cache layer that provides:
34
+ * - Persistent cache storage in database
35
+ * - Cross-instance cache sharing
36
+ * - Automatic expiration handling
37
+ * - Namespace isolation
38
+ *
39
+ * Unlike in-memory caches, this provider survives application restarts
40
+ * and can be shared across multiple application instances.
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * // In your module:
45
+ * @Module({
46
+ * providers: [
47
+ * {
48
+ * provide: 'TYPEORM_CACHE',
49
+ * useFactory: (dataSource: DataSource) => {
50
+ * return new TypeormCacheProvider({
51
+ * duration: 60000,
52
+ * namespace: 'app:cache',
53
+ * dataSourceName: 'default',
54
+ * });
55
+ * },
56
+ * inject: [DataSource],
57
+ * },
58
+ * ],
59
+ * })
60
+ * export class AppModule {}
61
+ *
62
+ * // In your service:
63
+ * @Injectable()
64
+ * export class UserService {
65
+ * constructor(@Inject('TYPEORM_CACHE') private cache: TypeormCacheProvider) {}
66
+ *
67
+ * async getUser(id: string) {
68
+ * // Try cache first
69
+ * const cached = await this.cache.get(`user:${id}`);
70
+ * if (cached) return cached;
71
+ *
72
+ * // Cache miss - fetch from database
73
+ * const user = await this.userRepository.findOne(id);
74
+ *
75
+ * // Store in cache
76
+ * await this.cache.set(`user:${id}`, user, 60000);
77
+ *
78
+ * return user;
79
+ * }
80
+ * }
81
+ * ```
82
+ *
83
+ * @see https://typeorm.io/#caching
84
+ */
85
+ let TypeormCacheProvider = class TypeormCacheProvider extends base_cache_provider_1.BaseCacheProvider {
86
+ constructor(injectedDataSource, options) {
87
+ super();
88
+ this.injectedDataSource = injectedDataSource;
89
+ const { duration = 60000, enabled = true, dataSourceName = 'default', namespace = 'cache', autoCleanup = true, cleanupInterval = 300000, // 5 minutes
90
+ } = options || {};
91
+ this.defaultDuration = duration;
92
+ this.enabled = enabled;
93
+ this.namespace = namespace;
94
+ this.dataSourceName = dataSourceName;
95
+ this.autoCleanup = autoCleanup;
96
+ this.cleanupInterval = cleanupInterval;
97
+ if (this.injectedDataSource) {
98
+ this.dataSource = this.injectedDataSource;
99
+ }
100
+ }
101
+ /**
102
+ * Get DataSource for cache operations
103
+ * Uses @nest-omni/transaction's getDataSource utility
104
+ */
105
+ getDataSource() {
106
+ if (this.dataSource) {
107
+ return this.dataSource;
108
+ }
109
+ try {
110
+ // Try to use getDataSource from @nest-omni/transaction
111
+ const { getDataSource } = require('@nest-omni/transaction');
112
+ this.dataSource = getDataSource(this.dataSourceName);
113
+ if (!this.dataSource) {
114
+ throw new Error(`DataSource '${this.dataSourceName}' not found`);
115
+ }
116
+ return this.dataSource;
117
+ }
118
+ catch (error) {
119
+ throw new Error(`TypeormCacheProvider requires DataSource '${this.dataSourceName}' to be registered. ` +
120
+ `Use DataSourceUtil.registerDataSource('${this.dataSourceName}', dataSource) or inject it directly.`);
121
+ }
122
+ }
123
+ /**
124
+ * Get repository for cache operations
125
+ */
126
+ getRepository() {
127
+ const dataSource = this.getDataSource();
128
+ return dataSource.getRepository(entities_1.TypeormCacheEntity);
129
+ }
130
+ getName() {
131
+ return 'TypeORM';
132
+ }
133
+ /**
134
+ * Get cached value by key
135
+ */
136
+ get(key) {
137
+ return __awaiter(this, void 0, void 0, function* () {
138
+ if (!this.enabled)
139
+ return null;
140
+ try {
141
+ const repository = this.getRepository();
142
+ const fullKey = this.getFullKey(key);
143
+ const cacheEntry = yield repository.findOne({
144
+ where: { key: fullKey, namespace: this.namespace },
145
+ });
146
+ if (!cacheEntry) {
147
+ return null;
148
+ }
149
+ // Check if expired
150
+ if (cacheEntry.isExpired()) {
151
+ // Clean up expired entry
152
+ yield repository.remove(cacheEntry);
153
+ return null;
154
+ }
155
+ // Parse and return cached value
156
+ return JSON.parse(cacheEntry.value);
157
+ }
158
+ catch (error) {
159
+ console.error(`TypeormCacheProvider.get() failed for key '${key}':`, error);
160
+ return null;
161
+ }
162
+ });
163
+ }
164
+ /**
165
+ * Set cache value with optional TTL
166
+ */
167
+ set(key, value, ttl) {
168
+ return __awaiter(this, void 0, void 0, function* () {
169
+ if (!this.enabled)
170
+ return;
171
+ try {
172
+ const repository = this.getRepository();
173
+ const fullKey = this.getFullKey(key);
174
+ const duration = ttl || this.defaultDuration;
175
+ const expiresAt = duration > 0 ? new Date(Date.now() + duration) : null;
176
+ // Check if entry already exists
177
+ const existing = yield repository.findOne({
178
+ where: { key: fullKey, namespace: this.namespace },
179
+ });
180
+ if (existing) {
181
+ // Update existing entry
182
+ existing.updateValue(JSON.stringify(value), duration);
183
+ yield repository.save(existing);
184
+ }
185
+ else {
186
+ // Create new entry
187
+ const cacheEntry = repository.create({
188
+ key: fullKey,
189
+ namespace: this.namespace,
190
+ value: JSON.stringify(value),
191
+ expires_at: expiresAt,
192
+ ttl: duration > 0 ? Math.floor(duration / 1000) : null,
193
+ });
194
+ yield repository.save(cacheEntry);
195
+ }
196
+ }
197
+ catch (error) {
198
+ console.error(`TypeormCacheProvider.set() failed for key '${key}':`, error);
199
+ }
200
+ });
201
+ }
202
+ /**
203
+ * Delete cache entry by key
204
+ */
205
+ delete(key) {
206
+ return __awaiter(this, void 0, void 0, function* () {
207
+ if (!this.enabled)
208
+ return;
209
+ try {
210
+ const repository = this.getRepository();
211
+ const keys = Array.isArray(key) ? key : [key];
212
+ const fullKeys = keys.map((k) => this.getFullKey(k));
213
+ yield repository.delete({
214
+ key: (0, typeorm_1.In)(fullKeys),
215
+ namespace: this.namespace,
216
+ });
217
+ }
218
+ catch (error) {
219
+ console.error('TypeormCacheProvider.delete() failed:', error);
220
+ }
221
+ });
222
+ }
223
+ /**
224
+ * Delete cache entries matching a pattern
225
+ * Uses SQL LIKE for pattern matching
226
+ */
227
+ deletePattern(pattern) {
228
+ return __awaiter(this, void 0, void 0, function* () {
229
+ if (!this.enabled)
230
+ return 0;
231
+ try {
232
+ const repository = this.getRepository();
233
+ const fullPattern = this.getFullKey(pattern);
234
+ // Use LIKE for pattern matching
235
+ const result = yield repository
236
+ .createQueryBuilder()
237
+ .delete()
238
+ .where('namespace = :namespace', { namespace: this.namespace })
239
+ .andWhere('key LIKE :pattern', { pattern: fullPattern })
240
+ .execute();
241
+ return result.affected || 0;
242
+ }
243
+ catch (error) {
244
+ console.error('TypeormCacheProvider.deletePattern() failed:', error);
245
+ return 0;
246
+ }
247
+ });
248
+ }
249
+ /**
250
+ * Clear all cache entries in namespace
251
+ */
252
+ clear() {
253
+ return __awaiter(this, void 0, void 0, function* () {
254
+ if (!this.enabled)
255
+ return;
256
+ try {
257
+ const repository = this.getRepository();
258
+ yield repository.delete({
259
+ namespace: this.namespace,
260
+ });
261
+ }
262
+ catch (error) {
263
+ console.error('TypeormCacheProvider.clear() failed:', error);
264
+ }
265
+ });
266
+ }
267
+ /**
268
+ * Check if key exists and is not expired
269
+ */
270
+ has(key) {
271
+ return __awaiter(this, void 0, void 0, function* () {
272
+ if (!this.enabled)
273
+ return false;
274
+ try {
275
+ const value = yield this.get(key);
276
+ return value !== null;
277
+ }
278
+ catch (error) {
279
+ return false;
280
+ }
281
+ });
282
+ }
283
+ /**
284
+ * Get multiple values by keys
285
+ */
286
+ mget(keys) {
287
+ return __awaiter(this, void 0, void 0, function* () {
288
+ if (!this.enabled || keys.length === 0) {
289
+ return keys.map(() => null);
290
+ }
291
+ try {
292
+ const repository = this.getRepository();
293
+ const fullKeys = keys.map((k) => this.getFullKey(k));
294
+ const cacheEntries = yield repository.find({
295
+ where: {
296
+ key: (0, typeorm_1.In)(fullKeys),
297
+ namespace: this.namespace,
298
+ },
299
+ });
300
+ // Create map for quick lookup
301
+ const entryMap = new Map();
302
+ for (const entry of cacheEntries) {
303
+ if (entry.isValid()) {
304
+ entryMap.set(entry.key, JSON.parse(entry.value));
305
+ }
306
+ else {
307
+ // Clean up expired entry
308
+ yield repository.remove(entry);
309
+ }
310
+ }
311
+ // Return values in same order as input keys
312
+ return keys.map((key) => entryMap.get(this.getFullKey(key)) || null);
313
+ }
314
+ catch (error) {
315
+ console.error('TypeormCacheProvider.mget() failed:', error);
316
+ return keys.map(() => null);
317
+ }
318
+ });
319
+ }
320
+ /**
321
+ * Set multiple cache entries
322
+ */
323
+ mset(items, ttl) {
324
+ return __awaiter(this, void 0, void 0, function* () {
325
+ if (!this.enabled || items.length === 0)
326
+ return;
327
+ try {
328
+ const repository = this.getRepository();
329
+ const duration = ttl || this.defaultDuration;
330
+ const expiresAt = duration > 0 ? new Date(Date.now() + duration) : null;
331
+ for (const item of items) {
332
+ const fullKey = this.getFullKey(item.key);
333
+ const existing = yield repository.findOne({
334
+ where: { key: fullKey, namespace: this.namespace },
335
+ });
336
+ if (existing) {
337
+ existing.updateValue(JSON.stringify(item.value), duration);
338
+ yield repository.save(existing);
339
+ }
340
+ else {
341
+ const cacheEntry = repository.create({
342
+ key: fullKey,
343
+ namespace: this.namespace,
344
+ value: JSON.stringify(item.value),
345
+ expires_at: expiresAt,
346
+ ttl: duration > 0 ? Math.floor(duration / 1000) : null,
347
+ });
348
+ yield repository.save(cacheEntry);
349
+ }
350
+ }
351
+ }
352
+ catch (error) {
353
+ console.error('TypeormCacheProvider.mset() failed:', error);
354
+ }
355
+ });
356
+ }
357
+ /**
358
+ * Get cache configuration
359
+ */
360
+ getCacheConfig() {
361
+ return {
362
+ duration: this.defaultDuration,
363
+ type: 'database',
364
+ enabled: this.enabled,
365
+ namespace: this.namespace,
366
+ dataSourceName: this.dataSourceName,
367
+ };
368
+ }
369
+ /**
370
+ * Get statistics about cache entries
371
+ */
372
+ getStats() {
373
+ return __awaiter(this, void 0, void 0, function* () {
374
+ try {
375
+ const repository = this.getRepository();
376
+ const [total, expired] = yield Promise.all([
377
+ repository.count({
378
+ where: { namespace: this.namespace },
379
+ }),
380
+ repository
381
+ .createQueryBuilder('cache')
382
+ .where('cache.namespace = :namespace', { namespace: this.namespace })
383
+ .andWhere('cache.expires_at < :now', { now: new Date() })
384
+ .getCount(),
385
+ ]);
386
+ return {
387
+ totalEntries: total,
388
+ expiredEntries: expired,
389
+ validEntries: total - expired,
390
+ enabled: this.enabled,
391
+ defaultDuration: this.defaultDuration,
392
+ type: 'database',
393
+ namespace: this.namespace,
394
+ dataSourceName: this.dataSourceName,
395
+ };
396
+ }
397
+ catch (error) {
398
+ return {
399
+ totalEntries: 0,
400
+ expiredEntries: 0,
401
+ validEntries: 0,
402
+ enabled: this.enabled,
403
+ defaultDuration: this.defaultDuration,
404
+ type: 'database',
405
+ namespace: this.namespace,
406
+ dataSourceName: this.dataSourceName,
407
+ error: error instanceof Error ? error.message : String(error),
408
+ };
409
+ }
410
+ });
411
+ }
412
+ /**
413
+ * Clean up expired entries
414
+ */
415
+ cleanupExpired() {
416
+ return __awaiter(this, void 0, void 0, function* () {
417
+ try {
418
+ const repository = this.getRepository();
419
+ const result = yield repository
420
+ .createQueryBuilder()
421
+ .delete()
422
+ .where('namespace = :namespace', { namespace: this.namespace })
423
+ .andWhere('expires_at < :now', { now: new Date() })
424
+ .execute();
425
+ return result.affected || 0;
426
+ }
427
+ catch (error) {
428
+ console.error('TypeormCacheProvider.cleanupExpired() failed:', error);
429
+ return 0;
430
+ }
431
+ });
432
+ }
433
+ /**
434
+ * Enable or disable caching
435
+ */
436
+ setEnabled(enabled) {
437
+ this.enabled = enabled;
438
+ }
439
+ /**
440
+ * Set namespace
441
+ */
442
+ setNamespace(namespace) {
443
+ this.namespace = namespace;
444
+ }
445
+ /**
446
+ * Get full key with namespace
447
+ */
448
+ getFullKey(key) {
449
+ return key;
450
+ }
451
+ /**
452
+ * Start automatic cleanup of expired entries
453
+ */
454
+ startAutoCleanup() {
455
+ if (!this.autoCleanup || this.cleanupTimer) {
456
+ return;
457
+ }
458
+ this.cleanupTimer = setInterval(() => __awaiter(this, void 0, void 0, function* () {
459
+ yield this.cleanupExpired();
460
+ }), this.cleanupInterval);
461
+ }
462
+ /**
463
+ * Stop automatic cleanup
464
+ */
465
+ stopAutoCleanup() {
466
+ if (this.cleanupTimer) {
467
+ clearInterval(this.cleanupTimer);
468
+ this.cleanupTimer = undefined;
469
+ }
470
+ }
471
+ onModuleDestroy() {
472
+ return __awaiter(this, void 0, void 0, function* () {
473
+ this.stopAutoCleanup();
474
+ });
475
+ }
476
+ };
477
+ exports.TypeormCacheProvider = TypeormCacheProvider;
478
+ exports.TypeormCacheProvider = TypeormCacheProvider = __decorate([
479
+ (0, common_1.Injectable)(),
480
+ __param(0, (0, common_1.Optional)()),
481
+ __param(0, (0, common_1.Inject)('TYPEORM_CACHE_DATASOURCE')),
482
+ __metadata("design:paramtypes", [typeorm_1.DataSource, Object])
483
+ ], TypeormCacheProvider);
@@ -1,15 +1,67 @@
1
1
  import type { CacheDependency, DependencyData } from '../interfaces';
2
+ /**
3
+ * Wrapper for cached value with dependency data
4
+ */
2
5
  export interface CachedValueWithDependencies<T> {
3
6
  value: T;
4
7
  dependencies?: DependencyData[];
5
8
  cachedAt: number;
6
9
  }
10
+ /**
11
+ * Utility class for managing cache dependencies
12
+ */
7
13
  export declare class DependencyManager {
14
+ /**
15
+ * Wrap a value with its dependencies
16
+ *
17
+ * @param value - The value to cache
18
+ * @param dependencies - Array of dependencies
19
+ * @returns Wrapped value with dependency data
20
+ */
8
21
  static wrapWithDependencies<T>(value: T, dependencies?: CacheDependency[]): Promise<CachedValueWithDependencies<T>>;
22
+ /**
23
+ * Capture current state of all dependencies
24
+ *
25
+ * @param dependencies - Array of dependencies
26
+ * @returns Array of dependency data snapshots
27
+ */
9
28
  static captureDependencies(dependencies: CacheDependency[]): Promise<DependencyData[]>;
29
+ /**
30
+ * Check if any dependencies have changed
31
+ *
32
+ * @param dependencies - Current dependencies
33
+ * @param cachedDependencies - Previously captured dependency data
34
+ * @returns true if any dependency has changed
35
+ */
10
36
  static areDependenciesChanged(dependencies: CacheDependency[], cachedDependencies?: DependencyData[]): Promise<boolean>;
37
+ /**
38
+ * Unwrap cached value and validate dependencies
39
+ *
40
+ * @param wrapped - Wrapped cached value
41
+ * @param dependencies - Current dependencies to check
42
+ * @returns Unwrapped value if valid, null if dependencies changed
43
+ */
11
44
  static unwrapAndValidate<T>(wrapped: CachedValueWithDependencies<T> | null, dependencies?: CacheDependency[]): Promise<T | null>;
45
+ /**
46
+ * Get which dependencies have changed
47
+ *
48
+ * @param dependencies - Current dependencies
49
+ * @param cachedDependencies - Previously captured dependency data
50
+ * @returns Array of changed dependency keys
51
+ */
12
52
  static getChangedDependencies(dependencies: CacheDependency[], cachedDependencies?: DependencyData[]): Promise<string[]>;
53
+ /**
54
+ * Serialize dependencies for storage
55
+ *
56
+ * @param dependencies - Dependency data
57
+ * @returns Serialized string
58
+ */
13
59
  static serializeDependencies(dependencies: DependencyData[]): string;
60
+ /**
61
+ * Deserialize dependencies from storage
62
+ *
63
+ * @param serialized - Serialized string
64
+ * @returns Dependency data array
65
+ */
14
66
  static deserializeDependencies(serialized: string): DependencyData[];
15
67
  }
@@ -10,7 +10,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.DependencyManager = void 0;
13
+ /**
14
+ * Utility class for managing cache dependencies
15
+ */
13
16
  class DependencyManager {
17
+ /**
18
+ * Wrap a value with its dependencies
19
+ *
20
+ * @param value - The value to cache
21
+ * @param dependencies - Array of dependencies
22
+ * @returns Wrapped value with dependency data
23
+ */
14
24
  static wrapWithDependencies(value, dependencies) {
15
25
  return __awaiter(this, void 0, void 0, function* () {
16
26
  const wrapped = {
@@ -23,6 +33,12 @@ class DependencyManager {
23
33
  return wrapped;
24
34
  });
25
35
  }
36
+ /**
37
+ * Capture current state of all dependencies
38
+ *
39
+ * @param dependencies - Array of dependencies
40
+ * @returns Array of dependency data snapshots
41
+ */
26
42
  static captureDependencies(dependencies) {
27
43
  return __awaiter(this, void 0, void 0, function* () {
28
44
  const results = [];
@@ -36,6 +52,7 @@ class DependencyManager {
36
52
  });
37
53
  }
38
54
  catch (error) {
55
+ // Store error state
39
56
  results.push({
40
57
  key: dep.getKey(),
41
58
  data: {
@@ -48,44 +65,67 @@ class DependencyManager {
48
65
  return results;
49
66
  });
50
67
  }
68
+ /**
69
+ * Check if any dependencies have changed
70
+ *
71
+ * @param dependencies - Current dependencies
72
+ * @param cachedDependencies - Previously captured dependency data
73
+ * @returns true if any dependency has changed
74
+ */
51
75
  static areDependenciesChanged(dependencies, cachedDependencies) {
52
76
  return __awaiter(this, void 0, void 0, function* () {
77
+ // No dependencies means never changed
53
78
  if (!dependencies || dependencies.length === 0) {
54
79
  return false;
55
80
  }
81
+ // No cached dependency data means changed (first time)
56
82
  if (!cachedDependencies || cachedDependencies.length === 0) {
57
83
  return true;
58
84
  }
85
+ // Different number of dependencies means changed
59
86
  if (dependencies.length !== cachedDependencies.length) {
60
87
  return true;
61
88
  }
89
+ // Check each dependency
62
90
  for (let i = 0; i < dependencies.length; i++) {
63
91
  const dep = dependencies[i];
64
92
  const cached = cachedDependencies[i];
93
+ // Key mismatch means dependencies changed
65
94
  if (dep.getKey() !== cached.key) {
66
95
  return true;
67
96
  }
68
97
  try {
98
+ // Check if this dependency has changed
69
99
  const changed = yield dep.isChanged(cached.data);
70
100
  if (changed) {
71
101
  return true;
72
102
  }
73
103
  }
74
104
  catch (_a) {
105
+ // If check fails, consider it changed to be safe
75
106
  return true;
76
107
  }
77
108
  }
78
109
  return false;
79
110
  });
80
111
  }
112
+ /**
113
+ * Unwrap cached value and validate dependencies
114
+ *
115
+ * @param wrapped - Wrapped cached value
116
+ * @param dependencies - Current dependencies to check
117
+ * @returns Unwrapped value if valid, null if dependencies changed
118
+ */
81
119
  static unwrapAndValidate(wrapped, dependencies) {
82
120
  return __awaiter(this, void 0, void 0, function* () {
83
121
  if (!wrapped) {
84
122
  return null;
85
123
  }
124
+ // No dependencies to check, return value
86
125
  if (!dependencies || dependencies.length === 0) {
87
126
  return wrapped.value;
88
127
  }
128
+ // Check if dependencies have changed
89
129
  const changed = yield this.areDependenciesChanged(dependencies, wrapped.dependencies);
90
130
  if (changed) {
91
131
  return null;
@@ -93,6 +133,13 @@ class DependencyManager {
93
133
  return wrapped.value;
94
134
  });
95
135
  }
136
+ /**
137
+ * Get which dependencies have changed
138
+ *
139
+ * @param dependencies - Current dependencies
140
+ * @param cachedDependencies - Previously captured dependency data
141
+ * @returns Array of changed dependency keys
142
+ */
96
143
  static getChangedDependencies(dependencies, cachedDependencies) {
97
144
  return __awaiter(this, void 0, void 0, function* () {
98
145
  if (!dependencies || dependencies.length === 0) {
@@ -121,6 +168,12 @@ class DependencyManager {
121
168
  return changed;
122
169
  });
123
170
  }
171
+ /**
172
+ * Serialize dependencies for storage
173
+ *
174
+ * @param dependencies - Dependency data
175
+ * @returns Serialized string
176
+ */
124
177
  static serializeDependencies(dependencies) {
125
178
  try {
126
179
  return JSON.stringify(dependencies);
@@ -129,6 +182,12 @@ class DependencyManager {
129
182
  return '[]';
130
183
  }
131
184
  }
185
+ /**
186
+ * Deserialize dependencies from storage
187
+ *
188
+ * @param serialized - Serialized string
189
+ * @returns Dependency data array
190
+ */
132
191
  static deserializeDependencies(serialized) {
133
192
  try {
134
193
  return JSON.parse(serialized);