@icd-iot-aicf/nestjs-logger 3.0.0 → 4.0.0-experimental.1

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 (255) hide show
  1. package/README.md +103 -189
  2. package/dist/actions/action-types.d.ts +55 -0
  3. package/dist/{logger/core/dtos/core.dto.js → actions/action-types.js} +1 -1
  4. package/dist/actions/action-types.js.map +1 -0
  5. package/dist/actions/connection.action.d.ts +10 -0
  6. package/dist/actions/connection.action.js +27 -0
  7. package/dist/actions/connection.action.js.map +1 -0
  8. package/dist/actions/core-log-summary.d.ts +7 -0
  9. package/dist/actions/core-log-summary.js +22 -0
  10. package/dist/actions/core-log-summary.js.map +1 -0
  11. package/dist/actions/db.action.d.ts +8 -0
  12. package/dist/actions/db.action.js +40 -0
  13. package/dist/actions/db.action.js.map +1 -0
  14. package/dist/actions/exception.action.d.ts +3 -0
  15. package/dist/actions/exception.action.js +23 -0
  16. package/dist/actions/exception.action.js.map +1 -0
  17. package/dist/actions/http.action.d.ts +9 -0
  18. package/dist/actions/http.action.js +43 -0
  19. package/dist/actions/http.action.js.map +1 -0
  20. package/dist/actions/index.d.ts +10 -0
  21. package/dist/{logger/core/interceptors/interceptors.js → actions/index.js} +11 -4
  22. package/dist/actions/index.js.map +1 -0
  23. package/dist/actions/kafka.action.d.ts +5 -0
  24. package/dist/actions/kafka.action.js +28 -0
  25. package/dist/actions/kafka.action.js.map +1 -0
  26. package/dist/actions/logic.action.d.ts +16 -0
  27. package/dist/actions/logic.action.js +30 -0
  28. package/dist/actions/logic.action.js.map +1 -0
  29. package/dist/actions/rabbitmq.action.d.ts +6 -0
  30. package/dist/actions/rabbitmq.action.js +34 -0
  31. package/dist/actions/rabbitmq.action.js.map +1 -0
  32. package/dist/actions/smtp.action.d.ts +4 -0
  33. package/dist/actions/smtp.action.js +29 -0
  34. package/dist/actions/smtp.action.js.map +1 -0
  35. package/dist/app.module.js.map +1 -1
  36. package/dist/{logger/core/functions/error-reponse.d.ts → common/error-response.d.ts} +1 -1
  37. package/dist/{logger/core/functions/error-reponse.js → common/error-response.js} +2 -2
  38. package/dist/common/error-response.js.map +1 -0
  39. package/dist/common/internal-logs-info.module.js +1 -1
  40. package/dist/common/internal-logs-info.module.js.map +1 -1
  41. package/dist/common/{helper/response.d.ts → response.d.ts} +1 -1
  42. package/dist/common/response.js.map +1 -0
  43. package/dist/common/{dto/result.dto.d.ts → result.dto.d.ts} +1 -1
  44. package/dist/common/{dto/result.dto.js → result.dto.js} +3 -3
  45. package/dist/common/result.dto.js.map +1 -0
  46. package/dist/common/service/common/context.service.js.map +1 -1
  47. package/dist/common/{helper → service}/tools.service.d.ts +2 -2
  48. package/dist/common/{helper → service}/tools.service.js +2 -2
  49. package/dist/common/service/tools.service.js.map +1 -0
  50. package/dist/{utils → common}/tools.d.ts +2 -1
  51. package/dist/{utils → common}/tools.js +22 -8
  52. package/dist/common/tools.js.map +1 -0
  53. package/dist/config/app-log-config.module.js +9 -1
  54. package/dist/config/app-log-config.module.js.map +1 -1
  55. package/dist/config/app-log-config.service.js +1 -1
  56. package/dist/config/app-log-config.service.js.map +1 -1
  57. package/dist/config/configurations.d.ts +2 -3
  58. package/dist/config/configurations.js +0 -1
  59. package/dist/config/configurations.js.map +1 -1
  60. package/dist/{logger/core/functions/global-function.d.ts → context/context.functions.d.ts} +9 -9
  61. package/dist/{logger/core/functions/global-function.js → context/context.functions.js} +29 -31
  62. package/dist/context/context.functions.js.map +1 -0
  63. package/dist/context/external-transaction.store.d.ts +10 -0
  64. package/dist/context/external-transaction.store.js +6 -0
  65. package/dist/context/external-transaction.store.js.map +1 -0
  66. package/dist/context/summary-endpoint.store.d.ts +9 -0
  67. package/dist/context/summary-endpoint.store.js +12 -0
  68. package/dist/context/summary-endpoint.store.js.map +1 -0
  69. package/dist/{common/async-storage/tracnsaction-info.d.ts → context/transaction.store.d.ts} +1 -1
  70. package/dist/context/transaction.store.js +6 -0
  71. package/dist/context/transaction.store.js.map +1 -0
  72. package/dist/database/mongo-hooks.d.ts +37 -0
  73. package/dist/{logger/core/database/hook-ingress.database.js → database/mongo-hooks.js} +33 -17
  74. package/dist/database/mongo-hooks.js.map +1 -0
  75. package/dist/decorators/index.d.ts +3 -0
  76. package/dist/{logger/core/pipes → decorators}/index.js +3 -1
  77. package/dist/decorators/index.js.map +1 -0
  78. package/dist/decorators/masking.decorator.d.ts +1 -0
  79. package/dist/decorators/masking.decorator.js +8 -0
  80. package/dist/decorators/masking.decorator.js.map +1 -0
  81. package/dist/decorators/node-name.decorator.d.ts +8 -0
  82. package/dist/decorators/node-name.decorator.js +36 -0
  83. package/dist/decorators/node-name.decorator.js.map +1 -0
  84. package/dist/{logger/core/decorators/customDecorators.d.ts → decorators/record-name.decorator.d.ts} +4 -8
  85. package/dist/{logger/core/decorators/customDecorators.js → decorators/record-name.decorator.js} +5 -43
  86. package/dist/decorators/record-name.decorator.js.map +1 -0
  87. package/dist/{logger/aicf/services → formats/aicf}/aicf-endpoint.service.d.ts +3 -3
  88. package/dist/{logger/aicf/services → formats/aicf}/aicf-endpoint.service.js +17 -15
  89. package/dist/formats/aicf/aicf-endpoint.service.js.map +1 -0
  90. package/dist/formats/aicf/aicf-format.strategy.d.ts +15 -0
  91. package/dist/formats/aicf/aicf-format.strategy.js +66 -0
  92. package/dist/formats/aicf/aicf-format.strategy.js.map +1 -0
  93. package/dist/{logger/aicf/interceptors/aicf.interceptor.d.ts → formats/aicf/aicf-interceptor.d.ts} +2 -2
  94. package/dist/{logger/aicf/interceptors/aicf.interceptor.js → formats/aicf/aicf-interceptor.js} +4 -5
  95. package/dist/formats/aicf/aicf-interceptor.js.map +1 -0
  96. package/dist/{logger/aicf/dtos → formats/aicf}/aicf-manual.dto.d.ts +2 -2
  97. package/dist/{logger/aicf/dtos → formats/aicf}/aicf-manual.dto.js +12 -12
  98. package/dist/formats/aicf/aicf-manual.dto.js.map +1 -0
  99. package/dist/formats/aicf/aicf-middleware.d.ts +8 -0
  100. package/dist/{logger/aicf/middleware/aicf.middleware.js → formats/aicf/aicf-middleware.js} +10 -9
  101. package/dist/formats/aicf/aicf-middleware.js.map +1 -0
  102. package/dist/{logger/aicf/dtos → formats/aicf}/aicf.dto.d.ts +4 -8
  103. package/dist/{logger/aicf/dtos → formats/aicf}/aicf.dto.js +17 -22
  104. package/dist/formats/aicf/aicf.dto.js.map +1 -0
  105. package/dist/{logger/cloudron/services → formats/cloudron}/cloudron-details-logs.service.d.ts +3 -3
  106. package/dist/{logger/cloudron/services → formats/cloudron}/cloudron-details-logs.service.js +36 -28
  107. package/dist/formats/cloudron/cloudron-details-logs.service.js.map +1 -0
  108. package/dist/formats/cloudron/cloudron-format.strategy.d.ts +15 -0
  109. package/dist/formats/cloudron/cloudron-format.strategy.js +85 -0
  110. package/dist/formats/cloudron/cloudron-format.strategy.js.map +1 -0
  111. package/dist/{logger/cloudron/intercepters/cloudron.interceptor.d.ts → formats/cloudron/cloudron-interceptor.d.ts} +3 -3
  112. package/dist/{logger/cloudron/intercepters/cloudron.interceptor.js → formats/cloudron/cloudron-interceptor.js} +5 -6
  113. package/dist/formats/cloudron/cloudron-interceptor.js.map +1 -0
  114. package/dist/{logger/cloudron/dtos/cauldron-manual.dto.d.ts → formats/cloudron/cloudron-manual.dto.d.ts} +5 -5
  115. package/dist/{logger/cloudron/dtos/cauldron-manual.dto.js → formats/cloudron/cloudron-manual.dto.js} +67 -62
  116. package/dist/formats/cloudron/cloudron-manual.dto.js.map +1 -0
  117. package/dist/{logger/cloudron/middleware/cloudron.middleware.d.ts → formats/cloudron/cloudron-middleware.d.ts} +5 -5
  118. package/dist/{logger/cloudron/middleware/cloudron.middleware.js → formats/cloudron/cloudron-middleware.js} +13 -14
  119. package/dist/formats/cloudron/cloudron-middleware.js.map +1 -0
  120. package/dist/{logger/cloudron/services → formats/cloudron}/cloudron-summary-logs.service.d.ts +1 -1
  121. package/dist/{logger/cloudron/services → formats/cloudron}/cloudron-summary-logs.service.js +6 -6
  122. package/dist/formats/cloudron/cloudron-summary-logs.service.js.map +1 -0
  123. package/dist/{logger/cloudron/dtos/cauldron.dto.d.ts → formats/cloudron/cloudron.dto.d.ts} +12 -12
  124. package/dist/{logger/cloudron/dtos/cauldron.dto.js → formats/cloudron/cloudron.dto.js} +29 -28
  125. package/dist/formats/cloudron/cloudron.dto.js.map +1 -0
  126. package/dist/formats/format.interface.d.ts +62 -0
  127. package/dist/formats/format.interface.js +3 -0
  128. package/dist/formats/format.interface.js.map +1 -0
  129. package/dist/formats/format.registry.d.ts +6 -0
  130. package/dist/formats/format.registry.js +16 -0
  131. package/dist/formats/format.registry.js.map +1 -0
  132. package/dist/index.d.ts +20 -21
  133. package/dist/index.js +31 -21
  134. package/dist/index.js.map +1 -1
  135. package/dist/logger/axios-logs.interceptor.d.ts +12 -0
  136. package/dist/logger/axios-logs.interceptor.js +44 -0
  137. package/dist/logger/axios-logs.interceptor.js.map +1 -0
  138. package/dist/logger/{core/middleware/base-http.middleware.d.ts → base-http.middleware.d.ts} +7 -7
  139. package/dist/logger/{core/middleware/base-http.middleware.js → base-http.middleware.js} +7 -8
  140. package/dist/logger/base-http.middleware.js.map +1 -0
  141. package/dist/logger/http-logs.middleware.d.ts +17 -0
  142. package/dist/logger/http-logs.middleware.js +49 -0
  143. package/dist/logger/http-logs.middleware.js.map +1 -0
  144. package/dist/logger/{core/guard/logger.guard.js → logger.guard.js} +3 -3
  145. package/dist/logger/logger.guard.js.map +1 -0
  146. package/dist/logger/logger.module.js +16 -25
  147. package/dist/logger/logger.module.js.map +1 -1
  148. package/dist/logger/logger.service.js +1 -1
  149. package/dist/logger/logger.service.js.map +1 -1
  150. package/dist/{logger/core/pipes/masking-logs → masking}/masking-logs.pipe.js +3 -3
  151. package/dist/masking/masking-logs.pipe.js.map +1 -0
  152. package/dist/metrics/metrics-manual.service.d.ts +2 -2
  153. package/dist/metrics/metrics-manual.service.js +3 -3
  154. package/dist/metrics/metrics-manual.service.js.map +1 -1
  155. package/dist/metrics/metrics.middleware.d.ts +2 -2
  156. package/dist/metrics/metrics.middleware.js +4 -4
  157. package/dist/metrics/metrics.middleware.js.map +1 -1
  158. package/dist/tsconfig.build.tsbuildinfo +1 -1
  159. package/package.json +24 -4
  160. package/snapshot-diff.txt +41 -0
  161. package/.babelrc +0 -20
  162. package/.env +0 -0
  163. package/dist/common/async-storage/external-transaction-info.d.ts +0 -11
  164. package/dist/common/async-storage/external-transaction-info.js +0 -6
  165. package/dist/common/async-storage/external-transaction-info.js.map +0 -1
  166. package/dist/common/async-storage/summaryEndpoint-info.d.ts +0 -4
  167. package/dist/common/async-storage/summaryEndpoint-info.js +0 -10
  168. package/dist/common/async-storage/summaryEndpoint-info.js.map +0 -1
  169. package/dist/common/async-storage/tracnsaction-info.js +0 -6
  170. package/dist/common/async-storage/tracnsaction-info.js.map +0 -1
  171. package/dist/common/dto/result.dto.js.map +0 -1
  172. package/dist/common/helper/error.d.ts +0 -4
  173. package/dist/common/helper/error.js +0 -15
  174. package/dist/common/helper/error.js.map +0 -1
  175. package/dist/common/helper/response.js.map +0 -1
  176. package/dist/common/helper/tools.d.ts +0 -8
  177. package/dist/common/helper/tools.js +0 -98
  178. package/dist/common/helper/tools.js.map +0 -1
  179. package/dist/common/helper/tools.service.js.map +0 -1
  180. package/dist/logger/aicf/dtos/aicf-manual.dto.js.map +0 -1
  181. package/dist/logger/aicf/dtos/aicf.dto.js.map +0 -1
  182. package/dist/logger/aicf/interceptors/aicf-amqp.interceptor.d.ts +0 -7
  183. package/dist/logger/aicf/interceptors/aicf-amqp.interceptor.js +0 -78
  184. package/dist/logger/aicf/interceptors/aicf-amqp.interceptor.js.map +0 -1
  185. package/dist/logger/aicf/interceptors/aicf.interceptor.js.map +0 -1
  186. package/dist/logger/aicf/middleware/aicf.middleware.d.ts +0 -8
  187. package/dist/logger/aicf/middleware/aicf.middleware.js.map +0 -1
  188. package/dist/logger/aicf/services/aicf-endpoint.service.js.map +0 -1
  189. package/dist/logger/cloudron/decorators/cloudron.decorators.d.ts +0 -0
  190. package/dist/logger/cloudron/decorators/cloudron.decorators.js +0 -1
  191. package/dist/logger/cloudron/decorators/cloudron.decorators.js.map +0 -1
  192. package/dist/logger/cloudron/dtos/cauldron-manual.dto.js.map +0 -1
  193. package/dist/logger/cloudron/dtos/cauldron.dto.js.map +0 -1
  194. package/dist/logger/cloudron/global/cloudron.global.d.ts +0 -0
  195. package/dist/logger/cloudron/global/cloudron.global.js +0 -1
  196. package/dist/logger/cloudron/global/cloudron.global.js.map +0 -1
  197. package/dist/logger/cloudron/intercepters/cloudron.interceptor.js.map +0 -1
  198. package/dist/logger/cloudron/middleware/cloudron.middleware.js.map +0 -1
  199. package/dist/logger/cloudron/services/cloudron-details-logs.service.js.map +0 -1
  200. package/dist/logger/cloudron/services/cloudron-summary-logs.service.js.map +0 -1
  201. package/dist/logger/core/database/hook-ingress.database.d.ts +0 -8
  202. package/dist/logger/core/database/hook-ingress.database.js.map +0 -1
  203. package/dist/logger/core/decorators/customDecorators.js.map +0 -1
  204. package/dist/logger/core/dtos/core.dto.d.ts +0 -86
  205. package/dist/logger/core/dtos/core.dto.js.map +0 -1
  206. package/dist/logger/core/dtos/log-entry-class.d.ts +0 -11
  207. package/dist/logger/core/dtos/log-entry-class.js +0 -15
  208. package/dist/logger/core/dtos/log-entry-class.js.map +0 -1
  209. package/dist/logger/core/enum/enum.d.ts +0 -75
  210. package/dist/logger/core/enum/enum.js +0 -307
  211. package/dist/logger/core/enum/enum.js.map +0 -1
  212. package/dist/logger/core/functions/error-reponse.js.map +0 -1
  213. package/dist/logger/core/functions/global-function.js.map +0 -1
  214. package/dist/logger/core/guard/logger.guard.js.map +0 -1
  215. package/dist/logger/core/interceptors/amqp.interceptor.d.ts +0 -6
  216. package/dist/logger/core/interceptors/amqp.interceptor.js +0 -46
  217. package/dist/logger/core/interceptors/amqp.interceptor.js.map +0 -1
  218. package/dist/logger/core/interceptors/core-logs.interceptor.d.ts +0 -18
  219. package/dist/logger/core/interceptors/core-logs.interceptor.js +0 -70
  220. package/dist/logger/core/interceptors/core-logs.interceptor.js.map +0 -1
  221. package/dist/logger/core/interceptors/http.interceptor.d.ts +0 -5
  222. package/dist/logger/core/interceptors/http.interceptor.js +0 -30
  223. package/dist/logger/core/interceptors/http.interceptor.js.map +0 -1
  224. package/dist/logger/core/interceptors/interceptors.d.ts +0 -3
  225. package/dist/logger/core/interceptors/interceptors.js.map +0 -1
  226. package/dist/logger/core/middleware/base-http.middleware.js.map +0 -1
  227. package/dist/logger/core/middleware/http-logs-middleware.service.d.ts +0 -19
  228. package/dist/logger/core/middleware/http-logs-middleware.service.js +0 -61
  229. package/dist/logger/core/middleware/http-logs-middleware.service.js.map +0 -1
  230. package/dist/logger/core/module/amqp/amqp.module.d.ts +0 -2
  231. package/dist/logger/core/module/amqp/amqp.module.js +0 -43
  232. package/dist/logger/core/module/amqp/amqp.module.js.map +0 -1
  233. package/dist/logger/core/pipes/index.d.ts +0 -1
  234. package/dist/logger/core/pipes/index.js.map +0 -1
  235. package/dist/logger/core/pipes/masking-logs/masking-logs.pipe.js.map +0 -1
  236. package/dist/logger/core/services/summary-flush.service.d.ts +0 -8
  237. package/dist/logger/core/services/summary-flush.service.js +0 -31
  238. package/dist/logger/core/services/summary-flush.service.js.map +0 -1
  239. package/dist/logger/esb/dtos/logger.esb.dto.d.ts +0 -136
  240. package/dist/logger/esb/dtos/logger.esb.dto.js +0 -99
  241. package/dist/logger/esb/dtos/logger.esb.dto.js.map +0 -1
  242. package/dist/logger/esb/intercepters/esb.interceptor.d.ts +0 -9
  243. package/dist/logger/esb/intercepters/esb.interceptor.js +0 -36
  244. package/dist/logger/esb/intercepters/esb.interceptor.js.map +0 -1
  245. package/dist/logger/esb/middleware/esb.middleware.d.ts +0 -10
  246. package/dist/logger/esb/middleware/esb.middleware.js +0 -64
  247. package/dist/logger/esb/middleware/esb.middleware.js.map +0 -1
  248. package/dist/logger/esb/services/external-logs-esb.service.d.ts +0 -10
  249. package/dist/logger/esb/services/external-logs-esb.service.js +0 -98
  250. package/dist/logger/esb/services/external-logs-esb.service.js.map +0 -1
  251. package/dist/utils/tools.js.map +0 -1
  252. package/tsconfig.build.json +0 -4
  253. /package/dist/common/{helper/response.js → response.js} +0 -0
  254. /package/dist/logger/{core/guard/logger.guard.d.ts → logger.guard.d.ts} +0 -0
  255. /package/dist/{logger/core/pipes/masking-logs → masking}/masking-logs.pipe.d.ts +0 -0
