@nest-omni/core 4.1.3-12 → 4.1.3-13

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 (610) hide show
  1. package/LICENSE +17 -0
  2. package/README.md +444 -0
  3. package/build.sh +45 -0
  4. package/dist/cache/dependencies/db.dependency.d.ts +109 -0
  5. package/{cache → dist/cache}/dependencies/db.dependency.js +64 -13
  6. package/{common → dist/common}/boilerplate.polyfill.js +1 -1
  7. package/dist/file-upload/decorators/column.decorator.d.ts +151 -0
  8. package/dist/file-upload/decorators/column.decorator.js +273 -0
  9. package/dist/file-upload/decorators/csv-data.decorator.d.ts +30 -0
  10. package/dist/file-upload/decorators/csv-data.decorator.js +85 -0
  11. package/dist/file-upload/decorators/csv-import.decorator.d.ts +34 -0
  12. package/dist/file-upload/decorators/csv-import.decorator.js +24 -0
  13. package/dist/file-upload/decorators/examples/column-mapping.example.d.ts +76 -0
  14. package/dist/file-upload/decorators/examples/column-mapping.example.js +122 -0
  15. package/dist/file-upload/decorators/excel-data.decorator.d.ts +30 -0
  16. package/dist/file-upload/decorators/excel-data.decorator.js +85 -0
  17. package/dist/file-upload/decorators/index.d.ts +5 -0
  18. package/dist/file-upload/decorators/index.js +38 -0
  19. package/dist/file-upload/decorators/validate-data.decorator.d.ts +91 -0
  20. package/dist/file-upload/decorators/validate-data.decorator.js +39 -0
  21. package/{file-upload → dist/file-upload}/dto/update-file.dto.d.ts +0 -1
  22. package/{file-upload → dist/file-upload}/dto/update-file.dto.js +0 -4
  23. package/{file-upload → dist/file-upload}/entities/file-metadata.entity.d.ts +6 -3
  24. package/{file-upload → dist/file-upload}/entities/file-metadata.entity.js +2 -10
  25. package/{file-upload → dist/file-upload}/entities/file.entity.d.ts +3 -18
  26. package/{file-upload → dist/file-upload}/entities/file.entity.js +0 -34
  27. package/{file-upload → dist/file-upload}/file-upload.module.d.ts +1 -1
  28. package/{file-upload → dist/file-upload}/file-upload.module.js +44 -16
  29. package/{file-upload → dist/file-upload}/index.d.ts +13 -2
  30. package/{file-upload → dist/file-upload}/index.js +21 -3
  31. package/dist/file-upload/interceptors/file-upload.interceptor.d.ts +101 -0
  32. package/dist/file-upload/interceptors/file-upload.interceptor.js +594 -0
  33. package/dist/file-upload/interfaces/file-processor.interface.d.ts +93 -0
  34. package/{file-upload → dist/file-upload}/interfaces/file-upload-options.interface.d.ts +3 -46
  35. package/dist/file-upload/interfaces/file-upload-options.interface.js +5 -0
  36. package/dist/file-upload/interfaces/processor-options.interface.d.ts +102 -0
  37. package/dist/file-upload/processors/csv.processor.d.ts +98 -0
  38. package/dist/file-upload/processors/csv.processor.js +391 -0
  39. package/dist/file-upload/processors/excel.processor.d.ts +130 -0
  40. package/dist/file-upload/processors/excel.processor.js +547 -0
  41. package/dist/file-upload/processors/image.processor.d.ts +199 -0
  42. package/dist/file-upload/processors/image.processor.js +377 -0
  43. package/{file-upload → dist/file-upload}/services/file.service.d.ts +3 -0
  44. package/{file-upload → dist/file-upload}/services/file.service.js +39 -10
  45. package/{file-upload → dist/file-upload}/services/malicious-file-detector.service.d.ts +29 -3
  46. package/{file-upload → dist/file-upload}/services/malicious-file-detector.service.js +256 -57
  47. package/{file-upload → dist/file-upload}/utils/dynamic-import.util.d.ts +6 -2
  48. package/{file-upload → dist/file-upload}/utils/dynamic-import.util.js +17 -5
  49. package/{http-client → dist/http-client}/decorators/http-client.decorators.d.ts +4 -2
  50. package/{http-client → dist/http-client}/decorators/http-client.decorators.js +2 -1
  51. package/{http-client → dist/http-client}/entities/http-log.entity.js +1 -9
  52. package/dist/http-client/examples/proxy-from-environment.example.d.ts +133 -0
  53. package/dist/http-client/examples/proxy-from-environment.example.js +410 -0
  54. package/{http-client → dist/http-client}/http-client.module.js +65 -6
  55. package/{http-client → dist/http-client}/interfaces/http-client-config.interface.d.ts +6 -0
  56. package/{http-client → dist/http-client}/services/http-client.service.d.ts +8 -0
  57. package/{http-client → dist/http-client}/services/http-client.service.js +61 -17
  58. package/{http-client → dist/http-client}/services/logging.service.d.ts +1 -1
  59. package/{http-client → dist/http-client}/services/logging.service.js +74 -58
  60. package/{http-client → dist/http-client}/utils/index.d.ts +1 -0
  61. package/{http-client → dist/http-client}/utils/index.js +1 -0
  62. package/dist/http-client/utils/proxy-environment.util.d.ts +42 -0
  63. package/dist/http-client/utils/proxy-environment.util.js +148 -0
  64. package/dist/package.json +105 -0
  65. package/{shared → dist/shared}/service-registry.module.js +18 -0
  66. package/dist/transaction/data-source.util.d.ts +142 -0
  67. package/dist/transaction/data-source.util.js +330 -0
  68. package/{transaction → dist/transaction}/index.d.ts +1 -0
  69. package/{transaction → dist/transaction}/index.js +12 -1
  70. package/{validators → dist/validators}/is-exists.validator.d.ts +19 -2
  71. package/{validators → dist/validators}/is-exists.validator.js +27 -2
  72. package/{validators → dist/validators}/is-unique.validator.d.ts +12 -1
  73. package/{validators → dist/validators}/is-unique.validator.js +26 -1
  74. package/dist/vault/interfaces/vault-options.interface.js +2 -0
  75. package/package.json +9 -5
  76. package/tsconfig.build.json +16 -0
  77. package/cache/dependencies/db.dependency.d.ts +0 -60
  78. package/file-upload/decorators/csv-data.decorator.d.ts +0 -44
  79. package/file-upload/decorators/csv-data.decorator.js +0 -131
  80. package/file-upload/decorators/excel-data.decorator.d.ts +0 -44
  81. package/file-upload/decorators/excel-data.decorator.js +0 -125
  82. package/file-upload/decorators/index.d.ts +0 -4
  83. package/file-upload/decorators/index.js +0 -20
  84. package/file-upload/interceptors/file-upload.interceptor.d.ts +0 -48
  85. package/file-upload/interceptors/file-upload.interceptor.js +0 -434
  86. /package/{.hygen → dist/.hygen}/new/crud/controller.ejs.t +0 -0
  87. /package/{.hygen → dist/.hygen}/new/crud/create.dto.ejs.t +0 -0
  88. /package/{.hygen → dist/.hygen}/new/crud/entity.ejs.t +0 -0
  89. /package/{.hygen → dist/.hygen}/new/crud/get.dto.ejs.t +0 -0
  90. /package/{.hygen → dist/.hygen}/new/crud/index-dto.ejs.t +0 -0
  91. /package/{.hygen → dist/.hygen}/new/crud/index-response.dto.ejs.t +0 -0
  92. /package/{.hygen → dist/.hygen}/new/crud/module.ejs.t +0 -0
  93. /package/{.hygen → dist/.hygen}/new/crud/prompt.js +0 -0
  94. /package/{.hygen → dist/.hygen}/new/crud/service.ejs.t +0 -0
  95. /package/{.hygen → dist/.hygen}/new/crud/update.dto.ejs.t +0 -0
  96. /package/{.hygen → dist/.hygen}/new/module/controller.ejs.t +0 -0
  97. /package/{.hygen → dist/.hygen}/new/module/create-command.ejs.t +0 -0
  98. /package/{.hygen → dist/.hygen}/new/module/create.dto.ejs.t +0 -0
  99. /package/{.hygen → dist/.hygen}/new/module/dto.ejs.t +0 -0
  100. /package/{.hygen → dist/.hygen}/new/module/entity.ejs.t +0 -0
  101. /package/{.hygen → dist/.hygen}/new/module/get-query.ejs.t +0 -0
  102. /package/{.hygen → dist/.hygen}/new/module/module.ejs.t +0 -0
  103. /package/{.hygen → dist/.hygen}/new/module/not-found.exception.ejs.t +0 -0
  104. /package/{.hygen → dist/.hygen}/new/module/page-options.dto.ejs.t +0 -0
  105. /package/{.hygen → dist/.hygen}/new/module/prompt.js +0 -0
  106. /package/{.hygen → dist/.hygen}/new/module/repository.ejs.t +0 -0
  107. /package/{.hygen → dist/.hygen}/new/module/service.ejs.t +0 -0
  108. /package/{.hygen → dist/.hygen}/new/module/translation-dto.ejs.t +0 -0
  109. /package/{.hygen → dist/.hygen}/new/module/translation-entity.ejs.t +0 -0
  110. /package/{.hygen → dist/.hygen}/new/module/translation-repository.ejs.t +0 -0
  111. /package/{.hygen → dist/.hygen}/new/module/update.dto.ejs.t +0 -0
  112. /package/{.hygen.js → dist/.hygen.js} +0 -0
  113. /package/{audit → dist/audit}/audit.module.d.ts +0 -0
  114. /package/{audit → dist/audit}/audit.module.js +0 -0
  115. /package/{audit → dist/audit}/controllers/audit.controller.d.ts +0 -0
  116. /package/{audit → dist/audit}/controllers/audit.controller.js +0 -0
  117. /package/{audit → dist/audit}/controllers/index.d.ts +0 -0
  118. /package/{audit → dist/audit}/controllers/index.js +0 -0
  119. /package/{audit → dist/audit}/decorators/audit-action.decorator.d.ts +0 -0
  120. /package/{audit → dist/audit}/decorators/audit-action.decorator.js +0 -0
  121. /package/{audit → dist/audit}/decorators/audit-controller.decorator.d.ts +0 -0
  122. /package/{audit → dist/audit}/decorators/audit-controller.decorator.js +0 -0
  123. /package/{audit → dist/audit}/decorators/audit-operation.decorator.d.ts +0 -0
  124. /package/{audit → dist/audit}/decorators/audit-operation.decorator.js +0 -0
  125. /package/{audit → dist/audit}/decorators/entity-audit.decorator.d.ts +0 -0
  126. /package/{audit → dist/audit}/decorators/entity-audit.decorator.js +0 -0
  127. /package/{audit → dist/audit}/decorators/index.d.ts +0 -0
  128. /package/{audit → dist/audit}/decorators/index.js +0 -0
  129. /package/{audit → dist/audit}/dto/audit-log-query.dto.d.ts +0 -0
  130. /package/{audit → dist/audit}/dto/audit-log-query.dto.js +0 -0
  131. /package/{audit → dist/audit}/dto/begin-transaction.dto.d.ts +0 -0
  132. /package/{audit → dist/audit}/dto/begin-transaction.dto.js +0 -0
  133. /package/{audit → dist/audit}/dto/compare-entities.dto.d.ts +0 -0
  134. /package/{audit → dist/audit}/dto/compare-entities.dto.js +0 -0
  135. /package/{audit → dist/audit}/dto/index.d.ts +0 -0
  136. /package/{audit → dist/audit}/dto/index.js +0 -0
  137. /package/{audit → dist/audit}/dto/pre-check-restore.dto.d.ts +0 -0
  138. /package/{audit → dist/audit}/dto/pre-check-restore.dto.js +0 -0
  139. /package/{audit → dist/audit}/dto/restore-entity.dto.d.ts +0 -0
  140. /package/{audit → dist/audit}/dto/restore-entity.dto.js +0 -0
  141. /package/{audit → dist/audit}/entities/audit-action-summary.entity.d.ts +0 -0
  142. /package/{audit → dist/audit}/entities/audit-action-summary.entity.js +0 -0
  143. /package/{audit → dist/audit}/entities/entity-audit-log.entity.d.ts +0 -0
  144. /package/{audit → dist/audit}/entities/entity-audit-log.entity.js +0 -0
  145. /package/{audit → dist/audit}/entities/entity-transaction.entity.d.ts +0 -0
  146. /package/{audit → dist/audit}/entities/entity-transaction.entity.js +0 -0
  147. /package/{audit → dist/audit}/entities/index.d.ts +0 -0
  148. /package/{audit → dist/audit}/entities/index.js +0 -0
  149. /package/{audit → dist/audit}/entities/manual-operation-log.entity.d.ts +0 -0
  150. /package/{audit → dist/audit}/entities/manual-operation-log.entity.js +0 -0
  151. /package/{audit → dist/audit}/entities/operation-template.entity.d.ts +0 -0
  152. /package/{audit → dist/audit}/entities/operation-template.entity.js +0 -0
  153. /package/{audit → dist/audit}/enums/audit.enums.d.ts +0 -0
  154. /package/{audit → dist/audit}/enums/audit.enums.js +0 -0
  155. /package/{audit → dist/audit}/enums/index.d.ts +0 -0
  156. /package/{audit → dist/audit}/enums/index.js +0 -0
  157. /package/{audit → dist/audit}/index.d.ts +0 -0
  158. /package/{audit → dist/audit}/index.js +0 -0
  159. /package/{audit → dist/audit}/interceptors/audit-action.interceptor.d.ts +0 -0
  160. /package/{audit → dist/audit}/interceptors/audit-action.interceptor.js +0 -0
  161. /package/{audit → dist/audit}/interceptors/audit.interceptor.d.ts +0 -0
  162. /package/{audit → dist/audit}/interceptors/audit.interceptor.js +0 -0
  163. /package/{audit → dist/audit}/interceptors/index.d.ts +0 -0
  164. /package/{audit → dist/audit}/interceptors/index.js +0 -0
  165. /package/{audit → dist/audit}/interfaces/audit.interfaces.d.ts +0 -0
  166. /package/{audit → dist/audit}/interfaces/audit.interfaces.js +0 -0
  167. /package/{audit → dist/audit}/interfaces/index.d.ts +0 -0
  168. /package/{audit → dist/audit}/interfaces/index.js +0 -0
  169. /package/{audit → dist/audit}/services/audit-action.service.d.ts +0 -0
  170. /package/{audit → dist/audit}/services/audit-action.service.js +0 -0
  171. /package/{audit → dist/audit}/services/audit-context.service.d.ts +0 -0
  172. /package/{audit → dist/audit}/services/audit-context.service.js +0 -0
  173. /package/{audit → dist/audit}/services/audit-strategy.service.d.ts +0 -0
  174. /package/{audit → dist/audit}/services/audit-strategy.service.js +0 -0
  175. /package/{audit → dist/audit}/services/entity-audit.service.d.ts +0 -0
  176. /package/{audit → dist/audit}/services/entity-audit.service.js +0 -0
  177. /package/{audit → dist/audit}/services/index.d.ts +0 -0
  178. /package/{audit → dist/audit}/services/index.js +0 -0
  179. /package/{audit → dist/audit}/services/manual-audit-log.service.d.ts +0 -0
  180. /package/{audit → dist/audit}/services/manual-audit-log.service.js +0 -0
  181. /package/{audit → dist/audit}/services/multi-database.service.d.ts +0 -0
  182. /package/{audit → dist/audit}/services/multi-database.service.js +0 -0
  183. /package/{audit → dist/audit}/services/operation-description.service.d.ts +0 -0
  184. /package/{audit → dist/audit}/services/operation-description.service.js +0 -0
  185. /package/{audit → dist/audit}/services/transaction-audit.service.d.ts +0 -0
  186. /package/{audit → dist/audit}/services/transaction-audit.service.js +0 -0
  187. /package/{audit → dist/audit}/subscribers/entity-audit.subscriber.d.ts +0 -0
  188. /package/{audit → dist/audit}/subscribers/entity-audit.subscriber.js +0 -0
  189. /package/{audit → dist/audit}/subscribers/index.d.ts +0 -0
  190. /package/{audit → dist/audit}/subscribers/index.js +0 -0
  191. /package/{cache → dist/cache}/cache-metrics.service.d.ts +0 -0
  192. /package/{cache → dist/cache}/cache-metrics.service.js +0 -0
  193. /package/{cache → dist/cache}/cache-serialization.service.d.ts +0 -0
  194. /package/{cache → dist/cache}/cache-serialization.service.js +0 -0
  195. /package/{cache → dist/cache}/cache.constants.d.ts +0 -0
  196. /package/{cache → dist/cache}/cache.constants.js +0 -0
  197. /package/{cache → dist/cache}/cache.health.d.ts +0 -0
  198. /package/{cache → dist/cache}/cache.health.js +0 -0
  199. /package/{cache → dist/cache}/cache.module.d.ts +0 -0
  200. /package/{cache → dist/cache}/cache.module.js +0 -0
  201. /package/{cache → dist/cache}/cache.service.d.ts +0 -0
  202. /package/{cache → dist/cache}/cache.service.js +0 -0
  203. /package/{cache → dist/cache}/cache.warmup.service.d.ts +0 -0
  204. /package/{cache → dist/cache}/cache.warmup.service.js +0 -0
  205. /package/{cache → dist/cache}/decorators/cache-evict.decorator.d.ts +0 -0
  206. /package/{cache → dist/cache}/decorators/cache-evict.decorator.js +0 -0
  207. /package/{cache → dist/cache}/decorators/cache-put.decorator.d.ts +0 -0
  208. /package/{cache → dist/cache}/decorators/cache-put.decorator.js +0 -0
  209. /package/{cache → dist/cache}/decorators/cacheable.decorator.d.ts +0 -0
  210. /package/{cache → dist/cache}/decorators/cacheable.decorator.js +0 -0
  211. /package/{cache → dist/cache}/decorators/index.d.ts +0 -0
  212. /package/{cache → dist/cache}/decorators/index.js +0 -0
  213. /package/{cache → dist/cache}/dependencies/callback.dependency.d.ts +0 -0
  214. /package/{cache → dist/cache}/dependencies/callback.dependency.js +0 -0
  215. /package/{cache → dist/cache}/dependencies/chain.dependency.d.ts +0 -0
  216. /package/{cache → dist/cache}/dependencies/chain.dependency.js +0 -0
  217. /package/{cache → dist/cache}/dependencies/file.dependency.d.ts +0 -0
  218. /package/{cache → dist/cache}/dependencies/file.dependency.js +0 -0
  219. /package/{cache → dist/cache}/dependencies/index.d.ts +0 -0
  220. /package/{cache → dist/cache}/dependencies/index.js +0 -0
  221. /package/{cache → dist/cache}/dependencies/tag.dependency.d.ts +0 -0
  222. /package/{cache → dist/cache}/dependencies/tag.dependency.js +0 -0
  223. /package/{cache → dist/cache}/dependencies/time.dependency.d.ts +0 -0
  224. /package/{cache → dist/cache}/dependencies/time.dependency.js +0 -0
  225. /package/{cache → dist/cache}/examples/basic-usage.d.ts +0 -0
  226. /package/{cache → dist/cache}/examples/basic-usage.js +0 -0
  227. /package/{cache → dist/cache}/index.d.ts +0 -0
  228. /package/{cache → dist/cache}/index.js +0 -0
  229. /package/{cache → dist/cache}/interfaces/cache-dependency.interface.d.ts +0 -0
  230. /package/{cache → dist/cache}/interfaces/cache-dependency.interface.js +0 -0
  231. /package/{cache → dist/cache}/interfaces/cache-options.interface.d.ts +0 -0
  232. /package/{cache → dist/cache}/interfaces/cache-options.interface.js +0 -0
  233. /package/{cache → dist/cache}/interfaces/cache-provider.interface.d.ts +0 -0
  234. /package/{cache → dist/cache}/interfaces/cache-provider.interface.js +0 -0
  235. /package/{cache → dist/cache}/interfaces/index.d.ts +0 -0
  236. /package/{cache → dist/cache}/interfaces/index.js +0 -0
  237. /package/{cache → dist/cache}/providers/base-cache.provider.d.ts +0 -0
  238. /package/{cache → dist/cache}/providers/base-cache.provider.js +0 -0
  239. /package/{cache → dist/cache}/providers/cls-cache.provider.d.ts +0 -0
  240. /package/{cache → dist/cache}/providers/cls-cache.provider.js +0 -0
  241. /package/{cache → dist/cache}/providers/index.d.ts +0 -0
  242. /package/{cache → dist/cache}/providers/index.js +0 -0
  243. /package/{cache → dist/cache}/providers/memory-cache.provider.d.ts +0 -0
  244. /package/{cache → dist/cache}/providers/memory-cache.provider.js +0 -0
  245. /package/{cache → dist/cache}/providers/redis-cache.provider.d.ts +0 -0
  246. /package/{cache → dist/cache}/providers/redis-cache.provider.js +0 -0
  247. /package/{cache → dist/cache}/utils/dependency-manager.util.d.ts +0 -0
  248. /package/{cache → dist/cache}/utils/dependency-manager.util.js +0 -0
  249. /package/{cache → dist/cache}/utils/index.d.ts +0 -0
  250. /package/{cache → dist/cache}/utils/index.js +0 -0
  251. /package/{cache → dist/cache}/utils/key-generator.util.d.ts +0 -0
  252. /package/{cache → dist/cache}/utils/key-generator.util.js +0 -0
  253. /package/{common → dist/common}/abstract.entity.d.ts +0 -0
  254. /package/{common → dist/common}/abstract.entity.js +0 -0
  255. /package/{common → dist/common}/boilerplate.polyfill.d.ts +0 -0
  256. /package/{common → dist/common}/dto/abstract.dto.d.ts +0 -0
  257. /package/{common → dist/common}/dto/abstract.dto.js +0 -0
  258. /package/{common → dist/common}/dto/bulk-id.dto.d.ts +0 -0
  259. /package/{common → dist/common}/dto/bulk-id.dto.js +0 -0
  260. /package/{common → dist/common}/dto/create-translation.dto.d.ts +0 -0
  261. /package/{common → dist/common}/dto/create-translation.dto.js +0 -0
  262. /package/{common → dist/common}/dto/dto-container.d.ts +0 -0
  263. /package/{common → dist/common}/dto/dto-container.js +0 -0
  264. /package/{common → dist/common}/dto/dto-decorators.d.ts +0 -0
  265. /package/{common → dist/common}/dto/dto-decorators.js +0 -0
  266. /package/{common → dist/common}/dto/dto-extensions.d.ts +0 -0
  267. /package/{common → dist/common}/dto/dto-extensions.js +0 -0
  268. /package/{common → dist/common}/dto/dto-service-accessor.d.ts +0 -0
  269. /package/{common → dist/common}/dto/dto-service-accessor.js +0 -0
  270. /package/{common → dist/common}/dto/dto-transformer.d.ts +0 -0
  271. /package/{common → dist/common}/dto/dto-transformer.js +0 -0
  272. /package/{common → dist/common}/dto/index.d.ts +0 -0
  273. /package/{common → dist/common}/dto/index.js +0 -0
  274. /package/{common → dist/common}/dto/page-meta.dto.d.ts +0 -0
  275. /package/{common → dist/common}/dto/page-meta.dto.js +0 -0
  276. /package/{common → dist/common}/dto/page-options.dto.d.ts +0 -0
  277. /package/{common → dist/common}/dto/page-options.dto.js +0 -0
  278. /package/{common → dist/common}/dto/page.dto.d.ts +0 -0
  279. /package/{common → dist/common}/dto/page.dto.js +0 -0
  280. /package/{common → dist/common}/examples/paginate-and-map.example.d.ts +0 -0
  281. /package/{common → dist/common}/examples/paginate-and-map.example.js +0 -0
  282. /package/{common → dist/common}/index.d.ts +0 -0
  283. /package/{common → dist/common}/index.js +0 -0
  284. /package/{common → dist/common}/snake-naming.strategy.d.ts +0 -0
  285. /package/{common → dist/common}/snake-naming.strategy.js +0 -0
  286. /package/{common → dist/common}/types.d.ts +0 -0
  287. /package/{common → dist/common}/types.js +0 -0
  288. /package/{common → dist/common}/utils.d.ts +0 -0
  289. /package/{common → dist/common}/utils.js +0 -0
  290. /package/{constants → dist/constants}/index.d.ts +0 -0
  291. /package/{constants → dist/constants}/index.js +0 -0
  292. /package/{constants → dist/constants}/language-code.d.ts +0 -0
  293. /package/{constants → dist/constants}/language-code.js +0 -0
  294. /package/{constants → dist/constants}/order.d.ts +0 -0
  295. /package/{constants → dist/constants}/order.js +0 -0
  296. /package/{decorators → dist/decorators}/api-page-ok-response.decorator.d.ts +0 -0
  297. /package/{decorators → dist/decorators}/api-page-ok-response.decorator.js +0 -0
  298. /package/{decorators → dist/decorators}/api-paginated-response.decorator.d.ts +0 -0
  299. /package/{decorators → dist/decorators}/api-paginated-response.decorator.js +0 -0
  300. /package/{decorators → dist/decorators}/auth-user.decorator.d.ts +0 -0
  301. /package/{decorators → dist/decorators}/auth-user.decorator.js +0 -0
  302. /package/{decorators → dist/decorators}/controller.decorator.d.ts +0 -0
  303. /package/{decorators → dist/decorators}/controller.decorator.js +0 -0
  304. /package/{decorators → dist/decorators}/field.decorators.d.ts +0 -0
  305. /package/{decorators → dist/decorators}/field.decorators.js +0 -0
  306. /package/{decorators → dist/decorators}/http.decorators.d.ts +0 -0
  307. /package/{decorators → dist/decorators}/http.decorators.js +0 -0
  308. /package/{decorators → dist/decorators}/index.d.ts +0 -0
  309. /package/{decorators → dist/decorators}/index.js +0 -0
  310. /package/{decorators → dist/decorators}/operation.decorator.d.ts +0 -0
  311. /package/{decorators → dist/decorators}/operation.decorator.js +0 -0
  312. /package/{decorators → dist/decorators}/paginated-response.decorator.d.ts +0 -0
  313. /package/{decorators → dist/decorators}/paginated-response.decorator.js +0 -0
  314. /package/{decorators → dist/decorators}/property.decorators.d.ts +0 -0
  315. /package/{decorators → dist/decorators}/property.decorators.js +0 -0
  316. /package/{decorators → dist/decorators}/public-route.decorator.d.ts +0 -0
  317. /package/{decorators → dist/decorators}/public-route.decorator.js +0 -0
  318. /package/{decorators → dist/decorators}/swagger.schema.d.ts +0 -0
  319. /package/{decorators → dist/decorators}/swagger.schema.js +0 -0
  320. /package/{decorators → dist/decorators}/timestamp-column.decorator.d.ts +0 -0
  321. /package/{decorators → dist/decorators}/timestamp-column.decorator.js +0 -0
  322. /package/{decorators → dist/decorators}/transform.decorators.d.ts +0 -0
  323. /package/{decorators → dist/decorators}/transform.decorators.js +0 -0
  324. /package/{decorators → dist/decorators}/translate.decorator.d.ts +0 -0
  325. /package/{decorators → dist/decorators}/translate.decorator.js +0 -0
  326. /package/{decorators → dist/decorators}/use-dto.decorator.d.ts +0 -0
  327. /package/{decorators → dist/decorators}/use-dto.decorator.js +0 -0
  328. /package/{decorators → dist/decorators}/user-check.decorator.d.ts +0 -0
  329. /package/{decorators → dist/decorators}/user-check.decorator.js +0 -0
  330. /package/{decorators → dist/decorators}/user.decorator.d.ts +0 -0
  331. /package/{decorators → dist/decorators}/user.decorator.js +0 -0
  332. /package/{decorators → dist/decorators}/user_auth.decorator.d.ts +0 -0
  333. /package/{decorators → dist/decorators}/user_auth.decorator.js +0 -0
  334. /package/{decorators → dist/decorators}/validator.decorators.d.ts +0 -0
  335. /package/{decorators → dist/decorators}/validator.decorators.js +0 -0
  336. /package/{exceptions → dist/exceptions}/file-not-image.exception.d.ts +0 -0
  337. /package/{exceptions → dist/exceptions}/file-not-image.exception.js +0 -0
  338. /package/{exceptions → dist/exceptions}/index.d.ts +0 -0
  339. /package/{exceptions → dist/exceptions}/index.js +0 -0
  340. /package/{exceptions → dist/exceptions}/page-type.exception.d.ts +0 -0
  341. /package/{exceptions → dist/exceptions}/page-type.exception.js +0 -0
  342. /package/{exceptions → dist/exceptions}/user-not-found.exception.d.ts +0 -0
  343. /package/{exceptions → dist/exceptions}/user-not-found.exception.js +0 -0
  344. /package/{file-upload → dist/file-upload}/controllers/file-access.controller.d.ts +0 -0
  345. /package/{file-upload → dist/file-upload}/controllers/file-access.controller.js +0 -0
  346. /package/{file-upload → dist/file-upload}/decorators/file-upload.decorator.d.ts +0 -0
  347. /package/{file-upload → dist/file-upload}/decorators/file-upload.decorator.js +0 -0
  348. /package/{file-upload → dist/file-upload}/decorators/process.decorator.d.ts +0 -0
  349. /package/{file-upload → dist/file-upload}/decorators/process.decorator.js +0 -0
  350. /package/{file-upload → dist/file-upload}/dto/create-file.dto.d.ts +0 -0
  351. /package/{file-upload → dist/file-upload}/dto/create-file.dto.js +0 -0
  352. /package/{file-upload → dist/file-upload}/dto/find-files.dto.d.ts +0 -0
  353. /package/{file-upload → dist/file-upload}/dto/find-files.dto.js +0 -0
  354. /package/{file-upload → dist/file-upload}/dto/index.d.ts +0 -0
  355. /package/{file-upload → dist/file-upload}/dto/index.js +0 -0
  356. /package/{file-upload → dist/file-upload}/dto/pagination.dto.d.ts +0 -0
  357. /package/{file-upload → dist/file-upload}/dto/pagination.dto.js +0 -0
  358. /package/{file-upload → dist/file-upload}/entities/index.d.ts +0 -0
  359. /package/{file-upload → dist/file-upload}/entities/index.js +0 -0
  360. /package/{file-upload → dist/file-upload}/enums/file-type.enum.d.ts +0 -0
  361. /package/{file-upload → dist/file-upload}/enums/file-type.enum.js +0 -0
  362. /package/{file-upload → dist/file-upload}/exceptions/file-upload.exception.d.ts +0 -0
  363. /package/{file-upload → dist/file-upload}/exceptions/file-upload.exception.js +0 -0
  364. /package/{file-upload → dist/file-upload}/exceptions/index.d.ts +0 -0
  365. /package/{file-upload → dist/file-upload}/exceptions/index.js +0 -0
  366. /package/{file-upload → dist/file-upload}/interceptors/index.d.ts +0 -0
  367. /package/{file-upload → dist/file-upload}/interceptors/index.js +0 -0
  368. /package/{file-upload → dist/file-upload}/interfaces/custom-file-type.interface.d.ts +0 -0
  369. /package/{file-upload → dist/file-upload}/interfaces/custom-file-type.interface.js +0 -0
  370. /package/{file-upload → dist/file-upload}/interfaces/file-buffer.interface.d.ts +0 -0
  371. /package/{file-upload → dist/file-upload}/interfaces/file-buffer.interface.js +0 -0
  372. /package/{file-upload → dist/file-upload}/interfaces/file-entity.interface.d.ts +0 -0
  373. /package/{file-upload → dist/file-upload}/interfaces/file-entity.interface.js +0 -0
  374. /package/{file-upload → dist/file-upload}/interfaces/file-metadata.interface.d.ts +0 -0
  375. /package/{file-upload → dist/file-upload}/interfaces/file-metadata.interface.js +0 -0
  376. /package/{file-upload/interfaces/file-upload-options.interface.js → dist/file-upload/interfaces/file-processor.interface.js} +0 -0
  377. /package/{file-upload → dist/file-upload}/interfaces/index.d.ts +0 -0
  378. /package/{file-upload → dist/file-upload}/interfaces/index.js +0 -0
  379. /package/{file-upload/interfaces/storage-provider.interface.js → dist/file-upload/interfaces/processor-options.interface.js} +0 -0
  380. /package/{file-upload → dist/file-upload}/interfaces/storage-provider.interface.d.ts +0 -0
  381. /package/{file-upload/interfaces/upload-options.interface.js → dist/file-upload/interfaces/storage-provider.interface.js} +0 -0
  382. /package/{file-upload → dist/file-upload}/interfaces/upload-options.interface.d.ts +0 -0
  383. /package/{http-client/interfaces/http-client-config.interface.js → dist/file-upload/interfaces/upload-options.interface.js} +0 -0
  384. /package/{file-upload → dist/file-upload}/providers/index.d.ts +0 -0
  385. /package/{file-upload → dist/file-upload}/providers/index.js +0 -0
  386. /package/{file-upload → dist/file-upload}/providers/local-storage.provider.d.ts +0 -0
  387. /package/{file-upload → dist/file-upload}/providers/local-storage.provider.js +0 -0
  388. /package/{file-upload → dist/file-upload}/providers/s3-storage.provider.d.ts +0 -0
  389. /package/{file-upload → dist/file-upload}/providers/s3-storage.provider.js +0 -0
  390. /package/{file-upload → dist/file-upload}/services/file-signature-validator.service.d.ts +0 -0
  391. /package/{file-upload → dist/file-upload}/services/file-signature-validator.service.js +0 -0
  392. /package/{file-upload → dist/file-upload}/services/index.d.ts +0 -0
  393. /package/{file-upload → dist/file-upload}/services/index.js +0 -0
  394. /package/{file-upload → dist/file-upload}/services/mime-registry.service.d.ts +0 -0
  395. /package/{file-upload → dist/file-upload}/services/mime-registry.service.js +0 -0
  396. /package/{file-upload → dist/file-upload}/utils/checksum.util.d.ts +0 -0
  397. /package/{file-upload → dist/file-upload}/utils/checksum.util.js +0 -0
  398. /package/{file-upload → dist/file-upload}/utils/filename.util.d.ts +0 -0
  399. /package/{file-upload → dist/file-upload}/utils/filename.util.js +0 -0
  400. /package/{file-upload → dist/file-upload}/utils/filepath.util.d.ts +0 -0
  401. /package/{file-upload → dist/file-upload}/utils/filepath.util.js +0 -0
  402. /package/{file-upload → dist/file-upload}/utils/index.d.ts +0 -0
  403. /package/{file-upload → dist/file-upload}/utils/index.js +0 -0
  404. /package/{filters → dist/filters}/bad-request.filter.d.ts +0 -0
  405. /package/{filters → dist/filters}/bad-request.filter.js +0 -0
  406. /package/{filters → dist/filters}/constraint-errors.d.ts +0 -0
  407. /package/{filters → dist/filters}/constraint-errors.js +0 -0
  408. /package/{filters → dist/filters}/index.d.ts +0 -0
  409. /package/{filters → dist/filters}/index.js +0 -0
  410. /package/{filters → dist/filters}/query-failed.filter.d.ts +0 -0
  411. /package/{filters → dist/filters}/query-failed.filter.js +0 -0
  412. /package/{health-checker → dist/health-checker}/health-checker.controller.d.ts +0 -0
  413. /package/{health-checker → dist/health-checker}/health-checker.controller.js +0 -0
  414. /package/{health-checker → dist/health-checker}/health-checker.module.d.ts +0 -0
  415. /package/{health-checker → dist/health-checker}/health-checker.module.js +0 -0
  416. /package/{health-checker → dist/health-checker}/index.d.ts +0 -0
  417. /package/{health-checker → dist/health-checker}/index.js +0 -0
  418. /package/{helpers → dist/helpers}/common.helper.d.ts +0 -0
  419. /package/{helpers → dist/helpers}/common.helper.js +0 -0
  420. /package/{helpers → dist/helpers}/date.helper.d.ts +0 -0
  421. /package/{helpers → dist/helpers}/date.helper.js +0 -0
  422. /package/{helpers → dist/helpers}/index.d.ts +0 -0
  423. /package/{helpers → dist/helpers}/index.js +0 -0
  424. /package/{http-client → dist/http-client}/config/http-client.config.d.ts +0 -0
  425. /package/{http-client → dist/http-client}/config/http-client.config.js +0 -0
  426. /package/{http-client → dist/http-client}/config/index.d.ts +0 -0
  427. /package/{http-client → dist/http-client}/config/index.js +0 -0
  428. /package/{http-client → dist/http-client}/decorators/index.d.ts +0 -0
  429. /package/{http-client → dist/http-client}/decorators/index.js +0 -0
  430. /package/{http-client → dist/http-client}/entities/http-log.entity.d.ts +0 -0
  431. /package/{http-client → dist/http-client}/entities/index.d.ts +0 -0
  432. /package/{http-client → dist/http-client}/entities/index.js +0 -0
  433. /package/{http-client → dist/http-client}/errors/http-client.errors.d.ts +0 -0
  434. /package/{http-client → dist/http-client}/errors/http-client.errors.js +0 -0
  435. /package/{http-client → dist/http-client}/errors/index.d.ts +0 -0
  436. /package/{http-client → dist/http-client}/errors/index.js +0 -0
  437. /package/{http-client → dist/http-client}/examples/advanced-usage.example.d.ts +0 -0
  438. /package/{http-client → dist/http-client}/examples/advanced-usage.example.js +0 -0
  439. /package/{http-client → dist/http-client}/examples/auth-with-waiting-lock.example.d.ts +0 -0
  440. /package/{http-client → dist/http-client}/examples/auth-with-waiting-lock.example.js +0 -0
  441. /package/{http-client → dist/http-client}/examples/basic-usage.example.d.ts +0 -0
  442. /package/{http-client → dist/http-client}/examples/basic-usage.example.js +0 -0
  443. /package/{http-client → dist/http-client}/examples/index.d.ts +0 -0
  444. /package/{http-client → dist/http-client}/examples/index.js +0 -0
  445. /package/{http-client → dist/http-client}/examples/multi-api-configuration.example.d.ts +0 -0
  446. /package/{http-client → dist/http-client}/examples/multi-api-configuration.example.js +0 -0
  447. /package/{http-client → dist/http-client}/http-client.module.d.ts +0 -0
  448. /package/{http-client → dist/http-client}/index.d.ts +0 -0
  449. /package/{http-client → dist/http-client}/index.js +0 -0
  450. /package/{http-client → dist/http-client}/interfaces/api-client-config.interface.d.ts +0 -0
  451. /package/{http-client → dist/http-client}/interfaces/api-client-config.interface.js +0 -0
  452. /package/{interfaces/IApiFile.js → dist/http-client/interfaces/http-client-config.interface.js} +0 -0
  453. /package/{http-client → dist/http-client}/services/api-client-registry.service.d.ts +0 -0
  454. /package/{http-client → dist/http-client}/services/api-client-registry.service.js +0 -0
  455. /package/{http-client → dist/http-client}/services/cache.service.d.ts +0 -0
  456. /package/{http-client → dist/http-client}/services/cache.service.js +0 -0
  457. /package/{http-client → dist/http-client}/services/circuit-breaker.service.d.ts +0 -0
  458. /package/{http-client → dist/http-client}/services/circuit-breaker.service.js +0 -0
  459. /package/{http-client → dist/http-client}/services/http-log-query.service.d.ts +0 -0
  460. /package/{http-client → dist/http-client}/services/http-log-query.service.js +0 -0
  461. /package/{http-client → dist/http-client}/services/http-replay.service.d.ts +0 -0
  462. /package/{http-client → dist/http-client}/services/http-replay.service.js +0 -0
  463. /package/{http-client → dist/http-client}/services/index.d.ts +0 -0
  464. /package/{http-client → dist/http-client}/services/index.js +0 -0
  465. /package/{http-client → dist/http-client}/services/log-cleanup.service.d.ts +0 -0
  466. /package/{http-client → dist/http-client}/services/log-cleanup.service.js +0 -0
  467. /package/{http-client → dist/http-client}/utils/call-stack-extractor.util.d.ts +0 -0
  468. /package/{http-client → dist/http-client}/utils/call-stack-extractor.util.js +0 -0
  469. /package/{http-client → dist/http-client}/utils/context-extractor.util.d.ts +0 -0
  470. /package/{http-client → dist/http-client}/utils/context-extractor.util.js +0 -0
  471. /package/{http-client → dist/http-client}/utils/curl-generator.util.d.ts +0 -0
  472. /package/{http-client → dist/http-client}/utils/curl-generator.util.js +0 -0
  473. /package/{http-client → dist/http-client}/utils/request-id.util.d.ts +0 -0
  474. /package/{http-client → dist/http-client}/utils/request-id.util.js +0 -0
  475. /package/{http-client → dist/http-client}/utils/retry-recorder.util.d.ts +0 -0
  476. /package/{http-client → dist/http-client}/utils/retry-recorder.util.js +0 -0
  477. /package/{i18n → dist/i18n}/en_US/validation.json +0 -0
  478. /package/{i18n → dist/i18n}/zh_CN/validation.json +0 -0
  479. /package/{index.d.ts → dist/index.d.ts} +0 -0
  480. /package/{index.js → dist/index.js} +0 -0
  481. /package/{interceptors → dist/interceptors}/index.d.ts +0 -0
  482. /package/{interceptors → dist/interceptors}/index.js +0 -0
  483. /package/{interceptors → dist/interceptors}/language-interceptor.service.d.ts +0 -0
  484. /package/{interceptors → dist/interceptors}/language-interceptor.service.js +0 -0
  485. /package/{interceptors → dist/interceptors}/translation-interceptor.service.d.ts +0 -0
  486. /package/{interceptors → dist/interceptors}/translation-interceptor.service.js +0 -0
  487. /package/{interfaces → dist/interfaces}/IApiFile.d.ts +0 -0
  488. /package/{interfaces/IFile.js → dist/interfaces/IApiFile.js} +0 -0
  489. /package/{interfaces → dist/interfaces}/IFile.d.ts +0 -0
  490. /package/{interfaces/ITranslationDecoratorInterface.js → dist/interfaces/IFile.js} +0 -0
  491. /package/{interfaces → dist/interfaces}/ITranslationDecoratorInterface.d.ts +0 -0
  492. /package/{interfaces/response.js → dist/interfaces/ITranslationDecoratorInterface.js} +0 -0
  493. /package/{interfaces → dist/interfaces}/index.d.ts +0 -0
  494. /package/{interfaces → dist/interfaces}/index.js +0 -0
  495. /package/{interfaces → dist/interfaces}/response.d.ts +0 -0
  496. /package/{vault/interfaces/vault-options.interface.js → dist/interfaces/response.js} +0 -0
  497. /package/{middlewares → dist/middlewares}/index.d.ts +0 -0
  498. /package/{middlewares → dist/middlewares}/index.js +0 -0
  499. /package/{middlewares → dist/middlewares}/omni-auth.middleware.d.ts +0 -0
  500. /package/{middlewares → dist/middlewares}/omni-auth.middleware.js +0 -0
  501. /package/{middlewares → dist/middlewares}/powerby.middleware.d.ts +0 -0
  502. /package/{middlewares → dist/middlewares}/powerby.middleware.js +0 -0
  503. /package/{middlewares → dist/middlewares}/request-id.middleware.d.ts +0 -0
  504. /package/{middlewares → dist/middlewares}/request-id.middleware.js +0 -0
  505. /package/{middlewares → dist/middlewares}/xml.middleware.d.ts +0 -0
  506. /package/{middlewares → dist/middlewares}/xml.middleware.js +0 -0
  507. /package/{providers → dist/providers}/context.provider.d.ts +0 -0
  508. /package/{providers → dist/providers}/context.provider.js +0 -0
  509. /package/{providers → dist/providers}/generator.provider.d.ts +0 -0
  510. /package/{providers → dist/providers}/generator.provider.js +0 -0
  511. /package/{providers → dist/providers}/index.d.ts +0 -0
  512. /package/{providers → dist/providers}/index.js +0 -0
  513. /package/{redis-lock → dist/redis-lock}/comprehensive-lock-cleanup.service.d.ts +0 -0
  514. /package/{redis-lock → dist/redis-lock}/comprehensive-lock-cleanup.service.js +0 -0
  515. /package/{redis-lock → dist/redis-lock}/examples/lock-strategy.examples.d.ts +0 -0
  516. /package/{redis-lock → dist/redis-lock}/examples/lock-strategy.examples.js +0 -0
  517. /package/{redis-lock → dist/redis-lock}/index.d.ts +0 -0
  518. /package/{redis-lock → dist/redis-lock}/index.js +0 -0
  519. /package/{redis-lock → dist/redis-lock}/lock-heartbeat.service.d.ts +0 -0
  520. /package/{redis-lock → dist/redis-lock}/lock-heartbeat.service.js +0 -0
  521. /package/{redis-lock → dist/redis-lock}/redis-lock.decorator.d.ts +0 -0
  522. /package/{redis-lock → dist/redis-lock}/redis-lock.decorator.js +0 -0
  523. /package/{redis-lock → dist/redis-lock}/redis-lock.module.d.ts +0 -0
  524. /package/{redis-lock → dist/redis-lock}/redis-lock.module.js +0 -0
  525. /package/{redis-lock → dist/redis-lock}/redis-lock.service.d.ts +0 -0
  526. /package/{redis-lock → dist/redis-lock}/redis-lock.service.js +0 -0
  527. /package/{setup → dist/setup}/bootstrap.setup.d.ts +0 -0
  528. /package/{setup → dist/setup}/bootstrap.setup.js +0 -0
  529. /package/{setup → dist/setup}/index.d.ts +0 -0
  530. /package/{setup → dist/setup}/index.js +0 -0
  531. /package/{setup → dist/setup}/mode.setup.d.ts +0 -0
  532. /package/{setup → dist/setup}/mode.setup.js +0 -0
  533. /package/{setup → dist/setup}/schedule.decorator.d.ts +0 -0
  534. /package/{setup → dist/setup}/schedule.decorator.js +0 -0
  535. /package/{setup → dist/setup}/worker.decorator.d.ts +0 -0
  536. /package/{setup → dist/setup}/worker.decorator.js +0 -0
  537. /package/{shared → dist/shared}/index.d.ts +0 -0
  538. /package/{shared → dist/shared}/index.js +0 -0
  539. /package/{shared → dist/shared}/service-registry.module.d.ts +0 -0
  540. /package/{shared → dist/shared}/services/api-config.service.d.ts +0 -0
  541. /package/{shared → dist/shared}/services/api-config.service.js +0 -0
  542. /package/{shared → dist/shared}/services/generator.service.d.ts +0 -0
  543. /package/{shared → dist/shared}/services/generator.service.js +0 -0
  544. /package/{shared → dist/shared}/services/index.d.ts +0 -0
  545. /package/{shared → dist/shared}/services/index.js +0 -0
  546. /package/{shared → dist/shared}/services/translation.service.d.ts +0 -0
  547. /package/{shared → dist/shared}/services/translation.service.js +0 -0
  548. /package/{transaction → dist/transaction}/__tests__/mocks.d.ts +0 -0
  549. /package/{transaction → dist/transaction}/__tests__/mocks.js +0 -0
  550. /package/{transaction → dist/transaction}/base-service-transaction.d.ts +0 -0
  551. /package/{transaction → dist/transaction}/base-service-transaction.js +0 -0
  552. /package/{transaction → dist/transaction}/cls-compatibility.service.d.ts +0 -0
  553. /package/{transaction → dist/transaction}/cls-compatibility.service.js +0 -0
  554. /package/{transaction → dist/transaction}/data-source-registry.d.ts +0 -0
  555. /package/{transaction → dist/transaction}/data-source-registry.js +0 -0
  556. /package/{transaction → dist/transaction}/database-adapter.d.ts +0 -0
  557. /package/{transaction → dist/transaction}/database-adapter.js +0 -0
  558. /package/{transaction → dist/transaction}/decorators/entity-datasource.decorator.d.ts +0 -0
  559. /package/{transaction → dist/transaction}/decorators/entity-datasource.decorator.js +0 -0
  560. /package/{transaction → dist/transaction}/logging-transactional.interceptor.d.ts +0 -0
  561. /package/{transaction → dist/transaction}/logging-transactional.interceptor.js +0 -0
  562. /package/{transaction → dist/transaction}/transaction-context.service.d.ts +0 -0
  563. /package/{transaction → dist/transaction}/transaction-context.service.js +0 -0
  564. /package/{transaction → dist/transaction}/transaction-manager.d.ts +0 -0
  565. /package/{transaction → dist/transaction}/transaction-manager.js +0 -0
  566. /package/{transaction → dist/transaction}/transaction-synchronization.d.ts +0 -0
  567. /package/{transaction → dist/transaction}/transaction-synchronization.js +0 -0
  568. /package/{transaction → dist/transaction}/transaction.errors.d.ts +0 -0
  569. /package/{transaction → dist/transaction}/transaction.errors.js +0 -0
  570. /package/{transaction → dist/transaction}/transaction.module.d.ts +0 -0
  571. /package/{transaction → dist/transaction}/transaction.module.js +0 -0
  572. /package/{transaction → dist/transaction}/transactional.decorator.d.ts +0 -0
  573. /package/{transaction → dist/transaction}/transactional.decorator.js +0 -0
  574. /package/{transaction → dist/transaction}/typeorm-module-wrapper.d.ts +0 -0
  575. /package/{transaction → dist/transaction}/typeorm-module-wrapper.js +0 -0
  576. /package/{validator-json → dist/validator-json}/decorators.d.ts +0 -0
  577. /package/{validator-json → dist/validator-json}/decorators.js +0 -0
  578. /package/{validator-json → dist/validator-json}/default.d.ts +0 -0
  579. /package/{validator-json → dist/validator-json}/default.js +0 -0
  580. /package/{validator-json → dist/validator-json}/defaultConverters.d.ts +0 -0
  581. /package/{validator-json → dist/validator-json}/defaultConverters.js +0 -0
  582. /package/{validator-json → dist/validator-json}/index.d.ts +0 -0
  583. /package/{validator-json → dist/validator-json}/index.js +0 -0
  584. /package/{validator-json → dist/validator-json}/options.d.ts +0 -0
  585. /package/{validator-json → dist/validator-json}/options.js +0 -0
  586. /package/{validators → dist/validators}/common-validators.d.ts +0 -0
  587. /package/{validators → dist/validators}/common-validators.js +0 -0
  588. /package/{validators → dist/validators}/custom-validate.examples.d.ts +0 -0
  589. /package/{validators → dist/validators}/custom-validate.examples.js +0 -0
  590. /package/{validators → dist/validators}/custom-validate.validator.d.ts +0 -0
  591. /package/{validators → dist/validators}/custom-validate.validator.js +0 -0
  592. /package/{validators → dist/validators}/file-mimetype.validator.d.ts +0 -0
  593. /package/{validators → dist/validators}/file-mimetype.validator.js +0 -0
  594. /package/{validators → dist/validators}/index.d.ts +0 -0
  595. /package/{validators → dist/validators}/index.js +0 -0
  596. /package/{validators → dist/validators}/phone-country-code.validator.d.ts +0 -0
  597. /package/{validators → dist/validators}/phone-country-code.validator.js +0 -0
  598. /package/{validators → dist/validators}/same-as.validator.d.ts +0 -0
  599. /package/{validators → dist/validators}/same-as.validator.js +0 -0
  600. /package/{validators → dist/validators}/skip-empty.validator.d.ts +0 -0
  601. /package/{validators → dist/validators}/skip-empty.validator.js +0 -0
  602. /package/{vault → dist/vault}/index.d.ts +0 -0
  603. /package/{vault → dist/vault}/index.js +0 -0
  604. /package/{vault → dist/vault}/interfaces/vault-options.interface.d.ts +0 -0
  605. /package/{vault → dist/vault}/vault-config.loader.d.ts +0 -0
  606. /package/{vault → dist/vault}/vault-config.loader.js +0 -0
  607. /package/{vault → dist/vault}/vault-config.service.d.ts +0 -0
  608. /package/{vault → dist/vault}/vault-config.service.js +0 -0
  609. /package/{vault → dist/vault}/vault.module.d.ts +0 -0
  610. /package/{vault → dist/vault}/vault.module.js +0 -0
