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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (386) hide show
  1. package/audit/audit.module.d.ts +10 -0
  2. package/audit/audit.module.js +63 -1
  3. package/audit/controllers/audit.controller.d.ts +88 -0
  4. package/audit/controllers/audit.controller.js +74 -0
  5. package/audit/decorators/audit-action.decorator.d.ts +74 -0
  6. package/audit/decorators/audit-action.decorator.js +42 -0
  7. package/audit/decorators/audit-controller.decorator.d.ts +9 -1
  8. package/audit/decorators/audit-controller.decorator.js +11 -2
  9. package/audit/decorators/audit-operation.decorator.d.ts +45 -0
  10. package/audit/decorators/audit-operation.decorator.js +49 -0
  11. package/audit/decorators/entity-audit.decorator.d.ts +85 -1
  12. package/audit/decorators/entity-audit.decorator.js +153 -3
  13. package/audit/decorators/index.d.ts +2 -0
  14. package/audit/decorators/index.js +2 -0
  15. package/audit/dto/audit-log-query.dto.d.ts +3 -0
  16. package/audit/dto/audit-log-query.dto.js +3 -0
  17. package/audit/dto/begin-transaction.dto.d.ts +3 -0
  18. package/audit/dto/begin-transaction.dto.js +3 -0
  19. package/audit/dto/compare-entities.dto.d.ts +3 -0
  20. package/audit/dto/compare-entities.dto.js +3 -0
  21. package/audit/dto/pre-check-restore.dto.d.ts +3 -0
  22. package/audit/dto/pre-check-restore.dto.js +3 -0
  23. package/audit/dto/restore-entity.dto.d.ts +3 -0
  24. package/audit/dto/restore-entity.dto.js +3 -0
  25. package/audit/entities/audit-action-summary.entity.d.ts +23 -0
  26. package/audit/entities/audit-action-summary.entity.js +101 -0
  27. package/audit/entities/entity-audit-log.entity.d.ts +11 -0
  28. package/audit/entities/entity-audit-log.entity.js +57 -2
  29. package/audit/entities/entity-transaction.entity.d.ts +11 -2
  30. package/audit/entities/entity-transaction.entity.js +42 -3
  31. package/audit/entities/index.d.ts +3 -0
  32. package/audit/entities/index.js +3 -0
  33. package/audit/entities/manual-operation-log.entity.d.ts +4 -0
  34. package/audit/entities/manual-operation-log.entity.js +12 -1
  35. package/audit/entities/operation-template.entity.d.ts +4 -0
  36. package/audit/entities/operation-template.entity.js +4 -0
  37. package/audit/enums/audit.enums.d.ts +37 -6
  38. package/audit/enums/audit.enums.js +40 -7
  39. package/audit/index.d.ts +4 -1
  40. package/audit/index.js +34 -1
  41. package/audit/interceptors/audit-action.interceptor.d.ts +38 -0
  42. package/audit/interceptors/audit-action.interceptor.js +215 -0
  43. package/audit/interceptors/audit.interceptor.d.ts +15 -0
  44. package/audit/interceptors/audit.interceptor.js +23 -1
  45. package/audit/interceptors/index.d.ts +1 -0
  46. package/audit/interceptors/index.js +1 -0
  47. package/audit/interfaces/audit.interfaces.d.ts +187 -2
  48. package/audit/services/audit-action.service.d.ts +141 -0
  49. package/audit/services/audit-action.service.js +244 -0
  50. package/audit/services/audit-context.service.d.ts +97 -0
  51. package/audit/services/audit-context.service.js +185 -0
  52. package/audit/services/audit-strategy.service.d.ts +6 -0
  53. package/audit/services/audit-strategy.service.js +13 -0
  54. package/audit/services/entity-audit.service.d.ts +230 -3
  55. package/audit/services/entity-audit.service.js +607 -14
  56. package/audit/services/index.d.ts +3 -0
  57. package/audit/services/index.js +3 -0
  58. package/audit/services/manual-audit-log.service.d.ts +134 -9
  59. package/audit/services/manual-audit-log.service.js +157 -40
  60. package/audit/services/multi-database.service.d.ts +9 -2
  61. package/audit/services/multi-database.service.js +9 -21
  62. package/audit/services/operation-description.service.d.ts +71 -2
  63. package/audit/services/operation-description.service.js +231 -20
  64. package/audit/services/transaction-audit.service.d.ts +30 -0
  65. package/audit/services/transaction-audit.service.js +53 -5
  66. package/audit/subscribers/entity-audit.subscriber.d.ts +19 -0
  67. package/audit/subscribers/entity-audit.subscriber.js +76 -1
  68. package/cache/cache-metrics.service.d.ts +67 -0
  69. package/cache/cache-metrics.service.js +68 -4
  70. package/cache/cache-serialization.service.d.ts +31 -0
  71. package/cache/cache-serialization.service.js +25 -0
  72. package/cache/cache.constants.d.ts +9 -0
  73. package/cache/cache.constants.js +9 -0
  74. package/cache/cache.health.d.ts +26 -0
  75. package/cache/cache.health.js +30 -0
  76. package/cache/cache.module.d.ts +82 -2
  77. package/cache/cache.module.js +76 -5
  78. package/cache/cache.service.d.ts +140 -0
  79. package/cache/cache.service.js +169 -0
  80. package/cache/cache.warmup.service.d.ts +39 -0
  81. package/cache/cache.warmup.service.js +32 -0
  82. package/cache/decorators/cache-evict.decorator.d.ts +47 -0
  83. package/cache/decorators/cache-evict.decorator.js +56 -0
  84. package/cache/decorators/cache-put.decorator.d.ts +34 -0
  85. package/cache/decorators/cache-put.decorator.js +39 -0
  86. package/cache/decorators/cacheable.decorator.d.ts +40 -0
  87. package/cache/decorators/cacheable.decorator.js +55 -0
  88. package/cache/dependencies/callback.dependency.d.ts +33 -0
  89. package/cache/dependencies/callback.dependency.js +39 -1
  90. package/cache/dependencies/chain.dependency.d.ts +28 -0
  91. package/cache/dependencies/chain.dependency.js +34 -0
  92. package/cache/dependencies/db.dependency.d.ts +83 -7
  93. package/cache/dependencies/db.dependency.js +89 -14
  94. package/cache/dependencies/file.dependency.d.ts +32 -0
  95. package/cache/dependencies/file.dependency.js +34 -0
  96. package/cache/dependencies/tag.dependency.d.ts +75 -4
  97. package/cache/dependencies/tag.dependency.js +145 -11
  98. package/cache/dependencies/time.dependency.d.ts +43 -0
  99. package/cache/dependencies/time.dependency.js +43 -0
  100. package/cache/examples/basic-usage.d.ts +15 -0
  101. package/cache/examples/basic-usage.js +62 -8
  102. package/cache/index.js +9 -0
  103. package/cache/interfaces/cache-dependency.interface.d.ts +53 -0
  104. package/cache/interfaces/cache-options.interface.d.ts +89 -0
  105. package/cache/interfaces/cache-options.interface.js +6 -0
  106. package/cache/interfaces/cache-provider.interface.d.ts +78 -0
  107. package/cache/providers/base-cache.provider.d.ts +14 -0
  108. package/cache/providers/base-cache.provider.js +16 -0
  109. package/cache/providers/cls-cache.provider.d.ts +20 -0
  110. package/cache/providers/cls-cache.provider.js +28 -0
  111. package/cache/providers/memory-cache.provider.d.ts +43 -0
  112. package/cache/providers/memory-cache.provider.js +66 -0
  113. package/cache/providers/redis-cache.provider.d.ts +26 -0
  114. package/cache/providers/redis-cache.provider.js +29 -0
  115. package/cache/utils/dependency-manager.util.d.ts +52 -0
  116. package/cache/utils/dependency-manager.util.js +59 -0
  117. package/cache/utils/key-generator.util.d.ts +42 -0
  118. package/cache/utils/key-generator.util.js +53 -1
  119. package/common/abstract.entity.d.ts +14 -0
  120. package/common/abstract.entity.js +14 -0
  121. package/common/boilerplate.polyfill.d.ts +142 -0
  122. package/common/boilerplate.polyfill.js +18 -1
  123. package/common/dto/dto-container.d.ts +16 -0
  124. package/common/dto/dto-container.js +20 -0
  125. package/common/dto/dto-decorators.d.ts +18 -0
  126. package/common/dto/dto-decorators.js +14 -0
  127. package/common/dto/dto-extensions.d.ts +11 -0
  128. package/common/dto/dto-extensions.js +9 -0
  129. package/common/dto/dto-service-accessor.d.ts +17 -0
  130. package/common/dto/dto-service-accessor.js +18 -0
  131. package/common/dto/dto-transformer.d.ts +12 -0
  132. package/common/dto/dto-transformer.js +9 -0
  133. package/common/dto/index.js +2 -0
  134. package/common/examples/paginate-and-map.example.d.ts +6 -0
  135. package/common/examples/paginate-and-map.example.js +26 -0
  136. package/common/utils.d.ts +15 -0
  137. package/common/utils.js +15 -0
  138. package/constants/language-code.js +1 -0
  139. package/decorators/field.decorators.d.ts +1 -1
  140. package/decorators/field.decorators.js +8 -1
  141. package/decorators/property.decorators.js +1 -0
  142. package/decorators/public-route.decorator.js +1 -0
  143. package/decorators/transform.decorators.d.ts +27 -0
  144. package/decorators/transform.decorators.js +29 -0
  145. package/decorators/translate.decorator.js +1 -0
  146. package/decorators/user.decorator.js +1 -0
  147. package/decorators/validator.decorators.d.ts +8 -18
  148. package/decorators/validator.decorators.js +22 -190
  149. package/file-upload/controllers/file-access.controller.d.ts +23 -0
  150. package/file-upload/controllers/file-access.controller.js +128 -0
  151. package/file-upload/decorators/column.decorator.d.ts +151 -0
  152. package/file-upload/decorators/column.decorator.js +273 -0
  153. package/file-upload/decorators/csv-data.decorator.d.ts +30 -0
  154. package/file-upload/decorators/csv-data.decorator.js +85 -0
  155. package/file-upload/decorators/csv-import.decorator.d.ts +34 -0
  156. package/file-upload/decorators/csv-import.decorator.js +24 -0
  157. package/file-upload/decorators/examples/column-mapping.example.d.ts +76 -0
  158. package/file-upload/decorators/examples/column-mapping.example.js +122 -0
  159. package/file-upload/decorators/excel-data.decorator.d.ts +30 -0
  160. package/file-upload/decorators/excel-data.decorator.js +85 -0
  161. package/file-upload/decorators/file-upload.decorator.d.ts +83 -0
  162. package/file-upload/decorators/file-upload.decorator.js +172 -0
  163. package/file-upload/decorators/index.d.ts +5 -0
  164. package/file-upload/decorators/index.js +38 -0
  165. package/file-upload/decorators/process.decorator.d.ts +40 -0
  166. package/file-upload/decorators/process.decorator.js +52 -0
  167. package/file-upload/decorators/validate-data.decorator.d.ts +91 -0
  168. package/file-upload/decorators/validate-data.decorator.js +39 -0
  169. package/file-upload/dto/create-file.dto.d.ts +24 -0
  170. package/file-upload/dto/create-file.dto.js +112 -0
  171. package/file-upload/dto/find-files.dto.d.ts +15 -0
  172. package/file-upload/dto/find-files.dto.js +76 -0
  173. package/file-upload/dto/index.d.ts +4 -0
  174. package/file-upload/dto/index.js +20 -0
  175. package/file-upload/dto/pagination.dto.d.ts +7 -0
  176. package/file-upload/dto/pagination.dto.js +39 -0
  177. package/file-upload/dto/update-file.dto.d.ts +15 -0
  178. package/file-upload/dto/update-file.dto.js +67 -0
  179. package/file-upload/entities/file-metadata.entity.d.ts +25 -0
  180. package/file-upload/entities/file-metadata.entity.js +76 -0
  181. package/file-upload/entities/file.entity.d.ts +114 -0
  182. package/file-upload/entities/file.entity.js +350 -0
  183. package/file-upload/entities/index.d.ts +2 -0
  184. package/file-upload/entities/index.js +18 -0
  185. package/file-upload/enums/file-type.enum.d.ts +72 -0
  186. package/file-upload/enums/file-type.enum.js +212 -0
  187. package/file-upload/exceptions/file-upload.exception.d.ts +57 -0
  188. package/file-upload/exceptions/file-upload.exception.js +120 -0
  189. package/file-upload/exceptions/index.d.ts +1 -0
  190. package/file-upload/exceptions/index.js +17 -0
  191. package/file-upload/file-upload.module.d.ts +89 -0
  192. package/file-upload/file-upload.module.js +292 -0
  193. package/file-upload/index.d.ts +37 -0
  194. package/file-upload/index.js +77 -0
  195. package/file-upload/interceptors/file-upload.interceptor.d.ts +101 -0
  196. package/file-upload/interceptors/file-upload.interceptor.js +594 -0
  197. package/file-upload/interceptors/index.d.ts +1 -0
  198. package/file-upload/interceptors/index.js +17 -0
  199. package/file-upload/interfaces/custom-file-type.interface.d.ts +72 -0
  200. package/file-upload/interfaces/custom-file-type.interface.js +2 -0
  201. package/file-upload/interfaces/file-buffer.interface.d.ts +72 -0
  202. package/file-upload/interfaces/file-buffer.interface.js +2 -0
  203. package/file-upload/interfaces/file-entity.interface.d.ts +142 -0
  204. package/file-upload/interfaces/file-entity.interface.js +28 -0
  205. package/file-upload/interfaces/file-metadata.interface.d.ts +21 -0
  206. package/file-upload/interfaces/file-metadata.interface.js +2 -0
  207. package/file-upload/interfaces/file-processor.interface.d.ts +93 -0
  208. package/file-upload/interfaces/file-processor.interface.js +2 -0
  209. package/file-upload/interfaces/file-upload-options.interface.d.ts +74 -0
  210. package/file-upload/interfaces/file-upload-options.interface.js +5 -0
  211. package/file-upload/interfaces/index.d.ts +7 -0
  212. package/file-upload/interfaces/index.js +24 -0
  213. package/file-upload/interfaces/processor-options.interface.d.ts +102 -0
  214. package/file-upload/interfaces/processor-options.interface.js +2 -0
  215. package/file-upload/interfaces/storage-provider.interface.d.ts +239 -0
  216. package/file-upload/interfaces/storage-provider.interface.js +2 -0
  217. package/file-upload/interfaces/upload-options.interface.d.ts +19 -0
  218. package/file-upload/interfaces/upload-options.interface.js +2 -0
  219. package/file-upload/processors/csv.processor.d.ts +98 -0
  220. package/file-upload/processors/csv.processor.js +391 -0
  221. package/file-upload/processors/excel.processor.d.ts +130 -0
  222. package/file-upload/processors/excel.processor.js +547 -0
  223. package/file-upload/processors/image.processor.d.ts +199 -0
  224. package/file-upload/processors/image.processor.js +377 -0
  225. package/file-upload/providers/index.d.ts +2 -0
  226. package/file-upload/providers/index.js +18 -0
  227. package/file-upload/providers/local-storage.provider.d.ts +98 -0
  228. package/file-upload/providers/local-storage.provider.js +484 -0
  229. package/file-upload/providers/s3-storage.provider.d.ts +87 -0
  230. package/file-upload/providers/s3-storage.provider.js +455 -0
  231. package/file-upload/services/file-signature-validator.service.d.ts +118 -0
  232. package/file-upload/services/file-signature-validator.service.js +376 -0
  233. package/file-upload/services/file.service.d.ts +193 -0
  234. package/file-upload/services/file.service.js +638 -0
  235. package/file-upload/services/index.d.ts +4 -0
  236. package/file-upload/services/index.js +20 -0
  237. package/file-upload/services/malicious-file-detector.service.d.ts +300 -0
  238. package/file-upload/services/malicious-file-detector.service.js +1234 -0
  239. package/file-upload/services/mime-registry.service.d.ts +47 -0
  240. package/file-upload/services/mime-registry.service.js +167 -0
  241. package/file-upload/utils/checksum.util.d.ts +28 -0
  242. package/file-upload/utils/checksum.util.js +65 -0
  243. package/file-upload/utils/dynamic-import.util.d.ts +54 -0
  244. package/file-upload/utils/dynamic-import.util.js +156 -0
  245. package/file-upload/utils/filename.util.d.ts +59 -0
  246. package/file-upload/utils/filename.util.js +184 -0
  247. package/file-upload/utils/filepath.util.d.ts +70 -0
  248. package/file-upload/utils/filepath.util.js +152 -0
  249. package/file-upload/utils/index.d.ts +4 -0
  250. package/file-upload/utils/index.js +20 -0
  251. package/filters/constraint-errors.js +1 -0
  252. package/helpers/common.helper.d.ts +13 -0
  253. package/helpers/common.helper.js +13 -0
  254. package/http-client/config/http-client.config.d.ts +20 -0
  255. package/http-client/config/http-client.config.js +48 -21
  256. package/http-client/decorators/http-client.decorators.d.ts +55 -14
  257. package/http-client/decorators/http-client.decorators.js +154 -78
  258. package/http-client/entities/http-log.entity.d.ts +217 -8
  259. package/http-client/entities/http-log.entity.js +7 -22
  260. package/http-client/errors/http-client.errors.d.ts +57 -0
  261. package/http-client/errors/http-client.errors.js +58 -0
  262. package/http-client/examples/advanced-usage.example.d.ts +40 -0
  263. package/http-client/examples/advanced-usage.example.js +53 -61
  264. package/http-client/examples/auth-with-waiting-lock.example.d.ts +31 -0
  265. package/http-client/examples/auth-with-waiting-lock.example.js +52 -5
  266. package/http-client/examples/basic-usage.example.d.ts +60 -0
  267. package/http-client/examples/basic-usage.example.js +60 -0
  268. package/http-client/examples/multi-api-configuration.example.d.ts +60 -0
  269. package/http-client/examples/multi-api-configuration.example.js +76 -5
  270. package/http-client/examples/proxy-from-environment.example.d.ts +133 -0
  271. package/http-client/examples/proxy-from-environment.example.js +409 -0
  272. package/http-client/http-client.module.d.ts +48 -2
  273. package/http-client/http-client.module.js +147 -68
  274. package/http-client/index.d.ts +1 -1
  275. package/http-client/index.js +8 -0
  276. package/http-client/interfaces/api-client-config.interface.d.ts +80 -45
  277. package/http-client/interfaces/api-client-config.interface.js +3 -0
  278. package/http-client/interfaces/http-client-config.interface.d.ts +109 -52
  279. package/http-client/services/api-client-registry.service.d.ts +50 -11
  280. package/http-client/services/api-client-registry.service.js +90 -250
  281. package/http-client/services/circuit-breaker.service.d.ts +115 -2
  282. package/http-client/services/circuit-breaker.service.js +237 -7
  283. package/http-client/services/http-client.service.d.ts +124 -14
  284. package/http-client/services/http-client.service.js +437 -148
  285. package/http-client/services/http-log-query.service.d.ts +83 -0
  286. package/http-client/services/http-log-query.service.js +121 -13
  287. package/http-client/services/http-replay.service.d.ts +101 -0
  288. package/http-client/services/http-replay.service.js +86 -0
  289. package/http-client/services/index.d.ts +0 -1
  290. package/http-client/services/index.js +0 -1
  291. package/http-client/services/log-cleanup.service.d.ts +63 -0
  292. package/http-client/services/log-cleanup.service.js +54 -2
  293. package/http-client/services/logging.service.d.ts +116 -7
  294. package/http-client/services/logging.service.js +349 -86
  295. package/http-client/utils/call-stack-extractor.util.d.ts +63 -0
  296. package/http-client/utils/call-stack-extractor.util.js +83 -0
  297. package/http-client/utils/context-extractor.util.d.ts +49 -0
  298. package/http-client/utils/context-extractor.util.js +52 -0
  299. package/http-client/utils/curl-generator.util.d.ts +21 -0
  300. package/http-client/utils/curl-generator.util.js +44 -3
  301. package/http-client/utils/index.d.ts +1 -0
  302. package/http-client/utils/index.js +1 -0
  303. package/http-client/utils/proxy-environment.util.d.ts +42 -0
  304. package/http-client/utils/proxy-environment.util.js +148 -0
  305. package/http-client/utils/request-id.util.d.ts +18 -0
  306. package/http-client/utils/request-id.util.js +20 -0
  307. package/http-client/utils/retry-recorder.util.d.ts +42 -0
  308. package/http-client/utils/retry-recorder.util.js +44 -0
  309. package/http-client/utils/security-validator.util.d.ts +118 -0
  310. package/http-client/utils/security-validator.util.js +352 -0
  311. package/index.d.ts +3 -1
  312. package/index.js +12 -1
  313. package/interceptors/translation-interceptor.service.js +5 -0
  314. package/package.json +11 -7
  315. package/providers/context.provider.js +2 -0
  316. package/providers/generator.provider.d.ts +4 -0
  317. package/providers/generator.provider.js +4 -0
  318. package/redis-lock/comprehensive-lock-cleanup.service.d.ts +94 -0
  319. package/redis-lock/comprehensive-lock-cleanup.service.js +253 -0
  320. package/redis-lock/examples/lock-strategy.examples.d.ts +89 -0
  321. package/redis-lock/examples/lock-strategy.examples.js +130 -15
  322. package/redis-lock/index.d.ts +2 -0
  323. package/redis-lock/index.js +8 -1
  324. package/redis-lock/lock-heartbeat.service.d.ts +80 -0
  325. package/redis-lock/lock-heartbeat.service.js +232 -0
  326. package/redis-lock/redis-lock.decorator.d.ts +101 -0
  327. package/redis-lock/redis-lock.decorator.js +120 -0
  328. package/redis-lock/redis-lock.module.d.ts +66 -0
  329. package/redis-lock/redis-lock.module.js +175 -70
  330. package/redis-lock/redis-lock.service.d.ts +282 -0
  331. package/redis-lock/redis-lock.service.js +343 -20
  332. package/setup/bootstrap.setup.d.ts +1 -0
  333. package/setup/bootstrap.setup.js +21 -0
  334. package/setup/index.d.ts +1 -0
  335. package/setup/index.js +1 -0
  336. package/setup/mode.setup.d.ts +44 -0
  337. package/setup/mode.setup.js +44 -0
  338. package/setup/run-in-mode.decorator.d.ts +56 -0
  339. package/setup/run-in-mode.decorator.js +92 -0
  340. package/setup/schedule.decorator.d.ts +227 -0
  341. package/setup/schedule.decorator.js +240 -12
  342. package/setup/worker.decorator.d.ts +86 -0
  343. package/setup/worker.decorator.js +97 -0
  344. package/shared/index.d.ts +1 -1
  345. package/shared/index.js +1 -1
  346. package/shared/{serviceRegistryModule.js → service-registry.module.js} +19 -17
  347. package/shared/services/api-config.service.d.ts +3 -0
  348. package/shared/services/api-config.service.js +21 -9
  349. package/shared/services/index.d.ts +0 -1
  350. package/shared/services/index.js +0 -1
  351. package/validator-json/decorators.d.ts +17 -0
  352. package/validator-json/decorators.js +17 -2
  353. package/validator-json/default.d.ts +6 -0
  354. package/validator-json/default.js +30 -2
  355. package/validator-json/defaultConverters.js +1 -0
  356. package/validator-json/options.d.ts +23 -0
  357. package/validators/common-validators.d.ts +143 -0
  358. package/validators/common-validators.js +249 -0
  359. package/validators/custom-validate.examples.d.ts +23 -0
  360. package/validators/custom-validate.examples.js +78 -6
  361. package/validators/custom-validate.validator.d.ts +108 -0
  362. package/validators/custom-validate.validator.js +85 -0
  363. package/validators/file-mimetype.validator.d.ts +0 -2
  364. package/validators/file-mimetype.validator.js +4 -6
  365. package/validators/index.d.ts +1 -0
  366. package/validators/index.js +1 -0
  367. package/validators/is-exists.validator.d.ts +26 -6
  368. package/validators/is-exists.validator.js +30 -7
  369. package/validators/is-unique.validator.d.ts +33 -7
  370. package/validators/is-unique.validator.js +59 -17
  371. package/validators/skip-empty.validator.d.ts +5 -0
  372. package/validators/skip-empty.validator.js +5 -0
  373. package/vault/interfaces/vault-options.interface.d.ts +9 -0
  374. package/vault/vault-config.loader.d.ts +30 -0
  375. package/vault/vault-config.loader.js +48 -1
  376. package/vault/vault-config.service.d.ts +53 -0
  377. package/vault/vault-config.service.js +57 -0
  378. package/vault/vault.module.d.ts +4 -0
  379. package/vault/vault.module.js +4 -0
  380. package/decorators/examples/validation-decorators.example.d.ts +0 -69
  381. package/decorators/examples/validation-decorators.example.js +0 -331
  382. package/http-client/services/cache.service.d.ts +0 -24
  383. package/http-client/services/cache.service.js +0 -264
  384. package/shared/services/validator.service.d.ts +0 -3
  385. package/shared/services/validator.service.js +0 -20
  386. /package/shared/{serviceRegistryModule.d.ts → service-registry.module.d.ts} +0 -0
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ExcelColumn = ExcelColumn;
13
+ exports.getExcelColumnMapping = getExcelColumnMapping;
14
+ exports.parseAndValidateExcelData = parseAndValidateExcelData;
15
+ require("reflect-metadata");
16
+ const class_transformer_1 = require("class-transformer");
17
+ const class_validator_1 = require("class-validator");
18
+ const EXCEL_COLUMN_METADATA_KEY = Symbol('excel:column');
19
+ /**
20
+ * Excel 列映射装饰器
21
+ * 用于标记 DTO 类的属性对应的 Excel 列名
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * class UserDto {
26
+ * @ExcelColumn('姓名')
27
+ * name: string;
28
+ *
29
+ * @ExcelColumn('邮箱')
30
+ * email: string;
31
+ * }
32
+ * ```
33
+ */
34
+ function ExcelColumn(columnName) {
35
+ return (target, propertyKey) => {
36
+ const existingColumns = Reflect.getMetadata(EXCEL_COLUMN_METADATA_KEY, target.constructor) || {};
37
+ existingColumns[columnName] = propertyKey;
38
+ Reflect.defineMetadata(EXCEL_COLUMN_METADATA_KEY, existingColumns, target.constructor);
39
+ };
40
+ }
41
+ /**
42
+ * 获取 Excel 列映射
43
+ */
44
+ function getExcelColumnMapping(dto) {
45
+ return Reflect.getMetadata(EXCEL_COLUMN_METADATA_KEY, dto) || {};
46
+ }
47
+ /**
48
+ * 解析并验证 Excel 数据
49
+ */
50
+ function parseAndValidateExcelData(data, dto, options) {
51
+ return __awaiter(this, void 0, void 0, function* () {
52
+ const columnMapping = getExcelColumnMapping(dto);
53
+ const results = [];
54
+ const errors = [];
55
+ for (let i = 0; i < data.length; i++) {
56
+ const row = data[i];
57
+ const mappedData = {};
58
+ // 映射列名
59
+ for (const [excelColumn, dtoProperty] of Object.entries(columnMapping)) {
60
+ if (row.hasOwnProperty(excelColumn)) {
61
+ mappedData[dtoProperty] = row[excelColumn];
62
+ }
63
+ }
64
+ // 转换为 DTO 实例
65
+ const instance = (0, class_transformer_1.plainToInstance)(dto, mappedData);
66
+ // 验证
67
+ if (!(options === null || options === void 0 ? void 0 : options.skipValidation)) {
68
+ const validationErrors = yield (0, class_validator_1.validate)(instance);
69
+ if (validationErrors.length > 0) {
70
+ errors.push({
71
+ row: i + 1,
72
+ data: row,
73
+ errors: validationErrors.map((e) => ({
74
+ property: e.property,
75
+ constraints: e.constraints,
76
+ })),
77
+ });
78
+ continue;
79
+ }
80
+ }
81
+ results.push(instance);
82
+ }
83
+ return { data: results, errors };
84
+ });
85
+ }
@@ -0,0 +1,83 @@
1
+ import { FileUploadOptions } from '../interfaces/file-upload-options.interface';
2
+ /**
3
+ * 文件上传装饰器元数据键
4
+ */
5
+ export declare const FILE_UPLOAD_OPTIONS = "file_upload_options";
6
+ /**
7
+ * 统一的文件上传装饰器
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * @Post('upload')
12
+ * @FileUpload({ types: [FileType.Image, FileType.PDF] })
13
+ * async upload(@UploadedFile() file: Express.Multer.File) {
14
+ * return { url: file.path };
15
+ * }
16
+ * ```
17
+ */
18
+ export declare function FileUpload(options?: FileUploadOptions): MethodDecorator;
19
+ /**
20
+ * 静态快捷方法命名空间
21
+ */
22
+ export declare namespace FileUpload {
23
+ /**
24
+ * 图片上传
25
+ * @example
26
+ * ```typescript
27
+ * @Post('photos')
28
+ * @FileUpload.Image()
29
+ * async uploadPhoto(@UploadedFile() file: Express.Multer.File) {
30
+ * return { url: file.path };
31
+ * }
32
+ * ```
33
+ */
34
+ function Image(options?: Partial<FileUploadOptions>): MethodDecorator;
35
+ /**
36
+ * 头像上传(带默认图片处理)
37
+ * @example
38
+ * ```typescript
39
+ * @Post('users/:id/avatar')
40
+ * @FileUpload.Avatar()
41
+ * async uploadAvatar(@UploadedFile() file: Express.Multer.File) {
42
+ * return { url: file.path };
43
+ * }
44
+ * ```
45
+ */
46
+ function Avatar(options?: Partial<FileUploadOptions>): MethodDecorator;
47
+ /**
48
+ * 文档上传
49
+ * @example
50
+ * ```typescript
51
+ * @Post('documents')
52
+ * @FileUpload.Document()
53
+ * async uploadDocument(@UploadedFile() file: Express.Multer.File) {
54
+ * return { url: file.path };
55
+ * }
56
+ * ```
57
+ */
58
+ function Document(options?: Partial<FileUploadOptions>): MethodDecorator;
59
+ /**
60
+ * PDF 上传
61
+ */
62
+ function PDF(options?: Partial<FileUploadOptions>): MethodDecorator;
63
+ /**
64
+ * Excel 上传
65
+ */
66
+ function Excel(options?: Partial<FileUploadOptions>): MethodDecorator;
67
+ /**
68
+ * CSV 上传
69
+ */
70
+ function CSV(options?: Partial<FileUploadOptions>): MethodDecorator;
71
+ /**
72
+ * 视频上传
73
+ */
74
+ function Video(options?: Partial<FileUploadOptions>): MethodDecorator;
75
+ /**
76
+ * 音频上传
77
+ */
78
+ function Audio(options?: Partial<FileUploadOptions>): MethodDecorator;
79
+ /**
80
+ * 公开访问的文件上传
81
+ */
82
+ function Public(options?: Partial<FileUploadOptions>): MethodDecorator;
83
+ }
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FILE_UPLOAD_OPTIONS = void 0;
4
+ exports.FileUpload = FileUpload;
5
+ const common_1 = require("@nestjs/common");
6
+ const platform_express_1 = require("@nestjs/platform-express");
7
+ const multer_1 = require("multer");
8
+ const uuid_1 = require("uuid");
9
+ const file_type_enum_1 = require("../enums/file-type.enum");
10
+ const file_upload_interceptor_1 = require("../interceptors/file-upload.interceptor");
11
+ const filename_util_1 = require("../utils/filename.util");
12
+ const filepath_util_1 = require("../utils/filepath.util");
13
+ /**
14
+ * 文件上传装饰器元数据键
15
+ */
16
+ exports.FILE_UPLOAD_OPTIONS = 'file_upload_options';
17
+ /**
18
+ * 统一的文件上传装饰器
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * @Post('upload')
23
+ * @FileUpload({ types: [FileType.Image, FileType.PDF] })
24
+ * async upload(@UploadedFile() file: Express.Multer.File) {
25
+ * return { url: file.path };
26
+ * }
27
+ * ```
28
+ */
29
+ function FileUpload(options = {}) {
30
+ const fieldName = options['fieldName'] || 'file';
31
+ // 配置磁盘存储
32
+ const storage = (0, multer_1.diskStorage)({
33
+ destination: (req, file, cb) => {
34
+ const fullPath = filepath_util_1.FilePathUtil.getFullUploadPath();
35
+ cb(null, fullPath);
36
+ },
37
+ filename: (req, file, cb) => {
38
+ // 解码 UTF-8 文件名
39
+ const decodedName = filename_util_1.FileNameUtil.decodeAndNormalize(file.originalname);
40
+ // 检查是否保留原始文件名
41
+ if (options.preserveOriginalName) {
42
+ // 保留原始文件名,但加上时间戳防止冲突
43
+ const ext = filename_util_1.FileNameUtil.extractExtension(decodedName);
44
+ const basename = filename_util_1.FileNameUtil.getBaseName(decodedName);
45
+ const sanitizedBasename = filename_util_1.FileNameUtil.sanitizeOriginal(basename);
46
+ const timestamp = Date.now();
47
+ const filename = `${sanitizedBasename}_${timestamp}${ext}`;
48
+ cb(null, filename);
49
+ }
50
+ else {
51
+ // 生成唯一文件名: uuid + 原始扩展名
52
+ const ext = filename_util_1.FileNameUtil.extractExtension(decodedName);
53
+ const uniqueName = `${(0, uuid_1.v4)()}${ext}`;
54
+ cb(null, uniqueName);
55
+ }
56
+ },
57
+ });
58
+ return (0, common_1.applyDecorators)(
59
+ // 设置元数据供 Interceptor 使用
60
+ (0, common_1.SetMetadata)(exports.FILE_UPLOAD_OPTIONS, options),
61
+ // 应用文件拦截器(使用磁盘存储)- 上传文件到磁盘
62
+ (0, common_1.UseInterceptors)((0, platform_express_1.FileInterceptor)(fieldName, {
63
+ storage,
64
+ // 在 Multer 层面限制文件大小,防止大文件攻击
65
+ limits: {
66
+ fileSize: options.maxSize || 10 * 1024 * 1024, // 默认 10MB
67
+ // 限制文件名长度
68
+ fieldNameSize: 100,
69
+ // 限制文件字段数量
70
+ files: 1,
71
+ },
72
+ })),
73
+ // 应用文件上传拦截器 - 在文件上传后进行所有验证(类型、签名、恶意检测等)
74
+ (0, common_1.UseInterceptors)(file_upload_interceptor_1.FileUploadInterceptor));
75
+ }
76
+ /**
77
+ * 静态快捷方法命名空间
78
+ */
79
+ // eslint-disable-next-line @typescript-eslint/no-namespace
80
+ (function (FileUpload) {
81
+ /**
82
+ * 图片上传
83
+ * @example
84
+ * ```typescript
85
+ * @Post('photos')
86
+ * @FileUpload.Image()
87
+ * async uploadPhoto(@UploadedFile() file: Express.Multer.File) {
88
+ * return { url: file.path };
89
+ * }
90
+ * ```
91
+ */
92
+ function Image(options = {}) {
93
+ return FileUpload(Object.assign({ types: [file_type_enum_1.FileType.Image], maxSize: 10 * 1024 * 1024 }, options));
94
+ }
95
+ FileUpload.Image = Image;
96
+ /**
97
+ * 头像上传(带默认图片处理)
98
+ * @example
99
+ * ```typescript
100
+ * @Post('users/:id/avatar')
101
+ * @FileUpload.Avatar()
102
+ * async uploadAvatar(@UploadedFile() file: Express.Multer.File) {
103
+ * return { url: file.path };
104
+ * }
105
+ * ```
106
+ */
107
+ function Avatar(options = {}) {
108
+ return FileUpload(Object.assign({ types: [file_type_enum_1.FileType.Image], maxSize: 5 * 1024 * 1024, auth: true, image: {
109
+ resize: { width: 200, height: 200, fit: 'cover' },
110
+ quality: 85,
111
+ format: 'jpeg',
112
+ } }, options));
113
+ }
114
+ FileUpload.Avatar = Avatar;
115
+ /**
116
+ * 文档上传
117
+ * @example
118
+ * ```typescript
119
+ * @Post('documents')
120
+ * @FileUpload.Document()
121
+ * async uploadDocument(@UploadedFile() file: Express.Multer.File) {
122
+ * return { url: file.path };
123
+ * }
124
+ * ```
125
+ */
126
+ function Document(options = {}) {
127
+ return FileUpload(Object.assign({ types: [file_type_enum_1.FileType.Document], maxSize: 50 * 1024 * 1024 }, options));
128
+ }
129
+ FileUpload.Document = Document;
130
+ /**
131
+ * PDF 上传
132
+ */
133
+ function PDF(options = {}) {
134
+ return FileUpload(Object.assign({ types: [file_type_enum_1.FileType.PDF], maxSize: 50 * 1024 * 1024 }, options));
135
+ }
136
+ FileUpload.PDF = PDF;
137
+ /**
138
+ * Excel 上传
139
+ */
140
+ function Excel(options = {}) {
141
+ return FileUpload(Object.assign({ types: [file_type_enum_1.FileType.Excel], maxSize: 20 * 1024 * 1024 }, options));
142
+ }
143
+ FileUpload.Excel = Excel;
144
+ /**
145
+ * CSV 上传
146
+ */
147
+ function CSV(options = {}) {
148
+ return FileUpload(Object.assign({ types: [file_type_enum_1.FileType.CSV], maxSize: 20 * 1024 * 1024 }, options));
149
+ }
150
+ FileUpload.CSV = CSV;
151
+ /**
152
+ * 视频上传
153
+ */
154
+ function Video(options = {}) {
155
+ return FileUpload(Object.assign({ types: [file_type_enum_1.FileType.Video], maxSize: 500 * 1024 * 1024 }, options));
156
+ }
157
+ FileUpload.Video = Video;
158
+ /**
159
+ * 音频上传
160
+ */
161
+ function Audio(options = {}) {
162
+ return FileUpload(Object.assign({ types: [file_type_enum_1.FileType.Audio], maxSize: 100 * 1024 * 1024 }, options));
163
+ }
164
+ FileUpload.Audio = Audio;
165
+ /**
166
+ * 公开访问的文件上传
167
+ */
168
+ function Public(options = {}) {
169
+ return FileUpload(Object.assign({ public: true, auth: false }, options));
170
+ }
171
+ FileUpload.Public = Public;
172
+ })(FileUpload || (exports.FileUpload = FileUpload = {}));
@@ -0,0 +1,5 @@
1
+ export * from './file-upload.decorator';
2
+ export { ExcelColumn as ExcelColumnDecorator, getExcelColumnMapping as getExcelColumnMappingLegacy, parseAndValidateExcelData } from './excel-data.decorator';
3
+ export { CsvColumn as CsvColumnDecorator, getCsvColumnMapping as getCsvColumnMappingLegacy, parseAndValidateCsvData } from './csv-data.decorator';
4
+ export { CSVColumn, ExcelColumn, getCsvColumnMapping, getExcelColumnMapping, processRowWithMapping, excelColumnToNumber, numberToExcelColumn, ColumnIdentifier } from './column.decorator';
5
+ export * from './process.decorator';
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.numberToExcelColumn = exports.excelColumnToNumber = exports.processRowWithMapping = exports.getExcelColumnMapping = exports.getCsvColumnMapping = exports.ExcelColumn = exports.CSVColumn = exports.parseAndValidateCsvData = exports.getCsvColumnMappingLegacy = exports.CsvColumnDecorator = exports.parseAndValidateExcelData = exports.getExcelColumnMappingLegacy = exports.ExcelColumnDecorator = void 0;
18
+ __exportStar(require("./file-upload.decorator"), exports);
19
+ // Excel/CSV 列映射装饰器(字段级别)
20
+ var excel_data_decorator_1 = require("./excel-data.decorator");
21
+ Object.defineProperty(exports, "ExcelColumnDecorator", { enumerable: true, get: function () { return excel_data_decorator_1.ExcelColumn; } });
22
+ Object.defineProperty(exports, "getExcelColumnMappingLegacy", { enumerable: true, get: function () { return excel_data_decorator_1.getExcelColumnMapping; } });
23
+ Object.defineProperty(exports, "parseAndValidateExcelData", { enumerable: true, get: function () { return excel_data_decorator_1.parseAndValidateExcelData; } });
24
+ var csv_data_decorator_1 = require("./csv-data.decorator");
25
+ Object.defineProperty(exports, "CsvColumnDecorator", { enumerable: true, get: function () { return csv_data_decorator_1.CsvColumn; } });
26
+ Object.defineProperty(exports, "getCsvColumnMappingLegacy", { enumerable: true, get: function () { return csv_data_decorator_1.getCsvColumnMapping; } });
27
+ Object.defineProperty(exports, "parseAndValidateCsvData", { enumerable: true, get: function () { return csv_data_decorator_1.parseAndValidateCsvData; } });
28
+ // 列装饰器和相关辅助函数(推荐使用)
29
+ var column_decorator_1 = require("./column.decorator");
30
+ Object.defineProperty(exports, "CSVColumn", { enumerable: true, get: function () { return column_decorator_1.CSVColumn; } });
31
+ Object.defineProperty(exports, "ExcelColumn", { enumerable: true, get: function () { return column_decorator_1.ExcelColumn; } });
32
+ Object.defineProperty(exports, "getCsvColumnMapping", { enumerable: true, get: function () { return column_decorator_1.getCsvColumnMapping; } });
33
+ Object.defineProperty(exports, "getExcelColumnMapping", { enumerable: true, get: function () { return column_decorator_1.getExcelColumnMapping; } });
34
+ Object.defineProperty(exports, "processRowWithMapping", { enumerable: true, get: function () { return column_decorator_1.processRowWithMapping; } });
35
+ Object.defineProperty(exports, "excelColumnToNumber", { enumerable: true, get: function () { return column_decorator_1.excelColumnToNumber; } });
36
+ Object.defineProperty(exports, "numberToExcelColumn", { enumerable: true, get: function () { return column_decorator_1.numberToExcelColumn; } });
37
+ // NOTE: @ExcelDataParam 和 @CsvDataParam 参数装饰器已废弃并移除
38
+ __exportStar(require("./process.decorator"), exports);
@@ -0,0 +1,40 @@
1
+ /**
2
+ * 处理器结果参数装饰器
3
+ * 用于获取在装饰器中配置的处理器执行结果
4
+ *
5
+ * @example
6
+ * ```typescript
7
+ * @Post('upload/pdf')
8
+ * @FileUpload({
9
+ * types: [FileType.PDF],
10
+ * processor: 'pdf-text'
11
+ * })
12
+ * async uploadPdf(
13
+ * @UploadedFile() file: Express.Multer.File,
14
+ * @ProcessResult() result: { text: string; pageCount: number }
15
+ * ) {
16
+ * return { url: file.path, text: result.text };
17
+ * }
18
+ * ```
19
+ */
20
+ export declare const ProcessResult: (...dataOrPipes: unknown[]) => ParameterDecorator;
21
+ /**
22
+ * 自定义处理器参数装饰器
23
+ * 用于在参数级别指定处理器并获取结果
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * @Post('upload/pdf')
28
+ * @FileUpload({ types: [FileType.PDF] })
29
+ * async uploadPdf(
30
+ * @UploadedFile() file: Express.Multer.File,
31
+ * @Process('pdf-text', { extractImages: true }) result: any
32
+ * ) {
33
+ * return { url: file.path, text: result.text };
34
+ * }
35
+ * ```
36
+ */
37
+ export declare const Process: (...dataOrPipes: (import("@nestjs/common").PipeTransform<any, any> | import("@nestjs/common").Type<import("@nestjs/common").PipeTransform<any, any>> | {
38
+ name: string;
39
+ options?: any;
40
+ })[]) => ParameterDecorator;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Process = exports.ProcessResult = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ /**
6
+ * 处理器结果参数装饰器
7
+ * 用于获取在装饰器中配置的处理器执行结果
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * @Post('upload/pdf')
12
+ * @FileUpload({
13
+ * types: [FileType.PDF],
14
+ * processor: 'pdf-text'
15
+ * })
16
+ * async uploadPdf(
17
+ * @UploadedFile() file: Express.Multer.File,
18
+ * @ProcessResult() result: { text: string; pageCount: number }
19
+ * ) {
20
+ * return { url: file.path, text: result.text };
21
+ * }
22
+ * ```
23
+ */
24
+ exports.ProcessResult = (0, common_1.createParamDecorator)((data, ctx) => {
25
+ const request = ctx.switchToHttp().getRequest();
26
+ return request._processResult;
27
+ });
28
+ /**
29
+ * 自定义处理器参数装饰器
30
+ * 用于在参数级别指定处理器并获取结果
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * @Post('upload/pdf')
35
+ * @FileUpload({ types: [FileType.PDF] })
36
+ * async uploadPdf(
37
+ * @UploadedFile() file: Express.Multer.File,
38
+ * @Process('pdf-text', { extractImages: true }) result: any
39
+ * ) {
40
+ * return { url: file.path, text: result.text };
41
+ * }
42
+ * ```
43
+ */
44
+ exports.Process = (0, common_1.createParamDecorator)((data, ctx) => {
45
+ const request = ctx.switchToHttp().getRequest();
46
+ // 在 interceptor 中处理
47
+ request._processParams = {
48
+ name: (data === null || data === void 0 ? void 0 : data['name']) || data,
49
+ options: data === null || data === void 0 ? void 0 : data['options'],
50
+ };
51
+ return request._processResult;
52
+ });
@@ -0,0 +1,91 @@
1
+ /**
2
+ * 验证装饰器元数据键
3
+ */
4
+ export declare const VALIDATE_DATA_KEY = "validate:data";
5
+ /**
6
+ * 数据验证配置
7
+ */
8
+ export interface ValidateDataOptions {
9
+ /** 验证类 */
10
+ validateClass?: any;
11
+ /** 是否验证数组 */
12
+ isArray?: boolean;
13
+ /** 验证组 */
14
+ groups?: string[];
15
+ /** 是否跳过缺失属性 */
16
+ skipMissingProperties?: boolean;
17
+ /** 是否跳过未装饰的属性 */
18
+ skipUndefinedProperties?: boolean;
19
+ /** 自定义验证器 */
20
+ customValidators?: Array<{
21
+ property: string;
22
+ validator: (value: any) => boolean | string;
23
+ }>;
24
+ /** 转换器 */
25
+ transformers?: Array<{
26
+ property: string;
27
+ transformer: (value: any) => any;
28
+ }>;
29
+ /** 错误处理策略 */
30
+ onError?: 'stop' | 'collect' | 'skip';
31
+ /** 是否启用自动类型转换 */
32
+ autoTransform?: boolean;
33
+ }
34
+ /**
35
+ * 数据验证装饰器
36
+ * 用于在控制器方法上启用数据验证
37
+ */
38
+ export declare const ValidateData: (options?: ValidateDataOptions) => import("@nestjs/common").CustomDecorator<string>;
39
+ /**
40
+ * 批量数据验证装饰器
41
+ * 用于验证数组数据
42
+ */
43
+ export declare const ValidateArray: (validateClass: any, options?: Omit<ValidateDataOptions, "isArray" | "validateClass">) => import("@nestjs/common").CustomDecorator<string>;
44
+ /**
45
+ * 自动验证转换装饰器
46
+ * 自动应用 class-transformer 的转换
47
+ */
48
+ export declare const AutoTransform: (options?: {
49
+ excludeExtraneousValues?: boolean;
50
+ }) => import("@nestjs/common").CustomDecorator<string>;
51
+ /**
52
+ * Excel/CSV 行数据验证基类
53
+ * 使用 class-validator 定义验证规则
54
+ */
55
+ export declare abstract class BaseRowData {
56
+ /**
57
+ * 验证行数据
58
+ * 子类应该使用 class-validator 装饰器定义验证规则
59
+ */
60
+ abstract validate(): Promise<string[]>;
61
+ /**
62
+ * 转换行数据
63
+ * 子类可以重写此方法进行数据转换
64
+ */
65
+ transform?(): Promise<void>;
66
+ /**
67
+ * 清理数据
68
+ * 子类可以重写此方法进行数据清理
69
+ */
70
+ clean?(): Promise<void>;
71
+ }
72
+ /**
73
+ * 验证结果
74
+ */
75
+ export interface ValidationResult {
76
+ /** 是否通过验证 */
77
+ isValid: boolean;
78
+ /** 错误列表 */
79
+ errors: Array<{
80
+ row?: number;
81
+ field: string;
82
+ message: string;
83
+ value: any;
84
+ property: string;
85
+ constraints?: Record<string, string>;
86
+ }>;
87
+ /** 转换后的数据 */
88
+ data?: any;
89
+ /** 警告信息 */
90
+ warnings?: string[];
91
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseRowData = exports.AutoTransform = exports.ValidateArray = exports.ValidateData = exports.VALIDATE_DATA_KEY = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ /**
6
+ * 验证装饰器元数据键
7
+ */
8
+ exports.VALIDATE_DATA_KEY = 'validate:data';
9
+ /**
10
+ * 数据验证装饰器
11
+ * 用于在控制器方法上启用数据验证
12
+ */
13
+ const ValidateData = (options = {}) => {
14
+ return (0, common_1.SetMetadata)(exports.VALIDATE_DATA_KEY, options);
15
+ };
16
+ exports.ValidateData = ValidateData;
17
+ /**
18
+ * 批量数据验证装饰器
19
+ * 用于验证数组数据
20
+ */
21
+ const ValidateArray = (validateClass, options = {}) => {
22
+ return (0, common_1.SetMetadata)(exports.VALIDATE_DATA_KEY, Object.assign(Object.assign({}, options), { validateClass, isArray: true }));
23
+ };
24
+ exports.ValidateArray = ValidateArray;
25
+ /**
26
+ * 自动验证转换装饰器
27
+ * 自动应用 class-transformer 的转换
28
+ */
29
+ const AutoTransform = (options = {}) => {
30
+ return (0, common_1.SetMetadata)('auto:transform', options);
31
+ };
32
+ exports.AutoTransform = AutoTransform;
33
+ /**
34
+ * Excel/CSV 行数据验证基类
35
+ * 使用 class-validator 定义验证规则
36
+ */
37
+ class BaseRowData {
38
+ }
39
+ exports.BaseRowData = BaseRowData;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * 创建文件DTO
3
+ */
4
+ export declare class CreateFileDto {
5
+ originalName: string;
6
+ filename: string;
7
+ mimeType: string;
8
+ fileType?: string;
9
+ extension?: string;
10
+ size: number;
11
+ checksum?: string;
12
+ path?: string;
13
+ url?: string;
14
+ storageProvider?: string;
15
+ userId?: string;
16
+ uploadId?: string;
17
+ bucket?: string;
18
+ key?: string;
19
+ etag?: string;
20
+ tempPath?: string;
21
+ status?: 'processing' | 'completed' | 'failed' | 'deleted';
22
+ validationData?: Record<string, unknown>;
23
+ metadata?: Record<string, unknown>;
24
+ }