@pawells/nestjs-shared 1.0.0-dev.4c8c698

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 (286) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +802 -0
  3. package/build/LICENSE +21 -0
  4. package/build/README.md +802 -0
  5. package/build/common/common.module.d.ts +49 -0
  6. package/build/common/common.module.d.ts.map +1 -0
  7. package/build/common/common.module.js +178 -0
  8. package/build/common/common.module.js.map +1 -0
  9. package/build/common/constants/histogram-buckets.constants.d.ts +12 -0
  10. package/build/common/constants/histogram-buckets.constants.d.ts.map +1 -0
  11. package/build/common/constants/histogram-buckets.constants.js +51 -0
  12. package/build/common/constants/histogram-buckets.constants.js.map +1 -0
  13. package/build/common/constants/http-status.constants.d.ts +27 -0
  14. package/build/common/constants/http-status.constants.d.ts.map +1 -0
  15. package/build/common/constants/http-status.constants.js +27 -0
  16. package/build/common/constants/http-status.constants.js.map +1 -0
  17. package/build/common/constants/timeout.constants.d.ts +29 -0
  18. package/build/common/constants/timeout.constants.d.ts.map +1 -0
  19. package/build/common/constants/timeout.constants.js +45 -0
  20. package/build/common/constants/timeout.constants.js.map +1 -0
  21. package/build/common/controllers/metrics.controller.d.ts +23 -0
  22. package/build/common/controllers/metrics.controller.d.ts.map +1 -0
  23. package/build/common/controllers/metrics.controller.js +66 -0
  24. package/build/common/controllers/metrics.controller.js.map +1 -0
  25. package/build/common/decorators/common-decorators.d.ts +90 -0
  26. package/build/common/decorators/common-decorators.d.ts.map +1 -0
  27. package/build/common/decorators/common-decorators.js +101 -0
  28. package/build/common/decorators/common-decorators.js.map +1 -0
  29. package/build/common/decorators/decorator-factory.d.ts +108 -0
  30. package/build/common/decorators/decorator-factory.d.ts.map +1 -0
  31. package/build/common/decorators/decorator-factory.js +104 -0
  32. package/build/common/decorators/decorator-factory.js.map +1 -0
  33. package/build/common/decorators/guard.decorators.d.ts +48 -0
  34. package/build/common/decorators/guard.decorators.d.ts.map +1 -0
  35. package/build/common/decorators/guard.decorators.js +49 -0
  36. package/build/common/decorators/guard.decorators.js.map +1 -0
  37. package/build/common/decorators/index.d.ts +10 -0
  38. package/build/common/decorators/index.d.ts.map +1 -0
  39. package/build/common/decorators/index.js +11 -0
  40. package/build/common/decorators/index.js.map +1 -0
  41. package/build/common/decorators/instrument.decorator.d.ts +128 -0
  42. package/build/common/decorators/instrument.decorator.d.ts.map +1 -0
  43. package/build/common/decorators/instrument.decorator.js +165 -0
  44. package/build/common/decorators/instrument.decorator.js.map +1 -0
  45. package/build/common/decorators/metric.decorators.d.ts +42 -0
  46. package/build/common/decorators/metric.decorators.d.ts.map +1 -0
  47. package/build/common/decorators/metric.decorators.js +85 -0
  48. package/build/common/decorators/metric.decorators.js.map +1 -0
  49. package/build/common/decorators/request-property.decorator.d.ts +65 -0
  50. package/build/common/decorators/request-property.decorator.d.ts.map +1 -0
  51. package/build/common/decorators/request-property.decorator.js +102 -0
  52. package/build/common/decorators/request-property.decorator.js.map +1 -0
  53. package/build/common/errors/base-application-error.d.ts +98 -0
  54. package/build/common/errors/base-application-error.d.ts.map +1 -0
  55. package/build/common/errors/base-application-error.js +133 -0
  56. package/build/common/errors/base-application-error.js.map +1 -0
  57. package/build/common/errors/error-factory.d.ts +93 -0
  58. package/build/common/errors/error-factory.d.ts.map +1 -0
  59. package/build/common/errors/error-factory.js +105 -0
  60. package/build/common/errors/error-factory.js.map +1 -0
  61. package/build/common/errors/index.d.ts +13 -0
  62. package/build/common/errors/index.d.ts.map +1 -0
  63. package/build/common/errors/index.js +15 -0
  64. package/build/common/errors/index.js.map +1 -0
  65. package/build/common/factories/index.d.ts +5 -0
  66. package/build/common/factories/index.d.ts.map +1 -0
  67. package/build/common/factories/index.js +3 -0
  68. package/build/common/factories/index.js.map +1 -0
  69. package/build/common/factories/module-factory.d.ts +178 -0
  70. package/build/common/factories/module-factory.d.ts.map +1 -0
  71. package/build/common/factories/module-factory.js +253 -0
  72. package/build/common/factories/module-factory.js.map +1 -0
  73. package/build/common/factories/rate-limit-config.factory.d.ts +79 -0
  74. package/build/common/factories/rate-limit-config.factory.d.ts.map +1 -0
  75. package/build/common/factories/rate-limit-config.factory.js +115 -0
  76. package/build/common/factories/rate-limit-config.factory.js.map +1 -0
  77. package/build/common/factories/security-bootstrap.factory.d.ts +77 -0
  78. package/build/common/factories/security-bootstrap.factory.d.ts.map +1 -0
  79. package/build/common/factories/security-bootstrap.factory.js +222 -0
  80. package/build/common/factories/security-bootstrap.factory.js.map +1 -0
  81. package/build/common/filters/global-exception.filter.d.ts +78 -0
  82. package/build/common/filters/global-exception.filter.d.ts.map +1 -0
  83. package/build/common/filters/global-exception.filter.js +192 -0
  84. package/build/common/filters/global-exception.filter.js.map +1 -0
  85. package/build/common/filters/http-exception.filter.d.ts +37 -0
  86. package/build/common/filters/http-exception.filter.d.ts.map +1 -0
  87. package/build/common/filters/http-exception.filter.js +91 -0
  88. package/build/common/filters/http-exception.filter.js.map +1 -0
  89. package/build/common/guards/csrf.guard.d.ts +53 -0
  90. package/build/common/guards/csrf.guard.d.ts.map +1 -0
  91. package/build/common/guards/csrf.guard.js +109 -0
  92. package/build/common/guards/csrf.guard.js.map +1 -0
  93. package/build/common/guards/metrics.guard.d.ts +42 -0
  94. package/build/common/guards/metrics.guard.d.ts.map +1 -0
  95. package/build/common/guards/metrics.guard.js +124 -0
  96. package/build/common/guards/metrics.guard.js.map +1 -0
  97. package/build/common/index.d.ts +43 -0
  98. package/build/common/index.d.ts.map +1 -0
  99. package/build/common/index.js +50 -0
  100. package/build/common/index.js.map +1 -0
  101. package/build/common/interceptors/http-client.interceptor.d.ts +11 -0
  102. package/build/common/interceptors/http-client.interceptor.d.ts.map +1 -0
  103. package/build/common/interceptors/http-client.interceptor.js +69 -0
  104. package/build/common/interceptors/http-client.interceptor.js.map +1 -0
  105. package/build/common/interceptors/http-instrumentation.interceptor.d.ts +64 -0
  106. package/build/common/interceptors/http-instrumentation.interceptor.d.ts.map +1 -0
  107. package/build/common/interceptors/http-instrumentation.interceptor.js +148 -0
  108. package/build/common/interceptors/http-instrumentation.interceptor.js.map +1 -0
  109. package/build/common/interceptors/http-metrics.interceptor.d.ts +46 -0
  110. package/build/common/interceptors/http-metrics.interceptor.d.ts.map +1 -0
  111. package/build/common/interceptors/http-metrics.interceptor.js +120 -0
  112. package/build/common/interceptors/http-metrics.interceptor.js.map +1 -0
  113. package/build/common/interceptors/logging.interceptor.d.ts +22 -0
  114. package/build/common/interceptors/logging.interceptor.d.ts.map +1 -0
  115. package/build/common/interceptors/logging.interceptor.js +67 -0
  116. package/build/common/interceptors/logging.interceptor.js.map +1 -0
  117. package/build/common/interfaces/cache-provider.interface.d.ts +54 -0
  118. package/build/common/interfaces/cache-provider.interface.d.ts.map +1 -0
  119. package/build/common/interfaces/cache-provider.interface.js +6 -0
  120. package/build/common/interfaces/cache-provider.interface.js.map +1 -0
  121. package/build/common/interfaces/index.d.ts +7 -0
  122. package/build/common/interfaces/index.d.ts.map +1 -0
  123. package/build/common/interfaces/index.js +3 -0
  124. package/build/common/interfaces/index.js.map +1 -0
  125. package/build/common/interfaces/log-context.interface.d.ts +77 -0
  126. package/build/common/interfaces/log-context.interface.d.ts.map +1 -0
  127. package/build/common/interfaces/log-context.interface.js +2 -0
  128. package/build/common/interfaces/log-context.interface.js.map +1 -0
  129. package/build/common/interfaces/log-entry.interface.d.ts +26 -0
  130. package/build/common/interfaces/log-entry.interface.d.ts.map +1 -0
  131. package/build/common/interfaces/log-entry.interface.js +33 -0
  132. package/build/common/interfaces/log-entry.interface.js.map +1 -0
  133. package/build/common/interfaces/logger.interface.d.ts +62 -0
  134. package/build/common/interfaces/logger.interface.d.ts.map +1 -0
  135. package/build/common/interfaces/logger.interface.js +2 -0
  136. package/build/common/interfaces/logger.interface.js.map +1 -0
  137. package/build/common/interfaces/metrics-exporter.interface.d.ts +275 -0
  138. package/build/common/interfaces/metrics-exporter.interface.d.ts.map +1 -0
  139. package/build/common/interfaces/metrics-exporter.interface.js +8 -0
  140. package/build/common/interfaces/metrics-exporter.interface.js.map +1 -0
  141. package/build/common/metrics/base-metrics-collector.d.ts +81 -0
  142. package/build/common/metrics/base-metrics-collector.d.ts.map +1 -0
  143. package/build/common/metrics/base-metrics-collector.js +88 -0
  144. package/build/common/metrics/base-metrics-collector.js.map +1 -0
  145. package/build/common/metrics/index.d.ts +2 -0
  146. package/build/common/metrics/index.d.ts.map +1 -0
  147. package/build/common/metrics/index.js +2 -0
  148. package/build/common/metrics/index.js.map +1 -0
  149. package/build/common/metrics.module.d.ts +50 -0
  150. package/build/common/metrics.module.d.ts.map +1 -0
  151. package/build/common/metrics.module.js +77 -0
  152. package/build/common/metrics.module.js.map +1 -0
  153. package/build/common/modules/throttler.module.d.ts +69 -0
  154. package/build/common/modules/throttler.module.d.ts.map +1 -0
  155. package/build/common/modules/throttler.module.js +117 -0
  156. package/build/common/modules/throttler.module.js.map +1 -0
  157. package/build/common/pipes/base-validation.pipe.d.ts +67 -0
  158. package/build/common/pipes/base-validation.pipe.d.ts.map +1 -0
  159. package/build/common/pipes/base-validation.pipe.js +95 -0
  160. package/build/common/pipes/base-validation.pipe.js.map +1 -0
  161. package/build/common/pipes/validation.pipe.d.ts +32 -0
  162. package/build/common/pipes/validation.pipe.d.ts.map +1 -0
  163. package/build/common/pipes/validation.pipe.js +60 -0
  164. package/build/common/pipes/validation.pipe.js.map +1 -0
  165. package/build/common/registry/instrumentation-registry.d.ts +227 -0
  166. package/build/common/registry/instrumentation-registry.d.ts.map +1 -0
  167. package/build/common/registry/instrumentation-registry.js +414 -0
  168. package/build/common/registry/instrumentation-registry.js.map +1 -0
  169. package/build/common/services/audit-logger.service.d.ts +91 -0
  170. package/build/common/services/audit-logger.service.d.ts.map +1 -0
  171. package/build/common/services/audit-logger.service.js +180 -0
  172. package/build/common/services/audit-logger.service.js.map +1 -0
  173. package/build/common/services/csrf.service.d.ts +202 -0
  174. package/build/common/services/csrf.service.d.ts.map +1 -0
  175. package/build/common/services/csrf.service.js +478 -0
  176. package/build/common/services/csrf.service.js.map +1 -0
  177. package/build/common/services/error-categorizer.service.d.ts +82 -0
  178. package/build/common/services/error-categorizer.service.d.ts.map +1 -0
  179. package/build/common/services/error-categorizer.service.js +339 -0
  180. package/build/common/services/error-categorizer.service.js.map +1 -0
  181. package/build/common/services/error-sanitizer.service.d.ts +146 -0
  182. package/build/common/services/error-sanitizer.service.d.ts.map +1 -0
  183. package/build/common/services/error-sanitizer.service.js +287 -0
  184. package/build/common/services/error-sanitizer.service.js.map +1 -0
  185. package/build/common/services/health-check.service.d.ts +86 -0
  186. package/build/common/services/health-check.service.d.ts.map +1 -0
  187. package/build/common/services/health-check.service.js +132 -0
  188. package/build/common/services/health-check.service.js.map +1 -0
  189. package/build/common/services/http-client.service.d.ts +113 -0
  190. package/build/common/services/http-client.service.d.ts.map +1 -0
  191. package/build/common/services/http-client.service.js +294 -0
  192. package/build/common/services/http-client.service.js.map +1 -0
  193. package/build/common/services/logger.service.d.ts +189 -0
  194. package/build/common/services/logger.service.d.ts.map +1 -0
  195. package/build/common/services/logger.service.js +423 -0
  196. package/build/common/services/logger.service.js.map +1 -0
  197. package/build/common/services/metrics-registry.service.d.ts +98 -0
  198. package/build/common/services/metrics-registry.service.d.ts.map +1 -0
  199. package/build/common/services/metrics-registry.service.js +262 -0
  200. package/build/common/services/metrics-registry.service.js.map +1 -0
  201. package/build/common/services/nest-logger-adapter.service.d.ts +62 -0
  202. package/build/common/services/nest-logger-adapter.service.d.ts.map +1 -0
  203. package/build/common/services/nest-logger-adapter.service.js +120 -0
  204. package/build/common/services/nest-logger-adapter.service.js.map +1 -0
  205. package/build/common/utils/error.utils.d.ts +16 -0
  206. package/build/common/utils/error.utils.d.ts.map +1 -0
  207. package/build/common/utils/error.utils.js +26 -0
  208. package/build/common/utils/error.utils.js.map +1 -0
  209. package/build/common/utils/lazy-getter.types.d.ts +190 -0
  210. package/build/common/utils/lazy-getter.types.d.ts.map +1 -0
  211. package/build/common/utils/lazy-getter.types.js +114 -0
  212. package/build/common/utils/lazy-getter.types.js.map +1 -0
  213. package/build/common/utils/module.utils.d.ts +33 -0
  214. package/build/common/utils/module.utils.d.ts.map +1 -0
  215. package/build/common/utils/module.utils.js +48 -0
  216. package/build/common/utils/module.utils.js.map +1 -0
  217. package/build/common/utils/sanitization.utils.d.ts +69 -0
  218. package/build/common/utils/sanitization.utils.d.ts.map +1 -0
  219. package/build/common/utils/sanitization.utils.js +141 -0
  220. package/build/common/utils/sanitization.utils.js.map +1 -0
  221. package/build/config/config.module.d.ts +30 -0
  222. package/build/config/config.module.d.ts.map +1 -0
  223. package/build/config/config.module.js +49 -0
  224. package/build/config/config.module.js.map +1 -0
  225. package/build/config/config.service.d.ts +74 -0
  226. package/build/config/config.service.d.ts.map +1 -0
  227. package/build/config/config.service.js +145 -0
  228. package/build/config/config.service.js.map +1 -0
  229. package/build/config/config.types.d.ts +143 -0
  230. package/build/config/config.types.d.ts.map +1 -0
  231. package/build/config/config.types.js +2 -0
  232. package/build/config/config.types.js.map +1 -0
  233. package/build/config/decorators/config.decorators.d.ts +43 -0
  234. package/build/config/decorators/config.decorators.d.ts.map +1 -0
  235. package/build/config/decorators/config.decorators.js +68 -0
  236. package/build/config/decorators/config.decorators.js.map +1 -0
  237. package/build/config/decorators/index.d.ts +2 -0
  238. package/build/config/decorators/index.d.ts.map +1 -0
  239. package/build/config/decorators/index.js +2 -0
  240. package/build/config/decorators/index.js.map +1 -0
  241. package/build/config/index.d.ts +7 -0
  242. package/build/config/index.d.ts.map +1 -0
  243. package/build/config/index.js +9 -0
  244. package/build/config/index.js.map +1 -0
  245. package/build/config/validation.utils.d.ts +136 -0
  246. package/build/config/validation.utils.d.ts.map +1 -0
  247. package/build/config/validation.utils.js +263 -0
  248. package/build/config/validation.utils.js.map +1 -0
  249. package/build/errors/index.d.ts +9 -0
  250. package/build/errors/index.d.ts.map +1 -0
  251. package/build/errors/index.js +12 -0
  252. package/build/errors/index.js.map +1 -0
  253. package/build/guards/custom-throttle.guard.d.ts +28 -0
  254. package/build/guards/custom-throttle.guard.d.ts.map +1 -0
  255. package/build/guards/custom-throttle.guard.js +52 -0
  256. package/build/guards/custom-throttle.guard.js.map +1 -0
  257. package/build/guards/index.d.ts +2 -0
  258. package/build/guards/index.d.ts.map +1 -0
  259. package/build/guards/index.js +2 -0
  260. package/build/guards/index.js.map +1 -0
  261. package/build/index.d.ts +53 -0
  262. package/build/index.d.ts.map +1 -0
  263. package/build/index.js +61 -0
  264. package/build/index.js.map +1 -0
  265. package/build/logging/index.d.ts +7 -0
  266. package/build/logging/index.d.ts.map +1 -0
  267. package/build/logging/index.js +7 -0
  268. package/build/logging/index.js.map +1 -0
  269. package/build/metrics/index.d.ts +6 -0
  270. package/build/metrics/index.d.ts.map +1 -0
  271. package/build/metrics/index.js +11 -0
  272. package/build/metrics/index.js.map +1 -0
  273. package/build/package.json +72 -0
  274. package/build/security/index.d.ts +8 -0
  275. package/build/security/index.d.ts.map +1 -0
  276. package/build/security/index.js +11 -0
  277. package/build/security/index.js.map +1 -0
  278. package/build/test-setup.d.ts +2 -0
  279. package/build/test-setup.d.ts.map +1 -0
  280. package/build/test-setup.js +40 -0
  281. package/build/test-setup.js.map +1 -0
  282. package/build/validation/index.d.ts +6 -0
  283. package/build/validation/index.d.ts.map +1 -0
  284. package/build/validation/index.js +8 -0
  285. package/build/validation/index.js.map +1 -0
  286. package/package.json +71 -0