@@ -80,6 +80,12 @@ export interface MaliciousDetectorOptions {
80
80
  enableStructureAnalysis?: boolean;
81
81
  /** 风险阈值 */
82
82
  riskThreshold?: number;
83
+ /** 最大并发扫描数(防止 DoS) */
84
+ maxConcurrentScans?: number;
85
+ /** 最大扫描文件大小(字节,默认 10MB) */
86
+ maxScanSize?: number;
87
+ /** 扫描超时时间(毫秒,默认 60 秒) */
88
+ scanTimeout?: number;
83
89
  }
84
90
  /**
85
91
  * 恶意文件检测服务
@@ -180,14 +186,30 @@ export interface MaliciousDetectorOptions {
180
186
  export declare class MaliciousFileDetector {
181
187
  private readonly options?;
182
188
  private readonly logger;
189
+ private activeScanCount;
190
+ private readonly maxConcurrentScans;
191
+ private readonly maxScanSize;
192
+ private readonly scanTimeout;
183
193
  private readonly encodings;
184
194
  private readonly maliciousPatterns;
185
195
  private readonly suspiciousSignatures;
186
196
  constructor(options?: MaliciousDetectorOptions);
187
197
  /**
188
- * 扫描文件(增强版)
198
+ * 扫描文件(增强版 - 带并发控制和流式处理)
189
199
  */
