@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,148 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProxyEnvironmentParser = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ /**
6
+ * 代理环境变量解析工具
7
+ * 支持标准的代理环境变量:HTTP_PROXY, HTTPS_PROXY, NO_PROXY
8
+ */
9
+ class ProxyEnvironmentParser {
10
+ /**
11
+ * 从环境变量解析代理配置
12
+ * @param protocol 请求协议 (http 或 https)
13
+ * @param targetUrl 目标 URL(用于检查 NO_PROXY)
14
+ * @returns 解析后的代理配置,如果不应使用代理则返回 false
15
+ */
16
+ static parseFromEnvironment(protocol = 'http', targetUrl) {
17
+ // 获取代理环境变量 (大写和小写都支持)
18
+ const proxyEnv = protocol === 'https'
19
+ ? process.env.HTTPS_PROXY ||
20
+ process.env.https_proxy ||
21
+ process.env.HTTP_PROXY ||
22
+ process.env.http_proxy
23
+ : process.env.HTTP_PROXY || process.env.http_proxy;
24
+ // 检查是否应该跳过代理
25
+ if (targetUrl && this.shouldBypassProxy(targetUrl)) {
26
+ this.logger.debug(`Bypassing proxy for ${targetUrl} due to NO_PROXY`);
27
+ return false;
28
+ }
29
+ if (!proxyEnv) {
30
+ this.logger.debug('No proxy environment variable found');
31
+ return false;
32
+ }
33
+ try {
34
+ const proxyConfig = this.parseProxyUrl(proxyEnv);
35
+ this.logger.debug(`Parsed proxy configuration from environment: ${JSON.stringify(proxyConfig)}`);
36
+ return proxyConfig;
37
+ }
38
+ catch (error) {
39
+ this.logger.warn(`Failed to parse proxy URL from environment: ${error.message}`);
40
+ return false;
41
+ }
42
+ }
43
+ /**
44
+ * 解析代理 URL
45
+ * 支持格式: http://proxy:port, http://user:pass@proxy:port
46
+ */
47
+ static parseProxyUrl(proxyUrl) {
48
+ try {
49
+ const url = new URL(proxyUrl);
50
+ const config = {
51
+ protocol: url.protocol.replace(':', '') || 'http',
52
+ host: url.hostname,
53
+ port: url.port ? parseInt(url.port, 10) : url.protocol === 'https:' ? 443 : 80,
54
+ auth: undefined,
55
+ };
56
+ // 解析认证信息
57
+ if (url.username || url.password) {
58
+ config.auth = {
59
+ username: decodeURIComponent(url.username),
60
+ password: decodeURIComponent(url.password),
61
+ };
62
+ }
63
+ return config;
64
+ }
65
+ catch (error) {
66
+ throw new Error(`Invalid proxy URL format: ${proxyUrl}`);
67
+ }
68
+ }
69
+ /**
70
+ * 检查是否应该绕过代理
71
+ * 基于 NO_PROXY 环境变量
72
+ */
73
+ static shouldBypassProxy(targetUrl) {
74
+ const noProxy = process.env.NO_PROXY || process.env.no_proxy;
75
+ if (!noProxy) {
76
+ return false;
77
+ }
78
+ try {
79
+ const url = new URL(targetUrl);
80
+ const hostname = url.hostname;
81
+ // NO_PROXY 可以是逗号分隔的列表
82
+ const bypassList = noProxy.split(',').map((item) => item.trim().toLowerCase());
83
+ for (const bypass of bypassList) {
84
+ if (!bypass)
85
+ continue;
86
+ // 精确匹配
87
+ if (hostname.toLowerCase() === bypass) {
88
+ return true;
89
+ }
90
+ // 通配符匹配 (例如 .example.com)
91
+ if (bypass.startsWith('.') && hostname.toLowerCase().endsWith(bypass)) {
92
+ return true;
93
+ }
94
+ // 后缀匹配 (例如 example.com 匹配 api.example.com)
95
+ if (hostname.toLowerCase().endsWith('.' + bypass)) {
96
+ return true;
97
+ }
98
+ // 特殊值 * 表示所有域名都绕过
99
+ if (bypass === '*') {
100
+ return true;
101
+ }
102
+ // IP 地址范围匹配 (简单实现)
103
+ if (this.isIpMatch(hostname, bypass)) {
104
+ return true;
105
+ }
106
+ }
107
+ }
108
+ catch (error) {
109
+ this.logger.warn(`Failed to parse target URL for NO_PROXY check: ${error.message}`);
110
+ }
111
+ return false;
112
+ }
113
+ /**
114
+ * 简单的 IP 地址匹配
115
+ * 支持精确匹配和 CIDR 表示法
116
+ */
117
+ static isIpMatch(hostname, pattern) {
118
+ // 精确 IP 匹配
119
+ if (hostname === pattern) {
120
+ return true;
121
+ }
122
+ // CIDR 匹配 (简化版本,不做完整的 CIDR 计算)
123
+ if (pattern.includes('/')) {
124
+ const [baseIp] = pattern.split('/');
125
+ return hostname.startsWith(baseIp.substring(0, baseIp.lastIndexOf('.')));
126
+ }
127
+ return false;
128
+ }
129
+ /**
130
+ * 获取所有代理相关的环境变量
131
+ */
132
+ static getProxyEnvironmentVariables() {
133
+ return {
134
+ HTTP_PROXY: process.env.HTTP_PROXY || process.env.http_proxy,
135
+ HTTPS_PROXY: process.env.HTTPS_PROXY || process.env.https_proxy,
136
+ NO_PROXY: process.env.NO_PROXY || process.env.no_proxy,
137
+ };
138
+ }
139
+ /**
140
+ * 检查是否设置了代理环境变量
141
+ */
142
+ static hasProxyEnvironment() {
143
+ const vars = this.getProxyEnvironmentVariables();
144
+ return !!(vars.HTTP_PROXY || vars.HTTPS_PROXY);
145
+ }
146
+ }
147
+ exports.ProxyEnvironmentParser = ProxyEnvironmentParser;
148
+ ProxyEnvironmentParser.logger = new common_1.Logger(ProxyEnvironmentParser.name);
@@ -1,4 +1,22 @@
1
+ /**
2
+ * 生成请求ID
3
+ * @returns 唯一的请求ID
4
+ */
1
5
  export declare function generateRequestId(): string;
