@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
@@ -26,6 +26,9 @@ const audit_context_service_1 = require("../services/audit-context.service");
26
26
  const audit_strategy_service_1 = require("../services/audit-strategy.service");
27
27
  const enums_1 = require("../enums");
28
28
  const decorators_1 = require("../decorators");
29
+ /**
30
+ * 实体审计订阅者
31
+ */
29
32
  let EntityAuditSubscriber = class EntityAuditSubscriber {
30
33
  constructor(entityAuditService, contextService, auditStrategy, dataSource) {
31
34
  this.entityAuditService = entityAuditService;
@@ -33,6 +36,9 @@ let EntityAuditSubscriber = class EntityAuditSubscriber {
33
36
  this.auditStrategy = auditStrategy;
34
37
  dataSource.subscribers.push(this);
35
38
  }
39
+ /**
40
+ * 在实体插入后记录审计日志
41
+ */
36
42
  afterInsert(event) {
37
43
  return __awaiter(this, void 0, void 0, function* () {
38
44
  const entity = event.entity;
@@ -40,18 +46,32 @@ let EntityAuditSubscriber = class EntityAuditSubscriber {
40
46
  return;
41
47
  const entityType = entity.constructor.name;
42
48
  const entityId = entity.id;
49
+ // 检查是否启用了审计
43
50
  if (!this.isAuditEnabled(entity)) {
44
51
  return;
45
52
  }
53
+ // 检查策略
46
54
  if (!this.auditStrategy.shouldRecord(entityType, enums_1.AuditOperation.CREATE)) {
47
55
  return;
48
56
  }
49
57
  try {
58
+ // 获取上下文信息
50
59
  const context = yield this.contextService.getCurrentContext();
60
+ const actionContext = this.contextService.getCurrentActionContext();
61
+ // 记录到审计动作上下文
62
+ if (actionContext) {
63
+ this.contextService.recordEntityChangeInAction(entityType, entityId, enums_1.AuditOperation.CREATE);
64
+ // 记录详细的实体变更数据
65
+ this.contextService.recordDetailedEntityChange(entityType, entityId, enums_1.AuditOperation.CREATE, {}, entity, Object.keys(entity));
66
+ }
67
+ // 记录审计日志
51
68
  yield this.entityAuditService.logEntityChange(entityType, entityId, enums_1.AuditOperation.CREATE, {}, entity, {
52
69
  requestId: context.requestId,
53
70
  requestIp: context.requestIp,
54
71
  userAgent: context.userAgent,
72
+ auditActionId: actionContext === null || actionContext === void 0 ? void 0 : actionContext.actionId,
73
+ auditActionName: actionContext === null || actionContext === void 0 ? void 0 : actionContext.actionName,
74
+ sequenceInAction: (actionContext === null || actionContext === void 0 ? void 0 : actionContext.entityChanges.length) || 0,
55
75
  });
56
76
  }
57
77
  catch (error) {
@@ -59,6 +79,9 @@ let EntityAuditSubscriber = class EntityAuditSubscriber {
59
79
  }
60
80
  });
61
81
  }
82
+ /**
83
+ * 在实体更新后记录审计日志
84
+ */
62
85
  afterUpdate(event) {
63
86
  return __awaiter(this, void 0, void 0, function* () {
64
87
  const entity = event.entity;
@@ -67,18 +90,33 @@ let EntityAuditSubscriber = class EntityAuditSubscriber {
67
90
  return;
68
91
  const entityType = entity.constructor.name;
69
92
  const entityId = entity.id;
93
+ // 检查是否启用了审计
70
94
  if (!this.isAuditEnabled(entity)) {
71
95
  return;
72
96
  }
97
+ // 检查策略
73
98
  if (!this.auditStrategy.shouldRecord(entityType, enums_1.AuditOperation.UPDATE)) {
74
99
  return;
75
100
  }
76
101
  try {
102
+ // 获取上下文信息
77
103
  const context = yield this.contextService.getCurrentContext();
104
+ const actionContext = this.contextService.getCurrentActionContext();
105
+ // 记录到审计动作上下文
106
+ if (actionContext) {
107
+ this.contextService.recordEntityChangeInAction(entityType, entityId, enums_1.AuditOperation.UPDATE);
108
+ // 记录详细的实体变更数据
109
+ const changedFields = this.calculateChangedFields(databaseEntity || {}, entity);
110
+ this.contextService.recordDetailedEntityChange(entityType, entityId, enums_1.AuditOperation.UPDATE, databaseEntity || {}, entity, changedFields);
111
+ }
112
+ // 记录审计日志
78
113
  yield this.entityAuditService.logEntityChange(entityType, entityId, enums_1.AuditOperation.UPDATE, databaseEntity || {}, entity, {
79
114
  requestId: context.requestId,
80
115
  requestIp: context.requestIp,
81
116
  userAgent: context.userAgent,
117
+ auditActionId: actionContext === null || actionContext === void 0 ? void 0 : actionContext.actionId,
118
+ auditActionName: actionContext === null || actionContext === void 0 ? void 0 : actionContext.actionName,
119
+ sequenceInAction: (actionContext === null || actionContext === void 0 ? void 0 : actionContext.entityChanges.length) || 0,
82
120
  });
83
121
  }
84
122
  catch (error) {
@@ -86,6 +124,9 @@ let EntityAuditSubscriber = class EntityAuditSubscriber {
86
124
  }
87
125
  });
88
126
  }
127
+ /**
128
+ * 在实体删除前记录审计日志
129
+ */
89
130
  beforeRemove(event) {
90
131
  return __awaiter(this, void 0, void 0, function* () {
91
132
  const entity = event.entity;
@@ -93,18 +134,32 @@ let EntityAuditSubscriber = class EntityAuditSubscriber {
93
134
  return;
94
135
  const entityType = entity.constructor.name;
95
136
  const entityId = entity.id;
137
+ // 检查是否启用了审计
96
138
  if (!this.isAuditEnabled(entity)) {
97
139
  return;
98
140
  }
141
+ // 检查策略
99
142
  if (!this.auditStrategy.shouldRecord(entityType, enums_1.AuditOperation.DELETE)) {
100
143
  return;
101
144
  }
102
145
  try {
146
+ // 获取上下文信息
103
147
  const context = yield this.contextService.getCurrentContext();
148
+ const actionContext = this.contextService.getCurrentActionContext();
149
+ // 记录到审计动作上下文
150
+ if (actionContext) {
151
+ this.contextService.recordEntityChangeInAction(entityType, entityId, enums_1.AuditOperation.DELETE);
152
+ // 记录详细的实体变更数据
153
+ this.contextService.recordDetailedEntityChange(entityType, entityId, enums_1.AuditOperation.DELETE, entity, {}, Object.keys(entity));
154
+ }
155
+ // 记录审计日志
104
156
  yield this.entityAuditService.logEntityChange(entityType, entityId, enums_1.AuditOperation.DELETE, entity, {}, {
105
157
  requestId: context.requestId,
106
158
  requestIp: context.requestIp,
107
159
  userAgent: context.userAgent,
160
+ auditActionId: actionContext === null || actionContext === void 0 ? void 0 : actionContext.actionId,
161
+ auditActionName: actionContext === null || actionContext === void 0 ? void 0 : actionContext.actionName,
162
+ sequenceInAction: (actionContext === null || actionContext === void 0 ? void 0 : actionContext.entityChanges.length) || 0,
108
163
  });
109
164
  }
110
165
  catch (error) {
@@ -112,8 +167,28 @@ let EntityAuditSubscriber = class EntityAuditSubscriber {
112
167
  }
113
168
  });
114
169
  }
170
+ /**
171
+ * 计算变更字段
172
+ */
173
+ calculateChangedFields(oldValue, newValue) {
174
+ const changedFields = [];
175
+ const allKeys = new Set([
176
+ ...Object.keys(oldValue || {}),
177
+ ...Object.keys(newValue || {}),
178
+ ]);
179
+ for (const key of allKeys) {
180
+ if (JSON.stringify(oldValue[key]) !== JSON.stringify(newValue[key])) {
181
+ changedFields.push(key);
182
+ }
183
+ }
184
+ return changedFields;
185
+ }
186
+ /**
187
+ * 检查是否启用了审计
188
+ */
115
189
  isAuditEnabled(entity) {
116
190
  try {
191
+ // 检查装饰器
117
192
  const auditOptions = Reflect.getMetadata(decorators_1.ENTITY_AUDIT_OPTIONS, entity.constructor);
118
193
  if (auditOptions && auditOptions.enabled === false) {
119
194
  return false;
@@ -121,7 +196,7 @@ let EntityAuditSubscriber = class EntityAuditSubscriber {
121
196
  return true;
122
197
  }
123
198
  catch (error) {
124
- return true;
199
+ return true; // 默认启用
125
200
  }
126
201
  }
127
202
  };
@@ -1,4 +1,7 @@
1
1
  import { EventEmitter } from 'events';
2
+ /**
3
+ * Individual cache operation record
4
+ */
2
5
  export interface CacheOperationRecord {
3
6
  type: 'get' | 'set' | 'delete' | 'clear';
4
7
  layer: string;
@@ -8,24 +11,34 @@ export interface CacheOperationRecord {
8
11
  key?: string;
9
12
  timestamp: Date;
10
13
  }
14
+ /**
15
+ * Cache operation metrics
16
+ */
11
17
  export interface CacheMetrics {
18
+ /** Total number of operations */
12
19
  totalOperations: number;
20
+ /** Hit/miss statistics */
13
21
  hits: number;
14
22
  misses: number;
15
23
  hitRate: number;
24
+ /** Latency metrics (ms) */
16
25
  avgLatency: number;
17
26
  minLatency: number;
18
27
  maxLatency: number;
19
28
  p95Latency: number;
20
29
  p99Latency: number;
30
+ /** Operation counts by type */
21
31
  gets: number;
22
32
  sets: number;
23
33
  deletes: number;
24
34
  clears: number;
35
+ /** Size metrics */
25
36
  totalKeys: number;
26
37
  totalSize: number;
38
+ /** Error metrics */
27
39
  errors: number;
28
40
  errorRate: number;
41
+ /** Layer-specific metrics */
29
42
  layerMetrics: {
30
43
  cls: {
31
44
  hits: number;
@@ -44,40 +57,94 @@ export interface CacheMetrics {
44
57
  avgLatency: number;
45
58
  };
46
59
  };
60
+ /** Time window for these metrics */
47
61
  timeWindow: {
48
62
  start: Date;
49
63
  end: Date;
50
64
  duration: number;
51
65
  };
52
66
  }
67
+ /**
68
+ * Cache metrics service
69
+ *
70
+ * Collects and analyzes cache performance metrics
71
+ */
53
72
  export declare class CacheMetricsService extends EventEmitter {
54
73
  private readonly logger;
55
74
  private readonly operations;
56
75
  private readonly maxOperations;
57
76
  private readonly maxAge;
58
77
  constructor();
78
+ /**
79
+ * Record a cache operation
80
+ */
59
81
  recordOperation(type: 'get' | 'set' | 'delete' | 'clear', layer: string, hit: boolean, latency: number, error?: string, key?: string): void;
82
+ /**
83
+ * Get metrics for a time window
84
+ */
60
85
  getMetrics(timeWindowMs?: number): CacheMetrics;
86
+ /**
87
+ * Get real-time metrics snapshot
88
+ */
61
89
  getSnapshot(): Partial<CacheMetrics>;
90
+ /**
91
+ * Get top slow operations
92
+ */
62
93
  getSlowOperations(limit?: number): CacheOperationRecord[];
94
+ /**
95
+ * Get most accessed keys
96
+ */
63
97
  getMostAccessedKeys(limit?: number): {
64
98
  key: string;
65
99
  count: number;
66
100
  avgLatency: number;
67
101
  }[];
102
+ /**
103
+ * Get error breakdown
104
+ */
68
105
  getErrorBreakdown(): {
69
106
  error: string;
70
107
  count: number;
71
108
  lastOccurrence: Date;
72
109
  }[];
110
+ /**
111
+ * Reset all metrics
112
+ */
73
113
  resetMetrics(): void;
114
+ /**
115
+ * Export metrics for external monitoring systems
116
+ */
74
117
  exportMetrics(format?: 'prometheus' | 'json'): string;
118
+ /**
119
+ * Clean up old operation records
120
+ */
75
121
  private cleanupOldRecords;
122
+ /**
123
+ * Create empty metrics object
124
+ */
76
125
  private createEmptyMetrics;
126
+ /**
127
+ * Calculate layer-specific metrics
128
+ */
77
129
  private calculateLayerMetrics;
130
+ /**
131
+ * Calculate average of array
132
+ */
78
133
  private average;
134
+ /**
135
+ * Calculate percentile
136
+ */
79
137
  private percentile;
138
+ /**
139
+ * Get unique key count
140
+ */
80
141
  private getUniqueKeyCount;
142
+ /**
143
+ * Estimate total cache size
144
+ */
81
145
  private estimateTotalSize;
146
+ /**
147
+ * Convert metrics to Prometheus format
148
+ */
82
149
  private toPrometheusFormat;
83
150
  }
@@ -13,15 +13,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.CacheMetricsService = void 0;
14
14
  const common_1 = require("@nestjs/common");
15
15
  const events_1 = require("events");
16
+ /**
17
+ * Cache metrics service
18
+ *
19
+ * Collects and analyzes cache performance metrics
20
+ */
16
21
  let CacheMetricsService = CacheMetricsService_1 = class CacheMetricsService extends events_1.EventEmitter {
17
22
  constructor() {
18
23
  super();
19
24
  this.logger = new common_1.Logger(CacheMetricsService_1.name);
20
25
  this.operations = [];
21
- this.maxOperations = 10000;
22
- this.maxAge = 3600000;
23
- setInterval(() => this.cleanupOldRecords(), 60000);
26
+ this.maxOperations = 10000; // Keep last 10k operations
27
+ this.maxAge = 3600000; // 1 hour
28
+ // Clean up old records periodically
29
+ setInterval(() => this.cleanupOldRecords(), 60000); // Every minute
24
30
  }
31
+ /**
32
+ * Record a cache operation
33
+ */
25
34
  recordOperation(type, layer, hit, latency, error, key) {
26
35
  const record = {
27
36
  type,
@@ -33,14 +42,20 @@ let CacheMetricsService = CacheMetricsService_1 = class CacheMetricsService exte
33
42
  timestamp: new Date(),
34
43
  };
35
44
  this.operations.push(record);
45
+ // Maintain maximum operations limit
36
46
  if (this.operations.length > this.maxOperations) {
37
47
  this.operations.splice(0, this.operations.length - this.maxOperations);
38
48
  }
49
+ // Emit event for real-time monitoring
39
50
  this.emit('operation', record);
51
+ // Log errors
40
52
  if (error) {
41
53
  this.logger.warn(`Cache operation error: ${type} on ${layer} - ${error}`);
42
54
  }
43
55
  }
56
+ /**
57
+ * Get metrics for a time window
58
+ */
44
59
  getMetrics(timeWindowMs = 300000) {
45
60
  const endTime = new Date();
46
61
  const startTime = new Date(endTime.getTime() - timeWindowMs);
@@ -58,6 +73,7 @@ let CacheMetricsService = CacheMetricsService_1 = class CacheMetricsService exte
58
73
  const sets = recentOperations.filter((op) => op.type === 'set').length;
59
74
  const deletes = recentOperations.filter((op) => op.type === 'delete').length;
60
75
  const clears = recentOperations.filter((op) => op.type === 'clear').length;
76
+ // Calculate layer-specific metrics
61
77
  const layerOperations = {
62
78
  cls: recentOperations.filter((op) => op.layer === 'cls'),
63
79
  memory: recentOperations.filter((op) => op.layer === 'memory'),
@@ -94,6 +110,9 @@ let CacheMetricsService = CacheMetricsService_1 = class CacheMetricsService exte
94
110
  },
95
111
  };
96
112
  }
113
+ /**
114
+ * Get real-time metrics snapshot
115
+ */
97
116
  getSnapshot() {
98
117
  const now = new Date();
99
118
  const oneMinuteAgo = new Date(now.getTime() - 60000);
@@ -124,12 +143,18 @@ let CacheMetricsService = CacheMetricsService_1 = class CacheMetricsService exte
124
143
  errorRate: errors / recentOperations.length,
125
144
  };
126
145
  }
146
+ /**
147
+ * Get top slow operations
148
+ */
127
149
  getSlowOperations(limit = 10) {
128
150
  return this.operations
129
151
  .filter((op) => op.error === undefined)
130
152
  .sort((a, b) => b.latency - a.latency)
131
153
  .slice(0, limit);
132
154
  }
155
+ /**
156
+ * Get most accessed keys
157
+ */
133
158
  getMostAccessedKeys(limit = 10) {
134
159
  const keyStats = new Map();
135
160
  this.operations.forEach((op) => {
@@ -149,6 +174,9 @@ let CacheMetricsService = CacheMetricsService_1 = class CacheMetricsService exte
149
174
  .sort((a, b) => b.count - a.count)
150
175
  .slice(0, limit);
151
176
  }
177
+ /**
178
+ * Get error breakdown
179
+ */
152
180
  getErrorBreakdown() {
153
181
  const errorStats = new Map();
154
182
  this.operations.forEach((op) => {
@@ -173,11 +201,17 @@ let CacheMetricsService = CacheMetricsService_1 = class CacheMetricsService exte
173
201
  }))
174
202
  .sort((a, b) => b.count - a.count);
175
203
  }
204
+ /**
205
+ * Reset all metrics
206
+ */
176
207
  resetMetrics() {
177
208
  this.operations.length = 0;
178
209
  this.logger.log('Cache metrics reset');
179
210
  this.emit('reset');
180
211
  }
212
+ /**
213
+ * Export metrics for external monitoring systems
214
+ */
181
215
  exportMetrics(format = 'json') {
182
216
  const metrics = this.getMetrics();
183
217
  if (format === 'prometheus') {
@@ -185,9 +219,13 @@ let CacheMetricsService = CacheMetricsService_1 = class CacheMetricsService exte
185
219
  }
186
220
  return JSON.stringify(metrics, null, 2);
187
221
  }
222
+ /**
223
+ * Clean up old operation records
224
+ */
188
225
  cleanupOldRecords() {
189
226
  const cutoff = new Date(Date.now() - this.maxAge);
190
227
  const initialLength = this.operations.length;
228
+ // Remove old records
191
229
  for (let i = this.operations.length - 1; i >= 0; i--) {
192
230
  if (this.operations[i].timestamp < cutoff) {
193
231
  this.operations.splice(0, i + 1);
@@ -199,6 +237,9 @@ let CacheMetricsService = CacheMetricsService_1 = class CacheMetricsService exte
199
237
  this.logger.debug(`Cleaned up ${removed} old cache operation records`);
200
238
  }
201
239
  }
240
+ /**
241
+ * Create empty metrics object
242
+ */
202
243
  createEmptyMetrics(start, end) {
203
244
  return {
204
245
  totalOperations: 0,
@@ -230,6 +271,9 @@ let CacheMetricsService = CacheMetricsService_1 = class CacheMetricsService exte
230
271
  },
231
272
  };
232
273
  }
274
+ /**
275
+ * Calculate layer-specific metrics
276
+ */
233
277
  calculateLayerMetrics(operations) {
234
278
  const hits = operations.filter((op) => op.hit).length;
235
279
  const misses = operations.filter((op) => !op.hit).length;
@@ -238,20 +282,29 @@ let CacheMetricsService = CacheMetricsService_1 = class CacheMetricsService exte
238
282
  hits,
239
283
  misses,
240
284
  avgLatency: latencies.length > 0 ? this.average(latencies) : 0,
241
- size: operations.length,
285
+ size: operations.length, // Approximation
242
286
  };
243
287
  }
288
+ /**
289
+ * Calculate average of array
290
+ */
244
291
  average(numbers) {
245
292
  return numbers.length > 0
246
293
  ? numbers.reduce((sum, num) => sum + num, 0) / numbers.length
247
294
  : 0;
248
295
  }
296
+ /**
297
+ * Calculate percentile
298
+ */
249
299
  percentile(sortedNumbers, p) {
250
300
  if (sortedNumbers.length === 0)
251
301
  return 0;
252
302
  const index = Math.ceil(sortedNumbers.length * p) - 1;
253
303
  return sortedNumbers[Math.max(0, Math.min(index, sortedNumbers.length - 1))];
254
304
  }
305
+ /**
306
+ * Get unique key count
307
+ */
255
308
  getUniqueKeyCount(operations) {
256
309
  const keys = new Set();
257
310
  operations.forEach((op) => {
@@ -260,29 +313,40 @@ let CacheMetricsService = CacheMetricsService_1 = class CacheMetricsService exte
260
313
  });
261
314
  return keys.size;
262
315
  }
316
+ /**
317
+ * Estimate total cache size
318
+ */
263
319
  estimateTotalSize(operations) {
320
+ // Rough estimation: average key size (20 bytes) + average value size (100 bytes)
264
321
  const avgValueSize = 120;
265
322
  return this.getUniqueKeyCount(operations) * avgValueSize;
266
323
  }
324
+ /**
325
+ * Convert metrics to Prometheus format
326
+ */
267
327
  toPrometheusFormat(metrics) {
268
328
  const labels = {
269
329
  layer: 'cls|memory|redis',
270
330
  };
271
331
  let output = '';
332
+ // Hit rate
272
333
  output += `# HELP cache_hit_rate Cache hit rate\n`;
273
334
  output += `# TYPE cache_hit_rate gauge\n`;
274
335
  output += `cache_hit_rate ${metrics.hitRate}\n`;
336
+ // Operations
275
337
  output += `# HELP cache_operations_total Total cache operations\n`;
276
338
  output += `# TYPE cache_operations_total counter\n`;
277
339
  output += `cache_operations_total{type="get"} ${metrics.gets}\n`;
278
340
  output += `cache_operations_total{type="set"} ${metrics.sets}\n`;
279
341
  output += `cache_operations_total{type="delete"} ${metrics.deletes}\n`;
280
342
  output += `cache_operations_total{type="clear"} ${metrics.clears}\n`;
343
+ // Latency
281
344
  output += `# HELP cache_latency_ms Cache operation latency\n`;
282
345
  output += `# TYPE cache_latency_ms histogram\n`;
283
346
  output += `cache_latency_ms{quantile="0.5"} ${metrics.avgLatency}\n`;
284
347
  output += `cache_latency_ms{quantile="0.95"} ${metrics.p95Latency}\n`;
285
348
  output += `cache_latency_ms{quantile="0.99"} ${metrics.p99Latency}\n`;
349
+ // Layer metrics
286
350
  Object.entries(metrics.layerMetrics).forEach(([layer, layerMetrics]) => {
287
351
  output += `cache_layer_hits_total{layer="${layer}"} ${layerMetrics.hits}\n`;
288
352
  output += `cache_layer_misses_total{layer="${layer}"} ${layerMetrics.misses}\n`;
@@ -1,22 +1,53 @@
1
+ /**
2
+ * Cache serialization options
3
+ */
1
4
  export interface CacheSerializationOptions {
5
+ /** Whether to compress large values */
2
6
  compress?: boolean;
7
+ /** Compression threshold (bytes) */
3
8
  compressThreshold?: number;
4
9
  }
10
+ /**
11
+ * Serialization result
12
+ */
5
13
  export interface SerializationResult {
6
14
  data: Buffer;
7
15
  compressed: boolean;
8
16
  originalSize: number;
9
17
  serializedSize: number;
10
18
  }
19
+ /**
20
+ * Deserialization result
21
+ */
11
22
  export interface DeserializationResult<T> {
12
23
  data: T;
13
24
  wasCompressed: boolean;
14
25
  }
26
+ /**
27
+ * Simple cache serialization service
28
+ *
29
+ * Handles basic data compression for cache values
30
+ */
15
31
  export declare class CacheSerializationService {
16
32
  private readonly logger;
33
+ /**
34
+ * Serialize and optionally compress cache value
35
+ */
17
36
  serialize<T>(value: T, options?: CacheSerializationOptions): Promise<SerializationResult>;
37
+ /**
38
+ * Deserialize and decompress cache value
39
+ */
18
40
  deserialize<T>(buffer: Buffer): Promise<DeserializationResult<T>>;
41
+ /**
42
+ * Serialize value with proper Date handling
43
+ */
19
44
  private serializeWithDates;
45
+ /**
46
+ * Pre-process object to convert Date objects to serializable format
47
+ */
20
48
  private preProcessDates;
49
+ /**
50
+ * Deserialize value with proper Date restoration
51
+ */
21
52
  private deserializeWithDates;
22
53
  }
@@ -22,18 +22,28 @@ const zlib_1 = require("zlib");
22
22
  const util_1 = require("util");
23
23
  const gzipAsync = (0, util_1.promisify)(zlib_1.gzip);
24
24
  const gunzipAsync = (0, util_1.promisify)(zlib_1.gunzip);
25
+ /**
26
+ * Simple cache serialization service
27
+ *
28
+ * Handles basic data compression for cache values
29
+ */
25
30
  let CacheSerializationService = CacheSerializationService_1 = class CacheSerializationService {
26
31
  constructor() {
27
32
  this.logger = new common_1.Logger(CacheSerializationService_1.name);
28
33
  }
34
+ /**
35
+ * Serialize and optionally compress cache value
36
+ */
29
37
  serialize(value_1) {
30
38
  return __awaiter(this, arguments, void 0, function* (value, options = {}) {
31
39
  const { compress = false, compressThreshold = 1024 } = options;
32
40
  try {
41
+ // Serialize the value with date handling
33
42
  const serialized = this.serializeWithDates(value);
34
43
  const originalSize = Buffer.byteLength(serialized, 'utf8');
35
44
  let data;
36
45
  let wasCompressed = false;
46
+ // Compress if enabled and data is large enough
37
47
  if (compress && originalSize >= compressThreshold) {
38
48
  try {
39
49
  data = yield gzipAsync(Buffer.from(serialized, 'utf8'));
@@ -60,12 +70,17 @@ let CacheSerializationService = CacheSerializationService_1 = class CacheSeriali
60
70
  }
61
71
  });
62
72
  }
73
+ /**
74
+ * Deserialize and decompress cache value
75
+ */
63
76
  deserialize(buffer) {
64
77
  return __awaiter(this, void 0, void 0, function* () {
65
78
  try {
66
79
  let dataString;
67
80
  let wasCompressed = false;
81
+ // Try to detect if data is compressed
68
82
  if (buffer.length >= 2 && buffer[0] === 0x1f && buffer[1] === 0x8b) {
83
+ // Gzip magic numbers
69
84
  dataString = (yield gunzipAsync(buffer)).toString('utf8');
70
85
  wasCompressed = true;
71
86
  }
@@ -84,10 +99,17 @@ let CacheSerializationService = CacheSerializationService_1 = class CacheSeriali
84
99
  }
85
100
  });
86
101
  }
102
+ /**
103
+ * Serialize value with proper Date handling
104
+ */
87
105
  serializeWithDates(value) {
106
+ // Pre-process the value to handle Date objects
88
107
  const processed = this.preProcessDates(value);
89
108
  return JSON.stringify(processed);
90
109
  }
110
+ /**
111
+ * Pre-process object to convert Date objects to serializable format
112
+ */
91
113
  preProcessDates(obj) {
92
114
  if (obj === null || obj === undefined) {
93
115
  return obj;
@@ -107,6 +129,9 @@ let CacheSerializationService = CacheSerializationService_1 = class CacheSeriali
107
129
  }
108
130
  return obj;
109
131
  }
132
+ /**
133
+ * Deserialize value with proper Date restoration
134
+ */
110
135
  deserializeWithDates(dataString) {
111
136
  return JSON.parse(dataString, (key, val) => {
112
137
  if (val && typeof val === 'object' && val.__type === 'Date') {
@@ -1,2 +1,11 @@
1
+ /**
2
+ * Cache constants and injection tokens
3
+ */
4
+ /**
5
+ * Injection token for cache compression enabled flag
6
+ */
1
7
  export declare const CACHE_COMPRESSION_ENABLED: unique symbol;
8
+ /**
9
+ * Injection token for cache compression threshold
10
+ */
2
11
  export declare const CACHE_COMPRESSION_THRESHOLD: unique symbol;
@@ -1,5 +1,14 @@
1
1
  "use strict";
2
+ /**
3
+ * Cache constants and injection tokens
4
+ */
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.CACHE_COMPRESSION_THRESHOLD = exports.CACHE_COMPRESSION_ENABLED = void 0;
7
+ /**
8
+ * Injection token for cache compression enabled flag
9
+ */
4
10
  exports.CACHE_COMPRESSION_ENABLED = Symbol('CACHE_COMPRESSION_ENABLED');
11
+ /**
12
+ * Injection token for cache compression threshold
13
+ */
5
14
  exports.CACHE_COMPRESSION_THRESHOLD = Symbol('CACHE_COMPRESSION_THRESHOLD');