190
- scanFile(filePath: string): Promise<DetectionResult>;
200
+ scanFile(filePath?: string, buffer?: Buffer): Promise<DetectionResult>;
201
+ /**
202
+ * 等待直到有可用的扫描槽位
203
+ */
204
+ private waitForScanSlot;
205
+ /**
206
+ * 执行实际的扫描操作
207
+ */
208
+ private performScan;
209
+ /**
210
+ * 使用流式处理读取文件(防止大文件占用过多内存)
211
+ */
212
+ private readFileStream;
191
213
  /**
192
214
  * 检查签名
193
215
  */
@@ -227,9 +249,13 @@ export declare class MaliciousFileDetector {
227
249
  */
228
250
  private scanWithClamAV;
229
251
  /**
230
- * 本地ClamAV扫描
252
+ * 本地ClamAV扫描(增强安全性)
231
253
  */
232
254
  private scanWithLocalClamAV;
255
+ /**
256
+ * 验证 ClamAV 命令(仅允许白名单)
257
+ */
258
+ private validateClamAVCommand;
233
259
  /**
234
260
  * 验证文件路径,防止命令注入
235
261
  */
@@ -129,6 +129,8 @@ let MaliciousFileDetector = MaliciousFileDetector_1 = class MaliciousFileDetecto
129
129
  constructor(options) {
130
130
  this.options = options;
131
131
  this.logger = new common_1.Logger(MaliciousFileDetector_1.name);
132
+ // 并发控制:当前正在扫描的文件数
133
+ this.activeScanCount = 0;
132
134
  // 支持的编码列表
133
135
  this.encodings = ['utf8', 'utf16le', 'latin1', 'ascii', 'base64'];
134
136
  // 恶意模式库(多编码)
@@ -269,12 +271,16 @@ let MaliciousFileDetector = MaliciousFileDetector_1 = class MaliciousFileDetecto
269
271
  },
270
272
  ];
