@pawells/nestjs-shared 1.0.0-dev.3052c75
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.
- package/LICENSE +21 -0
- package/README.md +802 -0
- package/build/LICENSE +21 -0
- package/build/README.md +802 -0
- package/build/common/common.module.d.ts +49 -0
- package/build/common/common.module.d.ts.map +1 -0
- package/build/common/common.module.js +178 -0
- package/build/common/common.module.js.map +1 -0
- package/build/common/constants/histogram-buckets.constants.d.ts +12 -0
- package/build/common/constants/histogram-buckets.constants.d.ts.map +1 -0
- package/build/common/constants/histogram-buckets.constants.js +51 -0
- package/build/common/constants/histogram-buckets.constants.js.map +1 -0
- package/build/common/constants/http-status.constants.d.ts +27 -0
- package/build/common/constants/http-status.constants.d.ts.map +1 -0
- package/build/common/constants/http-status.constants.js +27 -0
- package/build/common/constants/http-status.constants.js.map +1 -0
- package/build/common/constants/timeout.constants.d.ts +29 -0
- package/build/common/constants/timeout.constants.d.ts.map +1 -0
- package/build/common/constants/timeout.constants.js +45 -0
- package/build/common/constants/timeout.constants.js.map +1 -0
- package/build/common/controllers/metrics.controller.d.ts +23 -0
- package/build/common/controllers/metrics.controller.d.ts.map +1 -0
- package/build/common/controllers/metrics.controller.js +66 -0
- package/build/common/controllers/metrics.controller.js.map +1 -0
- package/build/common/decorators/common-decorators.d.ts +90 -0
- package/build/common/decorators/common-decorators.d.ts.map +1 -0
- package/build/common/decorators/common-decorators.js +101 -0
- package/build/common/decorators/common-decorators.js.map +1 -0
- package/build/common/decorators/decorator-factory.d.ts +108 -0
- package/build/common/decorators/decorator-factory.d.ts.map +1 -0
- package/build/common/decorators/decorator-factory.js +104 -0
- package/build/common/decorators/decorator-factory.js.map +1 -0
- package/build/common/decorators/guard.decorators.d.ts +48 -0
- package/build/common/decorators/guard.decorators.d.ts.map +1 -0
- package/build/common/decorators/guard.decorators.js +49 -0
- package/build/common/decorators/guard.decorators.js.map +1 -0
- package/build/common/decorators/index.d.ts +10 -0
- package/build/common/decorators/index.d.ts.map +1 -0
- package/build/common/decorators/index.js +11 -0
- package/build/common/decorators/index.js.map +1 -0
- package/build/common/decorators/instrument.decorator.d.ts +128 -0
- package/build/common/decorators/instrument.decorator.d.ts.map +1 -0
- package/build/common/decorators/instrument.decorator.js +165 -0
- package/build/common/decorators/instrument.decorator.js.map +1 -0
- package/build/common/decorators/metric.decorators.d.ts +42 -0
- package/build/common/decorators/metric.decorators.d.ts.map +1 -0
- package/build/common/decorators/metric.decorators.js +85 -0
- package/build/common/decorators/metric.decorators.js.map +1 -0
- package/build/common/decorators/request-property.decorator.d.ts +65 -0
- package/build/common/decorators/request-property.decorator.d.ts.map +1 -0
- package/build/common/decorators/request-property.decorator.js +102 -0
- package/build/common/decorators/request-property.decorator.js.map +1 -0
- package/build/common/errors/base-application-error.d.ts +98 -0
- package/build/common/errors/base-application-error.d.ts.map +1 -0
- package/build/common/errors/base-application-error.js +133 -0
- package/build/common/errors/base-application-error.js.map +1 -0
- package/build/common/errors/error-factory.d.ts +93 -0
- package/build/common/errors/error-factory.d.ts.map +1 -0
- package/build/common/errors/error-factory.js +105 -0
- package/build/common/errors/error-factory.js.map +1 -0
- package/build/common/errors/index.d.ts +13 -0
- package/build/common/errors/index.d.ts.map +1 -0
- package/build/common/errors/index.js +15 -0
- package/build/common/errors/index.js.map +1 -0
- package/build/common/factories/index.d.ts +5 -0
- package/build/common/factories/index.d.ts.map +1 -0
- package/build/common/factories/index.js +3 -0
- package/build/common/factories/index.js.map +1 -0
- package/build/common/factories/module-factory.d.ts +178 -0
- package/build/common/factories/module-factory.d.ts.map +1 -0
- package/build/common/factories/module-factory.js +253 -0
- package/build/common/factories/module-factory.js.map +1 -0
- package/build/common/factories/rate-limit-config.factory.d.ts +79 -0
- package/build/common/factories/rate-limit-config.factory.d.ts.map +1 -0
- package/build/common/factories/rate-limit-config.factory.js +115 -0
- package/build/common/factories/rate-limit-config.factory.js.map +1 -0
- package/build/common/factories/security-bootstrap.factory.d.ts +77 -0
- package/build/common/factories/security-bootstrap.factory.d.ts.map +1 -0
- package/build/common/factories/security-bootstrap.factory.js +222 -0
- package/build/common/factories/security-bootstrap.factory.js.map +1 -0
- package/build/common/filters/global-exception.filter.d.ts +78 -0
- package/build/common/filters/global-exception.filter.d.ts.map +1 -0
- package/build/common/filters/global-exception.filter.js +192 -0
- package/build/common/filters/global-exception.filter.js.map +1 -0
- package/build/common/filters/http-exception.filter.d.ts +37 -0
- package/build/common/filters/http-exception.filter.d.ts.map +1 -0
- package/build/common/filters/http-exception.filter.js +91 -0
- package/build/common/filters/http-exception.filter.js.map +1 -0
- package/build/common/guards/csrf.guard.d.ts +53 -0
- package/build/common/guards/csrf.guard.d.ts.map +1 -0
- package/build/common/guards/csrf.guard.js +109 -0
- package/build/common/guards/csrf.guard.js.map +1 -0
- package/build/common/guards/metrics.guard.d.ts +42 -0
- package/build/common/guards/metrics.guard.d.ts.map +1 -0
- package/build/common/guards/metrics.guard.js +124 -0
- package/build/common/guards/metrics.guard.js.map +1 -0
- package/build/common/index.d.ts +43 -0
- package/build/common/index.d.ts.map +1 -0
- package/build/common/index.js +50 -0
- package/build/common/index.js.map +1 -0
- package/build/common/interceptors/http-client.interceptor.d.ts +11 -0
- package/build/common/interceptors/http-client.interceptor.d.ts.map +1 -0
- package/build/common/interceptors/http-client.interceptor.js +69 -0
- package/build/common/interceptors/http-client.interceptor.js.map +1 -0
- package/build/common/interceptors/http-instrumentation.interceptor.d.ts +64 -0
- package/build/common/interceptors/http-instrumentation.interceptor.d.ts.map +1 -0
- package/build/common/interceptors/http-instrumentation.interceptor.js +148 -0
- package/build/common/interceptors/http-instrumentation.interceptor.js.map +1 -0
- package/build/common/interceptors/http-metrics.interceptor.d.ts +46 -0
- package/build/common/interceptors/http-metrics.interceptor.d.ts.map +1 -0
- package/build/common/interceptors/http-metrics.interceptor.js +120 -0
- package/build/common/interceptors/http-metrics.interceptor.js.map +1 -0
- package/build/common/interceptors/logging.interceptor.d.ts +22 -0
- package/build/common/interceptors/logging.interceptor.d.ts.map +1 -0
- package/build/common/interceptors/logging.interceptor.js +67 -0
- package/build/common/interceptors/logging.interceptor.js.map +1 -0
- package/build/common/interfaces/cache-provider.interface.d.ts +54 -0
- package/build/common/interfaces/cache-provider.interface.d.ts.map +1 -0
- package/build/common/interfaces/cache-provider.interface.js +6 -0
- package/build/common/interfaces/cache-provider.interface.js.map +1 -0
- package/build/common/interfaces/index.d.ts +7 -0
- package/build/common/interfaces/index.d.ts.map +1 -0
- package/build/common/interfaces/index.js +3 -0
- package/build/common/interfaces/index.js.map +1 -0
- package/build/common/interfaces/log-context.interface.d.ts +77 -0
- package/build/common/interfaces/log-context.interface.d.ts.map +1 -0
- package/build/common/interfaces/log-context.interface.js +2 -0
- package/build/common/interfaces/log-context.interface.js.map +1 -0
- package/build/common/interfaces/log-entry.interface.d.ts +26 -0
- package/build/common/interfaces/log-entry.interface.d.ts.map +1 -0
- package/build/common/interfaces/log-entry.interface.js +33 -0
- package/build/common/interfaces/log-entry.interface.js.map +1 -0
- package/build/common/interfaces/logger.interface.d.ts +62 -0
- package/build/common/interfaces/logger.interface.d.ts.map +1 -0
- package/build/common/interfaces/logger.interface.js +2 -0
- package/build/common/interfaces/logger.interface.js.map +1 -0
- package/build/common/interfaces/metrics-exporter.interface.d.ts +275 -0
- package/build/common/interfaces/metrics-exporter.interface.d.ts.map +1 -0
- package/build/common/interfaces/metrics-exporter.interface.js +8 -0
- package/build/common/interfaces/metrics-exporter.interface.js.map +1 -0
- package/build/common/metrics/base-metrics-collector.d.ts +81 -0
- package/build/common/metrics/base-metrics-collector.d.ts.map +1 -0
- package/build/common/metrics/base-metrics-collector.js +88 -0
- package/build/common/metrics/base-metrics-collector.js.map +1 -0
- package/build/common/metrics/index.d.ts +2 -0
- package/build/common/metrics/index.d.ts.map +1 -0
- package/build/common/metrics/index.js +2 -0
- package/build/common/metrics/index.js.map +1 -0
- package/build/common/metrics.module.d.ts +50 -0
- package/build/common/metrics.module.d.ts.map +1 -0
- package/build/common/metrics.module.js +77 -0
- package/build/common/metrics.module.js.map +1 -0
- package/build/common/modules/throttler.module.d.ts +69 -0
- package/build/common/modules/throttler.module.d.ts.map +1 -0
- package/build/common/modules/throttler.module.js +117 -0
- package/build/common/modules/throttler.module.js.map +1 -0
- package/build/common/pipes/base-validation.pipe.d.ts +67 -0
- package/build/common/pipes/base-validation.pipe.d.ts.map +1 -0
- package/build/common/pipes/base-validation.pipe.js +95 -0
- package/build/common/pipes/base-validation.pipe.js.map +1 -0
- package/build/common/pipes/validation.pipe.d.ts +32 -0
- package/build/common/pipes/validation.pipe.d.ts.map +1 -0
- package/build/common/pipes/validation.pipe.js +60 -0
- package/build/common/pipes/validation.pipe.js.map +1 -0
- package/build/common/registry/instrumentation-registry.d.ts +227 -0
- package/build/common/registry/instrumentation-registry.d.ts.map +1 -0
- package/build/common/registry/instrumentation-registry.js +414 -0
- package/build/common/registry/instrumentation-registry.js.map +1 -0
- package/build/common/services/audit-logger.service.d.ts +91 -0
- package/build/common/services/audit-logger.service.d.ts.map +1 -0
- package/build/common/services/audit-logger.service.js +180 -0
- package/build/common/services/audit-logger.service.js.map +1 -0
- package/build/common/services/csrf.service.d.ts +202 -0
- package/build/common/services/csrf.service.d.ts.map +1 -0
- package/build/common/services/csrf.service.js +478 -0
- package/build/common/services/csrf.service.js.map +1 -0
- package/build/common/services/error-categorizer.service.d.ts +82 -0
- package/build/common/services/error-categorizer.service.d.ts.map +1 -0
- package/build/common/services/error-categorizer.service.js +339 -0
- package/build/common/services/error-categorizer.service.js.map +1 -0
- package/build/common/services/error-sanitizer.service.d.ts +146 -0
- package/build/common/services/error-sanitizer.service.d.ts.map +1 -0
- package/build/common/services/error-sanitizer.service.js +287 -0
- package/build/common/services/error-sanitizer.service.js.map +1 -0
- package/build/common/services/health-check.service.d.ts +86 -0
- package/build/common/services/health-check.service.d.ts.map +1 -0
- package/build/common/services/health-check.service.js +132 -0
- package/build/common/services/health-check.service.js.map +1 -0
- package/build/common/services/http-client.service.d.ts +113 -0
- package/build/common/services/http-client.service.d.ts.map +1 -0
- package/build/common/services/http-client.service.js +294 -0
- package/build/common/services/http-client.service.js.map +1 -0
- package/build/common/services/logger.service.d.ts +189 -0
- package/build/common/services/logger.service.d.ts.map +1 -0
- package/build/common/services/logger.service.js +423 -0
- package/build/common/services/logger.service.js.map +1 -0
- package/build/common/services/metrics-registry.service.d.ts +98 -0
- package/build/common/services/metrics-registry.service.d.ts.map +1 -0
- package/build/common/services/metrics-registry.service.js +262 -0
- package/build/common/services/metrics-registry.service.js.map +1 -0
- package/build/common/services/nest-logger-adapter.service.d.ts +62 -0
- package/build/common/services/nest-logger-adapter.service.d.ts.map +1 -0
- package/build/common/services/nest-logger-adapter.service.js +120 -0
- package/build/common/services/nest-logger-adapter.service.js.map +1 -0
- package/build/common/utils/error.utils.d.ts +16 -0
- package/build/common/utils/error.utils.d.ts.map +1 -0
- package/build/common/utils/error.utils.js +26 -0
- package/build/common/utils/error.utils.js.map +1 -0
- package/build/common/utils/lazy-getter.types.d.ts +190 -0
- package/build/common/utils/lazy-getter.types.d.ts.map +1 -0
- package/build/common/utils/lazy-getter.types.js +114 -0
- package/build/common/utils/lazy-getter.types.js.map +1 -0
- package/build/common/utils/module.utils.d.ts +33 -0
- package/build/common/utils/module.utils.d.ts.map +1 -0
- package/build/common/utils/module.utils.js +48 -0
- package/build/common/utils/module.utils.js.map +1 -0
- package/build/common/utils/sanitization.utils.d.ts +69 -0
- package/build/common/utils/sanitization.utils.d.ts.map +1 -0
- package/build/common/utils/sanitization.utils.js +141 -0
- package/build/common/utils/sanitization.utils.js.map +1 -0
- package/build/config/config.module.d.ts +30 -0
- package/build/config/config.module.d.ts.map +1 -0
- package/build/config/config.module.js +49 -0
- package/build/config/config.module.js.map +1 -0
- package/build/config/config.service.d.ts +74 -0
- package/build/config/config.service.d.ts.map +1 -0
- package/build/config/config.service.js +145 -0
- package/build/config/config.service.js.map +1 -0
- package/build/config/config.types.d.ts +143 -0
- package/build/config/config.types.d.ts.map +1 -0
- package/build/config/config.types.js +2 -0
- package/build/config/config.types.js.map +1 -0
- package/build/config/decorators/config.decorators.d.ts +43 -0
- package/build/config/decorators/config.decorators.d.ts.map +1 -0
- package/build/config/decorators/config.decorators.js +68 -0
- package/build/config/decorators/config.decorators.js.map +1 -0
- package/build/config/decorators/index.d.ts +2 -0
- package/build/config/decorators/index.d.ts.map +1 -0
- package/build/config/decorators/index.js +2 -0
- package/build/config/decorators/index.js.map +1 -0
- package/build/config/index.d.ts +7 -0
- package/build/config/index.d.ts.map +1 -0
- package/build/config/index.js +9 -0
- package/build/config/index.js.map +1 -0
- package/build/config/validation.utils.d.ts +136 -0
- package/build/config/validation.utils.d.ts.map +1 -0
- package/build/config/validation.utils.js +263 -0
- package/build/config/validation.utils.js.map +1 -0
- package/build/errors/index.d.ts +9 -0
- package/build/errors/index.d.ts.map +1 -0
- package/build/errors/index.js +12 -0
- package/build/errors/index.js.map +1 -0
- package/build/guards/custom-throttle.guard.d.ts +28 -0
- package/build/guards/custom-throttle.guard.d.ts.map +1 -0
- package/build/guards/custom-throttle.guard.js +52 -0
- package/build/guards/custom-throttle.guard.js.map +1 -0
- package/build/guards/index.d.ts +2 -0
- package/build/guards/index.d.ts.map +1 -0
- package/build/guards/index.js +2 -0
- package/build/guards/index.js.map +1 -0
- package/build/index.d.ts +53 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +61 -0
- package/build/index.js.map +1 -0
- package/build/logging/index.d.ts +7 -0
- package/build/logging/index.d.ts.map +1 -0
- package/build/logging/index.js +7 -0
- package/build/logging/index.js.map +1 -0
- package/build/metrics/index.d.ts +6 -0
- package/build/metrics/index.d.ts.map +1 -0
- package/build/metrics/index.js +11 -0
- package/build/metrics/index.js.map +1 -0
- package/build/package.json +72 -0
- package/build/security/index.d.ts +8 -0
- package/build/security/index.d.ts.map +1 -0
- package/build/security/index.js +11 -0
- package/build/security/index.js.map +1 -0
- package/build/test-setup.d.ts +2 -0
- package/build/test-setup.d.ts.map +1 -0
- package/build/test-setup.js +40 -0
- package/build/test-setup.js.map +1 -0
- package/build/validation/index.d.ts +6 -0
- package/build/validation/index.d.ts.map +1 -0
- package/build/validation/index.js +8 -0
- package/build/validation/index.js.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,423 @@
|
|
|
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
|
+
var AppLogger_1;
|
|
14
|
+
import { Injectable, Inject, Optional } from '@nestjs/common';
|
|
15
|
+
import { ConfigService } from '@nestjs/config';
|
|
16
|
+
import { Logger as PawellsLogger, LogLevel as PawellsLogLevel } from '@pawells/logger';
|
|
17
|
+
import { CreateJsonCircularReplacer } from '@pawells/typescript-common';
|
|
18
|
+
import { trace, context } from '@opentelemetry/api';
|
|
19
|
+
import { LogLevel, LOG_LEVEL_FROM_STRING } from '../interfaces/log-entry.interface.js';
|
|
20
|
+
import { MAX_SANITIZE_DEPTH } from '../utils/sanitization.utils.js';
|
|
21
|
+
/**
|
|
22
|
+
* Centralized application logger service.
|
|
23
|
+
* Wraps @pawells/logger and respects LOG_LEVEL environment variable for filtering.
|
|
24
|
+
* Automatically redacts sensitive information (passwords, tokens, API keys) from logs.
|
|
25
|
+
* Supports structured logging with context and metadata.
|
|
26
|
+
* Integrates with OpenTelemetry for trace and span ID correlation.
|
|
27
|
+
* Implements Interface Segregation Principle with focused interfaces.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* // Use flexible logging methods
|
|
32
|
+
* logger.info('User logged in', 'AuthService', { userId: '123' });
|
|
33
|
+
* logger.error('Database error', error.stack, 'DatabaseService', { query: '...' });
|
|
34
|
+
* logger.debug('Cache hit', { metadata: { key: 'users:123' } });
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
let AppLogger = AppLogger_1 = class AppLogger {
|
|
38
|
+
configService;
|
|
39
|
+
context;
|
|
40
|
+
pawellsLogger;
|
|
41
|
+
minLevel;
|
|
42
|
+
serviceName;
|
|
43
|
+
/**
|
|
44
|
+
* Set of field names that contain sensitive information requiring redaction in logs.
|
|
45
|
+
* Stored as lowercase for case-insensitive matching against object keys.
|
|
46
|
+
* Prevents leaking credentials, tokens, and other security-sensitive data into log output.
|
|
47
|
+
* Includes passwords, API keys, tokens, and payment card information.
|
|
48
|
+
*/
|
|
49
|
+
sensitiveKeys = new Set([
|
|
50
|
+
'password', 'passwd', 'pwd',
|
|
51
|
+
'token', 'authorization', 'auth', 'authtoken', 'refreshtoken', 'accesstoken', 'bearertoken', 'sessiontoken',
|
|
52
|
+
'secret', 'api_key', 'apikey', 'apisecret', 'privatekey', 'encryptionkey',
|
|
53
|
+
'credit_card', 'creditcard', 'cc_number', 'ccnumber', 'cardnumber',
|
|
54
|
+
'ssn', 'social_security', 'socialsecurity',
|
|
55
|
+
'cookie', 'session',
|
|
56
|
+
]);
|
|
57
|
+
constructor(configService, context = 'AppLogger') {
|
|
58
|
+
this.configService = configService;
|
|
59
|
+
this.context = context;
|
|
60
|
+
this.serviceName = this.configService?.get('SERVICE_NAME') ?? process.env['SERVICE_NAME'] ?? 'unknown-service';
|
|
61
|
+
this.minLevel = this.parseLogLevel();
|
|
62
|
+
// Create instance of @pawells/logger
|
|
63
|
+
const pawellsLogLevel = this.mapNestjsLogLevelToPawells(this.minLevel);
|
|
64
|
+
const logFormat = this.parseLogFormat();
|
|
65
|
+
this.pawellsLogger = new PawellsLogger({
|
|
66
|
+
service: this.serviceName,
|
|
67
|
+
level: pawellsLogLevel,
|
|
68
|
+
format: logFormat,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Parse LOG_LEVEL environment variable
|
|
73
|
+
* @returns LogLevel enum value (numeric)
|
|
74
|
+
*/
|
|
75
|
+
parseLogLevel() {
|
|
76
|
+
const level = (this.configService?.get('LOG_LEVEL') ?? process.env['LOG_LEVEL'] ?? 'info').toLowerCase();
|
|
77
|
+
const parsedLevel = LOG_LEVEL_FROM_STRING[level];
|
|
78
|
+
// Warn if the LOG_LEVEL value is invalid and log valid values
|
|
79
|
+
if (parsedLevel === undefined) {
|
|
80
|
+
const validLevels = Object.keys(LOG_LEVEL_FROM_STRING).join(', ');
|
|
81
|
+
const message = `[AppLogger] Invalid LOG_LEVEL value: "${level}". Valid values are: ${validLevels}. Falling back to "info".`;
|
|
82
|
+
try {
|
|
83
|
+
console.error(message);
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
// Ignore console error failures silently
|
|
87
|
+
}
|
|
88
|
+
return LogLevel.INFO;
|
|
89
|
+
}
|
|
90
|
+
return parsedLevel;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Parse LOG_FORMAT environment variable
|
|
94
|
+
* @returns Format type ('json' | 'text'), defaults to 'json'
|
|
95
|
+
*/
|
|
96
|
+
parseLogFormat() {
|
|
97
|
+
const format = (this.configService?.get('LOG_FORMAT') ?? process.env['LOG_FORMAT'] ?? 'json').toLowerCase();
|
|
98
|
+
// Validate format is either 'json' or 'text'
|
|
99
|
+
if (format !== 'json' && format !== 'text') {
|
|
100
|
+
const message = `[AppLogger] Invalid LOG_FORMAT value: "${format}". Valid values are: json, text. Falling back to "json".`;
|
|
101
|
+
try {
|
|
102
|
+
console.error(message);
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
// Ignore console error failures silently
|
|
106
|
+
}
|
|
107
|
+
return 'json';
|
|
108
|
+
}
|
|
109
|
+
return format;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Map nestjs-shared numeric LogLevel to @pawells/logger LogLevel
|
|
113
|
+
* @param level - Numeric LogLevel from nestjs-shared
|
|
114
|
+
* @returns String LogLevel for @pawells/logger
|
|
115
|
+
*/
|
|
116
|
+
mapNestjsLogLevelToPawells(level) {
|
|
117
|
+
const mapping = {
|
|
118
|
+
[LogLevel.DEBUG]: PawellsLogLevel.DEBUG,
|
|
119
|
+
[LogLevel.INFO]: PawellsLogLevel.INFO,
|
|
120
|
+
[LogLevel.WARN]: PawellsLogLevel.WARN,
|
|
121
|
+
[LogLevel.ERROR]: PawellsLogLevel.ERROR,
|
|
122
|
+
[LogLevel.FATAL]: PawellsLogLevel.FATAL,
|
|
123
|
+
[LogLevel.SILENT]: PawellsLogLevel.SILENT,
|
|
124
|
+
};
|
|
125
|
+
return mapping[level] ?? PawellsLogLevel.INFO;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Check if a log level should be output
|
|
129
|
+
* @param level - Level to check
|
|
130
|
+
* @returns true if level should be logged
|
|
131
|
+
*/
|
|
132
|
+
shouldLog(level) {
|
|
133
|
+
return level >= this.minLevel;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Sanitize metadata to remove sensitive information and handle circular references
|
|
137
|
+
* @param metadata - Metadata to sanitize
|
|
138
|
+
* @returns Sanitized metadata with circular references replaced by '[CIRCULAR_REF]'
|
|
139
|
+
*/
|
|
140
|
+
sanitizeMetadata(metadata) {
|
|
141
|
+
if (!metadata)
|
|
142
|
+
return undefined;
|
|
143
|
+
const sanitized = { ...metadata };
|
|
144
|
+
const visited = new WeakSet();
|
|
145
|
+
const sanitize = (obj, depth = 0) => {
|
|
146
|
+
if (depth >= MAX_SANITIZE_DEPTH)
|
|
147
|
+
return '[DEPTH_EXCEEDED]';
|
|
148
|
+
if (typeof obj !== 'object' || obj === null)
|
|
149
|
+
return obj;
|
|
150
|
+
if (visited.has(obj)) {
|
|
151
|
+
return '[CIRCULAR_REF]';
|
|
152
|
+
}
|
|
153
|
+
visited.add(obj);
|
|
154
|
+
const result = Array.isArray(obj) ? [] : {};
|
|
155
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
156
|
+
const lowerKey = key.toLowerCase();
|
|
157
|
+
const isExactMatch = this.sensitiveKeys.has(lowerKey);
|
|
158
|
+
if (isExactMatch) {
|
|
159
|
+
// Exact match: keep key, redact value
|
|
160
|
+
result[key] = '[REDACTED]';
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
// Check if key contains any sensitive pattern
|
|
164
|
+
let containsSensitivePattern = false;
|
|
165
|
+
for (const sensitivePattern of this.sensitiveKeys) {
|
|
166
|
+
if (lowerKey.includes(sensitivePattern)) {
|
|
167
|
+
containsSensitivePattern = true;
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
if (containsSensitivePattern) {
|
|
172
|
+
// Contains pattern: redact the key name itself
|
|
173
|
+
result['[REDACTED_KEY]'] = '[REDACTED]';
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
// Not sensitive: process normally
|
|
177
|
+
result[key] = sanitize(value, depth + 1);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return result;
|
|
182
|
+
};
|
|
183
|
+
try {
|
|
184
|
+
const stringified = JSON.stringify(sanitize(sanitized), CreateJsonCircularReplacer('[CIRCULAR_REF]'));
|
|
185
|
+
return JSON.parse(stringified);
|
|
186
|
+
}
|
|
187
|
+
catch {
|
|
188
|
+
// If JSON.stringify fails, return the sanitized object as-is
|
|
189
|
+
return sanitize(sanitized);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Extract OpenTelemetry trace context
|
|
194
|
+
* @returns Object with traceId and spanId if available
|
|
195
|
+
*/
|
|
196
|
+
extractTraceContext() {
|
|
197
|
+
try {
|
|
198
|
+
const span = trace.getSpan(context.active());
|
|
199
|
+
if (span) {
|
|
200
|
+
const spanContext = span.spanContext();
|
|
201
|
+
return {
|
|
202
|
+
traceId: spanContext.traceId,
|
|
203
|
+
spanId: spanContext.spanId,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
// Silently ignore tracing errors
|
|
209
|
+
}
|
|
210
|
+
return {};
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Build metadata with context and trace info
|
|
214
|
+
* @param logContext - Logger context
|
|
215
|
+
* @param metadata - User-provided metadata
|
|
216
|
+
* @returns Combined metadata
|
|
217
|
+
*/
|
|
218
|
+
buildMetadata(logContext, metadata) {
|
|
219
|
+
const { traceId, spanId } = this.extractTraceContext();
|
|
220
|
+
const sanitized = this.sanitizeMetadata(metadata);
|
|
221
|
+
const result = {
|
|
222
|
+
context: logContext,
|
|
223
|
+
};
|
|
224
|
+
if (sanitized) {
|
|
225
|
+
result.metadata = sanitized;
|
|
226
|
+
}
|
|
227
|
+
if (traceId) {
|
|
228
|
+
result.traceId = traceId;
|
|
229
|
+
}
|
|
230
|
+
if (spanId) {
|
|
231
|
+
result.spanId = spanId;
|
|
232
|
+
}
|
|
233
|
+
return result;
|
|
234
|
+
}
|
|
235
|
+
debug(message, contextOrMetadata, metadata) {
|
|
236
|
+
if (this.shouldLog(LogLevel.DEBUG)) {
|
|
237
|
+
let ctx = this.context;
|
|
238
|
+
let meta = metadata;
|
|
239
|
+
// Handle options-object form
|
|
240
|
+
if (contextOrMetadata !== undefined && typeof contextOrMetadata === 'object' && !Array.isArray(contextOrMetadata) && 'context' in contextOrMetadata) {
|
|
241
|
+
const opts = contextOrMetadata;
|
|
242
|
+
ctx = opts.context ?? this.context;
|
|
243
|
+
meta = opts.metadata;
|
|
244
|
+
}
|
|
245
|
+
else if (typeof contextOrMetadata === 'string') {
|
|
246
|
+
ctx = contextOrMetadata;
|
|
247
|
+
}
|
|
248
|
+
else if (typeof contextOrMetadata === 'object' && !('context' in contextOrMetadata)) {
|
|
249
|
+
meta = contextOrMetadata;
|
|
250
|
+
}
|
|
251
|
+
const msg = message instanceof Error ? message.message : message;
|
|
252
|
+
const builtMetadata = this.buildMetadata(ctx, meta);
|
|
253
|
+
void this.pawellsLogger.debug(msg, builtMetadata).catch((err) => {
|
|
254
|
+
const fallbackMsg = `[AppLogger fallback] ${String(err)}\n`;
|
|
255
|
+
try {
|
|
256
|
+
process.stderr.write(fallbackMsg);
|
|
257
|
+
}
|
|
258
|
+
catch {
|
|
259
|
+
// Ignore stderr write failures silently as final fallback
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
info(message, contextOrMetadata, metadata) {
|
|
265
|
+
if (this.shouldLog(LogLevel.INFO)) {
|
|
266
|
+
let ctx = this.context;
|
|
267
|
+
let meta = metadata;
|
|
268
|
+
// Handle options-object form
|
|
269
|
+
if (contextOrMetadata !== undefined && typeof contextOrMetadata === 'object' && !Array.isArray(contextOrMetadata) && 'context' in contextOrMetadata) {
|
|
270
|
+
const opts = contextOrMetadata;
|
|
271
|
+
ctx = opts.context ?? this.context;
|
|
272
|
+
meta = opts.metadata;
|
|
273
|
+
}
|
|
274
|
+
else if (typeof contextOrMetadata === 'string') {
|
|
275
|
+
ctx = contextOrMetadata;
|
|
276
|
+
}
|
|
277
|
+
else if (typeof contextOrMetadata === 'object' && !('context' in contextOrMetadata)) {
|
|
278
|
+
meta = contextOrMetadata;
|
|
279
|
+
}
|
|
280
|
+
const msg = message instanceof Error ? message.message : message;
|
|
281
|
+
const builtMetadata = this.buildMetadata(ctx, meta);
|
|
282
|
+
void this.pawellsLogger.info(msg, builtMetadata).catch((err) => {
|
|
283
|
+
const fallbackMsg = `[AppLogger fallback] ${String(err)}\n`;
|
|
284
|
+
try {
|
|
285
|
+
process.stderr.write(fallbackMsg);
|
|
286
|
+
}
|
|
287
|
+
catch {
|
|
288
|
+
// Ignore stderr write failures silently as final fallback
|
|
289
|
+
}
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
warn(message, contextOrMetadata, metadata) {
|
|
294
|
+
if (this.shouldLog(LogLevel.WARN)) {
|
|
295
|
+
let ctx = this.context;
|
|
296
|
+
let meta = metadata;
|
|
297
|
+
// Handle options-object form
|
|
298
|
+
if (contextOrMetadata !== undefined && typeof contextOrMetadata === 'object' && !Array.isArray(contextOrMetadata) && 'context' in contextOrMetadata) {
|
|
299
|
+
const opts = contextOrMetadata;
|
|
300
|
+
ctx = opts.context ?? this.context;
|
|
301
|
+
meta = opts.metadata;
|
|
302
|
+
}
|
|
303
|
+
else if (typeof contextOrMetadata === 'string') {
|
|
304
|
+
ctx = contextOrMetadata;
|
|
305
|
+
}
|
|
306
|
+
else if (typeof contextOrMetadata === 'object' && !('context' in contextOrMetadata)) {
|
|
307
|
+
meta = contextOrMetadata;
|
|
308
|
+
}
|
|
309
|
+
const msg = message instanceof Error ? message.message : message;
|
|
310
|
+
const builtMetadata = this.buildMetadata(ctx, meta);
|
|
311
|
+
void this.pawellsLogger.warn(msg, builtMetadata).catch((err) => {
|
|
312
|
+
const fallbackMsg = `[AppLogger fallback] ${String(err)}\n`;
|
|
313
|
+
try {
|
|
314
|
+
process.stderr.write(fallbackMsg);
|
|
315
|
+
}
|
|
316
|
+
catch {
|
|
317
|
+
// Ignore stderr write failures silently as final fallback
|
|
318
|
+
}
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
error(message, traceOrContext, contextOrMetadata, metadata) {
|
|
323
|
+
if (this.shouldLog(LogLevel.ERROR)) {
|
|
324
|
+
let ctx = this.context;
|
|
325
|
+
let meta = metadata;
|
|
326
|
+
let trace;
|
|
327
|
+
// Handle options-object form
|
|
328
|
+
if (traceOrContext !== undefined && typeof traceOrContext === 'object' && !Array.isArray(traceOrContext) && 'context' in traceOrContext) {
|
|
329
|
+
const opts = traceOrContext;
|
|
330
|
+
ctx = opts.context ?? this.context;
|
|
331
|
+
meta = opts.metadata;
|
|
332
|
+
trace = opts.trace;
|
|
333
|
+
}
|
|
334
|
+
else if (typeof traceOrContext === 'string' && typeof contextOrMetadata === 'string') {
|
|
335
|
+
// error(message, trace, context, metadata?)
|
|
336
|
+
trace = traceOrContext;
|
|
337
|
+
ctx = contextOrMetadata;
|
|
338
|
+
}
|
|
339
|
+
else if (typeof traceOrContext === 'string' && typeof contextOrMetadata === 'object') {
|
|
340
|
+
// error(message, trace, metadata)
|
|
341
|
+
trace = traceOrContext;
|
|
342
|
+
meta = contextOrMetadata;
|
|
343
|
+
}
|
|
344
|
+
else if (typeof traceOrContext === 'string') {
|
|
345
|
+
// error(message, context)
|
|
346
|
+
ctx = traceOrContext;
|
|
347
|
+
}
|
|
348
|
+
else if (typeof contextOrMetadata === 'object') {
|
|
349
|
+
// error(message, metadata)
|
|
350
|
+
meta = contextOrMetadata;
|
|
351
|
+
}
|
|
352
|
+
const msg = message instanceof Error ? message.message : message;
|
|
353
|
+
const metaWithTrace = trace ? { ...meta, stack: trace } : meta;
|
|
354
|
+
const builtMetadata = this.buildMetadata(ctx, metaWithTrace);
|
|
355
|
+
void this.pawellsLogger.error(msg, builtMetadata).catch((err) => {
|
|
356
|
+
const fallbackMsg = `[AppLogger fallback] ${String(err)}\n`;
|
|
357
|
+
try {
|
|
358
|
+
process.stderr.write(fallbackMsg);
|
|
359
|
+
}
|
|
360
|
+
catch {
|
|
361
|
+
// Ignore stderr write failures silently as final fallback
|
|
362
|
+
}
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
fatal(message, traceOrContext, contextOrMetadata, metadata) {
|
|
367
|
+
if (this.shouldLog(LogLevel.FATAL)) {
|
|
368
|
+
let ctx = this.context;
|
|
369
|
+
let meta = metadata;
|
|
370
|
+
let trace;
|
|
371
|
+
// Handle options-object form
|
|
372
|
+
if (traceOrContext !== undefined && typeof traceOrContext === 'object' && !Array.isArray(traceOrContext) && 'context' in traceOrContext) {
|
|
373
|
+
const opts = traceOrContext;
|
|
374
|
+
ctx = opts.context ?? this.context;
|
|
375
|
+
meta = opts.metadata;
|
|
376
|
+
trace = opts.trace;
|
|
377
|
+
}
|
|
378
|
+
else if (typeof traceOrContext === 'string' && typeof contextOrMetadata === 'string') {
|
|
379
|
+
trace = traceOrContext;
|
|
380
|
+
ctx = contextOrMetadata;
|
|
381
|
+
}
|
|
382
|
+
else if (typeof traceOrContext === 'string' && typeof contextOrMetadata === 'object') {
|
|
383
|
+
trace = traceOrContext;
|
|
384
|
+
meta = contextOrMetadata;
|
|
385
|
+
}
|
|
386
|
+
else if (typeof traceOrContext === 'string') {
|
|
387
|
+
ctx = traceOrContext;
|
|
388
|
+
}
|
|
389
|
+
else if (typeof contextOrMetadata === 'object') {
|
|
390
|
+
meta = contextOrMetadata;
|
|
391
|
+
}
|
|
392
|
+
const msg = message instanceof Error ? message.message : message;
|
|
393
|
+
const metaWithTrace = trace ? { ...meta, stack: trace } : meta;
|
|
394
|
+
const builtMetadata = this.buildMetadata(ctx, metaWithTrace);
|
|
395
|
+
void this.pawellsLogger.fatal(msg, builtMetadata).catch((err) => {
|
|
396
|
+
const fallbackMsg = `[AppLogger fallback] ${String(err)}\n`;
|
|
397
|
+
try {
|
|
398
|
+
process.stderr.write(fallbackMsg);
|
|
399
|
+
}
|
|
400
|
+
catch {
|
|
401
|
+
// Ignore stderr write failures silently as final fallback
|
|
402
|
+
}
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* Create a contextual logger instance
|
|
408
|
+
* @param context - Context string
|
|
409
|
+
* @returns New AppLogger instance with context
|
|
410
|
+
*/
|
|
411
|
+
createContextualLogger(context) {
|
|
412
|
+
return new AppLogger_1(this.configService, context);
|
|
413
|
+
}
|
|
414
|
+
};
|
|
415
|
+
AppLogger = AppLogger_1 = __decorate([
|
|
416
|
+
Injectable(),
|
|
417
|
+
__param(0, Inject(ConfigService)),
|
|
418
|
+
__param(0, Optional()),
|
|
419
|
+
__param(1, Optional()),
|
|
420
|
+
__metadata("design:paramtypes", [ConfigService, String])
|
|
421
|
+
], AppLogger);
|
|
422
|
+
export { AppLogger };
|
|
423
|
+
//# sourceMappingURL=logger.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.service.js","sourceRoot":"","sources":["../../../src/common/services/logger.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { OnModuleInit } from '@nestjs/common';
|
|
2
|
+
import { ModuleRef } from '@nestjs/core';
|
|
3
|
+
import { Registry, Histogram, Counter, Gauge } from 'prom-client';
|
|
4
|
+
import { LazyModuleRefService } from '../utils/lazy-getter.types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Metrics Registry Service.
|
|
7
|
+
* Centralized service for managing Prometheus metrics across the application.
|
|
8
|
+
*
|
|
9
|
+
* Features:
|
|
10
|
+
* - HTTP request metrics (duration, count, size)
|
|
11
|
+
* - Custom metric creation (counter, gauge, histogram)
|
|
12
|
+
* - Default Node.js metrics collection
|
|
13
|
+
* - Prometheus registry management
|
|
14
|
+
* - Per-route metric cardinality prevention
|
|
15
|
+
*
|
|
16
|
+
* @remarks
|
|
17
|
+
* - Controlled by METRICS_ENABLED environment variable (default: true)
|
|
18
|
+
* - Automatically collects Node.js default metrics
|
|
19
|
+
* - HTTP request metrics use normalized route paths to prevent unbounded label cardinality
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* // Record HTTP request
|
|
24
|
+
* metricsService.recordHttpRequest('GET', '/users/:id', 200, 45, 2048);
|
|
25
|
+
*
|
|
26
|
+
* // Create custom metric
|
|
27
|
+
* const customCounter = metricsService.createCounter('orders_total', 'Total orders processed');
|
|
28
|
+
* customCounter.inc({ status: 'completed' });
|
|
29
|
+
*
|
|
30
|
+
* // Get metrics in Prometheus format
|
|
31
|
+
* const metrics = await metricsService.getMetrics();
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare class MetricsRegistryService implements OnModuleInit, LazyModuleRefService {
|
|
35
|
+
private _contextualLogger;
|
|
36
|
+
private readonly registry;
|
|
37
|
+
private readonly enabled;
|
|
38
|
+
private readonly httpRequestDuration;
|
|
39
|
+
private readonly httpRequestTotal;
|
|
40
|
+
private readonly httpRequestSize;
|
|
41
|
+
readonly Module: ModuleRef;
|
|
42
|
+
constructor(module: ModuleRef);
|
|
43
|
+
onModuleInit(): void;
|
|
44
|
+
/**
|
|
45
|
+
* Get contextual logger for metrics registry
|
|
46
|
+
* Memoized for performance
|
|
47
|
+
*/
|
|
48
|
+
private get Logger();
|
|
49
|
+
/**
|
|
50
|
+
* Get the Prometheus registry
|
|
51
|
+
*/
|
|
52
|
+
getRegistry(): Registry;
|
|
53
|
+
/**
|
|
54
|
+
* Record HTTP request metrics
|
|
55
|
+
*/
|
|
56
|
+
recordHttpRequest(method: string, route: string, statusCode: number, duration: number, size?: number): void;
|
|
57
|
+
/**
|
|
58
|
+
* Record a counter metric
|
|
59
|
+
*/
|
|
60
|
+
recordCounter(name: string, value?: number, labels?: Record<string, string | number>): void;
|
|
61
|
+
/**
|
|
62
|
+
* Record a gauge metric
|
|
63
|
+
*/
|
|
64
|
+
recordGauge(name: string, value: number, labels?: Record<string, string | number>): void;
|
|
65
|
+
/**
|
|
66
|
+
* Record a histogram observation
|
|
67
|
+
*/
|
|
68
|
+
recordHistogram(name: string, value: number, labels?: Record<string, string | number>): void;
|
|
69
|
+
/**
|
|
70
|
+
* Create and register a new counter metric
|
|
71
|
+
*/
|
|
72
|
+
createCounter(name: string, help: string, labelNames?: string[]): Counter<string>;
|
|
73
|
+
/**
|
|
74
|
+
* Create and register a new gauge metric
|
|
75
|
+
*/
|
|
76
|
+
createGauge(name: string, help: string, labelNames?: string[]): Gauge<string>;
|
|
77
|
+
/**
|
|
78
|
+
* Create and register a new histogram metric
|
|
79
|
+
*/
|
|
80
|
+
createHistogram(name: string, help: string, labelNames?: string[], buckets?: number[]): Histogram<string>;
|
|
81
|
+
/**
|
|
82
|
+
* Register a custom metric
|
|
83
|
+
*/
|
|
84
|
+
registerMetric<T>(metric: T): T;
|
|
85
|
+
/**
|
|
86
|
+
* Get metrics in Prometheus format
|
|
87
|
+
*/
|
|
88
|
+
getMetrics(): Promise<string>;
|
|
89
|
+
/**
|
|
90
|
+
* Get registry metrics as JSON for debugging
|
|
91
|
+
*/
|
|
92
|
+
getMetricsAsJSON(): Promise<any>;
|
|
93
|
+
/**
|
|
94
|
+
* Clear all metrics (useful for testing)
|
|
95
|
+
*/
|
|
96
|
+
clear(): void;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=metrics-registry.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics-registry.service.d.ts","sourceRoot":"","sources":["../../../src/common/services/metrics-registry.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAyB,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAOzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAMrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBACa,sBAAuB,YAAW,YAAY,EAAE,oBAAoB;IAChF,OAAO,CAAC,iBAAiB,CAAwB;IAEjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IAEpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAGlC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAkC;IAEtE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgC;IAEjE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkC;IAClE,SAAgB,MAAM,EAAE,SAAS,CAAC;gBAEtB,MAAM,EAAE,SAAS;IAqCtB,YAAY,IAAI,IAAI;IAQ3B;;;OAGG;IACH,OAAO,KAAK,MAAM,GAGjB;IAED;;OAEG;IACI,WAAW,IAAI,QAAQ;IAI9B;;OAEG;IACI,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAclH;;OAEG;IACI,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAM,GAAG,IAAI;IAezG;;OAEG;IACI,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAM,GAAG,IAAI;IAcnG;;OAEG;IACI,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAM,GAAG,IAAI;IAcvG;;OAEG;IACI,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAW5F;;OAEG;IACI,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,GAAE,MAAM,EAAO,GAAG,KAAK,CAAC,MAAM,CAAC;IAWxF;;OAEG;IACI,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,GAAE,MAAM,EAAO,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC;IAiBpH;;OAEG;IACI,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC;IAOtC;;OAEG;IAEU,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAI1C;;OAEG;IAEU,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC;IAI7C;;OAEG;IACI,KAAK,IAAI,IAAI;CAIpB"}
|