@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
@@ -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);
@@ -1,10 +1,52 @@
1
1
  import type { CacheKeyOptions } from '../interfaces';
2
+ /**
3
+ * Utility class for generating cache keys
4
+ */
2
5
  export declare class KeyGenerator {
6
+ /**
7
+ * Generate cache key from options and method arguments
8
+ *
9
+ * @param options - Cache key options
10
+ * @param args - Method arguments
11
+ * @returns Generated cache key
12
+ */
3
13
  static generate(options: CacheKeyOptions, args: any[]): string;
14
+ /**
15
+ * Generate key from method arguments
16
+ *
17
+ * @param args - Method arguments
18
+ * @returns Serialized key
19
+ */
4
20
  static generateFromArgs(args: any[]): string;
21
+ /**
22
+ * Normalize key (remove invalid characters, enforce length limits)
23
+ *
24
+ * @param key - Raw key
25
+ * @param maxLength - Maximum key length (default 250)
26
+ * @returns Normalized key
27
+ */
5
28
  static normalize(key: string, maxLength?: number): string;
29
+ /**
30
+ * Add namespace to key
31
+ *
32
+ * @param key - Original key
33
+ * @param namespace - Namespace
34
+ * @returns Namespaced key
35
+ */
6
36
  static addNamespace(key: string, namespace?: string): string;
37
+ /**
38
+ * Generate hash code for a string
39
+ *
40
+ * @param str - Input string
41
+ * @returns Hash code as string
42
+ */
7
43
  static hashCode(str: string): string;
44
+ /**
45
+ * Parse pattern into segments for matching
46
+ *
47
+ * @param pattern - Pattern with wildcards
48
+ * @returns Pattern segments
49
+ */
8
50
  static parsePattern(pattern: string): {
9
51
  prefix: string;
10
52
  suffix: string;
@@ -1,60 +1,112 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.KeyGenerator = void 0;
4
+ /**
5
+ * Utility class for generating cache keys
6
+ */
4
7
  class KeyGenerator {
8
+ /**
9
+ * Generate cache key from options and method arguments
10
+ *
11
+ * @param options - Cache key options
12
+ * @param args - Method arguments
13
+ * @returns Generated cache key
14
+ */
5
15
  static generate(options, args) {
6
16
  let key;
7
17
  if (typeof options.key === 'function') {
18
+ // Dynamic key generation using function
8
19
  key = options.key(...args);
9
20
  }
10
21
  else if (typeof options.key === 'string') {
22
+ // Static key
11
23
  key = options.key;
12
24
  }
13
25
  else if (options.includeAllArgs) {
26
+ // Auto-generate key from all arguments
14
27
  key = this.generateFromArgs(args);
15
28
  }
16
29
  else {
30
+ // Default: use first argument as key
17
31
  key = args.length > 0 ? String(args[0]) : 'default';
18
32
  }
33
+ // Add prefix if specified
19
34
  if (options.prefix) {
20
35
  key = `${options.prefix}${key}`;
21
36
  }
22
37
  return key;
23
38
  }
39
+ /**
40
+ * Generate key from method arguments
41
+ *
42
+ * @param args - Method arguments
43
+ * @returns Serialized key
44
+ */
24
45
  static generateFromArgs(args) {
25
46
  if (args.length === 0) {
26
47
  return 'default';
27
48
  }
28
49
  try {
50
+ // Serialize arguments to JSON
29
51
  return JSON.stringify(args);
30
52
  }
31
53
  catch (_a) {
54
+ // Fallback to string concatenation
32
55
  return args.map((arg) => String(arg)).join(':');
33
56
  }
34
57
  }
58
+ /**
59
+ * Normalize key (remove invalid characters, enforce length limits)
60
+ *
61
+ * @param key - Raw key
62
+ * @param maxLength - Maximum key length (default 250)
63
+ * @returns Normalized key
64
+ */
35
65
  static normalize(key, maxLength = 250) {
66
+ // Remove or replace invalid characters
36
67
  let normalized = key.replace(/[\s\n\r\t]/g, '_');
68
+ // Enforce length limit
37
69
  if (normalized.length > maxLength) {
70
+ // Use hash for long keys
38
71
  const hash = this.hashCode(normalized);
39
72
  normalized = normalized.substring(0, maxLength - 10) + '_' + hash;
40
73
  }
41
74
  return normalized;
42
75
  }
76
+ /**
77
+ * Add namespace to key
78
+ *
79
+ * @param key - Original key
80
+ * @param namespace - Namespace
81
+ * @returns Namespaced key
82
+ */
43
83
  static addNamespace(key, namespace) {
44
84
  if (!namespace) {
45
85
  return key;
46
86
  }
47
87
  return `${namespace}:${key}`;
48
88
  }
89
+ /**
90
+ * Generate hash code for a string
91
+ *
92
+ * @param str - Input string
93
+ * @returns Hash code as string
94
+ */
49
95
  static hashCode(str) {
50
96
  let hash = 0;
51
97
  for (let i = 0; i < str.length; i++) {
52
98
  const char = str.charCodeAt(i);
53
99
  hash = (hash << 5) - hash + char;
54
- hash = hash & hash;
100
+ hash = hash & hash; // Convert to 32bit integer
55
101
  }
56
102
  return Math.abs(hash).toString(36);
57
103
  }
104
+ /**
105
+ * Parse pattern into segments for matching
106
+ *
107
+ * @param pattern - Pattern with wildcards
108
+ * @returns Pattern segments
109
+ */
58
110
  static parsePattern(pattern) {
59
111
  const wildcardIndex = pattern.indexOf('*');
60
112
  if (wildcardIndex === -1) {
@@ -1,9 +1,23 @@
1
1
  import type { AbstractDto, AbstractTranslationDto } from './dto/abstract.dto';
2
2
  import { LanguageCode } from '../constants';
3
+ /**
4
+ * Abstract DTO-able Entity
5
+ *
6
+ * @description Base class that provides toDto functionality without any database fields.
7
+ * Use this for view entities or other entities that don't need createdAt/updatedAt fields.
8
+ */
3
9
  export declare abstract class AbstractDtoEntity<DTO, O = never> {
4
10
  translations?: AbstractTranslationEntity[];
5
11
  toDto(options?: O): DTO;
6
12
  }
13
+ /**
14
+ * Abstract Entity
15
+ *
16
+ * @description This class is an abstract class for all entities.
17
+ * It's experimental and recommended using it only in microservice architecture,
18
+ * otherwise just delete and use your own entity.
19
+ * Extends AbstractDtoEntity and adds createdAt/updatedAt timestamp fields.
20
+ */
7
21
  export declare abstract class AbstractBaseEntity<DTO, O> extends AbstractDtoEntity<DTO, O> {
8
22
  createdAt: Date;
9
23
  updatedAt: Date;
@@ -14,6 +14,12 @@ const typeorm_1 = require("typeorm");
14
14
  const decorators_1 = require("../decorators");
15
15
  const constants_1 = require("../constants");
16
16
  const uuid_1 = require("uuid");
17
+ /**
18
+ * Abstract DTO-able Entity
19
+ *
20
+ * @description Base class that provides toDto functionality without any database fields.
21
+ * Use this for view entities or other entities that don't need createdAt/updatedAt fields.
22
+ */
17
23
  class AbstractDtoEntity {
18
24
  toDto(options) {
19
25
  const dtoClass = Object.getPrototypeOf(this).dtoClass;
@@ -24,6 +30,14 @@ class AbstractDtoEntity {
24
30
  }
25
31
  }
26
32
  exports.AbstractDtoEntity = AbstractDtoEntity;
33
+ /**
34
+ * Abstract Entity
35
+ *
36
+ * @description This class is an abstract class for all entities.
37
+ * It's experimental and recommended using it only in microservice architecture,
38
+ * otherwise just delete and use your own entity.
39
+ * Extends AbstractDtoEntity and adds createdAt/updatedAt timestamp fields.
40
+ */
27
41
  class AbstractBaseEntity extends AbstractDtoEntity {
28
42
  }
29
43
  exports.AbstractBaseEntity = AbstractBaseEntity;
@@ -25,6 +25,91 @@ declare module 'typeorm' {
25
25
  takeAll: boolean;
26
26
  skipCount: boolean;
27
27
  }>): Promise<[Entity[], PageMetaDto]>;
28
+ /**
29
+ * Paginate and automatically map entities to DTOs in a single call.
30
+ * This method combines paginate() and toPageDto() into one convenient method.
31
+ *
32
+ * @param pageOptionsDto Pagination options (page, pageSize, order, etc.)
33
+ * @param options Configuration options
34
+ * @param options.dtoOptions Options to pass to the toDto() method of each entity
35
+ * @param options.skipCount Skip counting total items (improves performance)
36
+ * @param options.takeAll Fetch all items without limit (ignores pageSize)
37
+ * @param options.transform Optional callback to transform items before mapping to DTOs (supports both sync and async)
38
+ *
39
+ * @example
40
+ * Basic usage - automatically maps entities to DTOs:
41
+ * ```typescript
42
+ * const queryBuilder = userRepository.createQueryBuilder('user');
43
+ * const pageDto = await queryBuilder.paginateAndMap(pageOptionsDto);
44
+ * return pageDto; // Returns PageDto<UserDto>
45
+ * ```
46
+ *
47
+ * @example
48
+ * With toDto options:
49
+ * ```typescript
50
+ * const queryBuilder = userRepository.createQueryBuilder('user');
51
+ * const pageDto = await queryBuilder.paginateAndMap(pageOptionsDto, {
52
+ * dtoOptions: { includeRelations: true }
53
+ * });
54
+ * ```
55
+ *
56
+ * @example
57
+ * With synchronous transform callback:
58
+ * ```typescript
59
+ * const queryBuilder = orderRepository.createQueryBuilder('order');
60
+ * const pageDto = await queryBuilder.paginateAndMap(pageOptionsDto, {
61
+ * transform: (items) => items.filter(order => order.status === 'active')
62
+ * });
63
+ * ```
64
+ *
65
+ * @example
66
+ * With async transform callback for complex operations:
67
+ * ```typescript
68
+ * const queryBuilder = orderRepository.createQueryBuilder('order');
69
+ * const pageDto = await queryBuilder.paginateAndMap(pageOptionsDto, {
70
+ * transform: async (items) => {
71
+ * // Perform async operations on items
72
+ * const enrichedItems = await Promise.all(
73
+ * items.map(async (order) => {
74
+ * order.additionalData = await externalService.getData(order.id);
75
+ * return order;
76
+ * })
77
+ * );
78
+ * return enrichedItems.filter(order => order.isValid);
79
+ * }
80
+ * });
81
+ * ```
82
+ *
83
+ * @example
84
+ * Complete example with all options:
85
+ * ```typescript
86
+ * const queryBuilder = productRepository
87
+ * .createQueryBuilder('product')
88
+ * .leftJoinAndSelect('product.category', 'category')
89
+ * .where('product.isActive = :isActive', { isActive: true });
90
+ *
91
+ * const pageDto = await queryBuilder.paginateAndMap(pageOptionsDto, {
92
+ * dtoOptions: { includeCategory: true },
93
+ * skipCount: false,
94
+ * transform: async (items) => {
95
+ * // Enrich products with external data
96
+ * const enrichedProducts = await Promise.all(
97
+ * items.map(async (product) => {
98
+ * product.reviews = await reviewService.getReviews(product.id);
99
+ * return product;
100
+ * })
101
+ * );
102
+ * // Filter out products with no stock
103
+ * return enrichedProducts.filter(product => product.stock > 0);
104
+ * }
105
+ * });
106
+ *
107
+ * // Returns PageDto<ProductDto> with enriched and filtered data
108
+ * return pageDto;
109
+ * ```
110
+ *
111
+ * @returns Promise resolving to PageDto with mapped DTOs
112
+ */
28
113
  paginateAndMap<Dto extends AbstractDto, DtoOptions = unknown>(this: SelectQueryBuilder<Entity>, pageOptionsDto: PageOptionsDto, options?: Partial<{
29
114
  dtoOptions: DtoOptions;
30
115
  skipCount: boolean;
@@ -35,9 +120,66 @@ declare module 'typeorm' {
35
120
  leftJoin<AliasEntity extends AbstractEntity, A extends string>(this: SelectQueryBuilder<Entity>, property: `${A}.${Exclude<KeyOfType<AliasEntity, AbstractEntity>, symbol>}`, alias: string, condition?: string, parameters?: ObjectLiteral): this;
36
121
  innerJoinAndSelect<AliasEntity extends AbstractEntity, A extends string>(this: SelectQueryBuilder<Entity>, property: `${A}.${Exclude<KeyOfType<AliasEntity, AbstractEntity>, symbol>}`, alias: string, condition?: string, parameters?: ObjectLiteral): this;
37
122
  innerJoin<AliasEntity extends AbstractEntity, A extends string>(this: SelectQueryBuilder<Entity>, property: `${A}.${Exclude<KeyOfType<AliasEntity, AbstractEntity>, symbol>}`, alias: string, condition?: string, parameters?: ObjectLiteral): this;
123
+ /**
124
+ * Iterate over entity results in batches using async iteration.
125
+ *
126
+ * @param options.batchSize Number of entities to retrieve per batch (default: 1000)
127
+ *
128
+ * @example
129
+ * ```typescript
130
+ * const queryBuilder = repository.createQueryBuilder('entity');
131
+ *
132
+ * for await (const batch of queryBuilder.iterate({ batchSize: 500 })) {
133
+ * console.log(`Processing batch of ${batch.length} entities`);
134
+ * // Process each batch of entities
135
+ * await processEntities(batch);
136
+ * }
137
+ * ```
138
+ *
139
+ * @returns An async iterator that yields arrays of entities
140
+ */
38
141
  iterate(this: SelectQueryBuilder<Entity>, options?: {
39
142
  batchSize?: number;
40
143
  }): AsyncIterableIterator<Entity[]>;
144
+ /**
145
+ * Process entity results in batches by calling a callback function.
146
+ * The callback can accept either individual entities or batches of entities.
147
+ *
148
+ * @param callback Function to process each entity or batch of entities
149
+ * @param options
150
+ * @param options.batchSize Number of entities to retrieve per batch (default: 1000)
151
+ * @param options.mode Whether to pass entities individually or as batches to the callback (default: 'batch')
152
+ *
153
+ * @example
154
+ * Processing individual entities:
155
+ * ```typescript
156
+ * const queryBuilder = repository.createQueryBuilder('entity');
157
+ *
158
+ * await queryBuilder.eachBatch(
159
+ * async (entity) => {
160
+ * // Process each individual entity
161
+ * console.log(`Processing entity: ${entity.id}`);
162
+ * await processEntity(entity);
163
+ * },
164
+ * { batchSize: 100, mode: 'single' }
165
+ * );
166
+ * ```
167
+ *
168
+ * @example
169
+ * Processing batches of entities:
170
+ * ```typescript
171
+ * const queryBuilder = repository.createQueryBuilder('entity');
172
+ *
173
+ * await queryBuilder.eachBatch(
174
+ * async (batch) => {
175
+ * // Process each batch of entities
176
+ * console.log(`Processing batch of ${batch.length} entities`);
177
+ * await processEntities(batch);
178
+ * },
179
+ * { batchSize: 500, mode: 'batch' }
180
+ * );
181
+ * ```
182
+ */
41
183
  eachBatch(this: SelectQueryBuilder<Entity>, callback: (item: Entity) => Promise<void> | void, options?: {
42
184
  batchSize?: number;
43
185
  mode?: 'single';
@@ -30,13 +30,16 @@ const page_meta_dto_1 = require("./dto/page-meta.dto");
30
30
  const providers_1 = require("../providers");
31
31
  Array.prototype.toDtos = function (options) {
32
32
  return (0, lodash_1.compact)((0, lodash_1.map)(this, (item) => {
33
+ // Check if item exists and has toDto method
33
34
  if (item && typeof item.toDto === 'function') {
34
35
  return item.toDto(options);
35
36
  }
37
+ // Skip items that don't have toDto method
36
38
  return undefined;
37
39
  }));
38
40
  };
39
41
  Array.prototype.getByLanguage = function (languageCode) {
42
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
40
43
  return this.find((translation) => languageCode === translation.languageCode)
41
44
  .text;
42
45
  };
@@ -49,7 +52,7 @@ typeorm_1.SelectQueryBuilder.prototype.searchByString = function (q, columnNames
49
52
  }
50
53
  this.andWhere(new typeorm_1.Brackets((qb) => {
51
54
  for (const item of columnNames) {
52
- qb.orWhere(`${item} ILIKE :q`);
55
+ qb.orWhere(`${item} LIKE :q`);
53
56
  }
54
57
  }));
55
58
  if (options === null || options === void 0 ? void 0 : options.formStart) {
@@ -77,16 +80,22 @@ typeorm_1.SelectQueryBuilder.prototype.paginate = function (pageOptionsDto, opti
77
80
  return [entities, pageMetaDto];
78
81
  });
79
82
  };
83
+ /**
84
+ * Implementation of paginateAndMap
85
+ */
80
86
  typeorm_1.SelectQueryBuilder.prototype.paginateAndMap = function (pageOptionsDto, options) {
81
87
  return __awaiter(this, void 0, void 0, function* () {
88
+ // Call paginate to get entities and meta
82
89
  const [entities, pageMetaDto] = yield this.paginate(pageOptionsDto, {
83
90
  skipCount: options === null || options === void 0 ? void 0 : options.skipCount,
84
91
  takeAll: options === null || options === void 0 ? void 0 : options.takeAll,
85
92
  });
93
+ // Apply transform if provided (support both sync and async)
86
94
  let transformedEntities = entities;
87
95
  if (options === null || options === void 0 ? void 0 : options.transform) {
88
96
  transformedEntities = yield options.transform(entities);
89
97
  }
98
+ // Convert to DTOs and return PageDto
90
99
  return transformedEntities.toPageDto(pageMetaDto, options === null || options === void 0 ? void 0 : options.dtoOptions);
91
100
  });
92
101
  };
@@ -106,6 +115,9 @@ typeorm_1.SelectQueryBuilder.prototype.withTenant = function (tenantId, tenantFi
106
115
  }
107
116
  return this;
108
117
  };
118
+ /**
119
+ * Implementation for the async iterator method
120
+ */
109
121
  typeorm_1.SelectQueryBuilder.prototype.iterate = function (options) {
110
122
  return __asyncGenerator(this, arguments, function* () {
111
123
  const batchSize = (options === null || options === void 0 ? void 0 : options.batchSize) || 100;
@@ -124,6 +136,9 @@ typeorm_1.SelectQueryBuilder.prototype.iterate = function (options) {
124
136
  }
125
137
  });
126
138
  };
139
+ /**
140
+ * Implementation for the callback-based iteration method
141
+ */
127
142
  typeorm_1.SelectQueryBuilder.prototype.eachBatch = function (callback, options) {
128
143
  return __awaiter(this, void 0, void 0, function* () {
129
144
  const batchSize = (options === null || options === void 0 ? void 0 : options.batchSize) || 100;
@@ -134,11 +149,13 @@ typeorm_1.SelectQueryBuilder.prototype.eachBatch = function (callback, options)
134
149
  const batch = yield this.clone().skip(offset).take(batchSize).getMany();
135
150
  if (batch.length > 0) {
136
151
  if (mode === 'single') {
152
+ // Process each entity individually
137
153
  for (const item of batch) {
138
154
  yield callback(item);
139
155
  }
140
156
  }
141
157
  else {
158
+ // Process the entire batch
142
159
  yield callback(batch);
143
160
  }
144
161
  offset += batchSize;
@@ -1,9 +1,25 @@
1
+ /**
2
+ * DTO容器 - 类似class-validator的useContainer机制
3
+ * 全局存储服务容器,供DTO转换时使用
4
+ */
1
5
  export declare class DtoContainer {
2
6
  private static instance;
3
7
  private container;
4
8
  static getInstance(): DtoContainer;
9
+ /**
10
+ * 设置容器 - 类似useContainer
11
+ */
5
12
  static useContainer(container: any): void;
13
+ /**
14
+ * 获取服务实例
15
+ */
6
16
  static get<T = any>(serviceToken: string | symbol | any): Promise<T | null>;
17
+ /**
18
+ * 检查容器是否已初始化
19
+ */
7
20
  static isInitialized(): boolean;
21
+ /**
22
+ * 重置容器 (主要用于测试)
23
+ */
8
24
  static reset(): void;
9
25
  }
@@ -10,6 +10,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.DtoContainer = void 0;
13
+ /**
14
+ * DTO容器 - 类似class-validator的useContainer机制
15
+ * 全局存储服务容器,供DTO转换时使用
16
+ */
13
17
  class DtoContainer {
14
18
  constructor() {
15
19
  this.container = null;
@@ -20,9 +24,15 @@ class DtoContainer {
20
24
  }
21
25
  return DtoContainer.instance;
22
26
  }
27
+ /**
28
+ * 设置容器 - 类似useContainer
29
+ */
23
30
  static useContainer(container) {
24
31
  DtoContainer.getInstance().container = container;
25
32
  }
33
+ /**
34
+ * 获取服务实例
35
+ */
26
36
  static get(serviceToken) {
27
37
  return __awaiter(this, void 0, void 0, function* () {
28
38
  const instance = DtoContainer.getInstance();
@@ -31,13 +41,17 @@ class DtoContainer {
31
41
  return null;
32
42
  }
33
43
  try {
44
+ // 支持多种容器类型
34
45
  if (typeof instance.container.get === 'function') {
46
+ // NestJS容器
35
47
  return yield instance.container.get(serviceToken);
36
48
  }
37
49
  else if (typeof instance.container.resolve === 'function') {
50
+ // ModuleRef
38
51
  return yield instance.container.resolve(serviceToken);
39
52
  }
40
53
  else if (typeof instance.container[serviceToken] === 'function') {
54
+ // 直接的服务实例
41
55
  return instance.container[serviceToken];
42
56
  }
43
57
  console.warn(`Unable to resolve service: ${String(serviceToken)}`);
@@ -49,9 +63,15 @@ class DtoContainer {
49
63
  }
50
64
  });
51
65
  }
66
+ /**
67
+ * 检查容器是否已初始化
68
+ */
52
69
  static isInitialized() {
53
70
  return DtoContainer.getInstance().container !== null;
54
71
  }
72
+ /**
73
+ * 重置容器 (主要用于测试)
74
+ */
55
75
  static reset() {
56
76
  DtoContainer.getInstance().container = null;
57
77
  }