271
273
  this.options = Object.assign({ enabled: true, enableClamAV: false, clamavMode: 'local', clamavCommand: 'clamdscan', enableMultiEncoding: true, enableStructureAnalysis: true, riskThreshold: 50 }, options);
272
- this.logger.debug(`MaliciousFileDetector constructor - options: ${JSON.stringify(this.options)}`);
274
+ // 初始化并发控制参数
275
+ this.maxConcurrentScans = this.options.maxConcurrentScans || 5;
276
+ this.maxScanSize = this.options.maxScanSize || 10 * 1024 * 1024; // 默认 10MB
277
+ this.scanTimeout = this.options.scanTimeout || 60000; // 默认 60 秒
278
+ this.logger.debug(`MaliciousFileDetector initialized - maxConcurrent: ${this.maxConcurrentScans}, maxSize: ${this.maxScanSize}, timeout: ${this.scanTimeout}`);
273
279
  }
274
280
  /**
275
- * 扫描文件(增强版)
281
+ * 扫描文件(增强版 - 带并发控制和流式处理)
276
282
  */
277
- scanFile(filePath) {
283
+ scanFile(filePath, buffer) {
278
284
  return __awaiter(this, void 0, void 0, function* () {
279
285
  // 检查是否启用
280
286
  if (this.options.enabled === false) {
@@ -286,42 +292,116 @@ let MaliciousFileDetector = MaliciousFileDetector_1 = class MaliciousFileDetecto
286
292
  isMalware: false,
287
293
  };
288
294
  }
289
- this.logger.debug(`MaliciousFileDetector: Starting scan for file: ${filePath}`);
290
- this.logger.debug(`MaliciousFileDetector: Options: ${JSON.stringify(this.options)}`);
295
+ // 如果没有文件路径且没有buffer,返回安全
296
+ if (!filePath && !buffer) {
297
+ this.logger.debug('No file path or buffer provided for scanning');
298
+ return {
299
+ safe: true,
300
+ threats: [],
301
+ riskScore: 0,
302
+ isMalware: false,
303
+ };
304
+ }
305
+ // 并发控制:等待直到有可用的扫描槽位
306
+ yield this.waitForScanSlot();
307
+ try {
308
+ // 增加活跃扫描计数
309
+ this.activeScanCount++;
310
+ this.logger.debug(`MaliciousFileDetector: Starting scan (${this.activeScanCount}/${this.maxConcurrentScans}): ${filePath || '(buffer)'}`);
311
+ // 设置超时保护
312
+ const scanPromise = this.performScan(filePath, buffer);
313
+ const timeoutPromise = new Promise((_, reject) => {
314
+ setTimeout(() => {
315
+ reject(new Error(`Scan timeout after ${this.scanTimeout}ms`));
316
+ }, this.scanTimeout);
317
+ });
318
+ // 等待扫描完成或超时
319
+ return yield Promise.race([scanPromise, timeoutPromise]);
320
+ }
321
+ finally {
322
+ // 释放扫描槽位
323
+ this.activeScanCount--;
324
+ this.logger.debug(`MaliciousFileDetector: Scan completed (${this.activeScanCount}/${this.maxConcurrentScans})`);
325
+ }
326
+ });
327
+ }
328
+ /**
329
+ * 等待直到有可用的扫描槽位
330
+ */
331
+ waitForScanSlot() {
332
+ return __awaiter(this, void 0, void 0, function* () {
333
+ while (this.activeScanCount >= this.maxConcurrentScans) {
334
+ this.logger.debug(`MaliciousFileDetector: Waiting for scan slot (${this.activeScanCount}/${this.maxConcurrentScans})`);
335
+ // 等待 100ms 后重试
336
+ yield new Promise((resolve) => setTimeout(resolve, 100));
337
+ }
338
+ });
339
+ }
340
+ /**
341
+ * 执行实际的扫描操作
342
+ */
343
+ performScan(filePath, inputBuffer) {
344
+ return __awaiter(this, void 0, void 0, function* () {
291
345
  const threats = [];
292
346
  let riskScore = 0;
293
347
  const details = {};
294
348
  try {
295
- const stats = yield fs.stat(filePath);
296
- this.logger.debug(`MaliciousFileDetector: File stats - size: ${stats.size}`);
297
- // 读取文件:只读取前10MB以防止内存耗尽
298
- const readSize = Math.min(stats.size, 10 * 1024 * 1024);
299
- let buffer;
300
- if (stats.size > 10 * 1024 * 1024) {
301
- // 大文件:只读取头部
302
- const fileHandle = yield fs.open(filePath, 'r');
303
- buffer = Buffer.alloc(readSize);
304
- try {
305
- yield fileHandle.read(buffer, 0, readSize, 0);
306
- }
307
- finally {
308
- yield fileHandle.close();
349
+ let scanBuffer;
350
+ let fileSize;
351
+ if (inputBuffer) {
352
+ // Use provided buffer directly
353
+ scanBuffer = inputBuffer;
354
+ fileSize = inputBuffer.length;
355
+ this.logger.debug(`MaliciousFileDetector: Using provided buffer - size: ${fileSize}`);
356
+ }
357
+ else if (filePath) {
358
+ // Read file from disk
359
+ const stats = yield fs.stat(filePath);
360
+ fileSize = stats.size;
361
+ this.logger.debug(`MaliciousFileDetector: File stats - size: ${stats.size}`);
362
+ // Skip malicious file detection for very small files (< 100 bytes)
363
+ // These are usually test placeholders or empty files
364
+ if (fileSize < 100) {
365
+ this.logger.debug(`MaliciousFileDetector: Skipping scan for very small file (${fileSize} bytes)`);
366
+ return {
367
+ safe: true,
368
+ threats: [],
369
+ riskScore: 0,
370
+ isMalware: false,
371
+ };
309
372
  }
373
+ // 使用流式处理读取文件(防止大文件占用过多内存)
374
+ scanBuffer = yield this.readFileStream(filePath, stats.size);
375
+ this.logger.debug(`MaliciousFileDetector: File read successfully, buffer size: ${scanBuffer.length}`);
310
376
  }
311
377
  else {
312
- // 小文件:直接读取全部
313
- buffer = yield fs.readFile(filePath);
378
+ // No input provided
379
+ return {
380
+ safe: true,
381
+ threats: [],
382
+ riskScore: 0,
383
+ isMalware: false,
384
+ };
385
+ }
386
+ // Skip malicious file detection for very small buffers (< 100 bytes)
387
+ if (scanBuffer.length < 100) {
388
+ this.logger.debug(`MaliciousFileDetector: Skipping scan for very small buffer (${scanBuffer.length} bytes)`);
389
+ return {
390
+ safe: true,
391
+ threats: [],
392
+ riskScore: 0,
393
+ isMalware: false,
394
+ };
314
395
  }
315
- this.logger.debug(`MaliciousFileDetector: File read successfully, buffer size: ${buffer.length}`);
316
396
  // 1. 检查可疑签名
317
397
  for (const signature of this.suspiciousSignatures) {
318
- if (this.checkSignature(buffer, signature)) {
398
+ if (this.checkSignature(scanBuffer, signature)) {
319
399
  threats.push(signature.description);
320
400
  riskScore += signature.riskScore;
321
401
  this.logger.debug(`MaliciousFileDetector: Found suspicious signature: ${signature.description}, risk: ${signature.riskScore}`);
322
402
  // 如果需要检查压缩比
323
- if (signature.checkRatio) {
324
- const ratio = yield this.checkCompressionRatio(filePath, buffer);
403
+ if (signature.checkRatio && filePath) {
404
+ const ratio = yield this.checkCompressionRatio(filePath, scanBuffer);
325
405
  if (ratio > 100) {
326
406
  threats.push('Suspicious compression ratio (possible zip bomb)');
327
407
  riskScore += 50;
@@ -332,7 +412,7 @@ let MaliciousFileDetector = MaliciousFileDetector_1 = class MaliciousFileDetecto
332
412
  }
333
413
  // 2. 多编码检测(新增)
334
414
  if (this.options.enableMultiEncoding) {
335
- const encodingResult = this.detectMultiEncodingThreats(buffer);
415
+ const encodingResult = this.detectMultiEncodingThreats(scanBuffer);
336
416
  if (encodingResult.threats.length > 0) {
337
417
  threats.push(...encodingResult.threats);
338
418
  riskScore += encodingResult.riskScore;
@@ -342,7 +422,7 @@ let MaliciousFileDetector = MaliciousFileDetector_1 = class MaliciousFileDetecto
342
422
  }
343
423
  // 3. 文件结构分析(新增)
344
424
  if (this.options.enableStructureAnalysis) {
345
- const structureResult = yield this.analyzeFileStructure(filePath, buffer);
425
+ const structureResult = yield this.analyzeFileStructure(filePath, scanBuffer);
346
426
  if (structureResult.anomalies.length > 0) {
347
427
  threats.push(...structureResult.anomalies);
348
428
  riskScore += structureResult.riskScore;
@@ -351,7 +431,7 @@ let MaliciousFileDetector = MaliciousFileDetector_1 = class MaliciousFileDetecto
351
431
  }
352
432
  }
353
433
  // 4. ClamAV扫描(新增,可选)
354
- if (this.options.enableClamAV) {
434
+ if (this.options.enableClamAV && filePath) {
355
435
  const clamavResult = yield this.scanWithClamAV(filePath);
356
436
  details.clamavResult = clamavResult;
357
437
  if (clamavResult.infected) {
@@ -361,32 +441,45 @@ let MaliciousFileDetector = MaliciousFileDetector_1 = class MaliciousFileDetecto
361
441
  }
362
442
  }
363
443
  // 5. 检查文件名
364
- const fileName = path.basename(filePath);
365
- if (this.hasSuspiciousName(fileName)) {
366
- threats.push('Suspicious filename pattern');
367
- riskScore += 20;
368
- this.logger.debug(`MaliciousFileDetector: Suspicious filename pattern detected: ${fileName}`);
444
+ if (filePath) {
445
+ const fileName = path.basename(filePath);
446
+ if (this.hasSuspiciousName(fileName)) {
447
+ threats.push('Suspicious filename pattern');
448
+ riskScore += 20;
449
+ this.logger.debug(`MaliciousFileDetector: Suspicious filename pattern detected: ${fileName}`);
450
+ }
451
+ // 6. 检查双扩展名
452
+ if (this.hasDoubleExtension(fileName)) {
453
+ threats.push('Double extension detected');
454
+ riskScore += 30;
455
+ this.logger.debug(`MaliciousFileDetector: Double extension detected: ${fileName}`);
456
+ }
457
+ // 7. 检查隐藏扩展名技巧
458
+ if (this.hasHiddenExtension(fileName)) {
459
+ threats.push('Hidden extension trick detected');
460
+ riskScore += 40;
461
+ this.logger.debug(`MaliciousFileDetector: Hidden extension trick detected: ${fileName}`);
462
+ }
369
463
  }
370
- // 6. 检查文件大小异常
371
- if (stats.size > 500 * 1024 * 1024) {
464
+ // 8. 检查文件大小异常
465
+ if (fileSize > 500 * 1024 * 1024) {
372
466
  // 大于500MB
373
467
  threats.push('Unusually large file size');
374
468
  riskScore += 15;
375
- this.logger.debug(`MaliciousFileDetector: Unusually large file size: ${stats.size}`);
469
+ this.logger.debug(`MaliciousFileDetector: Unusually large file size: ${fileSize}`);
376
470
  }
377
- // 7. 检查双扩展名
378
- if (this.hasDoubleExtension(fileName)) {
379
- threats.push('Double extension detected');
380
- riskScore += 30;
381
- this.logger.debug(`MaliciousFileDetector: Double extension detected: ${fileName}`);
471
+ // 9. 动态阈值调整(小文件更宽松)
472
+ let threshold = this.options.riskThreshold || 50;
473
+ if (fileSize < 1024) {
474
+ // 小于1KB的文件,提高阈值(减少误报)
475
+ threshold = Math.max(threshold, 80);
476
+ this.logger.debug(`MaliciousFileDetector: Using increased threshold for small file (${fileSize} bytes): ${threshold}`);
382
477
  }
383
- // 8. 检查隐藏扩展名技巧
384
- if (this.hasHiddenExtension(fileName)) {
385
- threats.push('Hidden extension trick detected');
386
- riskScore += 40;
387
- this.logger.debug(`MaliciousFileDetector: Hidden extension trick detected: ${fileName}`);
478
+ else if (fileSize < 10 * 1024) {
479
+ // 小于10KB的文件,适当提高阈值
480
+ threshold = Math.max(threshold, 65);
481
+ this.logger.debug(`MaliciousFileDetector: Using increased threshold for medium-small file (${fileSize} bytes): ${threshold}`);
388
482
  }
389
- const threshold = this.options.riskThreshold || 50;
390
483
  const isSafe = riskScore < threshold;
391
484
  this.logger.debug(`MaliciousFileDetector: Final result - safe: ${isSafe}, riskScore: ${riskScore}, threshold: ${threshold}, threats: ${threats.join(', ')}`);
392
485
  return {
@@ -408,6 +501,46 @@ let MaliciousFileDetector = MaliciousFileDetector_1 = class MaliciousFileDetecto
408
501
  }
409
502
  });
410
503
  }
504
+ /**
505
+ * 使用流式处理读取文件(防止大文件占用过多内存)
506
+ */
507
+ readFileStream(filePath, fileSize) {
508
+ return __awaiter(this, void 0, void 0, function* () {
509
+ // 限制读取大小
510
+ const readSize = Math.min(fileSize, this.maxScanSize);
511
+ // 如果文件较小,直接读取
512
+ if (fileSize <= 1024 * 1024) {
513
+ // 1MB 以下直接读取
514
+ return fs.readFile(filePath);
515
+ }
516
+ // 大文件使用流式处理
517
+ return new Promise((resolve, reject) => {
518
+ const chunks = [];
519
+ let totalRead = 0;
520
+ const stream = fs.createReadStream(filePath, {
521
+ highWaterMark: 64 * 1024, // 每次读取 64KB
522
+ end: readSize - 1, // 只读取前 N 字节
523
+ });
524
+ stream.on('data', (chunk) => {
525
+ chunks.push(chunk);
526
+ totalRead += chunk.length;
527
+ // 额外的安全检查:如果超过限制,立即停止
528
+ if (totalRead > this.maxScanSize) {
529
+ stream.destroy();
530
+ reject(new Error(`File size exceeds scan limit: ${this.maxScanSize}`));
531
+ }
532
+ });
533
+ stream.on('end', () => {
534
+ const buffer = Buffer.concat(chunks);
535
+ this.logger.debug(`Read ${buffer.length} bytes from ${filePath} using stream`);
536
+ resolve(buffer);
537
+ });
538
+ stream.on('error', (error) => {
539
+ reject(error);
540
+ });
541
+ });
542
+ });
543
+ }
411
544
  /**
412
545
  * 检查签名
413
546
  */
@@ -660,46 +793,84 @@ let MaliciousFileDetector = MaliciousFileDetector_1 = class MaliciousFileDetecto
660
793
  });
661
794
  }
662
795
  /**
663
- * 本地ClamAV扫描
796
+ * 本地ClamAV扫描(增强安全性)
664
797
  */
665
798
  scanWithLocalClamAV(filePath) {
666
799
  return __awaiter(this, void 0, void 0, function* () {
667
800
  try {
668
- // 验证文件路径安全性,防止命令注入
801
+ // 1. 验证 ClamAV 命令(仅允许白名单命令)
802
+ this.validateClamAVCommand();
803
+ // 2. 验证文件路径安全性
669
804
  this.validateFilePath(filePath);
805
+ // 3. 验证文件存在且可读
806
+ const absoluteFilePath = path.resolve(filePath);
807
+ if (!fs.existsSync(absoluteFilePath)) {
808
+ throw new Error(`File does not exist: ${filePath}`);
809
+ }
670
810
  // 使用 spawn 和参数数组,避免命令注入
671
811
  const { spawn } = yield Promise.resolve().then(() => require('child_process'));
672
812
  return new Promise((resolve, reject) => {
673
- const args = ['--no-summary', filePath];
674
- const child = spawn(this.options.clamavCommand, args);
813
+ const args = ['--no-summary', absoluteFilePath];
814
+ // 使用安全选项启动进程
815
+ const child = spawn(this.options.clamavCommand, args, {
816
+ timeout: 30000, // 进程级超时
817
+ windowsHide: true, // Windows 下隐藏窗口
818
+ shell: false, // 禁用 shell,防止 shell 注入
819
+ });
675
820
  let stdout = '';
676
821
  let stderr = '';
822
+ let killed = false;
823
+ // 限制输出大小,防止内存溢出
824
+ const MAX_OUTPUT_SIZE = 1024 * 1024; // 1MB
677
825
  child.stdout.on('data', (data) => {
826
+ if (stdout.length + data.length > MAX_OUTPUT_SIZE) {
827
+ this.logger.warn('ClamAV output size exceeded limit');
828
+ child.kill('SIGKILL');
829
+ killed = true;
830
+ reject(new Error('ClamAV output size exceeded limit'));
831
+ return;
832
+ }
678
833
  stdout += data.toString();
679
834
  });
680
835
  child.stderr.on('data', (data) => {
836
+ if (stderr.length + data.length > MAX_OUTPUT_SIZE) {
837
+ this.logger.warn('ClamAV error output size exceeded limit');
838
+ child.kill('SIGKILL');
839
+ killed = true;
840
+ reject(new Error('ClamAV error output size exceeded limit'));
841
+ return;
842
+ }
681
843
  stderr += data.toString();
682
844
  });
683
845
  // 设置超时
684
846
  const timeout = setTimeout(() => {
685
- child.kill('SIGKILL');
686
- reject(new Error('ClamAV scan timeout'));
847
+ if (!killed && !child.killed) {
848
+ this.logger.warn('ClamAV scan timeout, killing process');
849
+ child.kill('SIGKILL');
850
+ killed = true;
851
+ }
687
852
  }, 30000);
688
853
  child.on('close', (code) => {
689
854
  clearTimeout(timeout);
855
+ // 如果已经被 killed,不再处理
856
+ if (killed) {
857
+ return;
858
+ }
859
+ // ClamAV 退出码:0=无病毒, 1=发现病毒, 其他=错误
690
860
  if (code !== 0 && code !== 1) {
691
- reject(new Error(`ClamAV process exited with code ${code}`));
861
+ reject(new Error(`ClamAV process exited with code ${code}: ${stderr}`));
692
862
  return;
693
863
  }
694
864
  // 解析ClamAV输出
695
865
  const output = stdout + stderr;
696
866
  if (output.includes('FOUND')) {
697
- // 提取病毒名称
867
+ // 提取病毒名称(限制长度)
698
868
  const match = output.match(/: ([^:]+) FOUND/);
869
+ const virusName = match ? match[1].substring(0, 100) : 'Unknown';
699
870
  resolve({
700
871
  scanned: true,
701
872
  infected: true,
702
- virusName: match ? match[1] : 'Unknown',
873
+ virusName,
703
874
  });
704
875
  }
705
876
  else {
@@ -711,7 +882,18 @@ let MaliciousFileDetector = MaliciousFileDetector_1 = class MaliciousFileDetecto
711
882
  });
712
883
  child.on('error', (error) => {
713
884
  clearTimeout(timeout);
714
- reject(error);
885
+ if (!killed) {
886
+ // 尝试清理进程
887
+ try {
888
+ if (!child.killed) {
889
+ child.kill('SIGKILL');
890
+ }
891
+ }
892
+ catch (killError) {
893
+ this.logger.error(`Failed to kill ClamAV process: ${killError.message}`);
894
+ }
895
+ reject(error);
896
+ }
715
897
  });
716
898
  });
717
899
  }
@@ -726,6 +908,23 @@ let MaliciousFileDetector = MaliciousFileDetector_1 = class MaliciousFileDetecto
726
908
  }
727
909
  });
728
910
  }
911
+ /**
912
+ * 验证 ClamAV 命令(仅允许白名单)
913
+ */
914
+ validateClamAVCommand() {
915
+ const allowedCommands = ['clamscan', 'clamdscan'];
916
+ const commandBasename = path.basename(this.options.clamavCommand);
917
+ if (!allowedCommands.includes(commandBasename)) {
918
+ throw new Error(`Invalid ClamAV command: ${commandBasename}. Allowed: ${allowedCommands.join(', ')}`);
919
+ }
920
+ // 检查命令路径不包含危险字符
921
+ const dangerousChars = [';', '&', '|', '$', '`', '\n', '\r'];
922
+ for (const char of dangerousChars) {
923
+ if (this.options.clamavCommand.includes(char)) {
924
+ throw new Error(`Dangerous character in ClamAV command path: ${char}`);
925
+ }
926
+ }
927
+ }
729
928
  /**
730
929
  * 验证文件路径,防止命令注入
731
930
  */
@@ -36,9 +36,13 @@ export declare class DynamicImportUtil {
36
36
  */
37
37
  static importExcelJs(): Promise<any>;
38
38
  /**
39
- * 动态导入 CSV 处理库
39
+ * 动态导入 XLSX 处理库
40
40
  */
41
- static importCsvParse(): Promise<any>;
41
+ static importXlsx(): Promise<any>;
42
+ /**
43
+ * 动态导入 fast-csv 处理库
44
+ */
45
+ static importFastCsv(): Promise<any>;
42
46
  /**
43
47
  * 检查依赖是否已安装
44
48
  */
@@ -108,15 +108,27 @@ class DynamicImportUtil {
108
108
  });
109
109
  }
110
110
  /**
111
- * 动态导入 CSV 处理库
111
+ * 动态导入 XLSX 处理库
112
112
  */
113
- static importCsvParse() {
113
+ static importXlsx() {
114
114
  return __awaiter(this, void 0, void 0, function* () {
115
- const csvModule = yield tryImport('csv-parse');
115
+ const xlsxModule = yield tryImport('xlsx');
116
+ if (!xlsxModule) {
117
+ throw new Error('XLSX is not installed. Please install it using: npm install xlsx');
118
+ }
119
+ return xlsxModule.default || xlsxModule;
120
+ });
121
+ }
122
+ /**
123
+ * 动态导入 fast-csv 处理库
124
+ */
125
+ static importFastCsv() {
126
+ return __awaiter(this, void 0, void 0, function* () {
127
+ const csvModule = yield tryImport('fast-csv');
116
128
  if (!csvModule) {
117
- throw new Error('csv-parse is not installed. Please install it using: npm install csv-parse');
129
+ throw new Error('fast-csv is not installed. Please install it using: npm install fast-csv');
118
130
  }
119
- return csvModule;
131
+ return csvModule.default || csvModule;
120
132
  });
121
133
  }
122
134
  /**
@@ -75,8 +75,10 @@ export declare const HttpTimeout: (timeoutMs: number) => (target: any, propertyK
75
75
  * 代理装饰器
76
76
  */
77
77
  export declare const HttpUseProxy: (options: {
78
- host: string;
79
- port: number;
78
+ enabled?: boolean;
79
+ fromEnvironment?: boolean;
80
+ host?: string;
81
+ port?: number;
80
82
  protocol?: "http" | "https";
81
83
  auth?: {
82
84
  username: string;
@@ -183,7 +183,8 @@ exports.HttpTimeout = HttpTimeout;
183
183
  */
184
184
  const HttpUseProxy = (options) => {
185
185
  return (target, propertyKey, descriptor) => {
186
- (0, common_1.SetMetadata)(`${exports.PROXY_OPTIONS_KEY}_${propertyKey}`, options)(descriptor.value);
186
+ const proxyConfig = Object.assign({ enabled: options.enabled !== false }, options);
187
+ (0, common_1.SetMetadata)(`${exports.PROXY_OPTIONS_KEY}_${propertyKey}`, proxyConfig)(descriptor.value);
187
188
  return descriptor;
188
189
  };
189
190
  };
@@ -21,22 +21,18 @@ let HttpLogEntity = class HttpLogEntity extends common_1.AbstractUuidPrimaryEnti
21
21
  exports.HttpLogEntity = HttpLogEntity;
22
22
  __decorate([
23
23
  (0, typeorm_1.Column)({ type: 'varchar', length: 36, nullable: true }),
24
- (0, typeorm_1.Index)(),
25
24
  __metadata("design:type", String)
26
25
  ], HttpLogEntity.prototype, "requestId", void 0);
27
26
  __decorate([
28
27
  (0, typeorm_1.Column)({ type: 'varchar', length: 36, nullable: true }),
29
- (0, typeorm_1.Index)(),
30
28
  __metadata("design:type", String)
31
29
  ], HttpLogEntity.prototype, "userId", void 0);
32
30
  __decorate([
33
31
  (0, typeorm_1.Column)({ type: 'varchar', length: 10 }),
34
- (0, typeorm_1.Index)(),
35
32
  __metadata("design:type", String)
36
33
  ], HttpLogEntity.prototype, "method", void 0);
37
34
  __decorate([
38
- (0, typeorm_1.Column)({ type: 'text' }),
39
- (0, typeorm_1.Index)(),
35
+ (0, typeorm_1.Column)({ type: 'varchar' }),
40
36
  __metadata("design:type", String)
41
37
  ], HttpLogEntity.prototype, "url", void 0);
42
38
  __decorate([
@@ -53,7 +49,6 @@ __decorate([
53
49
  ], HttpLogEntity.prototype, "params", void 0);
54
50
  __decorate([
55
51
  (0, typeorm_1.Column)({ type: 'int', nullable: true }),
56
- (0, typeorm_1.Index)(),
57
52
  __metadata("design:type", Number)
58
53
  ], HttpLogEntity.prototype, "statusCode", void 0);
59
54
  __decorate([
@@ -66,7 +61,6 @@ __decorate([
66
61
  ], HttpLogEntity.prototype, "attemptCount", void 0);
67
62
  __decorate([
68
63
  (0, typeorm_1.Column)({ type: 'boolean', default: false }),
69
- (0, typeorm_1.Index)(),
70
64
  __metadata("design:type", Boolean)
71
65
  ], HttpLogEntity.prototype, "success", void 0);
72
66
  __decorate([
@@ -103,7 +97,6 @@ __decorate([
103
97
  ], HttpLogEntity.prototype, "serviceName", void 0);
104
98
  __decorate([
105
99
  (0, typeorm_1.Column)({ type: 'varchar', length: 200, nullable: true }),
106
- (0, typeorm_1.Index)(),
107
100
  __metadata("design:type", String)
108
101
  ], HttpLogEntity.prototype, "operationName", void 0);
109
102
  __decorate([
@@ -140,7 +133,6 @@ exports.HttpLogEntity = HttpLogEntity = __decorate([
140
133
  (0, typeorm_1.Index)(['requestId']),
141
134
  (0, typeorm_1.Index)(['userId']),
142
135
  (0, typeorm_1.Index)(['method']),
143
- (0, typeorm_1.Index)(['url']),
144
136
  (0, typeorm_1.Index)(['statusCode']),
145
137
  (0, typeorm_1.Index)(['success']),
146
138
  (0, typeorm_1.Index)(['createdAt']),