@@ -0,0 +1,49 @@
1
+ import { OnModuleInit } from '@nestjs/common';
2
+ import { ModuleRef } from '@nestjs/core';
3
+ import { AppLogger } from './services/logger.service.js';
4
+ import { InstrumentationRegistry } from './registry/instrumentation-registry.js';
5
+ /**
6
+ * Common Module.
7
+ * Global module providing foundational infrastructure for NestJS applications:
8
+ * - Filters: GlobalExceptionFilter, HttpExceptionFilter
9
+ * - Interceptors: LoggingInterceptor, HTTPMetricsInterceptor
10
+ * - Pipes: ValidationPipe
11
+ * - Services: AppLogger, AuditLoggerService, CSRFService, ErrorCategorizerService, ErrorSanitizerService, HttpClientService, MetricsRegistryService, HealthCheckService
12
+ *
13
+ * @important ConfigModule MUST be imported before CommonModule in your application.
14
+ * Failure to do so will cause initialization errors at startup.
15
+ *
16
+ * @remarks
17
+ * - Automatically registers global filters, interceptors, and pipes
18
+ * - Exports all services for use in feature modules
19
+ * - Initializes AppLogger and RequestProperty decorator at module init
20
+ * - Validates ConfigService availability to catch import order issues
21
+ * - Global flag ensures exports are available application-wide without explicit imports
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * // Correct import order
26
+ * @Module({
27
+ * imports: [
28
+ * ConfigModule.forRoot({}), // MUST come first
29
+ * CommonModule, // Depends on ConfigModule
30
+ * // ... feature modules
31
+ * ]
32
+ * })
33
+ * export class AppModule {}
34
+ * ```
35
+ */
36
+ export declare class CommonModule implements OnModuleInit {
37
+ private readonly appLogger;
38
+ private readonly registry;
39
+ private readonly moduleRef;
40
+ private initialized;
41
+ constructor(appLogger: AppLogger, registry: InstrumentationRegistry, moduleRef: ModuleRef);
42
+ onModuleInit(): void;
43
+ /**
44
+ * Verify that ConfigService from the config module is registered in the application.
45
+ * This helps catch import order issues where CommonModule is imported before ConfigModule.
46
+ */
47
+ private verifyConfigServiceAvailable;
48
+ }
49
+ //# sourceMappingURL=common.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.module.d.ts","sourceRoot":"","sources":["../../src/common/common.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAyC,SAAS,EAAE,MAAM,cAAc,CAAC;AAMhF,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAWzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAGjF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,qBA0Da,YAAa,YAAW,YAAY;IAI/C,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAL3B,OAAO,CAAC,WAAW,CAAS;gBAGV,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,uBAAuB,EACjC,SAAS,EAAE,SAAS;IAG/B,YAAY,IAAI,IAAI;IAiB3B;;;OAGG;IACH,OAAO,CAAC,4BAA4B;CAyBpC"}
@@ -0,0 +1,178 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { Module, Logger, Global } from '@nestjs/common';
11
+ import { APP_FILTER, APP_INTERCEPTOR, APP_PIPE, ModuleRef } from '@nestjs/core';
12
+ import { HttpExceptionFilter } from './filters/http-exception.filter.js';
13
+ import { GlobalExceptionFilter } from './filters/global-exception.filter.js';
14
+ import { LoggingInterceptor } from './interceptors/logging.interceptor.js';
15
+ import { HTTPMetricsInterceptor } from './interceptors/http-metrics.interceptor.js';
16
+ import { ValidationPipe } from './pipes/validation.pipe.js';
17
+ import { AppLogger } from './services/logger.service.js';
18
+ import { ErrorSanitizerService } from './services/error-sanitizer.service.js';
19
+ import { AuditLoggerService } from './services/audit-logger.service.js';
20
+ import { CSRFService } from './services/csrf.service.js';
21
+ import { CSRFGuard } from './guards/csrf.guard.js';
22
+ import { ErrorCategorizerService } from './services/error-categorizer.service.js';
23
+ import { HttpClientService } from './services/http-client.service.js';
24
+ import { HealthCheckService } from './services/health-check.service.js';
25
+ import { SetRequestPropertyDecoratorLogger } from './decorators/request-property.decorator.js';
26
+ import { InstrumentationRegistryHolder } from './decorators/instrument.decorator.js';
27
+ import { ConfigService } from '../config/index.js';
28
+ import { InstrumentationRegistry } from './registry/instrumentation-registry.js';
29
+ import { getErrorMessage } from './utils/error.utils.js';
30
+ /**
31
+ * Common Module.
32
+ * Global module providing foundational infrastructure for NestJS applications:
33
+ * - Filters: GlobalExceptionFilter, HttpExceptionFilter
34
+ * - Interceptors: LoggingInterceptor, HTTPMetricsInterceptor
35
+ * - Pipes: ValidationPipe
36
+ * - Services: AppLogger, AuditLoggerService, CSRFService, ErrorCategorizerService, ErrorSanitizerService, HttpClientService, MetricsRegistryService, HealthCheckService
37
+ *
38
+ * @important ConfigModule MUST be imported before CommonModule in your application.
39
+ * Failure to do so will cause initialization errors at startup.
40
+ *
41
+ * @remarks
42
+ * - Automatically registers global filters, interceptors, and pipes
43
+ * - Exports all services for use in feature modules
44
+ * - Initializes AppLogger and RequestProperty decorator at module init
45
+ * - Validates ConfigService availability to catch import order issues
46
+ * - Global flag ensures exports are available application-wide without explicit imports
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * // Correct import order
51
+ * @Module({
52
+ * imports: [
53
+ * ConfigModule.forRoot({}), // MUST come first
54
+ * CommonModule, // Depends on ConfigModule
55
+ * // ... feature modules
56
+ * ]
57
+ * })
58
+ * export class AppModule {}
59
+ * ```
60
+ */
61
+ let CommonModule = class CommonModule {
62
+ appLogger;
63
+ registry;
64
+ moduleRef;
65
+ initialized = false;
66
+ constructor(appLogger, registry, moduleRef) {
67
+ this.appLogger = appLogger;
68
+ this.registry = registry;
69
+ this.moduleRef = moduleRef;
70
+ }
71
+ onModuleInit() {
72
+ if (this.initialized) {
73
+ return;
74
+ }
75
+ this.initialized = true;
76
+ // Initialize the RequestProperty decorator with the AppLogger instance
77
+ // This ensures structured logging is available before any route handlers are processed
78
+ SetRequestPropertyDecoratorLogger(this.appLogger);
79
+ // Set the InstrumentationRegistry instance in the holder for @Instrument() decorator access
80
+ InstrumentationRegistryHolder.setInstance(this.registry);
81
+ // Verify ConfigService is available to help developers catch import order issues early
82
+ this.verifyConfigServiceAvailable();
83
+ }
84
+ /**
85
+ * Verify that ConfigService from the config module is registered in the application.
86
+ * This helps catch import order issues where CommonModule is imported before ConfigModule.
87
+ */
88
+ verifyConfigServiceAvailable() {
89
+ try {
90
+ const configService = this.moduleRef.get(ConfigService, { strict: false });
91
+ if (!configService) {
92
+ throw new Error('ConfigService is null or undefined');
93
+ }
94
+ }
95
+ catch (error) {
96
+ const errorMessage = `
97
+ Failed to initialize CommonModule: ConfigService is not registered in the module hierarchy.
98
+
99
+ CommonModule requires ConfigModule to be imported first in your application.
100
+ Ensure your AppModule imports ConfigModule before CommonModule:
101
+
102
+ @Module({
103
+ imports: [ConfigModule, CommonModule],
104
+ })
105
+ export class AppModule {}
106
+
107
+ Importing in the wrong order will cause services to fail during initialization.
108
+ Error details: ${getErrorMessage(error)}
109
+ `.trim();
110
+ throw new Error(errorMessage, { cause: error });
111
+ }
112
+ }
113
+ };
114
+ CommonModule = __decorate([
115
+ Global(),
116
+ Module({
117
+ // Note: PyroscopeModule is imported by TracingModule - do not duplicate here
118
+ providers: [
119
+ {
120
+ provide: APP_FILTER,
121
+ useClass: HttpExceptionFilter,
122
+ },
123
+ {
124
+ provide: APP_FILTER,
125
+ useClass: GlobalExceptionFilter,
126
+ },
127
+ {
128
+ provide: APP_INTERCEPTOR,
129
+ useClass: LoggingInterceptor,
130
+ },
131
+ {
132
+ provide: APP_INTERCEPTOR,
133
+ useClass: HTTPMetricsInterceptor,
134
+ },
135
+ {
136
+ provide: APP_PIPE,
137
+ useClass: ValidationPipe,
138
+ },
139
+ // Also exported below as standalone classes for direct injection in feature modules
140
+ GlobalExceptionFilter,
141
+ HttpExceptionFilter,
142
+ LoggingInterceptor,
143
+ HTTPMetricsInterceptor,
144
+ ValidationPipe,
145
+ AppLogger,
146
+ ErrorSanitizerService,
147
+ AuditLoggerService,
148
+ CSRFService,
149
+ CSRFGuard,
150
+ ErrorCategorizerService,
151
+ HttpClientService,
152
+ HealthCheckService,
153
+ InstrumentationRegistry,
154
+ Logger,
155
+ ],
156
+ exports: [
157
+ GlobalExceptionFilter,
158
+ HttpExceptionFilter,
159
+ LoggingInterceptor,
160
+ HTTPMetricsInterceptor,
161
+ ValidationPipe,
162
+ AppLogger,
163
+ ErrorSanitizerService,
164
+ AuditLoggerService,
165
+ CSRFService,
166
+ CSRFGuard,
167
+ ErrorCategorizerService,
168
+ HttpClientService,
169
+ HealthCheckService,
170
+ InstrumentationRegistry,
171
+ ],
172
+ }),
173
+ __metadata("design:paramtypes", [AppLogger,
174
+ InstrumentationRegistry,
175
+ ModuleRef])
176
+ ], CommonModule);
177
+ export { CommonModule };
178
+ //# sourceMappingURL=common.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.module.js","sourceRoot":"","sources":["../../src/common/common.module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Histogram Bucket Constants for Prometheus Metrics
3
+ *
4
+ * Prometheus-compliant bucket definitions for timing and size metrics.
5
+ * Note: Bucket values follow standard Prometheus patterns for observability.
6
+ */
7
+ export declare const HTTP_DURATION_BUCKETS: number[];
8
+ export declare const HTTP_REQUEST_SIZE_BUCKETS: number[];
9
+ export declare const MILLISECONDS_TO_SECONDS = 1000;
10
+ export declare const BYTES_PER_KILOBYTE = 1024;
11
+ export declare const BYTES_PER_MEGABYTE: number;
12
+ //# sourceMappingURL=histogram-buckets.constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"histogram-buckets.constants.d.ts","sourceRoot":"","sources":["../../../src/common/constants/histogram-buckets.constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAeH,eAAO,MAAM,qBAAqB,UAWjC,CAAC;AAUF,eAAO,MAAM,yBAAyB,UAMrC,CAAC;AAGF,eAAO,MAAM,uBAAuB,OAAQ,CAAC;AAI7C,eAAO,MAAM,kBAAkB,OAAiB,CAAC;AACjD,eAAO,MAAM,kBAAkB,QAAkC,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Histogram Bucket Constants for Prometheus Metrics
3
+ *
4
+ * Prometheus-compliant bucket definitions for timing and size metrics.
5
+ * Note: Bucket values follow standard Prometheus patterns for observability.
6
+ */
7
+ // Duration bucket values in seconds
8
+ const MILLISECONDS_TO_SECONDS_DUR = 0.001;
9
+ const MILLISECONDS_TO_SECONDS_DUR_2 = 0.005;
10
+ const MILLISECONDS_TO_SECONDS_DUR_3 = 0.01;
11
+ const MILLISECONDS_TO_SECONDS_DUR_4 = 0.05;
12
+ const MILLISECONDS_TO_SECONDS_DUR_5 = 0.1;
13
+ const MILLISECONDS_TO_SECONDS_DUR_6 = 0.5;
14
+ const MILLISECONDS_TO_SECONDS_DUR_7 = 1;
15
+ const MILLISECONDS_TO_SECONDS_DUR_8 = 2.5;
16
+ const MILLISECONDS_TO_SECONDS_DUR_9 = 5;
17
+ const MILLISECONDS_TO_SECONDS_DUR_10 = 10;
18
+ // HTTP request duration histogram buckets (seconds)
19
+ export const HTTP_DURATION_BUCKETS = [
20
+ MILLISECONDS_TO_SECONDS_DUR,
21
+ MILLISECONDS_TO_SECONDS_DUR_2,
22
+ MILLISECONDS_TO_SECONDS_DUR_3,
23
+ MILLISECONDS_TO_SECONDS_DUR_4,
24
+ MILLISECONDS_TO_SECONDS_DUR_5,
25
+ MILLISECONDS_TO_SECONDS_DUR_6,
26
+ MILLISECONDS_TO_SECONDS_DUR_7,
27
+ MILLISECONDS_TO_SECONDS_DUR_8,
28
+ MILLISECONDS_TO_SECONDS_DUR_9,
29
+ MILLISECONDS_TO_SECONDS_DUR_10,
30
+ ];
31
+ // Request size bucket values in bytes
32
+ const HTTP_REQUEST_SIZE_100 = 100;
33
+ const HTTP_REQUEST_SIZE_1000 = 1_000;
34
+ const HTTP_REQUEST_SIZE_10000 = 10_000;
35
+ const HTTP_REQUEST_SIZE_100000 = 100_000;
36
+ const HTTP_REQUEST_SIZE_1000000 = 1_000_000;
37
+ // HTTP request size histogram buckets (bytes)
38
+ export const HTTP_REQUEST_SIZE_BUCKETS = [
39
+ HTTP_REQUEST_SIZE_100,
40
+ HTTP_REQUEST_SIZE_1000,
41
+ HTTP_REQUEST_SIZE_10000,
42
+ HTTP_REQUEST_SIZE_100000,
43
+ HTTP_REQUEST_SIZE_1000000,
44
+ ];
45
+ // Time conversion constant
46
+ export const MILLISECONDS_TO_SECONDS = 1_000;
47
+ // Memory conversion constants
48
+ const KILOBYTE_BYTES = 1_024;
49
+ export const BYTES_PER_KILOBYTE = KILOBYTE_BYTES;
50
+ export const BYTES_PER_MEGABYTE = KILOBYTE_BYTES * KILOBYTE_BYTES;
51
+ //# sourceMappingURL=histogram-buckets.constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"histogram-buckets.constants.js","sourceRoot":"","sources":["../../../src/common/constants/histogram-buckets.constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,oCAAoC;AACpC,MAAM,2BAA2B,GAAG,KAAK,CAAC;AAC1C,MAAM,6BAA6B,GAAG,KAAK,CAAC;AAC5C,MAAM,6BAA6B,GAAG,IAAI,CAAC;AAC3C,MAAM,6BAA6B,GAAG,IAAI,CAAC;AAC3C,MAAM,6BAA6B,GAAG,GAAG,CAAC;AAC1C,MAAM,6BAA6B,GAAG,GAAG,CAAC;AAC1C,MAAM,6BAA6B,GAAG,CAAC,CAAC;AACxC,MAAM,6BAA6B,GAAG,GAAG,CAAC;AAC1C,MAAM,6BAA6B,GAAG,CAAC,CAAC;AACxC,MAAM,8BAA8B,GAAG,EAAE,CAAC;AAE1C,oDAAoD;AACpD,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACpC,2BAA2B;IAC3B,6BAA6B;IAC7B,6BAA6B;IAC7B,6BAA6B;IAC7B,6BAA6B;IAC7B,6BAA6B;IAC7B,6BAA6B;IAC7B,6BAA6B;IAC7B,6BAA6B;IAC7B,8BAA8B;CAC9B,CAAC;AAEF,sCAAsC;AACtC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAClC,MAAM,sBAAsB,GAAG,KAAK,CAAC;AACrC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AACvC,MAAM,wBAAwB,GAAG,OAAO,CAAC;AACzC,MAAM,yBAAyB,GAAG,SAAS,CAAC;AAE5C,8CAA8C;AAC9C,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACxC,qBAAqB;IACrB,sBAAsB;IACtB,uBAAuB;IACvB,wBAAwB;IACxB,yBAAyB;CACzB,CAAC;AAEF,2BAA2B;AAC3B,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAE7C,8BAA8B;AAC9B,MAAM,cAAc,GAAG,KAAK,CAAC;AAC7B,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAC;AACjD,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,GAAG,cAAc,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * HTTP Status Code Constants
3
+ * Standard HTTP status codes used across error handling and responses
4
+ */
5
+ /** HTTP 200 OK status code */
6
+ export declare const HTTP_STATUS_OK = 200;
7
+ /** HTTP 400 Bad Request status code */
8
+ export declare const HTTP_STATUS_BAD_REQUEST = 400;
9
+ /** HTTP 401 Unauthorized status code */
10
+ export declare const HTTP_STATUS_UNAUTHORIZED = 401;
11
+ /** HTTP 403 Forbidden status code */
12
+ export declare const HTTP_STATUS_FORBIDDEN = 403;
13
+ /** HTTP 404 Not Found status code */
14
+ export declare const HTTP_STATUS_NOT_FOUND = 404;
15
+ /** HTTP 429 Too Many Requests (rate limit) status code */
16
+ export declare const HTTP_STATUS_TOO_MANY_REQUESTS = 429;
17
+ /** HTTP 422 Unprocessable Entity status code */
18
+ export declare const HTTP_STATUS_UNPROCESSABLE_ENTITY = 422;
19
+ /** HTTP 500 Internal Server Error status code */
20
+ export declare const HTTP_STATUS_INTERNAL_SERVER_ERROR = 500;
21
+ /** HTTP 502 Bad Gateway status code */
22
+ export declare const HTTP_STATUS_BAD_GATEWAY = 502;
23
+ /** HTTP 503 Service Unavailable status code */
24
+ export declare const HTTP_STATUS_SERVICE_UNAVAILABLE = 503;
25
+ /** HTTP 504 Gateway Timeout status code */
26
+ export declare const HTTP_STATUS_GATEWAY_TIMEOUT = 504;
27
+ //# sourceMappingURL=http-status.constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-status.constants.d.ts","sourceRoot":"","sources":["../../../src/common/constants/http-status.constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,8BAA8B;AAC9B,eAAO,MAAM,cAAc,MAAM,CAAC;AAElC,uCAAuC;AACvC,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C,wCAAwC;AACxC,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C,qCAAqC;AACrC,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC,qCAAqC;AACrC,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC,0DAA0D;AAC1D,eAAO,MAAM,6BAA6B,MAAM,CAAC;AAEjD,gDAAgD;AAChD,eAAO,MAAM,gCAAgC,MAAM,CAAC;AAEpD,iDAAiD;AACjD,eAAO,MAAM,iCAAiC,MAAM,CAAC;AAErD,uCAAuC;AACvC,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C,+CAA+C;AAC/C,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,2CAA2C;AAC3C,eAAO,MAAM,2BAA2B,MAAM,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * HTTP Status Code Constants
3
+ * Standard HTTP status codes used across error handling and responses
4
+ */
5
+ /** HTTP 200 OK status code */
6
+ export const HTTP_STATUS_OK = 200;
7
+ /** HTTP 400 Bad Request status code */
8
+ export const HTTP_STATUS_BAD_REQUEST = 400;
9
+ /** HTTP 401 Unauthorized status code */
10
+ export const HTTP_STATUS_UNAUTHORIZED = 401;
11
+ /** HTTP 403 Forbidden status code */
12
+ export const HTTP_STATUS_FORBIDDEN = 403;
13
+ /** HTTP 404 Not Found status code */
14
+ export const HTTP_STATUS_NOT_FOUND = 404;
15
+ /** HTTP 429 Too Many Requests (rate limit) status code */
16
+ export const HTTP_STATUS_TOO_MANY_REQUESTS = 429;
17
+ /** HTTP 422 Unprocessable Entity status code */
18
+ export const HTTP_STATUS_UNPROCESSABLE_ENTITY = 422;
19
+ /** HTTP 500 Internal Server Error status code */
20
+ export const HTTP_STATUS_INTERNAL_SERVER_ERROR = 500;
21
+ /** HTTP 502 Bad Gateway status code */
22
+ export const HTTP_STATUS_BAD_GATEWAY = 502;
23
+ /** HTTP 503 Service Unavailable status code */
24
+ export const HTTP_STATUS_SERVICE_UNAVAILABLE = 503;
25
+ /** HTTP 504 Gateway Timeout status code */
26
+ export const HTTP_STATUS_GATEWAY_TIMEOUT = 504;
27
+ //# sourceMappingURL=http-status.constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-status.constants.js","sourceRoot":"","sources":["../../../src/common/constants/http-status.constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,8BAA8B;AAC9B,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAElC,uCAAuC;AACvC,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAE3C,wCAAwC;AACxC,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAE5C,qCAAqC;AACrC,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAEzC,qCAAqC;AACrC,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAEzC,0DAA0D;AAC1D,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,CAAC;AAEjD,gDAAgD;AAChD,MAAM,CAAC,MAAM,gCAAgC,GAAG,GAAG,CAAC;AAEpD,iDAAiD;AACjD,MAAM,CAAC,MAAM,iCAAiC,GAAG,GAAG,CAAC;AAErD,uCAAuC;AACvC,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAE3C,+CAA+C;AAC/C,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAEnD,2CAA2C;AAC3C,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Service Timeout Constants
3
+ * Timeout values for various external services and operations
4
+ * All timeouts can be overridden via environment variables for operational flexibility
5
+ * All timeout getters are functions to allow runtime override via process.env
6
+ */
7
+ /** Grafana API request timeout in milliseconds (configurable via GRAFANA_TIMEOUT env var) */
8
+ export declare function getGrafanaTimeout(): number;
9
+ /** Loki API request timeout in milliseconds (configurable via LOKI_TIMEOUT env var) */
10
+ export declare function getLokiTimeout(): number;
11
+ /** Prometheus API request timeout in milliseconds (configurable via PROMETHEUS_TIMEOUT env var) */
12
+ export declare function getPrometheusTimeout(): number;
13
+ /** HTTP client default timeout in milliseconds (configurable via HTTP_CLIENT_TIMEOUT env var, default: 30 seconds) */
14
+ export declare function getHttpClientTimeout(): number;
15
+ /** Config validation timeout in milliseconds (configurable via CONFIG_VALIDATION_TIMEOUT env var) */
16
+ export declare function getConfigValidationTimeout(): number;
17
+ /** Deprecated: Use getGrafanaTimeout() instead. Will be removed in next major version. */
18
+ export declare const GRAFANA_TIMEOUT: number;
19
+ /** Deprecated: Use getLokiTimeout() instead. Will be removed in next major version. */
20
+ export declare const LOKI_TIMEOUT: number;
21
+ /** Deprecated: Use getPrometheusTimeout() instead. Will be removed in next major version. */
22
+ export declare const PROMETHEUS_TIMEOUT: number;
23
+ /** Deprecated: Use getHttpClientTimeout() instead. Will be removed in next major version. */
24
+ export declare const HTTP_CLIENT_TIMEOUT: number;
25
+ /** Deprecated: Use getConfigValidationTimeout() instead. Will be removed in next major version. */
26
+ export declare const CONFIG_VALIDATION_TIMEOUT: number;
27
+ /** Time conversion: microseconds to nanoseconds */
28
+ export declare const MICROSECONDS_TO_NANOSECONDS = 1000000;
29
+ //# sourceMappingURL=timeout.constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeout.constants.d.ts","sourceRoot":"","sources":["../../../src/common/constants/timeout.constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,6FAA6F;AAC7F,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,uFAAuF;AACvF,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,mGAAmG;AACnG,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,sHAAsH;AACtH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,qGAAqG;AACrG,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;AAED,0FAA0F;AAC1F,eAAO,MAAM,eAAe,QAAsB,CAAC;AAEnD,uFAAuF;AACvF,eAAO,MAAM,YAAY,QAAmB,CAAC;AAE7C,6FAA6F;AAC7F,eAAO,MAAM,kBAAkB,QAAyB,CAAC;AAEzD,6FAA6F;AAC7F,eAAO,MAAM,mBAAmB,QAAyB,CAAC;AAE1D,mGAAmG;AACnG,eAAO,MAAM,yBAAyB,QAA+B,CAAC;AAEtE,mDAAmD;AACnD,eAAO,MAAM,2BAA2B,UAAY,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Service Timeout Constants
3
+ * Timeout values for various external services and operations
4
+ * All timeouts can be overridden via environment variables for operational flexibility
5
+ * All timeout getters are functions to allow runtime override via process.env
6
+ */
7
+ // Default timeout values in milliseconds
8
+ const DEFAULT_GRAFANA_TIMEOUT_MS = 1_000;
9
+ const DEFAULT_LOKI_TIMEOUT_MS = 1_000;
10
+ const DEFAULT_PROMETHEUS_TIMEOUT_MS = 1_000;
11
+ const DEFAULT_HTTP_CLIENT_TIMEOUT_MS = 30_000;
12
+ const DEFAULT_CONFIG_VALIDATION_TIMEOUT_MS = 3_000;
13
+ /** Grafana API request timeout in milliseconds (configurable via GRAFANA_TIMEOUT env var) */
14
+ export function getGrafanaTimeout() {
15
+ return Number(process.env['GRAFANA_TIMEOUT'] ?? DEFAULT_GRAFANA_TIMEOUT_MS);
16
+ }
17
+ /** Loki API request timeout in milliseconds (configurable via LOKI_TIMEOUT env var) */
18
+ export function getLokiTimeout() {
19
+ return Number(process.env['LOKI_TIMEOUT'] ?? DEFAULT_LOKI_TIMEOUT_MS);
20
+ }
21
+ /** Prometheus API request timeout in milliseconds (configurable via PROMETHEUS_TIMEOUT env var) */
22
+ export function getPrometheusTimeout() {
23
+ return Number(process.env['PROMETHEUS_TIMEOUT'] ?? DEFAULT_PROMETHEUS_TIMEOUT_MS);
24
+ }
25
+ /** HTTP client default timeout in milliseconds (configurable via HTTP_CLIENT_TIMEOUT env var, default: 30 seconds) */
26
+ export function getHttpClientTimeout() {
27
+ return Number(process.env['HTTP_CLIENT_TIMEOUT'] ?? DEFAULT_HTTP_CLIENT_TIMEOUT_MS);
28
+ }
29
+ /** Config validation timeout in milliseconds (configurable via CONFIG_VALIDATION_TIMEOUT env var) */
30
+ export function getConfigValidationTimeout() {
31
+ return Number(process.env['CONFIG_VALIDATION_TIMEOUT'] ?? DEFAULT_CONFIG_VALIDATION_TIMEOUT_MS);
32
+ }
33
+ /** Deprecated: Use getGrafanaTimeout() instead. Will be removed in next major version. */
34
+ export const GRAFANA_TIMEOUT = getGrafanaTimeout();
35
+ /** Deprecated: Use getLokiTimeout() instead. Will be removed in next major version. */
36
+ export const LOKI_TIMEOUT = getLokiTimeout();
37
+ /** Deprecated: Use getPrometheusTimeout() instead. Will be removed in next major version. */
38
+ export const PROMETHEUS_TIMEOUT = getPrometheusTimeout();
39
+ /** Deprecated: Use getHttpClientTimeout() instead. Will be removed in next major version. */
40
+ export const HTTP_CLIENT_TIMEOUT = getHttpClientTimeout();
41
+ /** Deprecated: Use getConfigValidationTimeout() instead. Will be removed in next major version. */
42
+ export const CONFIG_VALIDATION_TIMEOUT = getConfigValidationTimeout();
43
+ /** Time conversion: microseconds to nanoseconds */
44
+ export const MICROSECONDS_TO_NANOSECONDS = 1_000_000;
45
+ //# sourceMappingURL=timeout.constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeout.constants.js","sourceRoot":"","sources":["../../../src/common/constants/timeout.constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,yCAAyC;AACzC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AACzC,MAAM,uBAAuB,GAAG,KAAK,CAAC;AACtC,MAAM,6BAA6B,GAAG,KAAK,CAAC;AAC5C,MAAM,8BAA8B,GAAG,MAAM,CAAC;AAC9C,MAAM,oCAAoC,GAAG,KAAK,CAAC;AAEnD,6FAA6F;AAC7F,MAAM,UAAU,iBAAiB;IAChC,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,0BAA0B,CAAC,CAAC;AAC7E,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,cAAc;IAC7B,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,uBAAuB,CAAC,CAAC;AACvE,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,oBAAoB;IACnC,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,6BAA6B,CAAC,CAAC;AACnF,CAAC;AAED,sHAAsH;AACtH,MAAM,UAAU,oBAAoB;IACnC,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,8BAA8B,CAAC,CAAC;AACrF,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,0BAA0B;IACzC,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,IAAI,oCAAoC,CAAC,CAAC;AACjG,CAAC;AAED,0FAA0F;AAC1F,MAAM,CAAC,MAAM,eAAe,GAAG,iBAAiB,EAAE,CAAC;AAEnD,uFAAuF;AACvF,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,EAAE,CAAC;AAE7C,6FAA6F;AAC7F,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,EAAE,CAAC;AAEzD,6FAA6F;AAC7F,MAAM,CAAC,MAAM,mBAAmB,GAAG,oBAAoB,EAAE,CAAC;AAE1D,mGAAmG;AACnG,MAAM,CAAC,MAAM,yBAAyB,GAAG,0BAA0B,EAAE,CAAC;AAEtE,mDAAmD;AACnD,MAAM,CAAC,MAAM,2BAA2B,GAAG,SAAS,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { Response } from 'express';
2
+ import { MetricsRegistryService } from '../services/metrics-registry.service.js';
3
+ import { AppLogger } from '../services/logger.service.js';
4
+ /**
5
+ * Exposes Prometheus metrics at GET /metrics.
6
+ *
7
+ * IMPORTANT: This endpoint should be restricted to internal/monitoring networks
8
+ * via reverse proxy (nginx, Traefik, etc.) or firewall rules. Do not expose
9
+ * this endpoint publicly in production.
10
+ */
11
+ export declare class MetricsController {
12
+ private readonly metricsService;
13
+ private readonly logger;
14
+ constructor(metricsService: MetricsRegistryService, logger: AppLogger);
15
+ /**
16
+ * GET /metrics
17
+ *
18
+ * Returns Prometheus metrics in text format for scraping.
19
+ * This endpoint should be configured for pull-based monitoring.
20
+ */
21
+ getMetrics(response: Response): Promise<void>;
22
+ }
23
+ //# sourceMappingURL=metrics.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.controller.d.ts","sourceRoot":"","sources":["../../../src/common/controllers/metrics.controller.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAI1D;;;;;;GAMG;AACH,qBACa,iBAAiB;IAE5B,OAAO,CAAC,QAAQ,CAAC,cAAc;IACZ,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADzB,cAAc,EAAE,sBAAsB,EACnB,MAAM,EAAE,SAAS;IAGtD;;;;;OAKG;IAIU,UAAU,CAAQ,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAUjE"}
@@ -0,0 +1,66 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ import { Controller, Get, Header, Res, Inject } from '@nestjs/common';
14
+ import { MetricsRegistryService } from '../services/metrics-registry.service.js';
15
+ import { AppLogger } from '../services/logger.service.js';
16
+ import { HTTP_STATUS_INTERNAL_SERVER_ERROR } from '../constants/http-status.constants.js';
17
+ import { getErrorMessage } from '../utils/error.utils.js';
18
+ /**
19
+ * Exposes Prometheus metrics at GET /metrics.
20
+ *
21
+ * IMPORTANT: This endpoint should be restricted to internal/monitoring networks
22
+ * via reverse proxy (nginx, Traefik, etc.) or firewall rules. Do not expose
23
+ * this endpoint publicly in production.
24
+ */
25
+ let MetricsController = class MetricsController {
26
+ metricsService;
27
+ logger;
28
+ constructor(metricsService, logger) {
29
+ this.metricsService = metricsService;
30
+ this.logger = logger;
31
+ }
32
+ /**
33
+ * GET /metrics
34
+ *
35
+ * Returns Prometheus metrics in text format for scraping.
36
+ * This endpoint should be configured for pull-based monitoring.
37
+ */
38
+ async getMetrics(response) {
39
+ try {
40
+ const metrics = await this.metricsService.getMetrics();
41
+ response.send(metrics);
42
+ }
43
+ catch (error) {
44
+ this.logger.error('Failed to collect metrics', getErrorMessage(error));
45
+ // Return empty metrics on error to avoid breaking scrapers
46
+ response.status(HTTP_STATUS_INTERNAL_SERVER_ERROR).send('# Error collecting metrics\n');
47
+ }
48
+ }
49
+ };
50
+ __decorate([
51
+ Get('metrics'),
52
+ Header('Content-Type', 'text/plain; version=0.0.4; charset=utf-8'),
53
+ Header('X-Robots-Tag', 'noindex, nofollow'),
54
+ __param(0, Res()),
55
+ __metadata("design:type", Function),
56
+ __metadata("design:paramtypes", [Object]),
57
+ __metadata("design:returntype", Promise)
58
+ ], MetricsController.prototype, "getMetrics", null);
59
+ MetricsController = __decorate([
60
+ Controller(),
61
+ __param(1, Inject(AppLogger)),
62
+ __metadata("design:paramtypes", [MetricsRegistryService,
63
+ AppLogger])
64
+ ], MetricsController);
65
+ export { MetricsController };
66
+ //# sourceMappingURL=metrics.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.controller.js","sourceRoot":"","sources":["../../../src/common/controllers/metrics.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAEtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,iCAAiC,EAAE,MAAM,uCAAuC,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D;;;;;;GAMG;AAEI,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAEX;IACmB;IAFrC,YACkB,cAAsC,EACnB,MAAiB;QADpC,mBAAc,GAAd,cAAc,CAAwB;QACnB,WAAM,GAAN,MAAM,CAAW;IACnD,CAAC;IAEJ;;;;;OAKG;IAIU,AAAN,KAAK,CAAC,UAAU,CAAQ,QAAkB;QAChD,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;YACvD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;YACvE,2DAA2D;YAC3D,QAAQ,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QACzF,CAAC;IACF,CAAC;CACD,CAAA;AAVa;IAHZ,GAAG,CAAC,SAAS,CAAC;IACd,MAAM,CAAC,cAAc,EAAE,0CAA0C,CAAC;IAClE,MAAM,CAAC,cAAc,EAAE,mBAAmB,CAAC;IACnB,WAAA,GAAG,EAAE,CAAA;;;;mDAS7B;AAxBW,iBAAiB;IAD7B,UAAU,EAAE;IAIV,WAAA,MAAM,CAAC,SAAS,CAAC,CAAA;qCADe,sBAAsB;QACX,SAAS;GAH1C,iBAAiB,CAyB7B"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Extract query parameters from HTTP request.
3
+ * @param key - Specific query parameter key (optional - extracts all if not specified)
4
+ * @returns Parameter decorator
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * // Extract all query parameters
9
+ * @Get()
10
+ * getData(@Query() query: any) {}
11
+ *
12
+ * // Extract specific query parameter
13
+ * @Get()
14
+ * getData(@Query('limit') limit: number) {}
15
+ * ```
16
+ */
17
+ export declare function Query(key?: string): ParameterDecorator;
18
+ /**
19
+ * Extract route parameters from HTTP request.
20
+ * @param key - Specific route parameter key (optional - extracts all if not specified)
21
+ * @returns Parameter decorator
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * // Extract all route parameters
26
+ * @Get(':id')
27
+ * getUser(@Params() params: any) {}
28
+ *
29
+ * // Extract specific route parameter
30
+ * @Get(':id')
31
+ * getUser(@Params('id') id: string) {}
32
+ * ```
33
+ */
34
+ export declare function Params(key?: string): ParameterDecorator;
35
+ /**
36
+ * Extract request body from HTTP request.
37
+ * @param key - Specific body property key (optional - extracts all if not specified)
38
+ * @returns Parameter decorator
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * // Extract entire body
43
+ * @Post()
44
+ * createUser(@Body() userData: CreateUserDto) {}
45
+ *
46
+ * // Extract specific body property
47
+ * @Patch(':id')
48
+ * updateUser(@Body('email') email: string) {}
49
+ * ```
50
+ */
51
+ export declare function Body(key?: string): ParameterDecorator;
52
+ /**
53
+ * Extract request headers from HTTP request.
54
+ * @param key - Specific header key (optional - extracts all if not specified)
55
+ * @returns Parameter decorator
56
+ *
57
+ * @remarks Header names are case-insensitive in HTTP/1.1.
58
+ *
59
+ * @example
60
+ * ```typescript
61
+ * // Extract all headers
62
+ * @Get()
63
+ * getData(@Headers() headers: any) {}
64
+ *
65
+ * // Extract specific header
66
+ * @Get()
67
+ * getData(@Headers('authorization') auth: string) {}
68
+ * ```
69
+ */
70
+ export declare function Headers(key?: string): ParameterDecorator;
71
+ /**
72
+ * Extract cookies from HTTP request.
73
+ * @param key - Specific cookie key (optional - extracts all if not specified)
74
+ * @returns Parameter decorator
75
+ *
76
+ * @remarks Requires cookie-parser middleware to be enabled.
77
+ *
78
+ * @example
79
+ * ```typescript
80
+ * // Extract all cookies
81
+ * @Get()
82
+ * getData(@Cookies() cookies: any) {}
83
+ *
84
+ * // Extract specific cookie
85
+ * @Get()
86
+ * getData(@Cookies('sessionId') sessionId: string) {}
87
+ * ```
88
+ */
89
+ export declare function Cookies(key?: string): ParameterDecorator;
90
+ //# sourceMappingURL=common-decorators.d.ts.map