@mecanizou/telemetry-hub 1.0.1 → 1.0.2

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 (57) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/core/__tests__/logger-types.test.d.ts +1 -0
  3. package/dist/core/__tests__/logger-types.test.js +325 -0
  4. package/dist/core/__tests__/logger.test.d.ts +1 -0
  5. package/dist/core/__tests__/logger.test.js +337 -0
  6. package/dist/core/__tests__/tracer.test.d.ts +1 -0
  7. package/dist/core/__tests__/tracer.test.js +330 -0
  8. package/dist/core/index.d.ts +3 -1
  9. package/dist/core/index.js +4 -2
  10. package/dist/core/logger-types.js +3 -0
  11. package/dist/core/logger.d.ts +1 -1
  12. package/dist/core/logger.js +1 -1
  13. package/dist/core/tracer-types.d.ts +50 -0
  14. package/dist/core/tracer-types.js +3 -0
  15. package/dist/core/tracer.d.ts +10 -0
  16. package/dist/core/tracer.js +114 -0
  17. package/dist/index.d.ts +3 -1
  18. package/dist/index.js +4 -2
  19. package/dist/sst/__tests__/telemetry.test.d.ts +1 -0
  20. package/dist/sst/__tests__/telemetry.test.js +138 -0
  21. package/dist/sst/index.js +1 -1
  22. package/dist/sst/middy/index.js +1 -1
  23. package/dist/sst/middy/middleware.d.ts +1 -1
  24. package/dist/sst/middy/middleware.js +54 -69
  25. package/dist/sst/telemetry.d.ts +2 -1
  26. package/dist/sst/telemetry.js +12 -2
  27. package/dist/telemetry/sst/middy/middleware.d.ts +1 -1
  28. package/dist/telemetry/sst/middy/middleware.js +4 -4
  29. package/dist/tsed/__tests__/config.test.d.ts +1 -0
  30. package/dist/tsed/__tests__/config.test.js +146 -0
  31. package/dist/tsed/__tests__/service.test.d.ts +1 -0
  32. package/dist/tsed/__tests__/service.test.js +63 -0
  33. package/dist/tsed/config.d.ts +6 -0
  34. package/dist/tsed/config.js +65 -12
  35. package/dist/tsed/index.d.ts +1 -0
  36. package/dist/tsed/index.js +2 -1
  37. package/dist/tsed/log-telemetry.js +125 -10
  38. package/dist/tsed/service.d.ts +2 -0
  39. package/dist/tsed/service.js +20 -1
  40. package/dist/tsed/sync-log-record-processor.js +1 -1
  41. package/package.json +1 -1
  42. package/dist/check-if-is-working.d.ts +0 -1
  43. package/dist/check-if-is-working.js +0 -8
  44. package/dist/core/types.js +0 -3
  45. package/dist/services/index.d.ts +0 -1
  46. package/dist/services/index.js +0 -18
  47. package/dist/services/telemetry/config.d.ts +0 -20
  48. package/dist/services/telemetry/config.js +0 -113
  49. package/dist/services/telemetry/external-service.d.ts +0 -20
  50. package/dist/services/telemetry/external-service.js +0 -69
  51. package/dist/services/telemetry/index.d.ts +0 -3
  52. package/dist/services/telemetry/index.js +0 -20
  53. package/dist/services/telemetry/sync-log-record-processor.d.ts +0 -11
  54. package/dist/services/telemetry/sync-log-record-processor.js +0 -74
  55. package/dist/telemetry.d.ts +0 -1
  56. package/dist/telemetry.js +0 -81
  57. /package/dist/core/{types.d.ts → logger-types.d.ts} +0 -0
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVsZW1ldHJ5L2NvcmUvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBJbnRlcmZhY2UgcGFkcsOjbyBwYXJhIGxvZ3MgZXN0cnV0dXJhZG9zIGVtIHRvZGEgYSBhcGxpY2HDp8Ojby5cclxuICogQ29tYmluYSBjYW1wb3MgaW1wb3J0YW50ZXMgZGUgYW1iYXMgaW1wbGVtZW50YcOnw7VlcyAoVHNlZCBlIFNTVCkuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFN0YW5kYXJkTG9nRGF0YSB7XHJcbiAgLy8gSW5mb3JtYcOnw7VlcyBkbyBlcnJvL2V2ZW50b1xyXG4gIHNldmVyaXR5OiAnRVJST1InIHwgJ1dBUk4nIHwgJ0lORk8nIHwgJ0RFQlVHJztcclxuICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgZXJyb3I/OiBFcnJvcjtcclxuXHJcbiAgLy8gSWRlbnRpZmljYcOnw6NvIGRvIHNlcnZpw6dvXHJcbiAgc2VydmljZU5hbWU6IHN0cmluZztcclxuICBlbnZpcm9ubWVudDogc3RyaW5nOyAvLyBkZXZlbG9wbWVudCwgc3RhZ2luZywgcHJvZHVjdGlvblxyXG5cclxuICAvLyBDb250ZXh0byBkYSByZXF1aXNpw6fDo28gSFRUUFxyXG4gIGh0dHA/OiB7XHJcbiAgICBtZXRob2Q/OiBzdHJpbmc7XHJcbiAgICB1cmw/OiBzdHJpbmc7XHJcbiAgICBlbmRwb2ludD86IHN0cmluZztcclxuICAgIHN0YXR1c0NvZGU/OiBudW1iZXI7XHJcbiAgICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgYW55PjtcclxuICAgIGJvZHk/OiBhbnk7XHJcbiAgICBwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG4gICAgcXVlcnk/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG4gIH07XHJcblxyXG4gIC8vIElkZW50aWZpY2HDp8OjbyBkbyB1c3XDoXJpby9jb250YVxyXG4gIHVzZXI/OiB7XHJcbiAgICBhY2NvdW50VXNlclVpZD86IHN0cmluZztcclxuICAgIGFjY291bnRVaWQ/OiBzdHJpbmc7XHJcbiAgICBhcHBsaWNhdGlvblVpZD86IHN0cmluZztcclxuICB9O1xyXG5cclxuICAvLyBDb250ZXh0byBkYSBleGVjdcOnw6NvXHJcbiAgZXhlY3V0aW9uPzoge1xyXG4gICAgcmVxdWVzdElkPzogc3RyaW5nO1xyXG4gICAgYXdzUmVxdWVzdElkPzogc3RyaW5nO1xyXG4gICAgZnVuY3Rpb25OYW1lPzogc3RyaW5nO1xyXG4gICAgaW52b2NhdGlvbklkPzogc3RyaW5nO1xyXG4gICAgY29udHJvbGxlcj86IHN0cmluZztcclxuICAgIGNvbnRyb2xsZXJNZXRob2Q/OiBzdHJpbmc7XHJcbiAgICBvcmlnaW4/OiBzdHJpbmc7IC8vIG9yaWdlbSBkYSByZXF1aXNpw6fDo28gKGV4OiB3ZWIsIG1vYmlsZSlcclxuICB9O1xyXG5cclxuICAvLyBQZXJmb3JtYW5jZVxyXG4gIHBlcmZvcm1hbmNlPzoge1xyXG4gICAgZHVyYXRpb25Ncz86IG51bWJlcjtcclxuICAgIHN1Y2Nlc3M/OiBib29sZWFuO1xyXG4gIH07XHJcblxyXG4gIC8vIENvbnRleHRvIGFkaWNpb25hbCBsaXZyZVxyXG4gIGNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cclxuICAvLyBUaW1lc3RhbXBcclxuICB0aW1lc3RhbXA6IHN0cmluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIEludGVyZmFjZSBwYXJhIG8gbG9nZ2VyIGNvcmVcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVN0YW5kYXJkTG9nZ2VyIHtcclxuICBsb2dFcnJvcihcclxuICAgIGRhdGE6IE9taXQ8U3RhbmRhcmRMb2dEYXRhLCAnc2V2ZXJpdHknIHwgJ3RpbWVzdGFtcCc+XHJcbiAgKTogUHJvbWlzZTx2b2lkPjtcclxuICBsb2dJbmZvKGRhdGE6IE9taXQ8U3RhbmRhcmRMb2dEYXRhLCAnc2V2ZXJpdHknIHwgJ3RpbWVzdGFtcCc+KTogUHJvbWlzZTx2b2lkPjtcclxuICBsb2dXYXJuKGRhdGE6IE9taXQ8U3RhbmRhcmRMb2dEYXRhLCAnc2V2ZXJpdHknIHwgJ3RpbWVzdGFtcCc+KTogUHJvbWlzZTx2b2lkPjtcclxuICBsb2dEZWJ1ZyhcclxuICAgIGRhdGE6IE9taXQ8U3RhbmRhcmRMb2dEYXRhLCAnc2V2ZXJpdHknIHwgJ3RpbWVzdGFtcCc+XHJcbiAgKTogUHJvbWlzZTx2b2lkPjtcclxufVxyXG4iXX0=
@@ -1 +0,0 @@
1
- export * from './telemetry';
@@ -1,18 +0,0 @@
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("./telemetry"), exports);
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdGVsZW1ldHJ5JztcclxuIl19
@@ -1,20 +0,0 @@
1
- import { LoggerProvider } from '@opentelemetry/sdk-logs';
2
- export interface TelemetryConfig {
3
- endpoint: string;
4
- username: string;
5
- password: string;
6
- serviceName?: string;
7
- serviceVersion?: string;
8
- enabled?: boolean;
9
- }
10
- export declare class TelemetryProvider {
11
- private loggerProvider;
12
- private initialized;
13
- constructor();
14
- initialize(config: TelemetryConfig): void;
15
- getLoggerProvider(): LoggerProvider | null;
16
- isInitialized(): boolean;
17
- forceFlush(): Promise<void>;
18
- shutdown(): Promise<void>;
19
- $onDestroy(): Promise<void>;
20
- }
@@ -1,113 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.TelemetryProvider = void 0;
13
- const sdk_logs_1 = require("@opentelemetry/sdk-logs");
14
- const exporter_logs_otlp_http_1 = require("@opentelemetry/exporter-logs-otlp-http");
15
- const resources_1 = require("@opentelemetry/resources");
16
- const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
17
- const sync_log_record_processor_1 = require("./sync-log-record-processor");
18
- class TelemetryProvider {
19
- constructor() {
20
- this.loggerProvider = null;
21
- this.initialized = false;
22
- if (!this.initialized && process.env.OTEL_EXPORTER_OTLP_ENDPOINT) {
23
- const serviceName = process.env.SERVICE_NAME || 'unknown-service';
24
- const serviceStage = process.env.STAGE;
25
- this.initialize({
26
- endpoint: process.env.OTEL_EXPORTER_OTLP_ENDPOINT || '',
27
- username: process.env.OTEL_EXPORTER_OTLP_USER || '',
28
- password: process.env.OTEL_EXPORTER_OTLP_PASS || '',
29
- serviceName: `${serviceName}-${serviceStage}`,
30
- serviceVersion: process.env.npm_package_version || '1.0.0',
31
- enabled: process.env.OTEL_ENABLED !== 'false',
32
- });
33
- }
34
- }
35
- initialize(config) {
36
- if (this.initialized) {
37
- return;
38
- }
39
- if (config.enabled === false) {
40
- console.log('[Telemetry] OpenTelemetry is disabled');
41
- return;
42
- }
43
- if (!config.endpoint || !config.username || !config.password) {
44
- if (process.env.NODE_ENV !== 'test' &&
45
- process.env.OTEL_EXPORTER_OTLP_ENDPOINT) {
46
- console.error('[Telemetry] Missing required configuration');
47
- }
48
- return;
49
- }
50
- try {
51
- const resource = (0, resources_1.resourceFromAttributes)({
52
- [semantic_conventions_1.ATTR_SERVICE_NAME]: config.serviceName || 'unknown-service',
53
- [semantic_conventions_1.ATTR_SERVICE_VERSION]: config.serviceVersion || '1.0.0',
54
- });
55
- const logExporter = new exporter_logs_otlp_http_1.OTLPLogExporter({
56
- url: `${config.endpoint}/v1/logs`,
57
- headers: {
58
- Authorization: `Basic ${Buffer.from(`${config.username}:${config.password}`).toString('base64')}`,
59
- },
60
- timeoutMillis: 5000,
61
- concurrencyLimit: 1,
62
- });
63
- const syncProcessor = new sync_log_record_processor_1.SyncLogRecordProcessor(logExporter);
64
- this.loggerProvider = new sdk_logs_1.LoggerProvider({
65
- resource,
66
- processors: [syncProcessor],
67
- });
68
- this.initialized = true;
69
- console.log('[Telemetry] OpenTelemetry initialized successfully');
70
- }
71
- catch (error) {
72
- console.error('[Telemetry] Failed to initialize OpenTelemetry:', error);
73
- }
74
- }
75
- getLoggerProvider() {
76
- return this.loggerProvider;
77
- }
78
- isInitialized() {
79
- return this.initialized;
80
- }
81
- forceFlush() {
82
- return __awaiter(this, void 0, void 0, function* () {
83
- if (!this.loggerProvider) {
84
- console.warn('[Telemetry] forceFlush called but loggerProvider is null');
85
- return;
86
- }
87
- try {
88
- const startTime = Date.now();
89
- console.log('[Telemetry] Starting forceFlush...');
90
- yield this.loggerProvider.forceFlush();
91
- const duration = Date.now() - startTime;
92
- console.log(`[Telemetry] forceFlush completed successfully in ${duration}ms`);
93
- }
94
- catch (error) {
95
- console.error('[Telemetry] Failed to force flush logs:', error);
96
- throw error;
97
- }
98
- });
99
- }
100
- shutdown() {
101
- return __awaiter(this, void 0, void 0, function* () {
102
- if (this.loggerProvider) {
103
- yield this.loggerProvider.shutdown();
104
- this.initialized = false;
105
- }
106
- });
107
- }
108
- $onDestroy() {
109
- return this.shutdown();
110
- }
111
- }
112
- exports.TelemetryProvider = TelemetryProvider;
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3RlbGVtZXRyeS9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsc0RBQXlEO0FBQ3pELG9GQUF5RTtBQUN6RSx3REFBa0U7QUFDbEUsOEVBRzZDO0FBQzdDLDJFQUFxRTtBQVdyRSxNQUFhLGlCQUFpQjtJQUk1QjtRQUhRLG1CQUFjLEdBQTBCLElBQUksQ0FBQztRQUM3QyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUkxQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixFQUFFLENBQUM7WUFDakUsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLElBQUksaUJBQWlCLENBQUM7WUFDbEUsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7WUFDdkMsSUFBSSxDQUFDLFVBQVUsQ0FBQztnQkFDZCxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsSUFBSSxFQUFFO2dCQUN2RCxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsSUFBSSxFQUFFO2dCQUNuRCxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsSUFBSSxFQUFFO2dCQUNuRCxXQUFXLEVBQUUsR0FBRyxXQUFXLElBQUksWUFBWSxFQUFFO2dCQUM3QyxjQUFjLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsSUFBSSxPQUFPO2dCQUMxRCxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEtBQUssT0FBTzthQUM5QyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVNLFVBQVUsQ0FBQyxNQUF1QjtRQUN2QyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNy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O0tBQUE7SUFFWSxRQUFROztZQUNuQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDeEIsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUMzQixDQUFDO1FBQ0gsQ0FBQztLQUFBO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7Q0FDRjtBQTFIRCw4Q0EwSEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dnZXJQcm92aWRlciB9IGZyb20gJ0BvcGVudGVsZW1ldHJ5L3Nkay1sb2dzJztcclxuaW1wb3J0IHsgT1RMUExvZ0V4cG9ydGVyIH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvZXhwb3J0ZXItbG9ncy1vdGxwLWh0dHAnO1xyXG5pbXBvcnQgeyByZXNvdXJjZUZyb21BdHRyaWJ1dGVzIH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvcmVzb3VyY2VzJztcclxuaW1wb3J0IHtcclxuICBBVFRSX1NFUlZJQ0VfTkFNRSxcclxuICBBVFRSX1NFUlZJQ0VfVkVSU0lPTixcclxufSBmcm9tICdAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9ucyc7XHJcbmltcG9ydCB7IFN5bmNMb2dSZWNvcmRQcm9jZXNzb3IgfSBmcm9tICcuL3N5bmMtbG9nLXJlY29yZC1wcm9jZXNzb3InO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUZWxlbWV0cnlDb25maWcge1xyXG4gIGVuZHBvaW50OiBzdHJpbmc7XHJcbiAgdXNlcm5hbWU6IHN0cmluZztcclxuICBwYXNzd29yZDogc3RyaW5nO1xyXG4gIHNlcnZpY2VOYW1lPzogc3RyaW5nO1xyXG4gIHNlcnZpY2VWZXJzaW9uPzogc3RyaW5nO1xyXG4gIGVuYWJsZWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVGVsZW1ldHJ5UHJvdmlkZXIge1xyXG4gIHByaXZhdGUgbG9nZ2VyUHJvdmlkZXI6IExvZ2dlclByb3ZpZGVyIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplZCA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIC8vIEF1dG8taW5pdGlhbGl6ZSBzeW5jaHJvbm91c2x5IHdpdGggZW52aXJvbm1lbnQgdmFyaWFibGVzXHJcbiAgICBpZiAoIXRoaXMuaW5pdGlhbGl6ZWQgJiYgcHJvY2Vzcy5lbnYuT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UKSB7XHJcbiAgICAgIGNvbnN0IHNlcnZpY2VOYW1lID0gcHJvY2Vzcy5lbnYuU0VSVklDRV9OQU1FIHx8ICd1bmtub3duLXNlcnZpY2UnO1xyXG4gICAgICBjb25zdCBzZXJ2aWNlU3RhZ2UgPSBwcm9jZXNzLmVudi5TVEFHRTtcclxuICAgICAgdGhpcy5pbml0aWFsaXplKHtcclxuICAgICAgICBlbmRwb2ludDogcHJvY2Vzcy5lbnYuT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UIHx8ICcnLFxyXG4gICAgICAgIHVzZXJuYW1lOiBwcm9jZXNzLmVudi5PVEVMX0VYUE9SVEVSX09UTFBfVVNFUiB8fCAnJyxcclxuICAgICAgICBwYXNzd29yZDogcHJvY2Vzcy5lbnYuT1RFTF9FWFBPUlRFUl9PVExQX1BBU1MgfHwgJycsXHJcbiAgICAgICAgc2VydmljZU5hbWU6IGAke3NlcnZpY2VOYW1lfS0ke3NlcnZpY2VTdGFnZX1gLFxyXG4gICAgICAgIHNlcnZpY2VWZXJzaW9uOiBwcm9jZXNzLmVudi5ucG1fcGFja2FnZV92ZXJzaW9uIHx8ICcxLjAuMCcsXHJcbiAgICAgICAgZW5hYmxlZDogcHJvY2Vzcy5lbnYuT1RFTF9FTkFCTEVEICE9PSAnZmFsc2UnLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbml0aWFsaXplKGNvbmZpZzogVGVsZW1ldHJ5Q29uZmlnKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNvbmZpZy5lbmFibGVkID09PSBmYWxzZSkge1xyXG4gICAgICBjb25zb2xlLmxvZygnW1RlbGVtZXRyeV0gT3BlblRlbGVtZXRyeSBpcyBkaXNhYmxlZCcpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFjb25maWcuZW5kcG9pbnQgfHwgIWNvbmZpZy51c2VybmFtZSB8fCAhY29uZmlnLnBhc3N3b3JkKSB7XHJcbiAgICAgIC8vIE7Do28gbG9nYXIgZXJybyBzZSBlc3RpdmVybW9zIGVtIG1vZG8gZGUgYnVpbGRcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAndGVzdCcgJiZcclxuICAgICAgICBwcm9jZXNzLmVudi5PVEVMX0VYUE9SVEVSX09UTFBfRU5EUE9JTlRcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVtZXRyeV0gTWlzc2luZyByZXF1aXJlZCBjb25maWd1cmF0aW9uJyk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIENyZWF0ZSByZXNvdXJjZSB3aXRoIHNlcnZpY2UgaW5mb3JtYXRpb25cclxuICAgICAgY29uc3QgcmVzb3VyY2UgPSByZXNvdXJjZUZyb21BdHRyaWJ1dGVzKHtcclxuICAgICAgICBbQVRUUl9TRVJWSUNFX05BTUVdOiBjb25maWcuc2VydmljZU5hbWUgfHwgJ3Vua25vd24tc2VydmljZScsXHJcbiAgICAgICAgW0FUVFJfU0VSVklDRV9WRVJTSU9OXTogY29uZmlnLnNlcnZpY2VWZXJzaW9uIHx8ICcxLjAuMCcsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gQ3JlYXRlIE9UTFAgZXhwb3J0ZXIgd2l0aCBhdXRoZW50aWNhdGlvbiBhbmQgdGltZW91dCBjb25maWd1cmF0aW9uXHJcbiAgICAgIGNvbnN0IGxvZ0V4cG9ydGVyID0gbmV3IE9UTFBMb2dFeHBvcnRlcih7XHJcbiAgICAgICAgdXJsOiBgJHtjb25maWcuZW5kcG9pbnR9L3YxL2xvZ3NgLFxyXG4gICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgIEF1dGhvcml6YXRpb246IGBCYXNpYyAke0J1ZmZlci5mcm9tKGAke2NvbmZpZy51c2VybmFtZX06JHtjb25maWcucGFzc3dvcmR9YCkudG9TdHJpbmcoJ2Jhc2U2NCcpfWAsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB0aW1lb3V0TWlsbGlzOiA1MDAwLCAvLyA1IHNlY29uZCB0aW1lb3V0IGZvciBleHBvcnRzXHJcbiAgICAgICAgY29uY3VycmVuY3lMaW1pdDogMSwgLy8gUHJvY2VzcyBvbmUgZXhwb3J0IGF0IGEgdGltZVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIC8vIFVzZSBjdXN0b20gU3luY0xvZ1JlY29yZFByb2Nlc3NvciBpbnN0ZWFkIG9mIFNpbXBsZUxvZ1JlY29yZFByb2Nlc3NvclxyXG4gICAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgYXN5bmMgSFRUUCBleHBvcnQgaXMgcHJvcGVybHkgYXdhaXRlZCBpbiBMYW1iZGFcclxuICAgICAgLy8gZW52aXJvbm1lbnRzIHdoZXJlIGV4ZWN1dGlvbiBjb250ZXh0IGZyZWV6ZXMgYWZ0ZXIgaGFuZGxlciByZXR1cm5zXHJcbiAgICAgIGNvbnN0IHN5bmNQcm9jZXNzb3IgPSBuZXcgU3luY0xvZ1JlY29yZFByb2Nlc3Nvcihsb2dFeHBvcnRlcik7XHJcblxyXG4gICAgICAvLyBDcmVhdGUgbG9nZ2VyIHByb3ZpZGVyIHdpdGggcmVzb3VyY2UgYW5kIHByb2Nlc3NvcnNcclxuICAgICAgdGhpcy5sb2dnZXJQcm92aWRlciA9IG5ldyBMb2dnZXJQcm92aWRlcih7XHJcbiAgICAgICAgcmVzb3VyY2UsXHJcbiAgICAgICAgcHJvY2Vzc29yczogW3N5bmNQcm9jZXNzb3JdLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgICBjb25zb2xlLmxvZygnW1RlbGVtZXRyeV0gT3BlblRlbGVtZXRyeSBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHknKTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlbWV0cnldIEZhaWxlZCB0byBpbml0aWFsaXplIE9wZW5UZWxlbWV0cnk6JywgZXJyb3IpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldExvZ2dlclByb3ZpZGVyKCk6IExvZ2dlclByb3ZpZGVyIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5sb2dnZXJQcm92aWRlcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc0luaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGb3JjZSBmbHVzaCBhbGwgcGVuZGluZyBsb2dzIHRvIGVuc3VyZSB0aGV5IGFyZSBzZW50IGJlZm9yZSBMYW1iZGEgZnJlZXplc1xyXG4gICAqIFRoaXMgaXMgY3JpdGljYWwgaW4gQVdTIExhbWJkYSBlbnZpcm9ubWVudHMgd2hlcmUgZXhlY3V0aW9uIGNvbnRleHQgZnJlZXplc1xyXG4gICAqIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBoYW5kbGVyIHJldHVybnMsIHBvdGVudGlhbGx5IGJlZm9yZSBhc3luYyBIVFRQIHJlcXVlc3RzIGNvbXBsZXRlXHJcbiAgICovXHJcbiAgcHVibGljIGFzeW5jIGZvcmNlRmx1c2goKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIXRoaXMubG9nZ2VyUHJvdmlkZXIpIHtcclxuICAgICAgY29uc29sZS53YXJuKCdbVGVsZW1ldHJ5XSBmb3JjZUZsdXNoIGNhbGxlZCBidXQgbG9nZ2VyUHJvdmlkZXIgaXMgbnVsbCcpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcclxuICAgICAgY29uc29sZS5sb2coJ1tUZWxlbWV0cnldIFN0YXJ0aW5nIGZvcmNlRmx1c2guLi4nKTtcclxuXHJcbiAgICAgIC8vIGZvcmNlRmx1c2ggZW5zdXJlcyBhbGwgcGVuZGluZyBsb2dzIGFyZSBleHBvcnRlZCBpbW1lZGlhdGVseVxyXG4gICAgICBhd2FpdCB0aGlzLmxvZ2dlclByb3ZpZGVyLmZvcmNlRmx1c2goKTtcclxuXHJcbiAgICAgIGNvbnN0IGR1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHN0YXJ0VGltZTtcclxuICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgYFtUZWxlbWV0cnldIGZvcmNlRmx1c2ggY29tcGxldGVkIHN1Y2Nlc3NmdWxseSBpbiAke2R1cmF0aW9ufW1zYFxyXG4gICAgICApO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignW1RlbGVtZXRyeV0gRmFpbGVkIHRvIGZvcmNlIGZsdXNoIGxvZ3M6JywgZXJyb3IpO1xyXG4gICAgICB0aHJvdyBlcnJvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzaHV0ZG93bigpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLmxvZ2dlclByb3ZpZGVyKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMubG9nZ2VyUHJvdmlkZXIuc2h1dGRvd24oKTtcclxuICAgICAgdGhpcy5pbml0aWFsaXplZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJG9uRGVzdHJveSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHJldHVybiB0aGlzLnNodXRkb3duKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,20 +0,0 @@
1
- import { TelemetryProvider } from './config';
2
- export interface ErrorLogData {
3
- error: Error;
4
- context?: Record<string, any>;
5
- accountUserUid?: string;
6
- accountUid?: string;
7
- requestId?: string;
8
- endpoint?: string;
9
- method?: string;
10
- controller?: string;
11
- controllerMethod?: string;
12
- applicationUid?: string;
13
- awsRequestId?: string;
14
- }
15
- export declare class TelemetryService {
16
- private readonly telemetryProvider;
17
- constructor(telemetryProvider: TelemetryProvider);
18
- logError(data: ErrorLogData): Promise<void>;
19
- logException(error: Error, context?: Record<string, any>): Promise<void>;
20
- }
@@ -1,69 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.TelemetryService = void 0;
13
- const api_logs_1 = require("@opentelemetry/api-logs");
14
- class TelemetryService {
15
- constructor(telemetryProvider) {
16
- this.telemetryProvider = telemetryProvider;
17
- }
18
- logError(data) {
19
- return __awaiter(this, void 0, void 0, function* () {
20
- if (!this.telemetryProvider.isInitialized()) {
21
- return;
22
- }
23
- const loggerProvider = this.telemetryProvider.getLoggerProvider();
24
- if (!loggerProvider) {
25
- return;
26
- }
27
- try {
28
- const logger = loggerProvider.getLogger('cart-service-error-logger', '1.0.0');
29
- const logRecord = {
30
- severityNumber: api_logs_1.SeverityNumber.ERROR,
31
- severityText: 'ERROR',
32
- body: data.error.message,
33
- attributes: {
34
- 'error.type': data.error.name,
35
- 'error.message': data.error.message,
36
- 'error.stack': data.error.stack || '',
37
- 'service.name': 'cart-service',
38
- 'accountUser.uid': data.accountUserUid || 'not provided',
39
- 'account.uid': data.accountUid || 'not provided',
40
- 'application.uid': data.applicationUid || 'not provided',
41
- 'request.id': data.requestId || 'not provided',
42
- 'aws.request.id': data.awsRequestId || 'not provided',
43
- 'http.endpoint': data.endpoint || 'not provided',
44
- 'http.method': data.method || 'not provided',
45
- 'controller.name': data.controller || 'not provided',
46
- 'controller.method': data.controllerMethod || 'not provided',
47
- 'error.context': JSON.stringify(data.context) || 'not provided',
48
- timestamp: new Date().toISOString(),
49
- },
50
- };
51
- logger.emit(logRecord);
52
- yield this.telemetryProvider.forceFlush();
53
- }
54
- catch (error) {
55
- console.error('[TelemetryService] Failed to log error:', error);
56
- }
57
- });
58
- }
59
- logException(error, context) {
60
- return __awaiter(this, void 0, void 0, function* () {
61
- yield this.logError({
62
- error,
63
- context,
64
- });
65
- });
66
- }
67
- }
68
- exports.TelemetryService = TelemetryService;
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWwtc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy90ZWxlbWV0cnkvZXh0ZXJuYWwtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxzREFBeUQ7QUFpQnpELE1BQWEsZ0JBQWdCO0lBQzNCLFlBQTZCLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO0lBQUcsQ0FBQztJQUV4RCxRQUFRLENBQUMsSUFBa0I7O1lBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztnQkFDNUMsT0FBTztZQUNULENBQUM7WUFFRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNsRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3BCLE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBSSxDQUFDO2dCQUNILE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQ3JDLDJCQUEyQixFQUMzQixPQUFPLENBQ1IsQ0FBQztnQkFFRixNQUFNLFNBQVMsR0FBRztvQkFDaEIsY0FBYyxFQUFFLHlCQUFjLENBQUMsS0FBSztvQkFDcEMsWUFBWSxFQUFFLE9BQU87b0JBQ3JCLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU87b0JBQ3hCLFVBQVUsRUFBRTt3QkFDVixZQUFZLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJO3dCQUM3QixlQUFlLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPO3dCQUNuQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRTt3QkFDckMsY0FBYyxFQUFFLGNBQWM7d0JBQzlCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxjQUFjLElBQUksY0FBYzt3QkFDeEQsYUFBYSxFQUFFLElBQUksQ0FBQyxVQUFVLElBQUksY0FBYzt3QkFDaEQsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGNBQWMsSUFBSSxjQUFjO3dCQUN4RCxZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVMsSUFBSSxjQUFjO3dCQUM5QyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsWUFBWSxJQUFJLGNBQWM7d0JBQ3JELGVBQWUsRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLGNBQWM7d0JBQ2hELGFBQWEsRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLGNBQWM7d0JBQzVDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxVQUFVLElBQUksY0FBYzt3QkFDcEQsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixJQUFJLGNBQWM7d0JBQzVELGVBQWUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxjQUFjO3dCQUMvRCxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7cUJBQ3BDO2lCQUNGLENBQUM7Z0JBRUYsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFLdkIsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDNUMsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyx5Q0FBeUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUVsRSxDQUFDO1FBQ0gsQ0FBQztLQUFBO0lBRVksWUFBWSxDQUN2QixLQUFZLEVBQ1osT0FBNkI7O1lBRTdCLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDbEIsS0FBSztnQkFDTCxPQUFPO2FBQ1IsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUFBO0NBQ0Y7QUEvREQsNENBK0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2V2ZXJpdHlOdW1iZXIgfSBmcm9tICdAb3BlbnRlbGVtZXRyeS9hcGktbG9ncyc7XHJcbmltcG9ydCB7IFRlbGVtZXRyeVByb3ZpZGVyIH0gZnJvbSAnLi9jb25maWcnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFcnJvckxvZ0RhdGEge1xyXG4gIGVycm9yOiBFcnJvcjtcclxuICBjb250ZXh0PzogUmVjb3JkPHN0cmluZywgYW55PjtcclxuICBhY2NvdW50VXNlclVpZD86IHN0cmluZztcclxuICBhY2NvdW50VWlkPzogc3RyaW5nO1xyXG4gIHJlcXVlc3RJZD86IHN0cmluZztcclxuICBlbmRwb2ludD86IHN0cmluZztcclxuICBtZXRob2Q/OiBzdHJpbmc7XHJcbiAgY29udHJvbGxlcj86IHN0cmluZztcclxuICBjb250cm9sbGVyTWV0aG9kPzogc3RyaW5nO1xyXG4gIGFwcGxpY2F0aW9uVWlkPzogc3RyaW5nO1xyXG4gIGF3c1JlcXVlc3RJZD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRlbGVtZXRyeVNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgdGVsZW1ldHJ5UHJvdmlkZXI6IFRlbGVtZXRyeVByb3ZpZGVyKSB7fVxyXG5cclxuICBwdWJsaWMgYXN5bmMgbG9nRXJyb3IoZGF0YTogRXJyb3JMb2dEYXRhKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIXRoaXMudGVsZW1ldHJ5UHJvdmlkZXIuaXNJbml0aWFsaXplZCgpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBsb2dnZXJQcm92aWRlciA9IHRoaXMudGVsZW1ldHJ5UHJvdmlkZXIuZ2V0TG9nZ2VyUHJvdmlkZXIoKTtcclxuICAgIGlmICghbG9nZ2VyUHJvdmlkZXIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGxvZ2dlciA9IGxvZ2dlclByb3ZpZGVyLmdldExvZ2dlcihcclxuICAgICAgICAnY2FydC1zZXJ2aWNlLWVycm9yLWxvZ2dlcicsXHJcbiAgICAgICAgJzEuMC4wJ1xyXG4gICAgICApO1xyXG5cclxuICAgICAgY29uc3QgbG9nUmVjb3JkID0ge1xyXG4gICAgICAgIHNldmVyaXR5TnVtYmVyOiBTZXZlcml0eU51bWJlci5FUlJPUixcclxuICAgICAgICBzZXZlcml0eVRleHQ6ICdFUlJPUicsXHJcbiAgICAgICAgYm9keTogZGF0YS5lcnJvci5tZXNzYWdlLFxyXG4gICAgICAgIGF0dHJpYnV0ZXM6IHtcclxuICAgICAgICAgICdlcnJvci50eXBlJzogZGF0YS5lcnJvci5uYW1lLFxyXG4gICAgICAgICAgJ2Vycm9yLm1lc3NhZ2UnOiBkYXRhLmVycm9yLm1lc3NhZ2UsXHJcbiAgICAgICAgICAnZXJyb3Iuc3RhY2snOiBkYXRhLmVycm9yLnN0YWNrIHx8ICcnLFxyXG4gICAgICAgICAgJ3NlcnZpY2UubmFtZSc6ICdjYXJ0LXNlcnZpY2UnLFxyXG4gICAgICAgICAgJ2FjY291bnRVc2VyLnVpZCc6IGRhdGEuYWNjb3VudFVzZXJVaWQgfHwgJ25vdCBwcm92aWRlZCcsXHJcbiAgICAgICAgICAnYWNjb3VudC51aWQnOiBkYXRhLmFjY291bnRVaWQgfHwgJ25vdCBwcm92aWRlZCcsXHJcbiAgICAgICAgICAnYXBwbGljYXRpb24udWlkJzogZGF0YS5hcHBsaWNhdGlvblVpZCB8fCAnbm90IHByb3ZpZGVkJyxcclxuICAgICAgICAgICdyZXF1ZXN0LmlkJzogZGF0YS5yZXF1ZXN0SWQgfHwgJ25vdCBwcm92aWRlZCcsXHJcbiAgICAgICAgICAnYXdzLnJlcXVlc3QuaWQnOiBkYXRhLmF3c1JlcXVlc3RJZCB8fCAnbm90IHByb3ZpZGVkJyxcclxuICAgICAgICAgICdodHRwLmVuZHBvaW50JzogZGF0YS5lbmRwb2ludCB8fCAnbm90IHByb3ZpZGVkJyxcclxuICAgICAgICAgICdodHRwLm1ldGhvZCc6IGRhdGEubWV0aG9kIHx8ICdub3QgcHJvdmlkZWQnLFxyXG4gICAgICAgICAgJ2NvbnRyb2xsZXIubmFtZSc6IGRhdGEuY29udHJvbGxlciB8fCAnbm90IHByb3ZpZGVkJyxcclxuICAgICAgICAgICdjb250cm9sbGVyLm1ldGhvZCc6IGRhdGEuY29udHJvbGxlck1ldGhvZCB8fCAnbm90IHByb3ZpZGVkJyxcclxuICAgICAgICAgICdlcnJvci5jb250ZXh0JzogSlNPTi5zdHJpbmdpZnkoZGF0YS5jb250ZXh0KSB8fCAnbm90IHByb3ZpZGVkJyxcclxuICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBsb2dnZXIuZW1pdChsb2dSZWNvcmQpO1xyXG5cclxuICAgICAgLy8gQ1JJVElDQUw6IEZvcmNlIGZsdXNoIHRvIGVuc3VyZSBsb2cgaXMgc2VudCBiZWZvcmUgTGFtYmRhIGZyZWV6ZXNcclxuICAgICAgLy8gV2l0aG91dCB0aGlzLCB0aGUgYXN5bmMgSFRUUCByZXF1ZXN0IG1heSBub3QgY29tcGxldGUgYmVmb3JlXHJcbiAgICAgIC8vIHRoZSBMYW1iZGEgZXhlY3V0aW9uIGNvbnRleHQgZnJlZXplc1xyXG4gICAgICBhd2FpdCB0aGlzLnRlbGVtZXRyeVByb3ZpZGVyLmZvcmNlRmx1c2goKTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlbWV0cnlTZXJ2aWNlXSBGYWlsZWQgdG8gbG9nIGVycm9yOicsIGVycm9yKTtcclxuICAgICAgLy8gRG9uJ3QgcmUtdGhyb3cgdG8gYXZvaWQgYnJlYWtpbmcgdGhlIGFwcGxpY2F0aW9uIGZsb3dcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBsb2dFeGNlcHRpb24oXHJcbiAgICBlcnJvcjogRXJyb3IsXHJcbiAgICBjb250ZXh0PzogUmVjb3JkPHN0cmluZywgYW55PlxyXG4gICk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgYXdhaXQgdGhpcy5sb2dFcnJvcih7XHJcbiAgICAgIGVycm9yLFxyXG4gICAgICBjb250ZXh0LFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,3 +0,0 @@
1
- export * from './config';
2
- export * from './external-service';
3
- export * from '../../telemetry';
@@ -1,20 +0,0 @@
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("./config"), exports);
18
- __exportStar(require("./external-service"), exports);
19
- __exportStar(require("../../telemetry"), exports);
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdGVsZW1ldHJ5L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBeUI7QUFDekIscURBQW1DO0FBQ25DLGtEQUFnQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29uZmlnJztcclxuZXhwb3J0ICogZnJvbSAnLi9leHRlcm5hbC1zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi4vLi4vdGVsZW1ldHJ5JztcclxuIl19
@@ -1,11 +0,0 @@
1
- import { LogRecordProcessor, ReadableLogRecord } from '@opentelemetry/sdk-logs';
2
- import { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http';
3
- import { Context } from '@opentelemetry/api';
4
- export declare class SyncLogRecordProcessor implements LogRecordProcessor {
5
- private readonly exporter;
6
- private readonly pendingExports;
7
- constructor(exporter: OTLPLogExporter);
8
- onEmit(logRecord: ReadableLogRecord, _context?: Context): void;
9
- forceFlush(): Promise<void>;
10
- shutdown(): Promise<void>;
11
- }
@@ -1,74 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.SyncLogRecordProcessor = void 0;
13
- class SyncLogRecordProcessor {
14
- constructor(exporter) {
15
- this.pendingExports = [];
16
- this.exporter = exporter;
17
- }
18
- onEmit(logRecord, _context) {
19
- const exportPromise = new Promise((resolve, reject) => {
20
- this.exporter.export([logRecord], (result) => {
21
- if (result.code === 0) {
22
- resolve();
23
- }
24
- else {
25
- console.error('[SyncLogRecordProcessor] Export failed:', result.error);
26
- reject(result.error instanceof Error
27
- ? result.error
28
- : new Error(String(result.error)));
29
- }
30
- });
31
- })
32
- .then(() => {
33
- const index = this.pendingExports.indexOf(exportPromise);
34
- if (index > -1) {
35
- this.pendingExports.splice(index, 1);
36
- }
37
- })
38
- .catch((error) => {
39
- console.error('[SyncLogRecordProcessor] Export error:', error);
40
- const index = this.pendingExports.indexOf(exportPromise);
41
- if (index > -1) {
42
- this.pendingExports.splice(index, 1);
43
- }
44
- });
45
- this.pendingExports.push(exportPromise);
46
- }
47
- forceFlush() {
48
- return __awaiter(this, void 0, void 0, function* () {
49
- console.log(`[SyncLogRecordProcessor] forceFlush called with ${this.pendingExports.length} pending exports`);
50
- if (this.pendingExports.length === 0) {
51
- console.log('[SyncLogRecordProcessor] No pending exports to flush');
52
- return;
53
- }
54
- try {
55
- yield Promise.all(this.pendingExports);
56
- console.log('[SyncLogRecordProcessor] All pending exports completed');
57
- }
58
- catch (error) {
59
- console.error('[SyncLogRecordProcessor] Error during forceFlush:', error);
60
- throw error;
61
- }
62
- });
63
- }
64
- shutdown() {
65
- return __awaiter(this, void 0, void 0, function* () {
66
- console.log('[SyncLogRecordProcessor] Shutting down...');
67
- yield this.forceFlush();
68
- yield this.exporter.shutdown();
69
- console.log('[SyncLogRecordProcessor] Shutdown complete');
70
- });
71
- }
72
- }
73
- exports.SyncLogRecordProcessor = SyncLogRecordProcessor;
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1sb2ctcmVjb3JkLXByb2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy90ZWxlbWV0cnkvc3luYy1sb2ctcmVjb3JkLXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFZQSxNQUFhLHNCQUFzQjtJQUlqQyxZQUFZLFFBQXlCO1FBRnBCLG1CQUFjLEdBQW9CLEVBQUUsQ0FBQztRQUdwRCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQTRCLEVBQUUsUUFBa0I7UUFJckQsTUFBTSxhQUFhLEdBQUcsSUFBSSxPQUFPLENBQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDMUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUMzQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ3RCLE9BQU8sRUFBRSxDQUFDO2dCQUNaLENBQUM7cUJBQU0sQ0FBQztvQkFDTixPQUFPLENBQUMsS0FBSyxDQUNYLHlDQUF5QyxFQUN6QyxNQUFNLENBQUMsS0FBSyxDQUNiLENBQUM7b0JBQ0YsTUFBTSxDQUNKLE1BQU0sQ0FBQyxLQUFLLFlBQVksS0FBSzt3QkFDM0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLO3dCQUNkLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ3BDLENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO2FBQ0MsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNULE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3pELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7UUFDSCxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsQ0FBQyxLQUFjLEVBQUUsRUFBRTtZQUN4QixPQUFPLENBQUMsS0FBSyxDQUFDLHdDQUF3QyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQy9ELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3pELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFSyxVQUFVOztZQUNkLE9BQU8sQ0FBQyxHQUFHLENBQ1QsbURBQW1ELElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxrQkFBa0IsQ0FDaEcsQ0FBQztZQUVGLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0RBQXNELENBQUMsQ0FBQztnQkFDcEUsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLENBQUM7Z0JBRUgsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDdkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1lBQ3hFLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsbURBQW1ELEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQzFFLE1BQU0sS0FBSyxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7S0FBQTtJQUVLLFFBQVE7O1lBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1lBQ3pELE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMvQixPQUFPLENBQUMsR0FBRyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7UUFDNUQsQ0FBQztLQUFBO0NBQ0Y7QUF4RUQsd0RBd0VDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9nUmVjb3JkUHJvY2Vzc29yLCBSZWFkYWJsZUxvZ1JlY29yZCB9IGZyb20gJ0BvcGVudGVsZW1ldHJ5L3Nkay1sb2dzJztcclxuaW1wb3J0IHsgT1RMUExvZ0V4cG9ydGVyIH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvZXhwb3J0ZXItbG9ncy1vdGxwLWh0dHAnO1xyXG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvYXBpJztcclxuXHJcbi8qKlxyXG4gKiBDdXN0b20gTG9nUmVjb3JkUHJvY2Vzc29yIHRoYXQgZW5zdXJlcyBzeW5jaHJvbm91cyBleHBvcnQgZm9yIEFXUyBMYW1iZGFcclxuICpcclxuICogVGhpcyBwcm9jZXNzb3Igd3JhcHMgdGhlIE9UTFAgZXhwb3J0ZXIgYW5kIGVuc3VyZXMgdGhhdCBsb2dzIGFyZSBhY3R1YWxseVxyXG4gKiBleHBvcnRlZCBzeW5jaHJvbm91c2x5IGJ5IGltbWVkaWF0ZWx5IGNhbGxpbmcgZXhwb3J0KCkgYW5kIHdhaXRpbmcgZm9yIGl0XHJcbiAqIHRvIGNvbXBsZXRlLCByYXRoZXIgdGhhbiByZWx5aW5nIG9uIFNpbXBsZUxvZ1JlY29yZFByb2Nlc3NvciB3aGljaCBtYXkgbm90XHJcbiAqIHByb3Blcmx5IGF3YWl0IHRoZSBhc3luYyBIVFRQIHJlcXVlc3QgaW4gTGFtYmRhIGVudmlyb25tZW50cy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBTeW5jTG9nUmVjb3JkUHJvY2Vzc29yIGltcGxlbWVudHMgTG9nUmVjb3JkUHJvY2Vzc29yIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGV4cG9ydGVyOiBPVExQTG9nRXhwb3J0ZXI7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBwZW5kaW5nRXhwb3J0czogUHJvbWlzZTx2b2lkPltdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKGV4cG9ydGVyOiBPVExQTG9nRXhwb3J0ZXIpIHtcclxuICAgIHRoaXMuZXhwb3J0ZXIgPSBleHBvcnRlcjtcclxuICB9XHJcblxyXG4gIG9uRW1pdChsb2dSZWNvcmQ6IFJlYWRhYmxlTG9nUmVjb3JkLCBfY29udGV4dD86IENvbnRleHQpOiB2b2lkIHtcclxuICAgIC8vIEV4cG9ydCBpbW1lZGlhdGVseSBhbmQgdHJhY2sgdGhlIHByb21pc2VcclxuICAgIC8vIFRoZSBleHBvcnQgbWV0aG9kIHJldHVybnMgdm9pZCwgYnV0IGludGVybmFsbHkgdHJpZ2dlcnMgYXN5bmMgSFRUUCByZXF1ZXN0XHJcbiAgICAvLyBXZSBuZWVkIHRvIHdyYXAgaXQgdG8gdHJhY2sgY29tcGxldGlvblxyXG4gICAgY29uc3QgZXhwb3J0UHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgdGhpcy5leHBvcnRlci5leHBvcnQoW2xvZ1JlY29yZF0sIChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0LmNvZGUgPT09IDApIHtcclxuICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAgICAgJ1tTeW5jTG9nUmVjb3JkUHJvY2Vzc29yXSBFeHBvcnQgZmFpbGVkOicsXHJcbiAgICAgICAgICAgIHJlc3VsdC5lcnJvclxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJlamVjdChcclxuICAgICAgICAgICAgcmVzdWx0LmVycm9yIGluc3RhbmNlb2YgRXJyb3JcclxuICAgICAgICAgICAgICA/IHJlc3VsdC5lcnJvclxyXG4gICAgICAgICAgICAgIDogbmV3IEVycm9yKFN0cmluZyhyZXN1bHQuZXJyb3IpKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSlcclxuICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wZW5kaW5nRXhwb3J0cy5pbmRleE9mKGV4cG9ydFByb21pc2UpO1xyXG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICB0aGlzLnBlbmRpbmdFeHBvcnRzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycm9yOiB1bmtub3duKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignW1N5bmNMb2dSZWNvcmRQcm9jZXNzb3JdIEV4cG9ydCBlcnJvcjonLCBlcnJvcik7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnBlbmRpbmdFeHBvcnRzLmluZGV4T2YoZXhwb3J0UHJvbWlzZSk7XHJcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICAgIHRoaXMucGVuZGluZ0V4cG9ydHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMucGVuZGluZ0V4cG9ydHMucHVzaChleHBvcnRQcm9taXNlKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGZvcmNlRmx1c2goKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zb2xlLmxvZyhcclxuICAgICAgYFtTeW5jTG9nUmVjb3JkUHJvY2Vzc29yXSBmb3JjZUZsdXNoIGNhbGxlZCB3aXRoICR7dGhpcy5wZW5kaW5nRXhwb3J0cy5sZW5ndGh9IHBlbmRpbmcgZXhwb3J0c2BcclxuICAgICk7XHJcblxyXG4gICAgaWYgKHRoaXMucGVuZGluZ0V4cG9ydHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdbU3luY0xvZ1JlY29yZFByb2Nlc3Nvcl0gTm8gcGVuZGluZyBleHBvcnRzIHRvIGZsdXNoJyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0cnkge1xyXG4gICAgICAvLyBXYWl0IGZvciBhbGwgcGVuZGluZyBleHBvcnRzIHRvIGNvbXBsZXRlXHJcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKHRoaXMucGVuZGluZ0V4cG9ydHMpO1xyXG4gICAgICBjb25zb2xlLmxvZygnW1N5bmNMb2dSZWNvcmRQcm9jZXNzb3JdIEFsbCBwZW5kaW5nIGV4cG9ydHMgY29tcGxldGVkJyk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdbU3luY0xvZ1JlY29yZFByb2Nlc3Nvcl0gRXJyb3IgZHVyaW5nIGZvcmNlRmx1c2g6JywgZXJyb3IpO1xyXG4gICAgICB0aHJvdyBlcnJvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIHNodXRkb3duKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc29sZS5sb2coJ1tTeW5jTG9nUmVjb3JkUHJvY2Vzc29yXSBTaHV0dGluZyBkb3duLi4uJyk7XHJcbiAgICBhd2FpdCB0aGlzLmZvcmNlRmx1c2goKTtcclxuICAgIGF3YWl0IHRoaXMuZXhwb3J0ZXIuc2h1dGRvd24oKTtcclxuICAgIGNvbnNvbGUubG9nKCdbU3luY0xvZ1JlY29yZFByb2Nlc3Nvcl0gU2h1dGRvd24gY29tcGxldGUnKTtcclxuICB9XHJcbn1cclxuIl19
@@ -1 +0,0 @@
1
- export declare function LogTelemetry(): (_target: any, _propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
package/dist/telemetry.js DELETED
@@ -1,81 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.LogTelemetry = LogTelemetry;
13
- const services_1 = require("./services");
14
- function LogTelemetry() {
15
- return function (_target, _propertyKey, descriptor) {
16
- const originalMethod = descriptor.value;
17
- const methodName = _propertyKey;
18
- descriptor.value = function (...args) {
19
- return __awaiter(this, void 0, void 0, function* () {
20
- var _a, _b, _c, _d, _e;
21
- const $ctx = args.find((arg) => (arg === null || arg === void 0 ? void 0 : arg.request) && (arg === null || arg === void 0 ? void 0 : arg.response));
22
- let controllerName = 'UnknownController';
23
- if (((_a = this === null || this === void 0 ? void 0 : this.constructor) === null || _a === void 0 ? void 0 : _a.name) && this.constructor.name !== 'Object') {
24
- controllerName = this.constructor.name;
25
- }
26
- if (!$ctx) {
27
- console.warn('[LogTelemetry] Context not found, executing without telemetry');
28
- return yield originalMethod.apply(this, args);
29
- }
30
- let telemetryService;
31
- try {
32
- if ($ctx.injector) {
33
- telemetryService = $ctx.injector.get(services_1.TelemetryService);
34
- }
35
- }
36
- catch (error) {
37
- (_b = $ctx.logger) === null || _b === void 0 ? void 0 : _b.warn({
38
- 'LogTelemetry - Failed to get TelemetryService from injector': error,
39
- });
40
- }
41
- if (!telemetryService) {
42
- (_c = $ctx.logger) === null || _c === void 0 ? void 0 : _c.warn('[LogTelemetry] TelemetryService not available, executing without telemetry');
43
- return yield originalMethod.apply(this, args);
44
- }
45
- try {
46
- const result = yield originalMethod.apply(this, args);
47
- return result;
48
- }
49
- catch (error) {
50
- (_d = $ctx.logger) === null || _d === void 0 ? void 0 : _d.info('Error caught, sending to telemetry');
51
- const request = $ctx.request;
52
- const { loggedUser } = LoggedUserIdentifier.use($ctx);
53
- yield telemetryService.logError({
54
- error: error,
55
- context: {
56
- statusCode: error.status || 500,
57
- url: request.url,
58
- headers: request.headers,
59
- body: request.body,
60
- params: request.params,
61
- query: request.query,
62
- },
63
- accountUserUid: loggedUser.uid,
64
- accountUid: loggedUser.account.uid,
65
- requestId: $ctx.id,
66
- awsRequestId: (_e = $ctx.context) === null || _e === void 0 ? void 0 : _e.awsRequestId,
67
- endpoint: request.url,
68
- method: request.method,
69
- controller: controllerName,
70
- controllerMethod: methodName,
71
- applicationUid: loggedUser.application.uid,
72
- });
73
- $ctx.logger.info('Error sent to telemetry');
74
- throw error;
75
- }
76
- });
77
- };
78
- return descriptor;
79
- };
80
- }
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVsZW1ldHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RlbGVtZXRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQVFBLG9DQXdGQztBQTFGRCx5Q0FBOEM7QUFFOUMsU0FBZ0IsWUFBWTtJQUMxQixPQUFPLFVBQ0wsT0FBWSxFQUNaLFlBQW9CLEVBQ3BCLFVBQThCO1FBRTlCLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDeEMsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDO1FBRWhDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsVUFBMkIsR0FBRyxJQUFXOzs7Z0JBRTFELE1BQU0sSUFBSSxHQUFzQixJQUFJLENBQUMsSUFBSSxDQUN2QyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQSxHQUFHLGFBQUgsR0FBRyx1QkFBSCxHQUFHLENBQUUsT0FBTyxNQUFJLEdBQUcsYUFBSCxHQUFHLHVCQUFILEdBQUcsQ0FBRSxRQUFRLENBQUEsQ0FDdkMsQ0FBQztnQkFHRixJQUFJLGNBQWMsR0FBRyxtQkFBbUIsQ0FBQztnQkFFekMsSUFBSSxDQUFBLE1BQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLFdBQVcsMENBQUUsSUFBSSxLQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUNsRSxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7Z0JBQ3pDLENBQUM7Z0JBRUQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNWLE9BQU8sQ0FBQyxJQUFJLENBQ1YsK0RBQStELENBQ2hFLENBQUM7b0JBQ0YsT0FBTyxNQUFNLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNoRCxDQUFDO2dCQUdELElBQUksZ0JBQThDLENBQUM7Z0JBQ25ELElBQUksQ0FBQztvQkFDSCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQzt3QkFDbEIsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQ2xDLDJCQUFnQixDQUNHLENBQUM7b0JBQ3hCLENBQUM7Z0JBQ0gsQ0FBQztnQkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO29CQUNmLE1BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUUsSUFBSSxDQUFDO3dCQUNoQiw2REFBNkQsRUFBRSxLQUFLO3FCQUNyRSxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFFRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztvQkFDdEIsTUFBQSxJQUFJLENBQUMsTUFBTSwwQ0FBRSxJQUFJLENBQ2YsNEVBQTRFLENBQzdFLENBQUM7b0JBQ0YsT0FBTyxNQUFNLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNoRCxDQUFDO2dCQUVELElBQUksQ0FBQztvQkFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUN0RCxPQUFPLE1BQU0sQ0FBQztnQkFDaEIsQ0FBQztnQkFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO29CQUNwQixNQUFBLElBQUksQ0FBQyxNQUFNLDBDQUFFLElBQUksQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO29CQUV4RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO29CQUM3QixNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsb0JBQW9CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUV0RCxNQUFNLGdCQUFnQixDQUFDLFFBQVEsQ0FBQzt3QkFDOUIsS0FBSyxFQUFFLEtBQUs7d0JBQ1osT0FBTyxFQUFFOzRCQUNQLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxJQUFJLEdBQUc7NEJBQy9CLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRzs0QkFDaEIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPOzRCQUN4QixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7NEJBQ2xCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTs0QkFDdEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO3lCQUNyQjt3QkFDRCxjQUFjLEVBQUUsVUFBVSxDQUFDLEdBQUc7d0JBQzlCLFVBQVUsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUc7d0JBQ2xDLFNBQVMsRUFBRSxJQUFJLENBQUMsRUFBRTt3QkFDbEIsWUFBWSxFQUFFLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsWUFBWTt3QkFDeEMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHO3dCQUNyQixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07d0JBQ3RCLFVBQVUsRUFBRSxjQUFjO3dCQUMxQixnQkFBZ0IsRUFBRSxVQUFVO3dCQUM1QixjQUFjLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxHQUFHO3FCQUMzQyxDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQztvQkFHNUMsTUFBTSxLQUFLLENBQUM7Z0JBQ2QsQ0FBQztZQUNILENBQUM7U0FBQSxDQUFDO1FBRUYsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBEZWNvcmF0b3IgcXVlIGNhcHR1cmEgZXJyb3MgYXV0b21hdGljYW1lbnRlIGUgZW52aWEgcGFyYSB0ZWxlbWV0cmlhXHJcbiAqIFVzbyBubyBjb250cm9sbGVyOlxyXG4gKlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IFRlbGVtZXRyeVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBMb2dUZWxlbWV0cnkoKSB7XHJcbiAgcmV0dXJuIGZ1bmN0aW9uIChcclxuICAgIF90YXJnZXQ6IGFueSxcclxuICAgIF9wcm9wZXJ0eUtleTogc3RyaW5nLFxyXG4gICAgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yXHJcbiAgKSB7XHJcbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XHJcbiAgICBjb25zdCBtZXRob2ROYW1lID0gX3Byb3BlcnR5S2V5O1xyXG5cclxuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBhc3luYyBmdW5jdGlvbiAodGhpczogYW55LCAuLi5hcmdzOiBhbnlbXSkge1xyXG4gICAgICAvLyBFbmNvbnRyYXIgbyBjb250ZXh0b1xyXG4gICAgICBjb25zdCAkY3R4OiBTZXJ2ZXJsZXNzQ29udGV4dCA9IGFyZ3MuZmluZChcclxuICAgICAgICAoYXJnKSA9PiBhcmc/LnJlcXVlc3QgJiYgYXJnPy5yZXNwb25zZVxyXG4gICAgICApO1xyXG5cclxuICAgICAgLy8gQ2FwdHVyYXIgbyBub21lIGRvIGNvbnRyb2xsZXIgLSB0ZW50YXIgdsOhcmlhcyBmb250ZXNcclxuICAgICAgbGV0IGNvbnRyb2xsZXJOYW1lID0gJ1Vua25vd25Db250cm9sbGVyJztcclxuXHJcbiAgICAgIGlmICh0aGlzPy5jb25zdHJ1Y3Rvcj8ubmFtZSAmJiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgIT09ICdPYmplY3QnKSB7XHJcbiAgICAgICAgY29udHJvbGxlck5hbWUgPSB0aGlzLmNvbnN0cnVjdG9yLm5hbWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghJGN0eCkge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgICdbTG9nVGVsZW1ldHJ5XSBDb250ZXh0IG5vdCBmb3VuZCwgZXhlY3V0aW5nIHdpdGhvdXQgdGVsZW1ldHJ5J1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBCdXNjYXIgbyBUZWxlbWV0cnlTZXJ2aWNlIGRvIEluamVjdG9yU2VydmljZSBkbyBjb250ZXh0b1xyXG4gICAgICBsZXQgdGVsZW1ldHJ5U2VydmljZTogVGVsZW1ldHJ5U2VydmljZSB8IHVuZGVmaW5lZDtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBpZiAoJGN0eC5pbmplY3Rvcikge1xyXG4gICAgICAgICAgdGVsZW1ldHJ5U2VydmljZSA9ICRjdHguaW5qZWN0b3IuZ2V0KFxyXG4gICAgICAgICAgICBUZWxlbWV0cnlTZXJ2aWNlXHJcbiAgICAgICAgICApIGFzIFRlbGVtZXRyeVNlcnZpY2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICRjdHgubG9nZ2VyPy53YXJuKHtcclxuICAgICAgICAgICdMb2dUZWxlbWV0cnkgLSBGYWlsZWQgdG8gZ2V0IFRlbGVtZXRyeVNlcnZpY2UgZnJvbSBpbmplY3Rvcic6IGVycm9yLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIXRlbGVtZXRyeVNlcnZpY2UpIHtcclxuICAgICAgICAkY3R4LmxvZ2dlcj8ud2FybihcclxuICAgICAgICAgICdbTG9nVGVsZW1ldHJ5XSBUZWxlbWV0cnlTZXJ2aWNlIG5vdCBhdmFpbGFibGUsIGV4ZWN1dGluZyB3aXRob3V0IHRlbGVtZXRyeSdcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBhd2FpdCBvcmlnaW5hbE1ldGhvZC5hcHBseSh0aGlzLCBhcmdzKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBvcmlnaW5hbE1ldGhvZC5hcHBseSh0aGlzLCBhcmdzKTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XHJcbiAgICAgICAgJGN0eC5sb2dnZXI/LmluZm8oJ0Vycm9yIGNhdWdodCwgc2VuZGluZyB0byB0ZWxlbWV0cnknKTtcclxuICAgICAgICAvLyBFeHRyYWlyIGluZm9ybWHDp8O1ZXMgZG8gdXN1w6FyaW9cclxuICAgICAgICBjb25zdCByZXF1ZXN0ID0gJGN0eC5yZXF1ZXN0O1xyXG4gICAgICAgIGNvbnN0IHsgbG9nZ2VkVXNlciB9ID0gTG9nZ2VkVXNlcklkZW50aWZpZXIudXNlKCRjdHgpO1xyXG5cclxuICAgICAgICBhd2FpdCB0ZWxlbWV0cnlTZXJ2aWNlLmxvZ0Vycm9yKHtcclxuICAgICAgICAgIGVycm9yOiBlcnJvcixcclxuICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgc3RhdHVzQ29kZTogZXJyb3Iuc3RhdHVzIHx8IDUwMCxcclxuICAgICAgICAgICAgdXJsOiByZXF1ZXN0LnVybCxcclxuICAgICAgICAgICAgaGVhZGVyczogcmVxdWVzdC5oZWFkZXJzLFxyXG4gICAgICAgICAgICBib2R5OiByZXF1ZXN0LmJvZHksXHJcbiAgICAgICAgICAgIHBhcmFtczogcmVxdWVzdC5wYXJhbXMsXHJcbiAgICAgICAgICAgIHF1ZXJ5OiByZXF1ZXN0LnF1ZXJ5LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGFjY291bnRVc2VyVWlkOiBsb2dnZWRVc2VyLnVpZCxcclxuICAgICAgICAgIGFjY291bnRVaWQ6IGxvZ2dlZFVzZXIuYWNjb3VudC51aWQsXHJcbiAgICAgICAgICByZXF1ZXN0SWQ6ICRjdHguaWQsXHJcbiAgICAgICAgICBhd3NSZXF1ZXN0SWQ6ICRjdHguY29udGV4dD8uYXdzUmVxdWVzdElkLFxyXG4gICAgICAgICAgZW5kcG9pbnQ6IHJlcXVlc3QudXJsLFxyXG4gICAgICAgICAgbWV0aG9kOiByZXF1ZXN0Lm1ldGhvZCxcclxuICAgICAgICAgIGNvbnRyb2xsZXI6IGNvbnRyb2xsZXJOYW1lLFxyXG4gICAgICAgICAgY29udHJvbGxlck1ldGhvZDogbWV0aG9kTmFtZSxcclxuICAgICAgICAgIGFwcGxpY2F0aW9uVWlkOiBsb2dnZWRVc2VyLmFwcGxpY2F0aW9uLnVpZCxcclxuICAgICAgICB9KTtcclxuICAgICAgICAkY3R4LmxvZ2dlci5pbmZvKCdFcnJvciBzZW50IHRvIHRlbGVtZXRyeScpO1xyXG5cclxuICAgICAgICAvLyBSZS10aHJvdyBwYXJhIG1hbnRlciBvIGNvbXBvcnRhbWVudG8gbm9ybWFsIGRlIGVycm9cclxuICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcclxuICB9O1xyXG59XHJcbiJdfQ==
File without changes