6
+ /**
7
+ * 生成短请求ID(用于日志)
8
+ * @returns 短格的请求ID
9
+ */
2
10
  export declare function generateShortRequestId(): string;
11
+ /**
12
+ * 验证请求ID格式
13
+ * @param requestId 请求ID
14
+ * @returns 是否为有效的请求ID
15
+ */
3
16
  export declare function isValidRequestId(requestId: string): boolean;
17
+ /**
18
+ * 从请求头中提取请求ID
19
+ * @param headers 请求头
20
+ * @returns 请求ID或null
21
+ */
4
22
  export declare function extractRequestId(headers: Record<string, string>): string | null;
@@ -5,17 +5,37 @@ exports.generateShortRequestId = generateShortRequestId;
5
5
  exports.isValidRequestId = isValidRequestId;
6
6
  exports.extractRequestId = extractRequestId;
7
7
  const crypto_1 = require("crypto");
8
+ /**
9
+ * 生成请求ID
10
+ * @returns 唯一的请求ID
11
+ */
8
12
  function generateRequestId() {
9
13
  return (0, crypto_1.randomUUID)();
10
14
  }
15
+ /**
16
+ * 生成短请求ID(用于日志)
17
+ * @returns 短格的请求ID
18
+ */
11
19
  function generateShortRequestId() {
12
20
  return Math.random().toString(36).substring(2, 15);
13
21
  }
22
+ /**
23
+ * 验证请求ID格式
24
+ * @param requestId 请求ID
25
+ * @returns 是否为有效的请求ID
26
+ */
14
27
  function isValidRequestId(requestId) {
28
+ // UUID格式验证
15
29
  const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
16
30
  return uuidRegex.test(requestId);
17
31
  }
