@application-kit/observability 0.1.0 → 0.3.0

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 (155) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +98 -17
  3. package/dist/cjs/cqrs/cqrs-logger.d.ts +12 -0
  4. package/dist/cjs/cqrs/cqrs-logger.js +72 -0
  5. package/dist/cjs/cqrs/cqrs-logger.module.d.ts +2 -0
  6. package/dist/cjs/cqrs/cqrs-logger.module.js +22 -0
  7. package/dist/cjs/cqrs/index.d.ts +2 -0
  8. package/dist/cjs/cqrs/index.js +18 -0
  9. package/dist/cjs/health/cli/health-cli-options.interface.d.ts +3 -0
  10. package/dist/cjs/health/cli/health-cli-options.interface.js +2 -0
  11. package/dist/cjs/health/cli/health-cli.d.ts +13 -0
  12. package/dist/cjs/health/cli/health-cli.js +56 -0
  13. package/dist/cjs/health/cli/health-cli.module.d.ts +5 -0
  14. package/dist/cjs/health/cli/health-cli.module.js +23 -0
  15. package/dist/cjs/health/cli/index.d.ts +3 -0
  16. package/dist/cjs/health/cli/index.js +19 -0
  17. package/dist/cjs/health/graphql/health-check.type.d.ts +3 -0
  18. package/dist/cjs/health/graphql/health-check.type.js +24 -0
  19. package/dist/cjs/health/graphql/health-graphql.module.d.ts +5 -0
  20. package/dist/cjs/health/graphql/health-graphql.module.js +26 -0
  21. package/dist/cjs/health/graphql/health.resolver.d.ts +11 -0
  22. package/dist/cjs/health/graphql/health.resolver.js +55 -0
  23. package/dist/cjs/health/graphql/index.d.ts +3 -0
  24. package/dist/cjs/health/graphql/index.js +19 -0
  25. package/dist/cjs/health/health-checks.d.ts +10 -0
  26. package/dist/cjs/health/health-checks.js +53 -0
  27. package/dist/cjs/health/health-http.module.d.ts +5 -0
  28. package/dist/cjs/health/health-http.module.js +26 -0
  29. package/dist/cjs/health/health-module-options.interface.d.ts +9 -0
  30. package/dist/cjs/health/health-module-options.interface.js +2 -0
  31. package/dist/cjs/health/health.config.d.ts +8 -0
  32. package/dist/cjs/health/health.config.js +39 -0
  33. package/dist/cjs/health/health.controller.d.ts +14 -0
  34. package/dist/cjs/health/health.controller.js +78 -0
  35. package/dist/cjs/health/health.environment.d.ts +5 -0
  36. package/dist/cjs/health/health.environment.js +38 -0
  37. package/dist/cjs/health/health.module.d.ts +5 -0
  38. package/dist/cjs/health/health.module.js +28 -0
  39. package/dist/cjs/health/index.d.ts +8 -0
  40. package/dist/cjs/health/index.js +24 -0
  41. package/dist/cjs/health/migrations.health-indicator.d.ts +9 -0
  42. package/dist/cjs/health/migrations.health-indicator.js +40 -0
  43. package/dist/cjs/http/client-ip-options.interface.d.ts +3 -0
  44. package/dist/cjs/http/client-ip-options.interface.js +2 -0
  45. package/dist/cjs/http/index.d.ts +2 -0
  46. package/dist/cjs/http/index.js +18 -0
  47. package/dist/cjs/http/resolve-client-ip.d.ts +14 -0
  48. package/dist/cjs/http/resolve-client-ip.js +22 -0
  49. package/dist/cjs/logging/constants.d.ts +1 -0
  50. package/dist/cjs/logging/constants.js +4 -0
  51. package/dist/cjs/logging/index.d.ts +8 -0
  52. package/dist/cjs/logging/index.js +24 -0
  53. package/dist/cjs/logging/infrastructure-paths.d.ts +4 -0
  54. package/dist/cjs/logging/infrastructure-paths.js +9 -0
  55. package/dist/cjs/logging/logger.environment.d.ts +4 -0
  56. package/dist/cjs/logging/logger.environment.js +24 -0
  57. package/dist/cjs/logging/observability-logger.interface.d.ts +4 -0
  58. package/dist/cjs/logging/observability-logger.interface.js +2 -0
  59. package/dist/cjs/logging/pino-logger-options.interface.d.ts +5 -0
  60. package/dist/cjs/logging/pino-logger-options.interface.js +2 -0
  61. package/dist/cjs/logging/pino-logger.config.d.ts +15 -0
  62. package/dist/cjs/logging/pino-logger.config.js +104 -0
  63. package/dist/cjs/logging/resolve-request-id.d.ts +4 -0
  64. package/dist/cjs/logging/resolve-request-id.js +10 -0
  65. package/dist/cjs/logging/resolve-support-id.d.ts +3 -0
  66. package/dist/cjs/logging/resolve-support-id.js +8 -0
  67. package/dist/cjs/metrics/index.d.ts +3 -0
  68. package/dist/cjs/metrics/index.js +3 -0
  69. package/dist/cjs/metrics/metrics-hooks.d.ts +2 -0
  70. package/dist/cjs/metrics/metrics-hooks.js +37 -0
  71. package/dist/cjs/metrics/metrics-http.module.d.ts +5 -0
  72. package/dist/cjs/metrics/metrics-http.module.js +29 -0
  73. package/dist/cjs/metrics/metrics.controller.d.ts +7 -0
  74. package/dist/cjs/metrics/metrics.controller.js +42 -0
  75. package/dist/cjs/shared/active-span-context.d.ts +2 -0
  76. package/dist/cjs/shared/active-span-context.js +9 -0
  77. package/dist/cjs/shared/with-class-decorator.d.ts +2 -0
  78. package/dist/cjs/shared/with-class-decorator.js +14 -0
  79. package/dist/esm/cqrs/cqrs-logger.d.ts +12 -0
  80. package/dist/esm/cqrs/cqrs-logger.js +69 -0
  81. package/dist/esm/cqrs/cqrs-logger.module.d.ts +2 -0
  82. package/dist/esm/cqrs/cqrs-logger.module.js +19 -0
  83. package/dist/esm/cqrs/index.d.ts +2 -0
  84. package/dist/esm/cqrs/index.js +2 -0
  85. package/dist/esm/health/cli/health-cli-options.interface.d.ts +3 -0
  86. package/dist/esm/health/cli/health-cli-options.interface.js +1 -0
  87. package/dist/esm/health/cli/health-cli.d.ts +13 -0
  88. package/dist/esm/health/cli/health-cli.js +52 -0
  89. package/dist/esm/health/cli/health-cli.module.d.ts +5 -0
  90. package/dist/esm/health/cli/health-cli.module.js +20 -0
  91. package/dist/esm/health/cli/index.d.ts +3 -0
  92. package/dist/esm/health/cli/index.js +3 -0
  93. package/dist/esm/health/graphql/health-check.type.d.ts +3 -0
  94. package/dist/esm/health/graphql/health-check.type.js +21 -0
  95. package/dist/esm/health/graphql/health-graphql.module.d.ts +5 -0
  96. package/dist/esm/health/graphql/health-graphql.module.js +23 -0
  97. package/dist/esm/health/graphql/health.resolver.d.ts +11 -0
  98. package/dist/esm/health/graphql/health.resolver.js +52 -0
  99. package/dist/esm/health/graphql/index.d.ts +3 -0
  100. package/dist/esm/health/graphql/index.js +3 -0
  101. package/dist/esm/health/health-checks.d.ts +10 -0
  102. package/dist/esm/health/health-checks.js +50 -0
  103. package/dist/esm/health/health-http.module.d.ts +5 -0
  104. package/dist/esm/health/health-http.module.js +23 -0
  105. package/dist/esm/health/health-module-options.interface.d.ts +9 -0
  106. package/dist/esm/health/health-module-options.interface.js +1 -0
  107. package/dist/esm/health/health.config.d.ts +8 -0
  108. package/dist/esm/health/health.config.js +36 -0
  109. package/dist/esm/health/health.controller.d.ts +14 -0
  110. package/dist/esm/health/health.controller.js +75 -0
  111. package/dist/esm/health/health.environment.d.ts +5 -0
  112. package/dist/esm/health/health.environment.js +34 -0
  113. package/dist/esm/health/health.module.d.ts +5 -0
  114. package/dist/esm/health/health.module.js +25 -0
  115. package/dist/esm/health/index.d.ts +8 -0
  116. package/dist/esm/health/index.js +8 -0
  117. package/dist/esm/health/migrations.health-indicator.d.ts +9 -0
  118. package/dist/esm/health/migrations.health-indicator.js +37 -0
  119. package/dist/esm/http/client-ip-options.interface.d.ts +3 -0
  120. package/dist/esm/http/client-ip-options.interface.js +1 -0
  121. package/dist/esm/http/index.d.ts +2 -0
  122. package/dist/esm/http/index.js +2 -0
  123. package/dist/esm/http/resolve-client-ip.d.ts +14 -0
  124. package/dist/esm/http/resolve-client-ip.js +18 -0
  125. package/dist/esm/logging/constants.d.ts +1 -0
  126. package/dist/esm/logging/constants.js +1 -0
  127. package/dist/esm/logging/index.d.ts +8 -0
  128. package/dist/esm/logging/index.js +8 -0
  129. package/dist/esm/logging/infrastructure-paths.d.ts +4 -0
  130. package/dist/esm/logging/infrastructure-paths.js +5 -0
  131. package/dist/esm/logging/logger.environment.d.ts +4 -0
  132. package/dist/esm/logging/logger.environment.js +20 -0
  133. package/dist/esm/logging/observability-logger.interface.d.ts +4 -0
  134. package/dist/esm/logging/observability-logger.interface.js +1 -0
  135. package/dist/esm/logging/pino-logger-options.interface.d.ts +5 -0
  136. package/dist/esm/logging/pino-logger-options.interface.js +1 -0
  137. package/dist/esm/logging/pino-logger.config.d.ts +15 -0
  138. package/dist/esm/logging/pino-logger.config.js +99 -0
  139. package/dist/esm/logging/resolve-request-id.d.ts +4 -0
  140. package/dist/esm/logging/resolve-request-id.js +6 -0
  141. package/dist/esm/logging/resolve-support-id.d.ts +3 -0
  142. package/dist/esm/logging/resolve-support-id.js +4 -0
  143. package/dist/esm/metrics/index.d.ts +3 -0
  144. package/dist/esm/metrics/index.js +3 -0
  145. package/dist/esm/metrics/metrics-hooks.d.ts +2 -0
  146. package/dist/esm/metrics/metrics-hooks.js +33 -0
  147. package/dist/esm/metrics/metrics-http.module.d.ts +5 -0
  148. package/dist/esm/metrics/metrics-http.module.js +26 -0
  149. package/dist/esm/metrics/metrics.controller.d.ts +7 -0
  150. package/dist/esm/metrics/metrics.controller.js +39 -0
  151. package/dist/esm/shared/active-span-context.d.ts +2 -0
  152. package/dist/esm/shared/active-span-context.js +5 -0
  153. package/dist/esm/shared/with-class-decorator.d.ts +2 -0
  154. package/dist/esm/shared/with-class-decorator.js +10 -0
  155. package/package.json +140 -5
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.HealthChecks = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const terminus_1 = require("@nestjs/terminus");
18
+ const health_config_js_1 = require("./health.config.js");
19
+ let HealthChecks = class HealthChecks {
20
+ database;
21
+ memory;
22
+ disk;
23
+ config;
24
+ constructor(database, memory, disk, config) {
25
+ this.database = database;
26
+ this.memory = memory;
27
+ this.disk = disk;
28
+ this.config = config;
29
+ }
30
+ build() {
31
+ return [
32
+ async () => this.database.pingCheck('typeorm'),
33
+ async () => this.memory.checkHeap('memory_heap', this.config.memoryHeapBytes),
34
+ async () => this.memory.checkRSS('memory_rss', this.config.memoryRssBytes),
35
+ async () => this.disk.checkStorage('disk', {
36
+ path: '/',
37
+ thresholdPercent: this.config.diskThresholdPercent,
38
+ }),
39
+ ];
40
+ }
41
+ };
42
+ exports.HealthChecks = HealthChecks;
43
+ exports.HealthChecks = HealthChecks = __decorate([
44
+ (0, common_1.Injectable)(),
45
+ __param(0, (0, common_1.Inject)(terminus_1.TypeOrmHealthIndicator)),
46
+ __param(1, (0, common_1.Inject)(terminus_1.MemoryHealthIndicator)),
47
+ __param(2, (0, common_1.Inject)(terminus_1.DiskHealthIndicator)),
48
+ __param(3, (0, common_1.Inject)(health_config_js_1.HealthConfig)),
49
+ __metadata("design:paramtypes", [terminus_1.TypeOrmHealthIndicator,
50
+ terminus_1.MemoryHealthIndicator,
51
+ terminus_1.DiskHealthIndicator,
52
+ health_config_js_1.HealthConfig])
53
+ ], HealthChecks);
@@ -0,0 +1,5 @@
1
+ import type { DynamicModule } from '@nestjs/common';
2
+ import type { HealthCarrierOptionsInterface } from './health-module-options.interface.js';
3
+ export declare class HealthHttpModule {
4
+ static forRoot(options?: HealthCarrierOptionsInterface): DynamicModule;
5
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.HealthHttpModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const with_class_decorator_js_1 = require("../shared/with-class-decorator.js");
12
+ const health_controller_js_1 = require("./health.controller.js");
13
+ const migrations_health_indicator_js_1 = require("./migrations.health-indicator.js");
14
+ let HealthHttpModule = class HealthHttpModule {
15
+ static forRoot(options = {}) {
16
+ return {
17
+ controllers: [(0, with_class_decorator_js_1.withClassDecorator)(health_controller_js_1.HealthController, options.publicRoute)],
18
+ module: this,
19
+ providers: [migrations_health_indicator_js_1.MigrationsHealthIndicator],
20
+ };
21
+ }
22
+ };
23
+ exports.HealthHttpModule = HealthHttpModule;
24
+ exports.HealthHttpModule = HealthHttpModule = __decorate([
25
+ (0, common_1.Module)({})
26
+ ], HealthHttpModule);
@@ -0,0 +1,9 @@
1
+ import type { ModuleMetadata } from '@nestjs/common';
2
+ import type { TerminusModuleOptions } from '@nestjs/terminus';
3
+ export interface HealthCarrierOptionsInterface {
4
+ readonly publicRoute?: ClassDecorator;
5
+ }
6
+ export interface HealthModuleOptionsInterface {
7
+ readonly imports?: ModuleMetadata['imports'];
8
+ readonly terminus?: TerminusModuleOptions;
9
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ import { HealthEnvironment } from './health.environment.js';
2
+ export declare class HealthConfig {
3
+ private readonly environment;
4
+ get diskThresholdPercent(): number;
5
+ get memoryHeapBytes(): number;
6
+ get memoryRssBytes(): number;
7
+ constructor(environment: HealthEnvironment);
8
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.HealthConfig = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const health_environment_js_1 = require("./health.environment.js");
18
+ const BYTES_IN_MEGABYTE = 1024 * 1024;
19
+ let HealthConfig = class HealthConfig {
20
+ environment;
21
+ get diskThresholdPercent() {
22
+ return this.environment.HEALTH_DISK_THRESHOLD_PERCENT;
23
+ }
24
+ get memoryHeapBytes() {
25
+ return this.environment.HEALTH_MEMORY_HEAP_MB * BYTES_IN_MEGABYTE;
26
+ }
27
+ get memoryRssBytes() {
28
+ return this.environment.HEALTH_MEMORY_RSS_MB * BYTES_IN_MEGABYTE;
29
+ }
30
+ constructor(environment) {
31
+ this.environment = environment;
32
+ }
33
+ };
34
+ exports.HealthConfig = HealthConfig;
35
+ exports.HealthConfig = HealthConfig = __decorate([
36
+ (0, common_1.Injectable)(),
37
+ __param(0, (0, common_1.Inject)(health_environment_js_1.HealthEnvironment)),
38
+ __metadata("design:paramtypes", [health_environment_js_1.HealthEnvironment])
39
+ ], HealthConfig);
@@ -0,0 +1,14 @@
1
+ import type { HealthCheckResult } from '@nestjs/terminus';
2
+ import { HealthCheckService, TypeOrmHealthIndicator } from '@nestjs/terminus';
3
+ import { HealthChecks } from './health-checks.js';
4
+ import { MigrationsHealthIndicator } from './migrations.health-indicator.js';
5
+ export declare class HealthController {
6
+ private readonly health;
7
+ private readonly database;
8
+ private readonly migrations;
9
+ private readonly healthChecks;
10
+ constructor(health: HealthCheckService, database: TypeOrmHealthIndicator, migrations: MigrationsHealthIndicator, healthChecks: HealthChecks);
11
+ check(): Promise<HealthCheckResult>;
12
+ live(): Promise<HealthCheckResult>;
13
+ ready(): Promise<HealthCheckResult>;
14
+ }
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.HealthController = void 0;
16
+ const logging_1 = require("@application-kit/typeorm/logging");
17
+ const common_1 = require("@nestjs/common");
18
+ const terminus_1 = require("@nestjs/terminus");
19
+ const infrastructure_paths_js_1 = require("../logging/infrastructure-paths.js");
20
+ const health_checks_js_1 = require("./health-checks.js");
21
+ const migrations_health_indicator_js_1 = require("./migrations.health-indicator.js");
22
+ let HealthController = class HealthController {
23
+ health;
24
+ database;
25
+ migrations;
26
+ healthChecks;
27
+ constructor(health, database, migrations, healthChecks) {
28
+ this.health = health;
29
+ this.database = database;
30
+ this.migrations = migrations;
31
+ this.healthChecks = healthChecks;
32
+ }
33
+ async check() {
34
+ return (0, logging_1.runAsInfrastructureQuery)(async () => this.health.check(this.healthChecks.build()));
35
+ }
36
+ async live() {
37
+ return this.health.check([]);
38
+ }
39
+ async ready() {
40
+ return (0, logging_1.runAsInfrastructureQuery)(async () => this.health.check([
41
+ async () => this.database.pingCheck('typeorm'),
42
+ async () => this.migrations.isUpToDate('migrations'),
43
+ ]));
44
+ }
45
+ };
46
+ exports.HealthController = HealthController;
47
+ __decorate([
48
+ (0, common_1.Get)(),
49
+ (0, terminus_1.HealthCheck)(),
50
+ __metadata("design:type", Function),
51
+ __metadata("design:paramtypes", []),
52
+ __metadata("design:returntype", Promise)
53
+ ], HealthController.prototype, "check", null);
54
+ __decorate([
55
+ (0, common_1.Get)('live'),
56
+ (0, terminus_1.HealthCheck)(),
57
+ __metadata("design:type", Function),
58
+ __metadata("design:paramtypes", []),
59
+ __metadata("design:returntype", Promise)
60
+ ], HealthController.prototype, "live", null);
61
+ __decorate([
62
+ (0, common_1.Get)('ready'),
63
+ (0, terminus_1.HealthCheck)(),
64
+ __metadata("design:type", Function),
65
+ __metadata("design:paramtypes", []),
66
+ __metadata("design:returntype", Promise)
67
+ ], HealthController.prototype, "ready", null);
68
+ exports.HealthController = HealthController = __decorate([
69
+ (0, common_1.Controller)(infrastructure_paths_js_1.HEALTH_ROUTE),
70
+ __param(0, (0, common_1.Inject)(terminus_1.HealthCheckService)),
71
+ __param(1, (0, common_1.Inject)(terminus_1.TypeOrmHealthIndicator)),
72
+ __param(2, (0, common_1.Inject)(migrations_health_indicator_js_1.MigrationsHealthIndicator)),
73
+ __param(3, (0, common_1.Inject)(health_checks_js_1.HealthChecks)),
74
+ __metadata("design:paramtypes", [terminus_1.HealthCheckService,
75
+ terminus_1.TypeOrmHealthIndicator,
76
+ migrations_health_indicator_js_1.MigrationsHealthIndicator,
77
+ health_checks_js_1.HealthChecks])
78
+ ], HealthController);
@@ -0,0 +1,5 @@
1
+ export declare class HealthEnvironment {
2
+ HEALTH_DISK_THRESHOLD_PERCENT: number;
3
+ HEALTH_MEMORY_HEAP_MB: number;
4
+ HEALTH_MEMORY_RSS_MB: number;
5
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.HealthEnvironment = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ class HealthEnvironment {
16
+ HEALTH_DISK_THRESHOLD_PERCENT = 0.8;
17
+ HEALTH_MEMORY_HEAP_MB = 500;
18
+ HEALTH_MEMORY_RSS_MB = 800;
19
+ }
20
+ exports.HealthEnvironment = HealthEnvironment;
21
+ __decorate([
22
+ (0, class_transformer_1.Expose)(),
23
+ (0, class_validator_1.IsNumber)(),
24
+ (0, class_transformer_1.Type)(() => Number),
25
+ __metadata("design:type", Object)
26
+ ], HealthEnvironment.prototype, "HEALTH_DISK_THRESHOLD_PERCENT", void 0);
27
+ __decorate([
28
+ (0, class_transformer_1.Expose)(),
29
+ (0, class_validator_1.IsNumber)(),
30
+ (0, class_transformer_1.Type)(() => Number),
31
+ __metadata("design:type", Object)
32
+ ], HealthEnvironment.prototype, "HEALTH_MEMORY_HEAP_MB", void 0);
33
+ __decorate([
34
+ (0, class_transformer_1.Expose)(),
35
+ (0, class_validator_1.IsNumber)(),
36
+ (0, class_transformer_1.Type)(() => Number),
37
+ __metadata("design:type", Object)
38
+ ], HealthEnvironment.prototype, "HEALTH_MEMORY_RSS_MB", void 0);
@@ -0,0 +1,5 @@
1
+ import type { DynamicModule } from '@nestjs/common';
2
+ import type { HealthModuleOptionsInterface } from './health-module-options.interface.js';
3
+ export declare class HealthModule {
4
+ static forRoot(options?: HealthModuleOptionsInterface): DynamicModule;
5
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.HealthModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const terminus_1 = require("@nestjs/terminus");
12
+ const health_checks_js_1 = require("./health-checks.js");
13
+ let HealthModule = class HealthModule {
14
+ static forRoot(options = {}) {
15
+ const terminus = terminus_1.TerminusModule.forRoot(options.terminus);
16
+ return {
17
+ exports: [health_checks_js_1.HealthChecks, terminus],
18
+ global: true,
19
+ imports: [...options.imports ?? [], terminus],
20
+ module: this,
21
+ providers: [health_checks_js_1.HealthChecks],
22
+ };
23
+ }
24
+ };
25
+ exports.HealthModule = HealthModule;
26
+ exports.HealthModule = HealthModule = __decorate([
27
+ (0, common_1.Module)({})
28
+ ], HealthModule);
@@ -0,0 +1,8 @@
1
+ export * from './health-checks.js';
2
+ export * from './health-http.module.js';
3
+ export * from './health-module-options.interface.js';
4
+ export * from './health.config.js';
5
+ export * from './health.controller.js';
6
+ export * from './health.environment.js';
7
+ export * from './health.module.js';
8
+ export * from './migrations.health-indicator.js';
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./health-checks.js"), exports);
18
+ __exportStar(require("./health-http.module.js"), exports);
19
+ __exportStar(require("./health-module-options.interface.js"), exports);
20
+ __exportStar(require("./health.config.js"), exports);
21
+ __exportStar(require("./health.controller.js"), exports);
22
+ __exportStar(require("./health.environment.js"), exports);
23
+ __exportStar(require("./health.module.js"), exports);
24
+ __exportStar(require("./migrations.health-indicator.js"), exports);
@@ -0,0 +1,9 @@
1
+ import type { HealthIndicatorResult } from '@nestjs/terminus';
2
+ import { HealthIndicatorService } from '@nestjs/terminus';
3
+ import { DataSource } from 'typeorm';
4
+ export declare class MigrationsHealthIndicator {
5
+ private readonly healthIndicatorService;
6
+ private readonly dataSource;
7
+ constructor(healthIndicatorService: HealthIndicatorService, dataSource: DataSource);
8
+ isUpToDate(key: string): Promise<HealthIndicatorResult>;
9
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.MigrationsHealthIndicator = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const terminus_1 = require("@nestjs/terminus");
18
+ const typeorm_1 = require("@nestjs/typeorm");
19
+ const typeorm_2 = require("typeorm");
20
+ let MigrationsHealthIndicator = class MigrationsHealthIndicator {
21
+ healthIndicatorService;
22
+ dataSource;
23
+ constructor(healthIndicatorService, dataSource) {
24
+ this.healthIndicatorService = healthIndicatorService;
25
+ this.dataSource = dataSource;
26
+ }
27
+ async isUpToDate(key) {
28
+ const hasPendingMigrations = await this.dataSource.showMigrations();
29
+ const indicator = this.healthIndicatorService.check(key);
30
+ return hasPendingMigrations ? indicator.down({ pendingMigrations: true }) : indicator.up();
31
+ }
32
+ };
33
+ exports.MigrationsHealthIndicator = MigrationsHealthIndicator;
34
+ exports.MigrationsHealthIndicator = MigrationsHealthIndicator = __decorate([
35
+ (0, common_1.Injectable)(),
36
+ __param(0, (0, common_1.Inject)(terminus_1.HealthIndicatorService)),
37
+ __param(1, (0, typeorm_1.InjectDataSource)()),
38
+ __metadata("design:paramtypes", [terminus_1.HealthIndicatorService,
39
+ typeorm_2.DataSource])
40
+ ], MigrationsHealthIndicator);
@@ -0,0 +1,3 @@
1
+ export interface ClientIpOptionsInterface {
2
+ readonly trustedHeaders?: readonly string[];
3
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ export * from './client-ip-options.interface.js';
2
+ export * from './resolve-client-ip.js';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./client-ip-options.interface.js"), exports);
18
+ __exportStar(require("./resolve-client-ip.js"), exports);
@@ -0,0 +1,14 @@
1
+ import type { ClientIpOptionsInterface } from './client-ip-options.interface.js';
2
+ export interface ClientIpSourceInterface {
3
+ headers?: Record<string, string | string[] | undefined> | undefined;
4
+ ip?: string | undefined;
5
+ raw?: {
6
+ socket?: SocketLikeInterface | undefined;
7
+ } | undefined;
8
+ socket?: SocketLikeInterface | undefined;
9
+ }
10
+ interface SocketLikeInterface {
11
+ remoteAddress?: string | undefined;
12
+ }
13
+ export declare const resolveClientIp: (request: ClientIpSourceInterface, options?: ClientIpOptionsInterface) => string;
14
+ export {};
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveClientIp = void 0;
4
+ const firstHeaderValue = (value) => {
5
+ const single = Array.isArray(value) ? value[0] : value;
6
+ return (single ?? '').trim();
7
+ };
8
+ const trustedHeaderIp = (request, trustedHeaders) => {
9
+ const values = trustedHeaders?.map((header) => firstHeaderValue(request.headers?.[header]));
10
+ return values?.find((value) => value !== '') ?? '';
11
+ };
12
+ const rawSocketIp = (request) => request.raw?.socket?.remoteAddress ?? '';
13
+ const socketIp = (request) => request.socket?.remoteAddress ?? rawSocketIp(request);
14
+ const fallbackIp = (request) => {
15
+ const proxyAwareIp = (request.ip ?? '').trim();
16
+ return proxyAwareIp === '' ? socketIp(request) : proxyAwareIp;
17
+ };
18
+ const resolveClientIp = (request, options = {}) => {
19
+ const headerIp = trustedHeaderIp(request, options.trustedHeaders);
20
+ return headerIp === '' ? fallbackIp(request) : headerIp;
21
+ };
22
+ exports.resolveClientIp = resolveClientIp;
@@ -0,0 +1 @@
1
+ export declare const OBSERVABILITY_LOGGER: unique symbol;
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OBSERVABILITY_LOGGER = void 0;
4
+ exports.OBSERVABILITY_LOGGER = Symbol('OBSERVABILITY_LOGGER');
@@ -0,0 +1,8 @@
1
+ export * from './constants.js';
2
+ export * from './infrastructure-paths.js';
3
+ export * from './logger.environment.js';
4
+ export * from './observability-logger.interface.js';
5
+ export * from './pino-logger-options.interface.js';
6
+ export * from './pino-logger.config.js';
7
+ export * from './resolve-request-id.js';
8
+ export * from './resolve-support-id.js';
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./constants.js"), exports);
18
+ __exportStar(require("./infrastructure-paths.js"), exports);
19
+ __exportStar(require("./logger.environment.js"), exports);
20
+ __exportStar(require("./observability-logger.interface.js"), exports);
21
+ __exportStar(require("./pino-logger-options.interface.js"), exports);
22
+ __exportStar(require("./pino-logger.config.js"), exports);
23
+ __exportStar(require("./resolve-request-id.js"), exports);
24
+ __exportStar(require("./resolve-support-id.js"), exports);
@@ -0,0 +1,4 @@
1
+ export declare const HEALTH_ROUTE = "health";
2
+ export declare const METRICS_ROUTE = "metrics";
3
+ export declare const INFRASTRUCTURE_PATHS: readonly string[];
4
+ export declare const isInfrastructurePath: (path: string) => boolean;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isInfrastructurePath = exports.INFRASTRUCTURE_PATHS = exports.METRICS_ROUTE = exports.HEALTH_ROUTE = void 0;
4
+ exports.HEALTH_ROUTE = 'health';
5
+ exports.METRICS_ROUTE = 'metrics';
6
+ exports.INFRASTRUCTURE_PATHS = [`/${exports.HEALTH_ROUTE}`, `/${exports.METRICS_ROUTE}`];
7
+ const isInfrastructurePath = (path) => exports.INFRASTRUCTURE_PATHS
8
+ .some((prefix) => path === prefix || path.startsWith(`${prefix}/`));
9
+ exports.isInfrastructurePath = isInfrastructurePath;
@@ -0,0 +1,4 @@
1
+ import type { LevelWithSilent } from 'pino';
2
+ export declare class LoggerEnvironment {
3
+ LOG_LEVEL: LevelWithSilent;
4
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.LoggerEnvironment = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const LOG_LEVELS = ['trace', 'debug', 'info', 'warn', 'error', 'fatal', 'silent'];
16
+ class LoggerEnvironment {
17
+ LOG_LEVEL = 'warn';
18
+ }
19
+ exports.LoggerEnvironment = LoggerEnvironment;
20
+ __decorate([
21
+ (0, class_transformer_1.Expose)(),
22
+ (0, class_validator_1.IsIn)(LOG_LEVELS),
23
+ __metadata("design:type", String)
24
+ ], LoggerEnvironment.prototype, "LOG_LEVEL", void 0);
@@ -0,0 +1,4 @@
1
+ export interface ObservabilityLoggerInterface {
2
+ error(payload: object, message: string): void;
3
+ info(payload: object, message: string): void;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ import type { ClientIpSourceInterface } from '../http/resolve-client-ip.js';
2
+ export type ClientIpResolver = (request: ClientIpSourceInterface) => string;
3
+ export interface PinoLoggerOptionsInterface {
4
+ readonly resolveClientIp?: ClientIpResolver;
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,15 @@
1
+ import type { Params } from 'nestjs-pino';
2
+ import type { Level } from 'pino';
3
+ import type { PinoLoggerOptionsInterface } from './pino-logger-options.interface.js';
4
+ import { LoggerEnvironment } from './logger.environment.js';
5
+ export declare const responseLogLevel: (request: {
6
+ url?: string | undefined;
7
+ }, response: {
8
+ statusCode: number;
9
+ }, error?: Error) => Level;
10
+ export declare const traceContextMixin: () => Record<string, number | string>;
11
+ export declare class PinoLoggerConfig {
12
+ private readonly environment;
13
+ constructor(environment: LoggerEnvironment);
14
+ createOptions(options?: PinoLoggerOptionsInterface): Params;
15
+ }