@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
@@ -5,6 +5,7 @@ exports.StaticTranslate = StaticTranslate;
5
5
  exports.DynamicTranslate = DynamicTranslate;
6
6
  exports.STATIC_TRANSLATION_DECORATOR_KEY = 'custom:static-translate';
7
7
  exports.DYNAMIC_TRANSLATION_DECORATOR_KEY = 'custom:dynamic-translate';
8
+ // FIXME: This is a temporary solution to get the translation decorator working.
8
9
  function StaticTranslate(data = {}) {
9
10
  return (target, key) => {
10
11
  Reflect.defineMetadata(exports.STATIC_TRANSLATION_DECORATOR_KEY, data, target, key);
@@ -14,6 +14,7 @@ function getOmniAuthData(request, key) {
14
14
  const headers = request.headers;
15
15
  let user;
16
16
  const configService = new config_1.ConfigService(request);
17
+ // 未通过网关透传用户信息且处于local开发环境,则从配置获取用户信息
17
18
  if ((0, lodash_1.isEmpty)(headers['x-user-id']) && (0, lodash_1.isEmpty)(headers['x-app-id'])) {
18
19
  if (process.env.NODE_ENV === 'dev' || process.env.MOCK_ENABLED === 'true') {
19
20
  user = {
@@ -1,18 +1,8 @@
1
- import type { ValidationOptions } from 'class-validator';
2
- import { IsPhoneNumber as isPhoneNumber, ValidationArguments, ValidatorConstraintInterface } from 'class-validator';
3
- export declare function IsPassword(validationOptions?: ValidationOptions): PropertyDecorator;
4
- export declare function IsPhoneNumber(validationOptions?: ValidationOptions & {
5
- region?: Parameters<typeof isPhoneNumber>[0];
6
- }): PropertyDecorator;
7
- export declare function IsTmpKey(validationOptions?: ValidationOptions): PropertyDecorator;
8
- export declare function IsUndefinable(options?: ValidationOptions): PropertyDecorator;
9
- export declare function IsEmptyable(options?: ValidationOptions): PropertyDecorator;
10
- export declare function IsNullable(options?: ValidationOptions): PropertyDecorator;
11
- export declare function IsHttpUrl(validationOptions?: ValidationOptions): (object: any, propertyName: string) => void;
12
- export declare class AtLeastOneFieldConstraint implements ValidatorConstraintInterface {
13
- validate(value: any, args: ValidationArguments): boolean;
14
- defaultMessage(args: ValidationArguments): string;
15
- }
16
- export declare function AtLeastOneField(properties: string[], validationOptions?: ValidationOptions): PropertyDecorator;
17
- export declare function CustomValidation<T = any>(validationCallback: (value: T, args: ValidationArguments) => boolean | Promise<boolean>, validationOptions?: ValidationOptions): PropertyDecorator;
18
- export declare function CustomValidationMethod(methodName: string, validationOptions?: ValidationOptions): PropertyDecorator;
1
+ /**
2
+ * Validator decorators
3
+ *
4
+ * 所有验证装饰器已迁移到 validators 目录
5
+ * 此文件仅用于重新导出,保持导入路径的一致性
6
+ */
7
+ export * from '../validators/common-validators';
8
+ export * from '../validators/custom-validate.validator';
@@ -1,193 +1,25 @@
1
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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10
- return new (P || (P = Promise))(function (resolve, reject) {
11
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
12
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
13
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
14
- step((generator = generator.apply(thisArg, _arguments || [])).next());
15
- });
16
- };
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.AtLeastOneFieldConstraint = void 0;
19
- exports.IsPassword = IsPassword;
20
- exports.IsPhoneNumber = IsPhoneNumber;
21
- exports.IsTmpKey = IsTmpKey;
22
- exports.IsUndefinable = IsUndefinable;
23
- exports.IsEmptyable = IsEmptyable;
24
- exports.IsNullable = IsNullable;
25
- exports.IsHttpUrl = IsHttpUrl;
26
- exports.AtLeastOneField = AtLeastOneField;
27
- exports.CustomValidation = CustomValidation;
28
- exports.CustomValidationMethod = CustomValidationMethod;
29
- const class_validator_1 = require("class-validator");
30
- const lodash_1 = require("lodash");
31
- const nestjs_i18n_1 = require("nestjs-i18n");
32
- function IsPassword(validationOptions) {
33
- return (object, propertyName) => {
34
- (0, class_validator_1.registerDecorator)({
35
- propertyName,
36
- name: 'isPassword',
37
- target: object.constructor,
38
- constraints: [],
39
- options: validationOptions,
40
- validator: {
41
- validate(value) {
42
- return /^[\d!#$%&*@A-Z^a-z]*$/.test(value);
43
- },
44
- },
45
- });
46
- };
47
- }
48
- function IsPhoneNumber(validationOptions) {
49
- return (0, class_validator_1.IsPhoneNumber)(validationOptions === null || validationOptions === void 0 ? void 0 : validationOptions.region, Object.assign({ message: 'error.phoneNumber' }, validationOptions));
50
- }
51
- function IsTmpKey(validationOptions) {
52
- return (object, propertyName) => {
53
- (0, class_validator_1.registerDecorator)({
54
- propertyName,
55
- name: 'tmpKey',
56
- target: object.constructor,
57
- options: validationOptions,
58
- validator: {
59
- validate(value) {
60
- return (0, lodash_1.isString)(value) && /^tmp\//.test(value);
61
- },
62
- defaultMessage() {
63
- return 'error.invalidTmpKey';
64
- },
65
- },
66
- });
67
- };
68
- }
69
- function IsUndefinable(options) {
70
- return (0, class_validator_1.ValidateIf)((obj, value) => value !== undefined, options);
71
- }
72
- function IsEmptyable(options) {
73
- return (0, class_validator_1.ValidateIf)((obj, value) => !(value === null ||
74
- value === undefined ||
75
- ((0, lodash_1.isString)(value) && value.trim() === '')), options);
76
- }
77
- function IsNullable(options) {
78
- return (0, class_validator_1.ValidateIf)((obj, value) => value !== null, options);
79
- }
80
- function IsHttpUrl(validationOptions) {
81
- return function (object, propertyName) {
82
- (0, class_validator_1.registerDecorator)({
83
- name: 'isHttpUrl',
84
- target: object.constructor,
85
- propertyName: propertyName,
86
- options: validationOptions,
87
- validator: {
88
- validate(value) {
89
- const httpUrlPattern = /^(https?:\/\/)/i;
90
- return typeof value === 'string' && httpUrlPattern.test(value);
91
- },
92
- defaultMessage() {
93
- return 'URL must start with http:// or https://';
94
- },
95
- },
96
- });
97
- };
98
- }
99
- let AtLeastOneFieldConstraint = class AtLeastOneFieldConstraint {
100
- validate(value, args) {
101
- const object = args.object;
102
- const [requiredProperties] = args.constraints;
103
- return requiredProperties.some((property) => {
104
- const propValue = object[property];
105
- return (propValue !== null &&
106
- propValue !== undefined &&
107
- propValue !== '' &&
108
- !(Array.isArray(propValue) && propValue.length === 0));
109
- });
110
- }
111
- defaultMessage(args) {
112
- const [requiredProperties] = args.constraints;
113
- return `At least one of the following fields must be provided: ${requiredProperties.join(', ')}`;
2
+ /**
3
+ * Validator decorators
4
+ *
5
+ * 所有验证装饰器已迁移到 validators 目录
6
+ * 此文件仅用于重新导出,保持导入路径的一致性
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
114
13
  }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
20
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
115
21
  };
116
- exports.AtLeastOneFieldConstraint = AtLeastOneFieldConstraint;
117
- exports.AtLeastOneFieldConstraint = AtLeastOneFieldConstraint = __decorate([
118
- (0, class_validator_1.ValidatorConstraint)({ name: 'atLeastOneField', async: false })
119
- ], AtLeastOneFieldConstraint);
120
- function AtLeastOneField(properties, validationOptions) {
121
- return function (object, propertyName) {
122
- (0, class_validator_1.registerDecorator)({
123
- target: object.constructor,
124
- propertyName: propertyName,
125
- options: Object.assign({ message: (0, nestjs_i18n_1.i18nValidationMessage)('validation.AT_LEAST_ONE_FIELD', {
126
- properties: properties.join(', '),
127
- }) }, validationOptions),
128
- constraints: [properties],
129
- validator: AtLeastOneFieldConstraint,
130
- });
131
- };
132
- }
133
- function CustomValidation(validationCallback, validationOptions) {
134
- return function (object, propertyName) {
135
- (0, class_validator_1.registerDecorator)({
136
- name: 'customValidation',
137
- target: object.constructor,
138
- propertyName,
139
- options: Object.assign({ message: (0, nestjs_i18n_1.i18nValidationMessage)('validation.CUSTOM_VALIDATION') }, validationOptions),
140
- validator: {
141
- validate(value, args) {
142
- return __awaiter(this, void 0, void 0, function* () {
143
- try {
144
- return yield validationCallback(value, args);
145
- }
146
- catch (error) {
147
- console.error('CustomValidation error:', error);
148
- return false;
149
- }
150
- });
151
- },
152
- defaultMessage(args) {
153
- return `Validation failed for ${args.property}`;
154
- },
155
- },
156
- });
157
- };
158
- }
159
- function CustomValidationMethod(methodName, validationOptions) {
160
- return function (object, propertyName) {
161
- (0, class_validator_1.registerDecorator)({
162
- name: 'customValidationMethod',
163
- target: object.constructor,
164
- propertyName,
165
- constraints: [methodName],
166
- options: Object.assign({ message: (0, nestjs_i18n_1.i18nValidationMessage)('validation.CUSTOM_VALIDATION_METHOD') }, validationOptions),
167
- validator: {
168
- validate(value, args) {
169
- return __awaiter(this, void 0, void 0, function* () {
170
- const [method] = args.constraints;
171
- const object = args.object;
172
- if (typeof object[method] !== 'function') {
173
- console.error(`CustomValidationMethod: Method '${method}' not found on object`);
174
- return false;
175
- }
176
- try {
177
- const result = yield object[method](value, args);
178
- return Boolean(result);
179
- }
180
- catch (error) {
181
- console.error(`CustomValidationMethod error in '${method}':`, error);
182
- return false;
183
- }
184
- });
185
- },
186
- defaultMessage(args) {
187
- const [method] = args.constraints;
188
- return `Validation failed for ${args.property} using method ${method}`;
189
- },
190
- },
191
- });
192
- };
193
- }
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ // 重新导出所有验证装饰器
24
+ __exportStar(require("../validators/common-validators"), exports);
25
+ __exportStar(require("../validators/custom-validate.validator"), exports);
@@ -0,0 +1,23 @@
1
+ import { StreamableFile } from '@nestjs/common';
2
+ import { Response } from 'express';
3
+ import { FileService } from '../services/file.service';
4
+ /**
5
+ * 文件访问控制器
6
+ * 提供文件下载和预览功能
7
+ * 注意:Controller 仅负责 HTTP 层逻辑,业务逻辑在 FileService
8
+ */
9
+ export declare class FileAccessController {
10
+ private readonly fileService;
11
+ private readonly logger;
12
+ constructor(fileService: FileService);
13
+ /**
14
+ * 通过文件 ID 下载/访问文件
15
+ * GET /files/:id
16
+ */
17
+ getFile(id: string, res: Response): Promise<StreamableFile>;
18
+ /**
19
+ * 通过文件 ID 下载文件(强制下载)
20
+ * GET /files/:id/download
21
+ */
22
+ downloadFile(id: string, res: Response): Promise<StreamableFile>;
23
+ }
@@ -0,0 +1,128 @@
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
+ var FileAccessController_1;
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.FileAccessController = void 0;
26
+ const common_1 = require("@nestjs/common");
27
+ const file_service_1 = require("../services/file.service");
28
+ /**
29
+ * 文件访问控制器
30
+ * 提供文件下载和预览功能
31
+ * 注意:Controller 仅负责 HTTP 层逻辑,业务逻辑在 FileService
32
+ */
33
+ let FileAccessController = FileAccessController_1 = class FileAccessController {
34
+ constructor(fileService) {
35
+ this.fileService = fileService;
36
+ this.logger = new common_1.Logger(FileAccessController_1.name);
37
+ }
38
+ /**
39
+ * 通过文件 ID 下载/访问文件
40
+ * GET /files/:id
41
+ */
42
+ getFile(id, res) {
43
+ return __awaiter(this, void 0, void 0, function* () {
44
+ // 从数据库获取文件记录
45
+ const fileEntity = yield this.fileService.findById(id);
46
+ if (!fileEntity) {
47
+ throw new common_1.NotFoundException(`文件不存在: ${id}`);
48
+ }
49
+ // 检查文件是否可访问
50
+ if (fileEntity.status !== 'completed') {
51
+ throw new common_1.NotFoundException(`文件尚未准备就绪: ${id}`);
52
+ }
53
+ // 对象存储:重定向到预签名 URL
54
+ if (['s3', 'oss', 'minio', 'cdn'].includes(fileEntity.storageProvider)) {
55
+ try {
56
+ const signedUrl = yield this.fileService.getSignedUrl(id);
57
+ res.redirect(302, signedUrl);
58
+ return;
59
+ }
60
+ catch (error) {
61
+ this.logger.error(`Failed to get signed URL for file ${id}: ${error.message}`);
62
+ throw new common_1.NotFoundException(`无法访问文件: ${id}`);
63
+ }
64
+ }
65
+ // 本地存储:流式返回
66
+ if (fileEntity.storageProvider === 'local') {
67
+ try {
68
+ const stream = yield this.fileService.getFileStream(id);
69
+ res.set({
70
+ 'Content-Type': fileEntity.mimeType,
71
+ 'Content-Length': fileEntity.size.toString(),
72
+ });
73
+ return new common_1.StreamableFile(stream);
74
+ }
75
+ catch (error) {
76
+ this.logger.error(`Failed to stream file ${id}: ${error.message}`);
77
+ throw new common_1.NotFoundException(`无法访问文件: ${id}`);
78
+ }
79
+ }
80
+ // 不支持的存储类型
81
+ throw new common_1.NotFoundException(`不支持的存储类型: ${fileEntity.storageProvider}`);
82
+ });
83
+ }
84
+ /**
85
+ * 通过文件 ID 下载文件(强制下载)
86
+ * GET /files/:id/download
87
+ */
88
+ downloadFile(id, res) {
89
+ return __awaiter(this, void 0, void 0, function* () {
90
+ const fileEntity = yield this.fileService.findById(id);
91
+ if (!fileEntity) {
92
+ throw new common_1.NotFoundException(`文件不存在: ${id}`);
93
+ }
94
+ if (fileEntity.status !== 'completed') {
95
+ throw new common_1.NotFoundException(`文件尚未准备就绪: ${id}`);
96
+ }
97
+ // 设置下载响应头
98
+ res.set({
99
+ 'Content-Disposition': `attachment; filename="${encodeURIComponent(fileEntity.originalName)}"`,
100
+ });
101
+ // 复用 getFile 逻辑
102
+ return this.getFile(id, res);
103
+ });
104
+ }
105
+ };
106
+ exports.FileAccessController = FileAccessController;
107
+ __decorate([
108
+ (0, common_1.Get)(':id'),
109
+ (0, common_1.Header)('Cache-Control', 'public, max-age=31536000') // 缓存1年
110
+ ,
111
+ __param(0, (0, common_1.Param)('id')),
112
+ __param(1, (0, common_1.Res)({ passthrough: true })),
113
+ __metadata("design:type", Function),
114
+ __metadata("design:paramtypes", [String, Object]),
115
+ __metadata("design:returntype", Promise)
116
+ ], FileAccessController.prototype, "getFile", null);
117
+ __decorate([
118
+ (0, common_1.Get)(':id/download'),
119
+ __param(0, (0, common_1.Param)('id')),
120
+ __param(1, (0, common_1.Res)({ passthrough: true })),
121
+ __metadata("design:type", Function),
122
+ __metadata("design:paramtypes", [String, Object]),
123
+ __metadata("design:returntype", Promise)
124
+ ], FileAccessController.prototype, "downloadFile", null);
125
+ exports.FileAccessController = FileAccessController = FileAccessController_1 = __decorate([
126
+ (0, common_1.Controller)('files'),
127
+ __metadata("design:paramtypes", [file_service_1.FileService])
128
+ ], FileAccessController);
@@ -0,0 +1,151 @@
1
+ import 'reflect-metadata';
2
+ /**
3
+ * CSV列名映射元数据键
4
+ */
5
+ export declare const CSV_COLUMN_METADATA = "csv:column";
6
+ /**
7
+ * Excel列名映射元数据键
8
+ */
9
+ export declare const EXCEL_COLUMN_METADATA = "excel:column";
10
+ /**
11
+ * 列标识类型
12
+ * 可以是列名(字符串)、列序号(数字)或Excel列名(A, B, C)
13
+ */
14
+ export type ColumnIdentifier = string | number;
15
+ /**
16
+ * CSV列装饰器
17
+ * 用于指定CSV文件中列与DTO属性的映射关系
18
+ * 支持列名、列序号(从0开始)或Excel列名(A, B, C)
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * export class UserImportDto {
23
+ * @CSVColumn('姓名') // 使用列名
24
+ * @CSVColumn(0) // 使用列序号(第一列)
25
+ * @CSVColumn('A') // 使用Excel列名
26
+ * @IsString()
27
+ * @Length(2, 50)
28
+ * name: string;
29
+ *
30
+ * @CSVColumn('年龄') // 使用列名
31
+ * @CSVColumn(1) // 使用列序号(第二列)
32
+ * @CSVColumn('B') // 使用Excel列名
33
+ * @IsNumber()
34
+ * @Min(0)
35
+ * @Max(150)
36
+ * age: number;
37
+ * }
38
+ * ```
39
+ */
40
+ export declare function CSVColumn(columnIdentifier: ColumnIdentifier): PropertyDecorator;
41
+ /**
42
+ * Excel列装饰器
43
+ * 用于指定Excel文件中列与DTO属性的映射关系
44
+ * 支持列名、列序号(从0开始)或Excel列名(A, B, C)
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * export class ProductImportDto {
49
+ * @ExcelColumn('产品名称') // 使用列名
50
+ * @ExcelColumn(0) // 使用列序号(第一列)
51
+ * @ExcelColumn('A') // 使用Excel列名
52
+ * @IsString()
53
+ * @Length(2, 200)
54
+ * name: string;
55
+ *
56
+ * @ExcelColumn('价格') // 使用列名
57
+ * @ExcelColumn(1) // 使用列序号(第二列)
58
+ * @ExcelColumn('B') // 使用Excel列名
59
+ * @IsNumber()
60
+ * @Min(0)
61
+ * price: number;
62
+ * }
63
+ * ```
64
+ */
65
+ export declare function ExcelColumn(columnIdentifier: ColumnIdentifier): PropertyDecorator;
66
+ /**
67
+ * 获取CSV列映射信息
68
+ * 返回列标识到属性名的映射Map
69
+ *
70
+ * @param dtoClass DTO类
71
+ * @returns Map<列标识, 属性名>
72
+ */
73
+ export declare function getCsvColumnMapping(dtoClass: any): Map<ColumnIdentifier, string>;
74
+ /**
75
+ * 获取Excel列映射信息
76
+ * 返回列标识到属性名的映射Map
77
+ *
78
+ * @param dtoClass DTO类
79
+ * @returns Map<列标识, 属性名>
80
+ */
81
+ export declare function getExcelColumnMapping(dtoClass: any): Map<ColumnIdentifier, string>;
82
+ /**
83
+ * Excel列名转数字(A=0, B=1, ..., AA=26, AB=27)
84
+ */
85
+ export declare function excelColumnToNumber(columnLetter: string): number;
86
+ /**
87
+ * 处理行数据
88
+ * 将原始数据行转换为DTO实例,支持多语言错误信息
89
+ * 支持列名、列序号和Excel列名(A, B, C)
90
+ *
91
+ * @param rowData 原始行数据
92
+ * @param dtoClass DTO类
93
+ * @param columnMapping 列映射
94
+ * @param type 数据类型(csv/excel)
95
+ * @returns 转换结果
96
+ */
97
+ export declare function processRowWithMapping<T>(rowData: any, dtoClass: new () => T, columnMapping: Map<ColumnIdentifier, string>, type: 'csv' | 'excel'): {
98
+ instance: T;
99
+ errors: ValidationError[];
100
+ };
101
+ /**
102
+ * 数字转Excel列名(0=A, 1=B, ..., 26=AA, 27=AB)
103
+ */
104
+ export declare function numberToExcelColumn(num: number): string;
105
+ /**
106
+ * 验证错误接口
107
+ */
108
+ interface ValidationError {
109
+ property: string;
110
+ value: any;
111
+ constraints: {
112
+ [key: string]: {
113
+ message: string;
114
+ values?: any[];
115
+ };
116
+ };
117
+ }
118
+ /**
119
+ * 格式化验证错误为多语言
120
+ * 支持中英文错误信息
121
+ *
122
+ * @param errors class-validator错误数组
123
+ * @returns 格式化后的错误信息
124
+ */
125
+ export declare function formatValidationErrors(errors: ValidationError[]): string[];
126
+ /**
127
+ * 创建CSV数据导入结果
128
+ * @param data 成功导入的数据
129
+ * @param errors 错误信息
130
+ * @param totalRows 总行数
131
+ * @param headers 表头信息
132
+ * @returns 导入结果对象
133
+ */
134
+ export declare function createImportResult<T>(data: T[], errors: {
135
+ row: number;
136
+ errors: string[];
137
+ data: any;
138
+ }[], totalRows: number, headers?: string[]): {
139
+ success: boolean;
140
+ data: T[];
141
+ errors: {
142
+ row: number;
143
+ errors: string[];
144
+ data: any;
145
+ }[];
146
+ totalCount: number;
147
+ successCount: number;
148
+ errorCount: number;
149
+ headers?: string[];
150
+ };
151
+ export {};