32
+ /**
33
+ * 从请求头中提取请求ID
34
+ * @param headers 请求头
35
+ * @returns 请求ID或null
36
+ */
18
37
  function extractRequestId(headers) {
38
+ // 常见的请求ID头名称
19
39
  const requestIdHeaders = [
20
40
  'x-request-id',
21
41
  'x-trace-id',
@@ -1,14 +1,41 @@
1
1
  import { AxiosError, AxiosRequestConfig } from 'axios';
2
2
  import { RetryRecord } from '../entities/http-log.entity';
3
+ /**
4
+ * 请求重试记录器
5
+ */
3
6
  export declare class RetryRecorder {
4
7
  private records;
8
+ /**
9
+ * 记录重试尝试
10
+ */
5
11
  static recordRetry(attempt: number, error: AxiosError | any, config: AxiosRequestConfig, delay: number): RetryRecord;
12
+ /**
13
+ * 创建重试记录器实例
14
+ */
6
15
  static create(): RetryRecorder;
16
+ /**
17
+ * 格式化错误信息
18
+ */
7
19
  private static formatError;
20
+ /**
21
+ * 获取重试原因
22
+ */
8
23
  private static getRetryReason;
24
+ /**
25
+ * 过滤敏感头信息
26
+ */
9
27
  private static sanitizeHeaders;
28
+ /**
29
+ * 添加重试记录
30
+ */
10
31
  addRecord(record: RetryRecord): void;
32
+ /**
33
+ * 获取所有重试记录
34
+ */
11
35
  getRecords(): RetryRecord[];
36
+ /**
37
+ * 获取重试统计
38
+ */
12
39
  getStats(): {
13
40
  totalRetries: number;
14
41
  maxAttempts: number;
@@ -16,10 +43,25 @@ export declare class RetryRecorder {
16
43
  averageDelay: number;
17
44
  reasons: Record<string, number>;
18
45
  };
46
+ /**
47
+ * 重置记录
48
+ */
19
49
  reset(): void;
50
+ /**
51
+ * 获取最后一次重试记录
52
+ */
20
53
  getLastRecord(): RetryRecord | null;
54
+ /**
55
+ * 检查是否有重试记录
56
+ */
21
57
  hasRetries(): boolean;
58
+ /**
59
+ * 获取指定尝试次数的记录
60
+ */
22
61
  getRecordByAttempt(attempt: number): RetryRecord | null;
62
+ /**
63
+ * 获取重试时间线
64
+ */
23
65
  getTimeline(): Array<{
24
66
  attempt: number;
25
67
  timestamp: Date;
@@ -1,10 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RetryRecorder = void 0;
4
+ /**
5
+ * 请求重试记录器
6
+ */
4
7
  class RetryRecorder {
5
8
  constructor() {
6
9
  this.records = [];
7
10
  }
11
+ /**
12
+ * 记录重试尝试
13
+ */
8
14
  static recordRetry(attempt, error, config, delay) {
9
15
  var _a;
10
16
  return {
@@ -20,9 +26,15 @@ class RetryRecorder {
20
26
  },
21
27
  };
22
28
  }
29
+ /**
30
+ * 创建重试记录器实例
31
+ */
23
32
  static create() {
24
33
  return new RetryRecorder();
25
34
  }
35
+ /**
36
+ * 格式化错误信息
37
+ */
26
38
  static formatError(error) {
27
39
  var _a;
28
40
  if (!error)
@@ -38,8 +50,12 @@ class RetryRecorder {
38
50
  }
39
51
  return formatted;
40
52
  }
53
+ /**
54
+ * 获取重试原因
55
+ */
41
56
  static getRetryReason(error) {
42
57
  if (!error.response) {
58
+ // 网络错误
43
59
  if (error.code === 'ECONNRESET') {
44
60
  return 'Connection reset';
45
61
  }
@@ -54,6 +70,7 @@ class RetryRecorder {
54
70
  }
55
71
  return 'Network error';
56
72
  }
73
+ // HTTP错误
57
74
  const status = error.response.status;
58
75
  if (status >= 500) {
59
76
  return `Server error: ${status}`;
@@ -66,6 +83,9 @@ class RetryRecorder {
66
83
  }
67
84
  return `HTTP error: ${status}`;
68
85
  }
86
+ /**
87
+ * 过滤敏感头信息
88
+ */
69
89
  static sanitizeHeaders(headers) {
70
90
  const sanitized = {};
71
91
  const sensitiveKeys = [
@@ -89,12 +109,21 @@ class RetryRecorder {
89
109
  });
90
110
  return sanitized;
91
111
  }
112
+ /**
113
+ * 添加重试记录
114
+ */
92
115
  addRecord(record) {
93
116
  this.records.push(record);
94
117
  }
118
+ /**
119
+ * 获取所有重试记录
120
+ */
95
121
  getRecords() {
96
122
  return [...this.records];
97
123
  }
124
+ /**
125
+ * 获取重试统计
126
+ */
98
127
  getStats() {
99
128
  const totalRetries = this.records.length;
100
129
  const maxAttempts = Math.max(...this.records.map((r) => r.attempt), 0);
@@ -112,20 +141,35 @@ class RetryRecorder {
112
141
  reasons,
113
142
  };
114
143
  }
144
+ /**
145
+ * 重置记录
146
+ */
115
147
  reset() {
116
148
  this.records = [];
117
149
  }
150
+ /**
151
+ * 获取最后一次重试记录
152
+ */
118
153
  getLastRecord() {
119
154
  return this.records.length > 0
120
155
  ? this.records[this.records.length - 1]
121
156
  : null;
122
157
  }
158
+ /**
159
+ * 检查是否有重试记录
160
+ */
123
161
  hasRetries() {
124
162
  return this.records.length > 0;
125
163
  }
164
+ /**
165
+ * 获取指定尝试次数的记录
166
+ */
126
167
  getRecordByAttempt(attempt) {
127
168
  return this.records.find((r) => r.attempt === attempt) || null;
128
169
  }
170
+ /**
171
+ * 获取重试时间线
172
+ */
129
173
  getTimeline() {
130
174
  let cumulativeDelay = 0;
131
175
  return this.records.map((record) => {
@@ -0,0 +1,118 @@
1
+ /**
2
+ * SSRF防护配置
3
+ */
4
+ export interface SSRFProtectionConfig {
5
+ /** 是否启用SSRF防护 */
6
+ enabled: boolean;
7
+ /** 允许的URL协议 */
8
+ allowedProtocols: string[];
9
+ /** 禁止访问的IP段(私有网络、本地回环等) */
10
+ blockedIPRanges: string[];
11
+ /** 允许的主机名白名单 */
12
+ allowedHostnames?: string[];
13
+ /** 禁止的主机名黑名单 */
14
+ blockedHostnames?: string[];
15
+ }
16
+ /**
17
+ * URL验证配置
18
+ */
19
+ export interface URLValidationConfig {
20
+ /** 最大URL长度 */
21
+ maxURLLength: number;
22
+ /** 是否允许本地回环地址 */
23
+ allowLoopback: boolean;
24
+ /** 是否允许私有网络地址 */
25
+ allowPrivateNetwork: boolean;
26
+ /** 是否允许Link-local地址 */
27
+ allowLinkLocal: boolean;
28
+ }
29
+ /**
30
+ * 安全验证工具类
31
+ * 提供URL验证、SSRF防护等功能
32
+ */
33
+ export declare class SecurityValidator {
34
+ private static readonly logger;
35
+ /**
36
+ * 默认SSRF防护配置
37
+ */
38
+ private static readonly defaultSSRFConfig;
39
+ /**
40
+ * 默认URL验证配置
41
+ */
42
+ private static readonly defaultURLConfig;
43
+ /**
44
+ * 验证URL安全性
45
+ * @param url 要验证的URL字符串
46
+ * @param urlConfig URL验证配置
47
+ * @returns 验证结果和错误信息
48
+ */
49
+ static validateURL(url: string, urlConfig?: Partial<URLValidationConfig>): {
50
+ valid: boolean;
51
+ error?: string;
52
+ };
53
+ /**
54
+ * SSRF防护检查
55
+ * @param url 要检查的URL
56
+ * @param ssrfConfig SSRF防护配置
57
+ * @returns 检查结果和错误信息
58
+ */
59
+ static checkSSRF(url: string, ssrfConfig?: Partial<SSRFProtectionConfig>): {
60
+ safe: boolean;
61
+ error?: string;
62
+ };
63
+ /**
64
+ * 清理和验证URL
65
+ * 综合验证和SSRF防护
66
+ * @param url 要清理的URL
67
+ * @param config 完整的安全配置
68
+ * @returns 清理后的URL和验证结果
69
+ */
70
+ static sanitizeURL(url: string, config?: {
71
+ urlConfig?: Partial<URLValidationConfig>;
72
+ ssrfConfig?: Partial<SSRFProtectionConfig>;
73
+ }): {
74
+ url: string;
75
+ valid: boolean;
76
+ error?: string;
77
+ };
78
+ /**
79
+ * 从主机名中提取IP地址
80
+ */
81
+ private static extractIPAddress;
82
+ /**
83
+ * 验证IP地址
84
+ */
85
+ private static validateIPAddress;
86
+ /**
87
+ * 检查IP地址是否在阻止的范围内
88
+ */
89
+ private static checkIPRange;
90
+ /**
91
+ * 检查IP地址是否在指定范围内
92
+ * 简化版本,主要用于常见CIDR范围
93
+ */
94
+ private static isIPInRange;
95
+ /**
96
+ * 验证主机名格式
97
+ */
98
+ private static isValidHostname;
99
+ /**
100
+ * 敏感数据检测
101
+ * 检查数据中是否包含敏感信息(如密码、token等)
102
+ * @param data 要检查的数据对象
103
+ * @param additionalPatterns 额外的敏感数据模式
104
+ * @returns 检测结果
105
+ */
106
+ static detectSensitiveData(data: any, additionalPatterns?: RegExp[]): {
107
+ hasSensitiveData: boolean;
108
+ fields: string[];
109
+ };
110
+ /**
111
+ * 获取默认SSRF防护配置
112
+ */
113
+ static getDefaultSSRFConfig(): SSRFProtectionConfig;
114
+ /**
115
+ * 获取默认URL验证配置
116
+ */
117
+ static getDefaultURLConfig(): URLValidationConfig;
118
+ }