package/README.md CHANGED
@@ -1,248 +1,162 @@
1
1
  # @icd-iot-aicf/nestjs-logger
2
2
 
3
- NestJS logging and metrics toolkit with opinionated formats (AICF, Cloudron, ESB), Winston-based logger, and Prometheus metrics. Ships with ready-to-use middleware, interceptors, and decorators for structured logs and service KPIs.
3
+ ![Build Status](https://img.shields.io/github/actions/workflow/status/corp-ais/IoT-Common-Framework-AICF-Logging-Nest-JS/ci.yml?branch=main&style=flat-square)
4
+ ![License](https://img.shields.io/github/license/corp-ais/IoT-Common-Framework-AICF-Logging-Nest-JS?style=flat-square)
5
+ ![Version](https://img.shields.io/npm/v/@icd-iot-aicf/nestjs-logger?style=flat-square)
6
+ ![Node](https://img.shields.io/node/v/@icd-iot-aicf/nestjs-logger?style=flat-square)
4
7
 
5
- - Logger: Winston, JSON payloads, async-context aware
6
- - Formats: aicf | cloudron | esb
7
- - Metrics: Prometheus counters/gauges, HTTP middleware, manual API
8
- - Extras: standard response codes, decorators, guards, utilities
8
+ A structured logging and metrics library for NestJS microservices in the ICD IoT platform.
9
+ It provides automatic request/response logging with team-standard format patterns and a fluent manual logging API — all wired in with a single module import.
9
10
 
11
+ ---
10
12
 
11
- ## Install
13
+ ## Key Features
14
+
15
+ - **Three log format strategies** — switch between `AICF`, `Cloudron`, and `ESB` output shapes via config; each format is fully consistent across all log events.
16
+ - **Automatic HTTP & AMQP logging** — middleware and interceptors capture inbound/outbound requests, correlation IDs, and timing with microsecond precision out of the box.
17
+ - **AsyncLocalStorage context propagation** — per-request transaction info, endpoint summaries, and external call metadata flow through the call stack with zero manual threading.
18
+ - **Prometheus metrics** — built-in HTTP counters and gauges via `MetricsModule`; extend with `MetricsManualService` for custom business metrics.
19
+ - **Manual logging API** — `CustomLoggerService` exposes `log()`, `warn()`, `error()`, `debug()`, and `verbose()` with typed action DTOs (`HttpAction`, `DBAction`, `RabbitMQAction`, and more).
20
+
21
+ ---
22
+
23
+ ## Installation
12
24
 
13
25
  ```bash
14
26
  npm install @icd-iot-aicf/nestjs-logger
15
27
  ```
16
- Or
17
- ```bash
18
- yarn add @icd-iot-aicf/nestjs-logger
19
- ```
20
28
 
21
- Requirements:
22
- - NestJS v11
23
- - Express platform (default for Nest)
24
- - Optional: set env C20_NAME to prefix Prometheus metric names
29
+ > **Peer dependencies** — ensure your project has these installed:
30
+ > ```bash
31
+ > npm install @nestjs/common @nestjs/core reflect-metadata
32
+ > ```
25
33
 
34
+ ---
26
35
 
27
- ## Quick start
36
+ ## Quick Start
28
37
 
29
- 1) Configure the library (global) using AppLogConfigModule
30
-
31
- ```ts
32
- import { Module, MiddlewareConsumer } from '@nestjs/common';
33
- import {
34
- AppLogConfigModule,
35
- LoggerModule,
36
- MetricsModule,
37
- HTTPLogsMiddleware,
38
- HTTPMetricsMiddleware,
39
- } from '@icd-iot-aicf/nestjs-logger';
40
- import { FORMAT_TYPE, DEBUG_MODE } from '@icd-iot-aicf/nestjs-logger';
38
+ ```typescript
39
+ // app.module.ts
40
+ import { Module } from '@nestjs/common';
41
+ import { AppLogConfigModule, FORMAT_TYPE } from '@icd-iot-aicf/nestjs-logger';
41
42
 
42
43
  @Module({
43
44
  imports: [
44
45
  AppLogConfigModule.forRoot({
45
- appName: 'my-app',
46
- componentName: 'http-api',
47
- format: FORMAT_TYPE.AICF, // or FORMAT_TYPE.CLOUDRON, FORMAT_TYPE.ESB
48
- logLevel: 'info', // 'info' | 'warning' | 'error' | 'debug'
49
- debugLib: DEBUG_MODE.DISABLE,
50
- // Optional: map result structure if your response is not the default
51
- // structureResponse: { resultCode: 'resultCode', httpCode: 'httpCode', resultDescription: 'resultDescription' },
46
+ format: FORMAT_TYPE.AICF,
47
+ appName: 'my-service',
48
+ componentName: 'api',
52
49
  }),
53
- LoggerModule,
54
- MetricsModule.forRoot({ path: '/metrics' }), // optional options
55
50
  ],
56
51
  })
57
- export class AppModule {
58
- configure(consumer: MiddlewareConsumer) {
59
- consumer
60
- .apply(HTTPLogsMiddleware, HTTPMetricsMiddleware)
61
- .forRoutes('*');
62
- }
63
- }
64
- ```
65
-
66
- 2) Register the HTTP interceptor (correlation headers)
67
-
68
- ```ts
69
- // main.ts
70
- import { NestFactory } from '@nestjs/core';
71
- import { AppModule } from './app.module';
72
- import { HttpInterceptor } from '@icd-iot-aicf/nestjs-logger';
73
-
74
- async function bootstrap() {
75
- const app = await NestFactory.create(AppModule);
76
- app.useGlobalInterceptors(new HttpInterceptor());
77
- await app.listen(3000);
78
- }
79
- bootstrap();
52
+ export class AppModule {}
80
53
  ```
81
54
 
82
- 3) Use decorators to name your operations (recommended for better logs/metrics)
83
-
84
- ```ts
85
- import { Controller, Get } from '@nestjs/common';
86
- import { RecordName, CommandInfo } from '@icd-iot-aicf/nestjs-logger';
87
-
88
- @Controller('health')
89
- export class HealthController {
90
- @Get()
91
- @RecordName('HealthCheck')
92
- @CommandInfo({ CommandName: 'HealthCheck', Description: 'API liveness probe' })
93
- ping() {
94
- return { ok: true };
95
- }
96
- }
97
- ```
98
-
99
-
100
- ## Logger usage
101
-
102
- Inject CustomLoggerService and log structured JSON or plain strings. The library will set appropriate level fields for the chosen format.
103
-
104
- ```ts
55
+ ```typescript
56
+ // my.service.ts
105
57
  import { Injectable } from '@nestjs/common';
106
- import { CustomLoggerService } from '@icd-iot-aicf/nestjs-logger';
58
+ import { CustomLoggerService, HttpAction, RESULTS } from '@icd-iot-aicf/nestjs-logger';
107
59
 
108
60
  @Injectable()
109
- export class ExampleService {
61
+ export class MyService {
110
62
  constructor(private readonly logger: CustomLoggerService) {}
111
63
 
112
- doWork() {
113
- this.logger.log({ message: 'work started' });
114
- // ...
115
- this.logger.warn({ message: 'slower than expected' });
116
- // ...
117
- this.logger.error({ message: 'failure' }, 'optional-stack-trace');
118
- }
119
- }
120
- ```
64
+ async getUser(id: string) {
65
+ this.logger.log('Fetching user', HttpAction.GET({ userId: id }));
121
66
 
122
- Notes:
123
- - log() is info level. Other methods: warn(), debug(), verbose(), error(message, trace?).
124
- - Prefer structured objects; strings also work but won’t include format extras.
67
+ // ... business logic ...
125
68
 
126
-
127
- ## Automatic HTTP logs
128
-
129
- - HTTPLogsMiddleware emits inbound/outbound logs per request using the configured format (AICF/Cloudron/ESB).
130
- - Use @RecordName to categorize metrics/logs by endpoint/business name.
131
- - HttpInterceptor reads correlation headers:
132
- - x-ais-orderref: transaction id
133
- - x-origin-session: session chain (if present)
134
-
135
-
136
- ## Metrics
137
-
138
- The library exposes a Prometheus endpoint (via @willsoto/nestjs-prometheus) and tracks:
139
- - request totals by path/method/status
140
- - time-bucket counters
141
- - concurrent requests (current and max)
142
-
143
- Setup was done in Quick start. Ensure C20_NAME is set in your environment to prefix metric names.
144
-
145
- Manual metrics API:
146
-
147
- ```ts
148
- import { Injectable } from '@nestjs/common';
149
- import { MetricsManualService } from '@icd-iot-aicf/nestjs-logger';
150
- import { RESULTS } from '@icd-iot-aicf/nestjs-logger';
151
-
152
- @Injectable()
153
- export class TaskRunner {
154
- constructor(private readonly metrics: MetricsManualService) {}
155
-
156
- async run() {
157
- this.metrics.increment();
158
- try {
159
- // ... your work
160
- this.metrics.finish('POST', RESULTS.SUCCESS);
161
- } catch (e) {
162
- this.metrics.finish('POST', RESULTS.INTERNAL_SERVER_ERROR);
163
- throw e;
164
- }
69
+ this.logger.log('User fetched', HttpAction.GET({ result: RESULTS.SUCCESS }));
165
70
  }
166
71
  }
167
72
  ```
168
73
 
169
- Customize metrics endpoint:
74
+ ---
170
75
 
171
- ```ts
172
- MetricsModule.forRoot({ path: '/custom-metrics', defaultMetrics: { enabled: true } });
173
- ```
76
+ ## Configuration
174
77
 
78
+ | Option | Type | Description |
79
+ |---|---|---|
80
+ | `format` | `FORMAT_TYPE` | Log output shape: `AICF` \| `Cloudron` \| `ESB` |
81
+ | `appName` | `string` | Application name written into every log entry |
82
+ | `componentName` | `string` | Sub-component or service layer identifier |
83
+ | `debugMode` | `DEBUG_MODE` | Controls verbosity; defaults to `OFF` |
175
84
 
176
- ## Decorators for external calls
85
+ ---
177
86
 
178
- Tag outbound calls (dependencies) to enrich detail/endpoint logs.
87
+ ## Automatic Logging
179
88
 
180
- ```ts
181
- import { EXTCMDName, NodeName } from '@icd-iot-aicf/nestjs-logger';
89
+ Register the middleware and interceptors in your module to get zero-config HTTP logging:
182
90
 
183
- @NodeName('user-service')
184
- export class UserClient {
185
- @EXTCMDName({ cmdName: 'GetUser', action: 'HTTP', subAction: 'GET' })
186
- async getUser() {
187
- // call your HTTP client here
91
+ ```typescript
92
+ // app.module.ts
93
+ import {
94
+ MiddlewareConsumer,
95
+ Module,
96
+ NestModule,
97
+ } from '@nestjs/common';
98
+ import {
99
+ AppLogConfigModule,
100
+ HTTPLogsMiddleware,
101
+ FORMAT_TYPE,
102
+ } from '@icd-iot-aicf/nestjs-logger';
103
+
104
+ @Module({
105
+ imports: [
106
+ AppLogConfigModule.forRoot({ format: FORMAT_TYPE.AICF, appName: 'my-service', componentName: 'api' }),
107
+ ],
108
+ })
109
+ export class AppModule implements NestModule {
110
+ configure(consumer: MiddlewareConsumer) {
111
+ consumer.apply(HTTPLogsMiddleware).forRoutes('*');
188
112
  }
189
113
  }
190
114
  ```
191
115
 
116
+ Every inbound request will automatically emit structured logs for:
117
+ - Inbound / outbound HTTP with correlation headers (`x-ais-orderref`, `x-origin-session`)
118
+ - Timing in microseconds
119
+ - Endpoint-level summary flush on response
192
120
 
193
- ## Standard responses (helpers)
121
+ ---
194
122
 
195
- Use pre-defined operation statuses for consistency.
123
+ ## Prometheus Metrics
196
124
 
197
- ```ts
198
- import { RESULTS } from '@icd-iot-aicf/nestjs-logger';
199
- import { HttpCode } from '@nestjs/common';
125
+ ```typescript
126
+ import { MetricsModule } from '@icd-iot-aicf/nestjs-logger';
200
127
 
201
- // in controller method
202
- @HttpCode(RESULTS.SUCCESS.httpCode)
203
- get() {
204
- return { ...RESULTS.SUCCESS, data: { ok: true } };
205
- }
128
+ MetricsModule.forRoot({ path: '/metrics', defaultMetrics: true })
206
129
  ```
207
130
 
208
- If your response uses different field names, set structureResponse in AppLogConfigModule.forRoot so metrics can extract resultCode/httpCode.
209
-
210
-
211
- ## Configuration reference
131
+ Custom metrics via `MetricsManualService`:
212
132
 
213
- AppLogConfigModule.forRoot({ ...config })
214
- - appName: string (required)
215
- - componentName: string (required)
216
- - format: FORMAT_TYPE.AICF | FORMAT_TYPE.CLOUDRON | FORMAT_TYPE.ESB (required)
217
- - logLevel?: 'info' | 'warning' | 'error' | 'debug' (default 'info')
218
- - debugLib?: DEBUG_MODE (default DISABLE)
219
- - structureResponse?: { resultCode?: string; httpCode?: string; resultDescription?: string }
220
-
221
- Common enums
222
- ```ts
223
- import { FORMAT_TYPE, DEBUG_MODE } from '@icd-iot-aicf/nestjs-logger';
133
+ ```typescript
134
+ this.metrics.increment('orders_created_total', { status: 'success' });
224
135
  ```
225
136
 
137
+ ---
138
+
139
+ ## Log Action Types
226
140
 
227
- ## What’s exported
141
+ | Class | Methods |
142
+ |---|---|
143
+ | `HttpAction` | `.GET()` `.POST()` `.PUT()` `.PATCH()` `.DELETE()` |
144
+ | `DBAction` | `.CREATE()` `.READ()` `.UPDATE()` `.REMOVE()` |
145
+ | `RabbitMQAction` | `.PRODUCE()` `.CONSUME()` |
146
+ | `KafkaAction` | `.PRODUCE()` `.CONSUME()` |
147
+ | `LogicAction` | `.FUNCTION()` `.CHECKPOINT()` |
148
+ | `ExceptionAction` | `.LOG()` |
228
149
 
229
- From the package root:
230
- - Modules: LoggerModule, MetricsModule, AppLogConfigModule
231
- - Services: CustomLoggerService, MetricsService, MetricsManualService
232
- - Middleware: HTTPLogsMiddleware, HTTPMetricsMiddleware
233
- - Interceptors: HttpInterceptor, CoreLogsInterceptor, AmqpInterceptor
234
- - Decorators: RecordName, CommandInfo, EXTCMDName, NodeName, RecordManual
235
- - Config: FORMAT_TYPE, DEBUG_MODE
236
- - Helpers: RESULTS, STATUS_METHOD, dayJs
150
+ ---
237
151
 
152
+ ## Benchmarks
238
153
 
239
- ## Troubleshooting
240
- - No logs? Ensure AppLogConfigModule.forRoot is imported before LoggerModule and that HTTPLogsMiddleware is applied.
241
- - Missing correlation? Register HttpInterceptor globally.
242
- - Metrics labels show undefined path? Use @RecordName; also ensure your controllers are hit after middleware.
243
- - Metric names start with undefined_: set env C20_NAME in your process.
244
- - Cloudron/ESB format specifics: pick FORMAT_TYPE matching your deployment pipeline; the library adjusts level fields automatically.
154
+ > _Performance benchmarks coming soon._
155
+ >
156
+ > Planned metrics: log throughput (events/sec), middleware overhead (ms/req), memory footprint under load.
245
157
 
158
+ ---
246
159
 
247
160
  ## License
248
- UNLICENSED
161
+
162
+ MIT © ICD IoT Platform Team
@@ -0,0 +1,55 @@
1
+ export interface HTTPRequestObject {
2
+ url: string;
3
+ headers: Record<string, any>;
4
+ queryString: Record<string, any>;
5
+ routeParameters: Record<string, any>;
6
+ payload: Record<string, any>;
7
+ }
8
+ export interface HTTPResponseObject {
9
+ httpStatusCode: string | number;
10
+ headers: Record<string, any>;
11
+ payload: Record<string, any>;
12
+ }
13
+ export interface AMQPRequestObject {
14
+ method: string;
15
+ url: string;
16
+ headers: Record<string, any>;
17
+ exchange: string;
18
+ routingKey: string;
19
+ payload: Record<string, any>;
20
+ }
21
+ export interface AMQPResponseObject {
22
+ acknowledge: boolean;
23
+ }
24
+ export interface SMTPRequestObject {
25
+ method: string;
26
+ url: string;
27
+ headers: Record<string, any>;
28
+ payload: {
29
+ to: string;
30
+ from: string;
31
+ subject: string;
32
+ context: string;
33
+ };
34
+ }
35
+ export interface SMTPResponseObject {
36
+ success: boolean;
37
+ smtpCode: string;
38
+ message: string;
39
+ }
40
+ export interface DBRequestObject {
41
+ method: string;
42
+ payload: Record<string, any>;
43
+ }
44
+ export interface ActionData<REQ, RES> {
45
+ startTime?: number;
46
+ endTime?: number;
47
+ message?: string;
48
+ additionalInfo?: any;
49
+ requestObject?: REQ;
50
+ responseObject?: RES;
51
+ }
52
+ export declare enum LOGIC_TYPE {
53
+ FUNCTION = "FUNCTION",
54
+ CHECKPOINT = "CHECKPOINT"
55
+ }
@@ -6,4 +6,4 @@ var LOGIC_TYPE;
6
6
  LOGIC_TYPE["FUNCTION"] = "FUNCTION";
7
7
  LOGIC_TYPE["CHECKPOINT"] = "CHECKPOINT";
8
8
  })(LOGIC_TYPE || (exports.LOGIC_TYPE = LOGIC_TYPE = {}));
9
- //# sourceMappingURL=core.dto.js.map
9
+ //# sourceMappingURL=action-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-types.js","sourceRoot":"","sources":["../../src/actions/action-types.ts"],"names":[],"mappings":";;;AAuDA,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,mCAAqB,CAAA;IACrB,uCAAyB,CAAA;AAC3B,CAAC,EAHW,UAAU,0BAAV,UAAU,QAGrB"}
@@ -0,0 +1,10 @@
1
+ export interface ConnectionInformation {
2
+ message: string;
3
+ protocol: string;
4
+ source: string;
5
+ }
6
+ export declare class ConnectionAction {
7
+ static CONNECTED(data: ConnectionInformation): any;
8
+ static DISCONNECTED(data: ConnectionInformation): any;
9
+ private static map;
10
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConnectionAction = void 0;
4
+ const format_registry_1 = require("../formats/format.registry");
5
+ class ConnectionAction {
6
+ static CONNECTED(data) {
7
+ return this.map('CONNECTED', data);
8
+ }
9
+ static DISCONNECTED(data) {
10
+ return this.map('DISCONNECTED', data);
11
+ }
12
+ static map(connectType, data) {
13
+ try {
14
+ const logData = {
15
+ ...data,
16
+ recordSubType: connectType,
17
+ action: 'CONNECTION',
18
+ };
19
+ return format_registry_1.LogFormatRegistry.get().buildConnectionLog(logData);
20
+ }
21
+ catch {
22
+ return {};
23
+ }
24
+ }
25
+ }
26
+ exports.ConnectionAction = ConnectionAction;
27
+ //# sourceMappingURL=connection.action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.action.js","sourceRoot":"","sources":["../../src/actions/connection.action.ts"],"names":[],"mappings":";;;AAAA,gEAA+D;AAS/D,MAAa,gBAAgB;IAC3B,MAAM,CAAC,SAAS,CAAC,IAA2B;QAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IACD,MAAM,CAAC,YAAY,CAAC,IAA2B;QAC7C,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IAEO,MAAM,CAAC,GAAG,CAAC,WAAmB,EAAE,IAAS;QAC/C,IAAI,CAAC;YACH,MAAM,OAAO,GAAsB;gBACjC,GAAG,IAAI;gBACP,aAAa,EAAE,WAAW;gBAC1B,MAAM,EAAE,YAAY;aACrB,CAAC;YACF,OAAO,mCAAiB,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC7D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AApBD,4CAoBC"}
@@ -0,0 +1,7 @@
1
+ import { DetailsFlushService } from '../common/result.dto';
2
+ export declare class CoreLogSummaryFactory {
3
+ static getInstance<REQ, RES>(detail: DetailsFlushService<REQ, RES>): {
4
+ detail?: any;
5
+ summary?: any;
6
+ };
7
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CoreLogSummaryFactory = void 0;
4
+ const format_registry_1 = require("../formats/format.registry");
5
+ class CoreLogSummaryFactory {
6
+ static getInstance(detail) {
7
+ try {
8
+ const data = {
9
+ request: detail.request,
10
+ response: detail.response,
11
+ serviceEndTime: detail.serviceEndTime,
12
+ resultCodeFormat: detail.resultCodeFormat,
13
+ };
14
+ return format_registry_1.LogFormatRegistry.get().buildSummaryLog(data) ?? {};
15
+ }
16
+ catch {
17
+ return {};
18
+ }
19
+ }
20
+ }
21
+ exports.CoreLogSummaryFactory = CoreLogSummaryFactory;
22
+ //# sourceMappingURL=core-log-summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-log-summary.js","sourceRoot":"","sources":["../../src/actions/core-log-summary.ts"],"names":[],"mappings":";;;AAAA,gEAA+D;AAI/D,MAAa,qBAAqB;IAChC,MAAM,CAAC,WAAW,CAChB,MAAqC;QAErC,IAAI,CAAC;YACH,MAAM,IAAI,GAAqB;gBAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;aAC1C,CAAC;YACF,OAAO,mCAAiB,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AAhBD,sDAgBC"}
@@ -0,0 +1,8 @@
1
+ import { ActionData, DBRequestObject } from './action-types';
2
+ export declare class DBAction {
3
+ static CREATE(data: ActionData<DBRequestObject, any>): any;
4
+ static READ(data: ActionData<DBRequestObject, any>): any;
5
+ static UPDATE(data: ActionData<DBRequestObject, any>): any;
6
+ static REMOVE(data: ActionData<DBRequestObject, any>): any;
7
+ private static map;
8
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DBAction = void 0;
4
+ const format_registry_1 = require("../formats/format.registry");
5
+ const aicf_dto_1 = require("../formats/aicf/aicf.dto");
6
+ class DBAction {
7
+ static CREATE(data) {
8
+ return this.map(aicf_dto_1.SUB_DB_ACTION.CREATE, data);
9
+ }
10
+ static READ(data) {
11
+ return this.map(aicf_dto_1.SUB_DB_ACTION.READ, data);
12
+ }
13
+ static UPDATE(data) {
14
+ return this.map(aicf_dto_1.SUB_DB_ACTION.UPDATE, data);
15
+ }
16
+ static REMOVE(data) {
17
+ return this.map(aicf_dto_1.SUB_DB_ACTION.REMOVE, data);
18
+ }
19
+ static map(method, data) {
20
+ try {
21
+ const logData = {
22
+ ...data,
23
+ action: aicf_dto_1.ACTION_TYPE.DATABASE,
24
+ subAction: method,
25
+ summaryInfoAdditional: data.requestObject
26
+ ? {
27
+ url: '',
28
+ statusCode: '20000:The requested operation was successfully.',
29
+ }
30
+ : undefined,
31
+ };
32
+ return format_registry_1.LogFormatRegistry.get().buildDetailLog(logData);
33
+ }
34
+ catch {
35
+ return {};
36
+ }
37
+ }
38
+ }
39
+ exports.DBAction = DBAction;
40
+ //# sourceMappingURL=db.action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.action.js","sourceRoot":"","sources":["../../src/actions/db.action.ts"],"names":[],"mappings":";;;AACA,gEAA+D;AAE/D,uDAAsE;AAGtE,MAAa,QAAQ;IACnB,MAAM,CAAC,MAAM,CAAC,IAAsC;QAClD,OAAO,IAAI,CAAC,GAAG,CAAC,wBAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,IAAsC;QAChD,OAAO,IAAI,CAAC,GAAG,CAAC,wBAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,IAAsC;QAClD,OAAO,IAAI,CAAC,GAAG,CAAC,wBAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,IAAsC;QAClD,OAAO,IAAI,CAAC,GAAG,CAAC,wBAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAEO,MAAM,CAAC,GAAG,CAAC,MAAqB,EAAE,IAAS;QACjD,IAAI,CAAC;YACH,MAAM,OAAO,GAAkB;gBAC7B,GAAG,IAAI;gBACP,MAAM,EAAE,sBAAW,CAAC,QAAQ;gBAC5B,SAAS,EAAE,MAAM;gBACjB,qBAAqB,EAAE,IAAI,CAAC,aAAa;oBACvC,CAAC,CAAC;wBACE,GAAG,EAAE,EAAE;wBACP,UAAU,EAAE,iDAAiD;qBAC9D;oBACH,CAAC,CAAC,SAAS;aACd,CAAC;YACF,OAAO,mCAAiB,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AAjCD,4BAiCC"}
@@ -0,0 +1,3 @@
1
+ export declare class ExceptionAction {
2
+ static LOG(data: any): any;
3
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExceptionAction = void 0;
4
+ const format_registry_1 = require("../formats/format.registry");
5
+ const aicf_dto_1 = require("../formats/aicf/aicf.dto");
6
+ class ExceptionAction {
7
+ static LOG(data) {
8
+ try {
9
+ const logData = {
10
+ ...data,
11
+ recordSubType: aicf_dto_1.RECORD_SUB_TYPE.EXCEPTION,
12
+ action: aicf_dto_1.ACTION_TYPE.EXCEPTION,
13
+ subAction: 'LOG',
14
+ };
15
+ return format_registry_1.LogFormatRegistry.get().buildDetailLog(logData);
16
+ }
17
+ catch {
18
+ return {};
19
+ }
20
+ }
21
+ }
22
+ exports.ExceptionAction = ExceptionAction;
23
+ //# sourceMappingURL=exception.action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exception.action.js","sourceRoot":"","sources":["../../src/actions/exception.action.ts"],"names":[],"mappings":";;;AAAA,gEAA+D;AAE/D,uDAAwE;AAExE,MAAa,eAAe;IAC1B,MAAM,CAAC,GAAG,CAAC,IAAS;QAClB,IAAI,CAAC;YACH,MAAM,OAAO,GAAkB;gBAC7B,GAAG,IAAI;gBACP,aAAa,EAAE,0BAAe,CAAC,SAAS;gBACxC,MAAM,EAAE,sBAAW,CAAC,SAAS;gBAC7B,SAAS,EAAE,KAAK;aACjB,CAAC;YACF,OAAO,mCAAiB,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AAdD,0CAcC"}
@@ -0,0 +1,9 @@
1
+ import { ActionData, HTTPRequestObject, HTTPResponseObject } from './action-types';
2
+ export declare class HttpAction {
3
+ static GET(data: ActionData<HTTPRequestObject, HTTPResponseObject>): any;
4
+ static POST(data: ActionData<HTTPRequestObject, HTTPResponseObject>): any;
5
+ static PUT(data: ActionData<HTTPRequestObject, HTTPResponseObject>): any;
6
+ static PATCH(data: ActionData<HTTPRequestObject, HTTPResponseObject>): any;
7
+ static DELETE(data: ActionData<HTTPRequestObject, HTTPResponseObject>): any;
8
+ private static map;
9
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HttpAction = void 0;
4
+ const format_registry_1 = require("../formats/format.registry");
5
+ const aicf_dto_1 = require("../formats/aicf/aicf.dto");
6
+ class HttpAction {
7
+ static GET(data) {
8
+ return this.map(aicf_dto_1.SUB_HTTP_ACTION.GET, data);
9
+ }
10
+ static POST(data) {
11
+ return this.map(aicf_dto_1.SUB_HTTP_ACTION.POST, data);
12
+ }
13
+ static PUT(data) {
14
+ return this.map(aicf_dto_1.SUB_HTTP_ACTION.PUT, data);
15
+ }
16
+ static PATCH(data) {
17
+ return this.map(aicf_dto_1.SUB_HTTP_ACTION.PATCH, data);
18
+ }
19
+ static DELETE(data) {
20
+ return this.map(aicf_dto_1.SUB_HTTP_ACTION.DELETE, data);
21
+ }
22
+ static map(method, data) {
23
+ try {
24
+ const logData = {
25
+ ...data,
26
+ action: aicf_dto_1.ACTION_TYPE.HTTP,
27
+ subAction: method,
28
+ summaryInfoAdditional: data.requestObject && data.responseObject
29
+ ? {
30
+ url: data.requestObject.url,
31
+ statusCode: String(data.responseObject.httpStatusCode).padEnd(5, '0'),
32
+ }
33
+ : undefined,
34
+ };
35
+ return format_registry_1.LogFormatRegistry.get().buildDetailLog(logData);
36
+ }
37
+ catch {
38
+ return {};
39
+ }
40
+ }
41
+ }
42
+ exports.HttpAction = HttpAction;
43
+ //# sourceMappingURL=http.action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.action.js","sourceRoot":"","sources":["../../src/actions/http.action.ts"],"names":[],"mappings":";;;AACA,gEAA+D;AAE/D,uDAAwE;AAOxE,MAAa,UAAU;IACrB,MAAM,CAAC,GAAG,CAAC,IAAuD;QAChE,OAAO,IAAI,CAAC,GAAG,CAAC,0BAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,IAAuD;QACjE,OAAO,IAAI,CAAC,GAAG,CAAC,0BAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,IAAuD;QAChE,OAAO,IAAI,CAAC,GAAG,CAAC,0BAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAuD;QAClE,OAAO,IAAI,CAAC,GAAG,CAAC,0BAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,IAAuD;QACnE,OAAO,IAAI,CAAC,GAAG,CAAC,0BAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAEO,MAAM,CAAC,GAAG,CAChB,MAAuB,EACvB,IAAuD;QAEvD,IAAI,CAAC;YACH,MAAM,OAAO,GAAkB;gBAC7B,GAAG,IAAI;gBACP,MAAM,EAAE,sBAAW,CAAC,IAAI;gBACxB,SAAS,EAAE,MAAM;gBACjB,qBAAqB,EACnB,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc;oBACvC,CAAC,CAAC;wBACE,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG;wBAC3B,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,MAAM,CAC3D,CAAC,EACD,GAAG,CACJ;qBACF;oBACH,CAAC,CAAC,SAAS;aAChB,CAAC;YACF,OAAO,mCAAiB,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AA1CD,gCA0CC"}
@@ -0,0 +1,10 @@
1
+ export * from './action-types';
2
+ export * from './http.action';
3
+ export * from './db.action';
4
+ export * from './rabbitmq.action';
5
+ export * from './kafka.action';
6
+ export * from './smtp.action';
7
+ export * from './logic.action';
8
+ export * from './exception.action';
9
+ export * from './connection.action';
10
+ export * from './core-log-summary';