@mecanizou/telemetry-hub 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/.github/workflows/pull_request.yml +32 -32
  2. package/.github/workflows/release.yml +129 -129
  3. package/.prettierignore +4 -4
  4. package/DOCS_GUIDE.md +151 -0
  5. package/README.md +248 -0
  6. package/dist/check-if-is-working.js +1 -1
  7. package/dist/core/index.d.ts +2 -0
  8. package/dist/core/index.js +6 -0
  9. package/dist/core/logger.d.ts +13 -0
  10. package/dist/core/logger.js +123 -0
  11. package/dist/core/types.d.ts +43 -0
  12. package/dist/core/types.js +3 -0
  13. package/dist/index.d.ts +1 -1
  14. package/dist/index.js +2 -2
  15. package/dist/services/index.d.ts +1 -0
  16. package/dist/services/index.js +18 -0
  17. package/dist/services/telemetry/config.d.ts +20 -0
  18. package/dist/services/telemetry/config.js +113 -0
  19. package/dist/services/telemetry/external-service.d.ts +20 -0
  20. package/dist/services/telemetry/external-service.js +69 -0
  21. package/dist/services/telemetry/index.d.ts +3 -0
  22. package/dist/services/telemetry/index.js +20 -0
  23. package/dist/services/telemetry/sync-log-record-processor.d.ts +11 -0
  24. package/dist/services/telemetry/sync-log-record-processor.js +74 -0
  25. package/dist/sst/index.d.ts +1 -0
  26. package/dist/sst/index.js +18 -0
  27. package/dist/sst/middy/index.d.ts +1 -0
  28. package/dist/sst/middy/index.js +18 -0
  29. package/dist/sst/middy/middleware.d.ts +5 -0
  30. package/dist/sst/middy/middleware.js +172 -0
  31. package/dist/sst/telemetry.d.ts +3 -0
  32. package/dist/sst/telemetry.js +111 -0
  33. package/dist/telemetry/core/__tests__/logger-types.test.d.ts +1 -0
  34. package/dist/telemetry/core/__tests__/logger-types.test.js +325 -0
  35. package/dist/telemetry/core/__tests__/logger.test.d.ts +1 -0
  36. package/dist/telemetry/core/__tests__/logger.test.js +337 -0
  37. package/dist/telemetry/core/__tests__/tracer.test.d.ts +1 -0
  38. package/dist/telemetry/core/__tests__/tracer.test.js +330 -0
  39. package/dist/telemetry/core/index.d.ts +4 -0
  40. package/dist/telemetry/core/index.js +8 -0
  41. package/dist/telemetry/core/logger-types.d.ts +43 -0
  42. package/dist/telemetry/core/logger-types.js +3 -0
  43. package/dist/telemetry/core/logger.d.ts +13 -0
  44. package/dist/telemetry/core/logger.js +123 -0
  45. package/dist/telemetry/core/tracer-types.d.ts +50 -0
  46. package/dist/telemetry/core/tracer-types.js +3 -0
  47. package/dist/telemetry/core/tracer.d.ts +10 -0
  48. package/dist/telemetry/core/tracer.js +114 -0
  49. package/dist/telemetry/index.d.ts +3 -0
  50. package/dist/telemetry/index.js +20 -0
  51. package/dist/telemetry/sst/__tests__/telemetry.test.d.ts +1 -0
  52. package/dist/telemetry/sst/__tests__/telemetry.test.js +138 -0
  53. package/dist/telemetry/sst/index.d.ts +1 -0
  54. package/dist/telemetry/sst/index.js +18 -0
  55. package/dist/telemetry/sst/middy/index.d.ts +1 -0
  56. package/dist/telemetry/sst/middy/index.js +18 -0
  57. package/dist/telemetry/sst/middy/middleware.d.ts +5 -0
  58. package/dist/telemetry/sst/middy/middleware.js +157 -0
  59. package/dist/telemetry/sst/telemetry.d.ts +4 -0
  60. package/dist/telemetry/sst/telemetry.js +121 -0
  61. package/dist/telemetry/tsed/__tests__/config.test.d.ts +1 -0
  62. package/dist/telemetry/tsed/__tests__/config.test.js +146 -0
  63. package/dist/telemetry/tsed/__tests__/service.test.d.ts +1 -0
  64. package/dist/telemetry/tsed/__tests__/service.test.js +63 -0
  65. package/dist/telemetry/tsed/config.d.ts +26 -0
  66. package/dist/telemetry/tsed/config.js +166 -0
  67. package/dist/telemetry/tsed/index.d.ts +4 -0
  68. package/dist/telemetry/tsed/index.js +21 -0
  69. package/dist/telemetry/tsed/log-telemetry.d.ts +1 -0
  70. package/dist/telemetry/tsed/log-telemetry.js +196 -0
  71. package/dist/telemetry/tsed/service.d.ts +26 -0
  72. package/dist/telemetry/tsed/service.js +150 -0
  73. package/dist/telemetry/tsed/sync-log-record-processor.d.ts +11 -0
  74. package/dist/telemetry/tsed/sync-log-record-processor.js +74 -0
  75. package/dist/telemetry.d.ts +1 -0
  76. package/dist/telemetry.js +81 -0
  77. package/dist/tsed/config.d.ts +20 -0
  78. package/dist/tsed/config.js +113 -0
  79. package/dist/tsed/index.d.ts +3 -0
  80. package/dist/tsed/index.js +20 -0
  81. package/dist/tsed/log-telemetry.d.ts +1 -0
  82. package/dist/tsed/log-telemetry.js +81 -0
  83. package/dist/tsed/service.d.ts +24 -0
  84. package/dist/tsed/service.js +131 -0
  85. package/dist/tsed/sync-log-record-processor.d.ts +11 -0
  86. package/dist/tsed/sync-log-record-processor.js +74 -0
  87. package/package.json +72 -56
  88. package/release.config.js +23 -23
  89. package/vitest.config.ts +22 -0
@@ -0,0 +1,121 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.forceFlush = exports.getStandardTracer = exports.getStandardLogger = void 0;
46
+ const sdk_node_1 = require("@opentelemetry/sdk-node");
47
+ const exporter_trace_otlp_http_1 = require("@opentelemetry/exporter-trace-otlp-http");
48
+ const exporter_metrics_otlp_http_1 = require("@opentelemetry/exporter-metrics-otlp-http");
49
+ const exporter_logs_otlp_http_1 = require("@opentelemetry/exporter-logs-otlp-http");
50
+ const sdk_metrics_1 = require("@opentelemetry/sdk-metrics");
51
+ const logs = __importStar(require("@opentelemetry/sdk-logs"));
52
+ const resources = __importStar(require("@opentelemetry/resources"));
53
+ const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
54
+ const api_1 = require("@opentelemetry/api");
55
+ const core_1 = require("../core");
56
+ const user = process.env.OTEL_EXPORTER_OTLP_USER;
57
+ const password = process.env.OTEL_EXPORTER_OTLP_PASS;
58
+ const basicAuth = Buffer.from(`${user}:${password}`).toString('base64');
59
+ const baseUrl = `${process.env.OTEL_EXPORTER_OTLP_ENDPOINT}/v1`;
60
+ const traceExporter = new exporter_trace_otlp_http_1.OTLPTraceExporter({
61
+ url: `${baseUrl}/traces`,
62
+ headers: {
63
+ Authorization: `Basic ${basicAuth}`,
64
+ 'Content-Type': 'application/json',
65
+ },
66
+ });
67
+ const metricExporter = new exporter_metrics_otlp_http_1.OTLPMetricExporter({
68
+ url: `${baseUrl}/metrics`,
69
+ headers: {
70
+ Authorization: `Basic ${basicAuth}`,
71
+ 'Content-Type': 'application/json',
72
+ },
73
+ });
74
+ const logExporter = new exporter_logs_otlp_http_1.OTLPLogExporter({
75
+ url: `${baseUrl}/logs`,
76
+ headers: {
77
+ Authorization: `Basic ${basicAuth}`,
78
+ 'Content-Type': 'application/json',
79
+ },
80
+ });
81
+ const metricReader = new sdk_metrics_1.PeriodicExportingMetricReader({
82
+ exporter: metricExporter,
83
+ exportIntervalMillis: 1000,
84
+ });
85
+ const serviceName = process.env.SERVICE_NAME || 'sst-service';
86
+ const resource = new resources.Resource({
87
+ [semantic_conventions_1.ATTR_SERVICE_NAME]: serviceName,
88
+ });
89
+ const loggerProvider = new logs.LoggerProvider({ resource });
90
+ const logRecordProcessor = new logs.BatchLogRecordProcessor(logExporter);
91
+ loggerProvider.addLogRecordProcessor(logRecordProcessor);
92
+ const sdk = new sdk_node_1.NodeSDK({
93
+ traceExporter,
94
+ metricReader: metricReader,
95
+ });
96
+ sdk.start();
97
+ let standardLogger = null;
98
+ let standardTracer = null;
99
+ const getStandardLogger = () => {
100
+ if (!standardLogger) {
101
+ const logger = loggerProvider.getLogger('sst-middleware-logger', '1.0.0');
102
+ standardLogger = new core_1.StandardLogger(logger, serviceName);
103
+ }
104
+ return standardLogger;
105
+ };
106
+ exports.getStandardLogger = getStandardLogger;
107
+ const getStandardTracer = () => {
108
+ if (!standardTracer) {
109
+ const tracer = api_1.trace.getTracer(serviceName, '1.0.0');
110
+ standardTracer = new core_1.StandardTracer(tracer, serviceName);
111
+ }
112
+ return standardTracer;
113
+ };
114
+ exports.getStandardTracer = getStandardTracer;
115
+ const forceFlush = () => __awaiter(void 0, void 0, void 0, function* () {
116
+ yield metricReader.forceFlush();
117
+ yield traceExporter.forceFlush();
118
+ yield loggerProvider.forceFlush();
119
+ });
120
+ exports.forceFlush = forceFlush;
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVsZW1ldHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RlbGVtZXRyeS9zc3QvdGVsZW1ldHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUFrRDtBQUNsRCxzRkFBNEU7QUFDNUUsMEZBQStFO0FBQy9FLG9GQUF5RTtBQUN6RSw0REFBMkU7QUFDM0UsOERBQWdEO0FBQ2hELG9FQUFzRDtBQUN0RCw4RUFBd0U7QUFDeEUsNENBQTJDO0FBQzNDLGtDQUF5RDtBQUV6RCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDO0FBQ2pELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUM7QUFFckQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUV4RSxNQUFNLE9BQU8sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLEtBQUssQ0FBQztBQUVoRSxNQUFNLGFBQWEsR0FBRyxJQUFJLDRDQUFpQixDQUFDO0lBQzFDLEdBQUcsRUFBRSxHQUFHLE9BQU8sU0FBUztJQUN4QixPQUFPLEVBQUU7UUFDUCxhQUFhLEVBQUUsU0FBUyxTQUFTLEVBQUU7UUFDbkMsY0FBYyxFQUFFLGtCQUFrQjtLQUNuQztDQUNGLENBQUMsQ0FBQztBQUVILE1BQU0sY0FBYyxHQUFHLElBQUksK0NBQWtCLENBQUM7SUFDNUMsR0FBRyxFQUFFLEdBQUcsT0FBTyxVQUFVO0lBQ3pCLE9BQU8sRUFBRTtRQUNQLGFBQWEsRUFBRSxTQUFTLFNBQVMsRUFBRTtRQUNuQyxjQUFjLEVBQUUsa0JBQWtCO0tBQ25DO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsTUFBTSxXQUFXLEdBQUcsSUFBSSx5Q0FBZSxDQUFDO0lBQ3RDLEdBQUcsRUFBRSxHQUFHLE9BQU8sT0FBTztJQUN0QixPQUFPLEVBQUU7UUFDUCxhQUFhLEVBQUUsU0FBUyxTQUFTLEVBQUU7UUFDbkMsY0FBYyxFQUFFLGtCQUFrQjtLQUNuQztDQUNGLENBQUMsQ0FBQztBQUVILE1BQU0sWUFBWSxHQUFHLElBQUksMkNBQTZCLENBQUM7SUFDckQsUUFBUSxFQUFFLGNBQWM7SUFDeEIsb0JBQW9CLEVBQUUsSUFBSTtDQUMzQixDQUFDLENBQUM7QUFHSCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksSUFBSSxhQUFhLENBQUM7QUFDOUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDO0lBQ3RDLENBQUMsd0NBQWlCLENBQUMsRUFBRSxXQUFXO0NBQ2pDLENBQUMsQ0FBQztBQUVILE1BQU0sY0FBYyxHQUFHLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7QUFDN0QsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN6RSxjQUFjLENBQUMscUJBQXFCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUV6RCxNQUFNLEdBQUcsR0FBRyxJQUFJLGtCQUFPLENBQUM7SUFDdEIsYUFBYTtJQUNiLFlBQVksRUFBRSxZQUFtQjtDQUNsQyxDQUFDLENBQUM7QUFFSCxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7QUFHWixJQUFJLGNBQWMsR0FBMEIsSUFBSSxDQUFDO0FBQ2pELElBQUksY0FBYyxHQUEwQixJQUFJLENBQUM7QUFFMUMsTUFBTSxpQkFBaUIsR0FBRyxHQUFtQixFQUFFO0lBQ3BELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNwQixNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDLHVCQUF1QixFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzFFLGNBQWMsR0FBRyxJQUFJLHFCQUFjLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFDRCxPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDLENBQUM7QUFOVyxRQUFBLGlCQUFpQixxQkFNNUI7QUFFSyxNQUFNLGlCQUFpQixHQUFHLEdBQW1CLEVBQUU7SUFDcEQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3BCLE1BQU0sTUFBTSxHQUFHLFdBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELGNBQWMsR0FBRyxJQUFJLHFCQUFjLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFDRCxPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDLENBQUM7QUFOVyxRQUFBLGlCQUFpQixxQkFNNUI7QUFFSyxNQUFNLFVBQVUsR0FBRyxHQUFTLEVBQUU7SUFDbkMsTUFBTSxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDaEMsTUFBTSxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDakMsTUFBTSxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDcEMsQ0FBQyxDQUFBLENBQUM7QUFKVyxRQUFBLFVBQVUsY0FJckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOb2RlU0RLIH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvc2RrLW5vZGUnO1xyXG5pbXBvcnQgeyBPVExQVHJhY2VFeHBvcnRlciB9IGZyb20gJ0BvcGVudGVsZW1ldHJ5L2V4cG9ydGVyLXRyYWNlLW90bHAtaHR0cCc7XHJcbmltcG9ydCB7IE9UTFBNZXRyaWNFeHBvcnRlciB9IGZyb20gJ0BvcGVudGVsZW1ldHJ5L2V4cG9ydGVyLW1ldHJpY3Mtb3RscC1odHRwJztcclxuaW1wb3J0IHsgT1RMUExvZ0V4cG9ydGVyIH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvZXhwb3J0ZXItbG9ncy1vdGxwLWh0dHAnO1xyXG5pbXBvcnQgeyBQZXJpb2RpY0V4cG9ydGluZ01ldHJpY1JlYWRlciB9IGZyb20gJ0BvcGVudGVsZW1ldHJ5L3Nkay1tZXRyaWNzJztcclxuaW1wb3J0ICogYXMgbG9ncyBmcm9tICdAb3BlbnRlbGVtZXRyeS9zZGstbG9ncyc7XHJcbmltcG9ydCAqIGFzIHJlc291cmNlcyBmcm9tICdAb3BlbnRlbGVtZXRyeS9yZXNvdXJjZXMnO1xyXG5pbXBvcnQgeyBBVFRSX1NFUlZJQ0VfTkFNRSB9IGZyb20gJ0BvcGVudGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zJztcclxuaW1wb3J0IHsgdHJhY2UgfSBmcm9tICdAb3BlbnRlbGVtZXRyeS9hcGknO1xyXG5pbXBvcnQgeyBTdGFuZGFyZExvZ2dlciwgU3RhbmRhcmRUcmFjZXIgfSBmcm9tICcuLi9jb3JlJztcclxuXHJcbmNvbnN0IHVzZXIgPSBwcm9jZXNzLmVudi5PVEVMX0VYUE9SVEVSX09UTFBfVVNFUjtcclxuY29uc3QgcGFzc3dvcmQgPSBwcm9jZXNzLmVudi5PVEVMX0VYUE9SVEVSX09UTFBfUEFTUztcclxuXHJcbmNvbnN0IGJhc2ljQXV0aCA9IEJ1ZmZlci5mcm9tKGAke3VzZXJ9OiR7cGFzc3dvcmR9YCkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xyXG5cclxuY29uc3QgYmFzZVVybCA9IGAke3Byb2Nlc3MuZW52Lk9URUxfRVhQT1JURVJfT1RMUF9FTkRQT0lOVH0vdjFgO1xyXG5cclxuY29uc3QgdHJhY2VFeHBvcnRlciA9IG5ldyBPVExQVHJhY2VFeHBvcnRlcih7XHJcbiAgdXJsOiBgJHtiYXNlVXJsfS90cmFjZXNgLFxyXG4gIGhlYWRlcnM6IHtcclxuICAgIEF1dGhvcml6YXRpb246IGBCYXNpYyAke2Jhc2ljQXV0aH1gLFxyXG4gICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICB9LFxyXG59KTtcclxuXHJcbmNvbnN0IG1ldHJpY0V4cG9ydGVyID0gbmV3IE9UTFBNZXRyaWNFeHBvcnRlcih7XHJcbiAgdXJsOiBgJHtiYXNlVXJsfS9tZXRyaWNzYCxcclxuICBoZWFkZXJzOiB7XHJcbiAgICBBdXRob3JpemF0aW9uOiBgQmFzaWMgJHtiYXNpY0F1dGh9YCxcclxuICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgfSxcclxufSk7XHJcblxyXG5jb25zdCBsb2dFeHBvcnRlciA9IG5ldyBPVExQTG9nRXhwb3J0ZXIoe1xyXG4gIHVybDogYCR7YmFzZVVybH0vbG9nc2AsXHJcbiAgaGVhZGVyczoge1xyXG4gICAgQXV0aG9yaXphdGlvbjogYEJhc2ljICR7YmFzaWNBdXRofWAsXHJcbiAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gIH0sXHJcbn0pO1xyXG5cclxuY29uc3QgbWV0cmljUmVhZGVyID0gbmV3IFBlcmlvZGljRXhwb3J0aW5nTWV0cmljUmVhZGVyKHtcclxuICBleHBvcnRlcjogbWV0cmljRXhwb3J0ZXIsXHJcbiAgZXhwb3J0SW50ZXJ2YWxNaWxsaXM6IDEwMDAsXHJcbn0pO1xyXG5cclxuLy8gQ29uZmlndXJhciBMb2dnZXJQcm92aWRlclxyXG5jb25zdCBzZXJ2aWNlTmFtZSA9IHByb2Nlc3MuZW52LlNFUlZJQ0VfTkFNRSB8fCAnc3N0LXNlcnZpY2UnO1xyXG5jb25zdCByZXNvdXJjZSA9IG5ldyByZXNvdXJjZXMuUmVzb3VyY2Uoe1xyXG4gIFtBVFRSX1NFUlZJQ0VfTkFNRV06IHNlcnZpY2VOYW1lLFxyXG59KTtcclxuXHJcbmNvbnN0IGxvZ2dlclByb3ZpZGVyID0gbmV3IGxvZ3MuTG9nZ2VyUHJvdmlkZXIoeyByZXNvdXJjZSB9KTtcclxuY29uc3QgbG9nUmVjb3JkUHJvY2Vzc29yID0gbmV3IGxvZ3MuQmF0Y2hMb2dSZWNvcmRQcm9jZXNzb3IobG9nRXhwb3J0ZXIpO1xyXG5sb2dnZXJQcm92aWRlci5hZGRMb2dSZWNvcmRQcm9jZXNzb3IobG9nUmVjb3JkUHJvY2Vzc29yKTtcclxuXHJcbmNvbnN0IHNkayA9IG5ldyBOb2RlU0RLKHtcclxuICB0cmFjZUV4cG9ydGVyLFxyXG4gIG1ldHJpY1JlYWRlcjogbWV0cmljUmVhZGVyIGFzIGFueSwgLy8gVHlwZSBjb21wYXRpYmlsaXR5IHdvcmthcm91bmRcclxufSk7XHJcblxyXG5zZGsuc3RhcnQoKTtcclxuXHJcbi8vIENyaWFyIFN0YW5kYXJkTG9nZ2VyIHBhcmEgc2VyIHVzYWRvIG5vcyBtaWRkbGV3YXJlc1xyXG5sZXQgc3RhbmRhcmRMb2dnZXI6IFN0YW5kYXJkTG9nZ2VyIHwgbnVsbCA9IG51bGw7XHJcbmxldCBzdGFuZGFyZFRyYWNlcjogU3RhbmRhcmRUcmFjZXIgfCBudWxsID0gbnVsbDtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRTdGFuZGFyZExvZ2dlciA9ICgpOiBTdGFuZGFyZExvZ2dlciA9PiB7XHJcbiAgaWYgKCFzdGFuZGFyZExvZ2dlcikge1xyXG4gICAgY29uc3QgbG9nZ2VyID0gbG9nZ2VyUHJvdmlkZXIuZ2V0TG9nZ2VyKCdzc3QtbWlkZGxld2FyZS1sb2dnZXInLCAnMS4wLjAnKTtcclxuICAgIHN0YW5kYXJkTG9nZ2VyID0gbmV3IFN0YW5kYXJkTG9nZ2VyKGxvZ2dlciwgc2VydmljZU5hbWUpO1xyXG4gIH1cclxuICByZXR1cm4gc3RhbmRhcmRMb2dnZXI7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0U3RhbmRhcmRUcmFjZXIgPSAoKTogU3RhbmRhcmRUcmFjZXIgPT4ge1xyXG4gIGlmICghc3RhbmRhcmRUcmFjZXIpIHtcclxuICAgIGNvbnN0IHRyYWNlciA9IHRyYWNlLmdldFRyYWNlcihzZXJ2aWNlTmFtZSwgJzEuMC4wJyk7XHJcbiAgICBzdGFuZGFyZFRyYWNlciA9IG5ldyBTdGFuZGFyZFRyYWNlcih0cmFjZXIsIHNlcnZpY2VOYW1lKTtcclxuICB9XHJcbiAgcmV0dXJuIHN0YW5kYXJkVHJhY2VyO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGZvcmNlRmx1c2ggPSBhc3luYyAoKSA9PiB7XHJcbiAgYXdhaXQgbWV0cmljUmVhZGVyLmZvcmNlRmx1c2goKTtcclxuICBhd2FpdCB0cmFjZUV4cG9ydGVyLmZvcmNlRmx1c2goKTtcclxuICBhd2FpdCBsb2dnZXJQcm92aWRlci5mb3JjZUZsdXNoKCk7XHJcbn07XHJcbiJdfQ==
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,146 @@
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
+ const vitest_1 = require("vitest");
13
+ const config_1 = require("../config");
14
+ (0, vitest_1.describe)('TsedTelemetryProvider', () => {
15
+ let provider;
16
+ (0, vitest_1.beforeEach)(() => {
17
+ process.env.OTEL_EXPORTER_OTLP_ENDPOINT = 'https://test.com';
18
+ process.env.OTEL_EXPORTER_OTLP_USER = 'test-user';
19
+ process.env.OTEL_EXPORTER_OTLP_PASS = 'test-pass';
20
+ process.env.SERVICE_NAME = 'test-service';
21
+ process.env.STAGE = 'test';
22
+ provider = new config_1.TsedTelemetryProvider();
23
+ });
24
+ (0, vitest_1.describe)('initialize', () => {
25
+ (0, vitest_1.it)('deve inicializar com configuração válida', () => {
26
+ provider.initialize({
27
+ endpoint: 'https://test.com',
28
+ username: 'user',
29
+ password: 'pass',
30
+ serviceName: 'test-service',
31
+ serviceVersion: '1.0.0',
32
+ enabled: true,
33
+ });
34
+ (0, vitest_1.expect)(provider.isInitialized()).toBe(true);
35
+ });
36
+ (0, vitest_1.it)('não deve inicializar se já estiver inicializado', () => {
37
+ provider.initialize({
38
+ endpoint: 'https://test.com',
39
+ username: 'user',
40
+ password: 'pass',
41
+ serviceName: 'test-service',
42
+ });
43
+ const firstInit = provider.isInitialized();
44
+ provider.initialize({
45
+ endpoint: 'https://other.com',
46
+ username: 'other',
47
+ password: 'other',
48
+ serviceName: 'other-service',
49
+ });
50
+ (0, vitest_1.expect)(provider.isInitialized()).toBe(firstInit);
51
+ });
52
+ (0, vitest_1.it)('não deve inicializar se enabled=false', () => {
53
+ delete process.env.OTEL_EXPORTER_OTLP_ENDPOINT;
54
+ const newProvider = new config_1.TsedTelemetryProvider();
55
+ newProvider.initialize({
56
+ endpoint: 'https://test.com',
57
+ username: 'user',
58
+ password: 'pass',
59
+ enabled: false,
60
+ });
61
+ (0, vitest_1.expect)(newProvider.isInitialized()).toBe(false);
62
+ });
63
+ });
64
+ (0, vitest_1.describe)('getLoggerProvider', () => {
65
+ (0, vitest_1.it)('deve retornar LoggerProvider após inicialização', () => {
66
+ provider.initialize({
67
+ endpoint: 'https://test.com',
68
+ username: 'user',
69
+ password: 'pass',
70
+ serviceName: 'test-service',
71
+ });
72
+ const loggerProvider = provider.getLoggerProvider();
73
+ (0, vitest_1.expect)(loggerProvider).toBeDefined();
74
+ });
75
+ (0, vitest_1.it)('deve retornar null se não inicializado', () => {
76
+ const newProvider = new config_1.TsedTelemetryProvider();
77
+ delete process.env.OTEL_EXPORTER_OTLP_ENDPOINT;
78
+ const emptyProvider = new config_1.TsedTelemetryProvider();
79
+ (0, vitest_1.expect)(emptyProvider.getLoggerProvider()).toBeNull();
80
+ });
81
+ });
82
+ (0, vitest_1.describe)('getTracerProvider', () => {
83
+ (0, vitest_1.it)('deve retornar TracerProvider após inicialização', () => {
84
+ provider.initialize({
85
+ endpoint: 'https://test.com',
86
+ username: 'user',
87
+ password: 'pass',
88
+ serviceName: 'test-service',
89
+ });
90
+ const tracerProvider = provider.getTracerProvider();
91
+ (0, vitest_1.expect)(tracerProvider).toBeDefined();
92
+ });
93
+ });
94
+ (0, vitest_1.describe)('getMeterProvider', () => {
95
+ (0, vitest_1.it)('deve retornar MeterProvider após inicialização', () => {
96
+ provider.initialize({
97
+ endpoint: 'https://test.com',
98
+ username: 'user',
99
+ password: 'pass',
100
+ serviceName: 'test-service',
101
+ });
102
+ const meterProvider = provider.getMeterProvider();
103
+ (0, vitest_1.expect)(meterProvider).toBeDefined();
104
+ });
105
+ });
106
+ (0, vitest_1.describe)('forceFlush', () => {
107
+ (0, vitest_1.it)('deve executar forceFlush sem erros', () => __awaiter(void 0, void 0, void 0, function* () {
108
+ provider.initialize({
109
+ endpoint: 'https://test.com',
110
+ username: 'user',
111
+ password: 'pass',
112
+ serviceName: 'test-service',
113
+ });
114
+ yield (0, vitest_1.expect)(provider.forceFlush()).resolves.not.toThrow();
115
+ }));
116
+ });
117
+ (0, vitest_1.describe)('shutdown', () => {
118
+ (0, vitest_1.it)('deve fazer shutdown e marcar como não inicializado', () => __awaiter(void 0, void 0, void 0, function* () {
119
+ provider.initialize({
120
+ endpoint: 'https://test.com',
121
+ username: 'user',
122
+ password: 'pass',
123
+ serviceName: 'test-service',
124
+ });
125
+ (0, vitest_1.expect)(provider.isInitialized()).toBe(true);
126
+ yield provider.shutdown();
127
+ (0, vitest_1.expect)(provider.isInitialized()).toBe(false);
128
+ }));
129
+ });
130
+ (0, vitest_1.describe)('integração completa', () => {
131
+ (0, vitest_1.it)('deve criar provider completo com logs, traces e métricas', () => {
132
+ provider.initialize({
133
+ endpoint: 'https://test.com',
134
+ username: 'user',
135
+ password: 'pass',
136
+ serviceName: 'test-service',
137
+ serviceVersion: '2.0.0',
138
+ });
139
+ (0, vitest_1.expect)(provider.isInitialized()).toBe(true);
140
+ (0, vitest_1.expect)(provider.getLoggerProvider()).toBeDefined();
141
+ (0, vitest_1.expect)(provider.getTracerProvider()).toBeDefined();
142
+ (0, vitest_1.expect)(provider.getMeterProvider()).toBeDefined();
143
+ });
144
+ });
145
+ });
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdGVsZW1ldHJ5L3RzZWQvX190ZXN0c19fL2NvbmZpZy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsbUNBQThEO0FBQzlELHNDQUFrRDtBQUVsRCxJQUFBLGlCQUFRLEVBQUMsdUJBQXVCLEVBQUUsR0FBRyxFQUFFO0lBQ3JDLElBQUksUUFBK0IsQ0FBQztJQUVwQyxJQUFBLG1CQUFVLEVBQUMsR0FBRyxFQUFFO1FBRWQsT0FBTyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsR0FBRyxrQkFBa0IsQ0FBQztRQUM3RCxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixHQUFHLFdBQVcsQ0FBQztRQUNsRCxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixHQUFHLFdBQVcsQ0FBQztRQUNsRCxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksR0FBRyxjQUFjLENBQUM7UUFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO1FBRTNCLFFBQVEsR0FBRyxJQUFJLDhCQUFxQixFQUFFLENBQUM7SUFDekMsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFBLGlCQUFRLEVBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTtRQUMxQixJQUFBLFdBQUUsRUFBQywwQ0FBMEMsRUFBRSxHQUFHLEVBQUU7WUFDbEQsUUFBUSxDQUFDLFVBQVUsQ0FBQztnQkFDbEIsUUFBUSxFQUFFLGtCQUFrQjtnQkFDNUIsUUFBUSxFQUFFLE1BQU07Z0JBQ2hCLFFBQVEsRUFBRSxNQUFNO2dCQUNoQixXQUFXLEVBQUUsY0FBYztnQkFDM0IsY0FBYyxFQUFFLE9BQU87Z0JBQ3ZCLE9BQU8sRUFBRSxJQUFJO2FBQ2QsQ0FBQyxDQUFDO1lBRUgsSUFBQSxlQUFNLEVBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUks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YmUsIGl0LCBleHBlY3QsIHZpLCBiZWZvcmVFYWNoIH0gZnJvbSAndml0ZXN0JztcclxuaW1wb3J0IHsgVHNlZFRlbGVtZXRyeVByb3ZpZGVyIH0gZnJvbSAnLi4vY29uZmlnJztcclxuXHJcbmRlc2NyaWJlKCdUc2VkVGVsZW1ldHJ5UHJvdmlkZXInLCAoKSA9PiB7XHJcbiAgbGV0IHByb3ZpZGVyOiBUc2VkVGVsZW1ldHJ5UHJvdmlkZXI7XHJcblxyXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xyXG4gICAgLy8gTW9jayBkYXMgdmFyacOhdmVpcyBkZSBhbWJpZW50ZVxyXG4gICAgcHJvY2Vzcy5lbnYuT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UID0gJ2h0dHBzOi8vdGVzdC5jb20nO1xyXG4gICAgcHJvY2Vzcy5lbnYuT1RFTF9FWFBPUlRFUl9PVExQX1VTRVIgPSAndGVzdC11c2VyJztcclxuICAgIHByb2Nlc3MuZW52Lk9URUxfRVhQT1JURVJfT1RMUF9QQVNTID0gJ3Rlc3QtcGFzcyc7XHJcbiAgICBwcm9jZXNzLmVudi5TRVJWSUNFX05BTUUgPSAndGVzdC1zZXJ2aWNlJztcclxuICAgIHByb2Nlc3MuZW52LlNUQUdFID0gJ3Rlc3QnO1xyXG5cclxuICAgIHByb3ZpZGVyID0gbmV3IFRzZWRUZWxlbWV0cnlQcm92aWRlcigpO1xyXG4gIH0pO1xyXG5cclxuICBkZXNjcmliZSgnaW5pdGlhbGl6ZScsICgpID0+IHtcclxuICAgIGl0KCdkZXZlIGluaWNpYWxpemFyIGNvbSBjb25maWd1cmHDp8OjbyB2w6FsaWRhJywgKCkgPT4ge1xyXG4gICAgICBwcm92aWRlci5pbml0aWFsaXplKHtcclxuICAgICAgICBlbmRwb2ludDogJ2h0dHBzOi8vdGVzdC5jb20nLFxyXG4gICAgICAgIHVzZXJuYW1lOiAndXNlcicsXHJcbiAgICAgICAgcGFzc3dvcmQ6ICdwYXNzJyxcclxuICAgICAgICBzZXJ2aWNlTmFtZTogJ3Rlc3Qtc2VydmljZScsXHJcbiAgICAgICAgc2VydmljZVZlcnNpb246ICcxLjAuMCcsXHJcbiAgICAgICAgZW5hYmxlZDogdHJ1ZSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBleHBlY3QocHJvdmlkZXIuaXNJbml0aWFsaXplZCgpKS50b0JlKHRydWUpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaXQoJ27Do28gZGV2ZSBpbmljaWFsaXphciBzZSBqw6EgZXN0aXZlciBpbmljaWFsaXphZG8nLCAoKSA9PiB7XHJcbiAgICAgIHByb3ZpZGVyLmluaXRpYWxpemUoe1xyXG4gICAgICAgIGVuZHBvaW50OiAnaHR0cHM6Ly90ZXN0LmNvbScsXHJcbiAgICAgICAgdXNlcm5hbWU6ICd1c2VyJyxcclxuICAgICAgICBwYXNzd29yZDogJ3Bhc3MnLFxyXG4gICAgICAgIHNlcnZpY2VOYW1lOiAndGVzdC1zZXJ2aWNlJyxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBjb25zdCBmaXJzdEluaXQgPSBwcm92aWRlci5pc0luaXRpYWxpemVkKCk7XHJcblxyXG4gICAgICBwcm92aWRlci5pbml0aWFsaXplKHtcclxuICAgICAgICBlbmRwb2ludDogJ2h0dHBzOi8vb3RoZXIuY29tJyxcclxuICAgICAgICB1c2VybmFtZTogJ290aGVyJyxcclxuICAgICAgICBwYXNzd29yZDogJ290aGVyJyxcclxuICAgICAgICBzZXJ2aWNlTmFtZTogJ290aGVyLXNlcnZpY2UnLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGV4cGVjdChwcm92aWRlci5pc0luaXRpYWxpemVkKCkpLnRvQmUoZmlyc3RJbml0KTtcclxuICAgIH0pO1xyXG5cclxuICAgIGl0KCduw6NvIGRldmUgaW5pY2lhbGl6YXIgc2UgZW5hYmxlZD1mYWxzZScsICgpID0+IHtcclxuICAgICAgLy8gQ3JpYXIgcHJvdmlkZXIgc2VtIGVudiB2YXJzIHBhcmEgbsOjbyBhdXRvLWluaWNpYWxpemFyXHJcbiAgICAgIGRlbGV0ZSBwcm9jZXNzLmVudi5PVEVMX0VYUE9SVEVSX09UTFBfRU5EUE9JTlQ7XHJcbiAgICAgIGNvbnN0IG5ld1Byb3ZpZGVyID0gbmV3IFRzZWRUZWxlbWV0cnlQcm92aWRlcigpO1xyXG5cclxuICAgICAgbmV3UHJvdmlkZXIuaW5pdGlhbGl6ZSh7XHJcbiAgICAgICAgZW5kcG9pbnQ6ICdodHRwczovL3Rlc3QuY29tJyxcclxuICAgICAgICB1c2VybmFtZTogJ3VzZXInLFxyXG4gICAgICAgIHBhc3N3b3JkOiAncGFzcycsXHJcbiAgICAgICAgZW5hYmxlZDogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgZXhwZWN0KG5ld1Byb3ZpZGVyLmlzSW5pdGlhbGl6ZWQoKSkudG9CZShmYWxzZSk7XHJcbiAgICB9KTtcclxuICB9KTtcclxuXHJcbiAgZGVzY3JpYmUoJ2dldExvZ2dlclByb3ZpZGVyJywgKCkgPT4ge1xyXG4gICAgaXQoJ2RldmUgcmV0b3JuYXIgTG9nZ2VyUHJvdmlkZXIgYXDDs3MgaW5pY2lhbGl6YcOnw6NvJywgKCkgPT4ge1xyXG4gICAgICBwcm92aWRlci5pbml0aWFsaXplKHtcclxuICAgICAgICBlbmRwb2ludDogJ2h0dHBzOi8vdGVzdC5jb20nLFxyXG4gICAgICAgIHVzZXJuYW1lOiAndXNlcicsXHJcbiAgICAgICAgcGFzc3dvcmQ6ICdwYXNzJyxcclxuICAgICAgICBzZXJ2aWNlTmFtZTogJ3Rlc3Qtc2VydmljZScsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgY29uc3QgbG9nZ2VyUHJvdmlkZXIgPSBwcm92aWRlci5nZXRMb2dnZXJQcm92aWRlcigpO1xyXG4gICAgICBleHBlY3QobG9nZ2VyUHJvdmlkZXIpLnRvQmVEZWZpbmVkKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpdCgnZGV2ZSByZXRvcm5hciBudWxsIHNlIG7Do28gaW5pY2lhbGl6YWRvJywgKCkgPT4ge1xyXG4gICAgICBjb25zdCBuZXdQcm92aWRlciA9IG5ldyBUc2VkVGVsZW1ldHJ5UHJvdmlkZXIoKTtcclxuICAgICAgLy8gTGltcGFyIGVudiB2YXJzIHBhcmEgbsOjbyBhdXRvLWluaWNpYWxpemFyXHJcbiAgICAgIGRlbGV0ZSBwcm9jZXNzLmVudi5PVEVMX0VYUE9SVEVSX09UTFBfRU5EUE9JTlQ7XHJcblxyXG4gICAgICBjb25zdCBlbXB0eVByb3ZpZGVyID0gbmV3IFRzZWRUZWxlbWV0cnlQcm92aWRlcigpO1xyXG4gICAgICBleHBlY3QoZW1wdHlQcm92aWRlci5nZXRMb2dnZXJQcm92aWRlcigpKS50b0JlTnVsbCgpO1xyXG4gICAgfSk7XHJcbiAgfSk7XHJcblxyXG4gIGRlc2NyaWJlKCdnZXRUcmFjZXJQcm92aWRlcicsICgpID0+IHtcclxuICAgIGl0KCdkZXZlIHJldG9ybmFyIFRyYWNlclByb3ZpZGVyIGFww7NzIGluaWNpYWxpemHDp8OjbycsICgpID0+IHtcclxuICAgICAgcHJvdmlkZXIuaW5pdGlhbGl6ZSh7XHJcbiAgICAgICAgZW5kcG9pbnQ6ICdodHRwczovL3Rlc3QuY29tJyxcclxuICAgICAgICB1c2VybmFtZTogJ3VzZXInLFxyXG4gICAgICAgIHBhc3N3b3JkOiAncGFzcycsXHJcbiAgICAgICAgc2VydmljZU5hbWU6ICd0ZXN0LXNlcnZpY2UnLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGNvbnN0IHRyYWNlclByb3ZpZGVyID0gcHJvdmlkZXIuZ2V0VHJhY2VyUHJvdmlkZXIoKTtcclxuICAgICAgZXhwZWN0KHRyYWNlclByb3ZpZGVyKS50b0JlRGVmaW5lZCgpO1xyXG4gICAgfSk7XHJcbiAgfSk7XHJcblxyXG4gIGRlc2NyaWJlKCdnZXRNZXRlclByb3ZpZGVyJywgKCkgPT4ge1xyXG4gICAgaXQoJ2RldmUgcmV0b3JuYXIgTWV0ZXJQcm92aWRlciBhcMOzcyBpbmljaWFsaXphw6fDo28nLCAoKSA9PiB7XHJcbiAgICAgIHByb3ZpZGVyLmluaXRpYWxpemUoe1xyXG4gICAgICAgIGVuZHBvaW50OiAnaHR0cHM6Ly90ZXN0LmNvbScsXHJcbiAgICAgICAgdXNlcm5hbWU6ICd1c2VyJyxcclxuICAgICAgICBwYXNzd29yZDogJ3Bhc3MnLFxyXG4gICAgICAgIHNlcnZpY2VOYW1lOiAndGVzdC1zZXJ2aWNlJyxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBjb25zdCBtZXRlclByb3ZpZGVyID0gcHJvdmlkZXIuZ2V0TWV0ZXJQcm92aWRlcigpO1xyXG4gICAgICBleHBlY3QobWV0ZXJQcm92aWRlcikudG9CZURlZmluZWQoKTtcclxuICAgIH0pO1xyXG4gIH0pO1xyXG5cclxuICBkZXNjcmliZSgnZm9yY2VGbHVzaCcsICgpID0+IHtcclxuICAgIGl0KCdkZXZlIGV4ZWN1dGFyIGZvcmNlRmx1c2ggc2VtIGVycm9zJywgYXN5bmMgKCkgPT4ge1xyXG4gICAgICBwcm92aWRlci5pbml0aWFsaXplKHtcclxuICAgICAgICBlbmRwb2ludDogJ2h0dHBzOi8vdGVzdC5jb20nLFxyXG4gICAgICAgIHVzZXJuYW1lOiAndXNlcicsXHJcbiAgICAgICAgcGFzc3dvcmQ6ICdwYXNzJyxcclxuICAgICAgICBzZXJ2aWNlTmFtZTogJ3Rlc3Qtc2VydmljZScsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgYXdhaXQgZXhwZWN0KHByb3ZpZGVyLmZvcmNlRmx1c2goKSkucmVzb2x2ZXMubm90LnRvVGhyb3coKTtcclxuICAgIH0pO1xyXG4gIH0pO1xyXG5cclxuICBkZXNjcmliZSgnc2h1dGRvd24nLCAoKSA9PiB7XHJcbiAgICBpdCgnZGV2ZSBmYXplciBzaHV0ZG93biBlIG1hcmNhciBjb21vIG7Do28gaW5pY2lhbGl6YWRvJywgYXN5bmMgKCkgPT4ge1xyXG4gICAgICBwcm92aWRlci5pbml0aWFsaXplKHtcclxuICAgICAgICBlbmRwb2ludDogJ2h0dHBzOi8vdGVzdC5jb20nLFxyXG4gICAgICAgIHVzZXJuYW1lOiAndXNlcicsXHJcbiAgICAgICAgcGFzc3dvcmQ6ICdwYXNzJyxcclxuICAgICAgICBzZXJ2aWNlTmFtZTogJ3Rlc3Qtc2VydmljZScsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgZXhwZWN0KHByb3ZpZGVyLmlzSW5pdGlhbGl6ZWQoKSkudG9CZSh0cnVlKTtcclxuXHJcbiAgICAgIGF3YWl0IHByb3ZpZGVyLnNodXRkb3duKCk7XHJcblxyXG4gICAgICBleHBlY3QocHJvdmlkZXIuaXNJbml0aWFsaXplZCgpKS50b0JlKGZhbHNlKTtcclxuICAgIH0pO1xyXG4gIH0pO1xyXG5cclxuICBkZXNjcmliZSgnaW50ZWdyYcOnw6NvIGNvbXBsZXRhJywgKCkgPT4ge1xyXG4gICAgaXQoJ2RldmUgY3JpYXIgcHJvdmlkZXIgY29tcGxldG8gY29tIGxvZ3MsIHRyYWNlcyBlIG3DqXRyaWNhcycsICgpID0+IHtcclxuICAgICAgcHJvdmlkZXIuaW5pdGlhbGl6ZSh7XHJcbiAgICAgICAgZW5kcG9pbnQ6ICdodHRwczovL3Rlc3QuY29tJyxcclxuICAgICAgICB1c2VybmFtZTogJ3VzZXInLFxyXG4gICAgICAgIHBhc3N3b3JkOiAncGFzcycsXHJcbiAgICAgICAgc2VydmljZU5hbWU6ICd0ZXN0LXNlcnZpY2UnLFxyXG4gICAgICAgIHNlcnZpY2VWZXJzaW9uOiAnMi4wLjAnLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGV4cGVjdChwcm92aWRlci5pc0luaXRpYWxpemVkKCkpLnRvQmUodHJ1ZSk7XHJcbiAgICAgIGV4cGVjdChwcm92aWRlci5nZXRMb2dnZXJQcm92aWRlcigpKS50b0JlRGVmaW5lZCgpO1xyXG4gICAgICBleHBlY3QocHJvdmlkZXIuZ2V0VHJhY2VyUHJvdmlkZXIoKSkudG9CZURlZmluZWQoKTtcclxuICAgICAgZXhwZWN0KHByb3ZpZGVyLmdldE1ldGVyUHJvdmlkZXIoKSkudG9CZURlZmluZWQoKTtcclxuICAgIH0pO1xyXG4gIH0pO1xyXG59KTtcclxuIl19
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,63 @@
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
+ const vitest_1 = require("vitest");
13
+ const config_1 = require("../config");
14
+ (0, vitest_1.describe)('TsedTelemetryService', () => {
15
+ let mockProvider;
16
+ (0, vitest_1.beforeEach)(() => {
17
+ mockProvider = {
18
+ isInitialized: vitest_1.vi.fn().mockReturnValue(true),
19
+ getLoggerProvider: vitest_1.vi.fn().mockReturnValue({
20
+ getLogger: vitest_1.vi.fn().mockReturnValue({
21
+ emit: vitest_1.vi.fn(),
22
+ }),
23
+ }),
24
+ getTracerProvider: vitest_1.vi.fn().mockReturnValue({}),
25
+ forceFlush: vitest_1.vi.fn().mockResolvedValue(undefined),
26
+ };
27
+ process.env.SERVICE_NAME = 'test-service';
28
+ process.env.STAGE = 'test';
29
+ });
30
+ (0, vitest_1.describe)('TsedTelemetryProvider integration', () => {
31
+ (0, vitest_1.it)('deve criar provider com logs, traces e métricas', () => {
32
+ const provider = new config_1.TsedTelemetryProvider();
33
+ provider.initialize({
34
+ endpoint: 'https://test.com',
35
+ username: 'user',
36
+ password: 'pass',
37
+ serviceName: 'test-service',
38
+ });
39
+ (0, vitest_1.expect)(provider.isInitialized()).toBe(true);
40
+ (0, vitest_1.expect)(provider.getLoggerProvider()).toBeDefined();
41
+ (0, vitest_1.expect)(provider.getTracerProvider()).toBeDefined();
42
+ (0, vitest_1.expect)(provider.getMeterProvider()).toBeDefined();
43
+ });
44
+ (0, vitest_1.it)('deve retornar null quando não inicializado', () => {
45
+ delete process.env.OTEL_EXPORTER_OTLP_ENDPOINT;
46
+ const provider = new config_1.TsedTelemetryProvider();
47
+ (0, vitest_1.expect)(provider.getLoggerProvider()).toBeNull();
48
+ (0, vitest_1.expect)(provider.getTracerProvider()).toBeNull();
49
+ (0, vitest_1.expect)(provider.getMeterProvider()).toBeNull();
50
+ });
51
+ (0, vitest_1.it)('deve fazer forceFlush de todos os providers', () => __awaiter(void 0, void 0, void 0, function* () {
52
+ const provider = new config_1.TsedTelemetryProvider();
53
+ provider.initialize({
54
+ endpoint: 'https://test.com',
55
+ username: 'user',
56
+ password: 'pass',
57
+ serviceName: 'test-service',
58
+ });
59
+ yield (0, vitest_1.expect)(provider.forceFlush()).resolves.not.toThrow();
60
+ }));
61
+ });
62
+ });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RlbGVtZXRyeS90c2VkL19fdGVzdHNfXy9zZXJ2aWNlLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBOEQ7QUFDOUQsc0NBQWtEO0FBRWxELElBQUEsaUJBQVEsRUFBQyxzQkFBc0IsRUFBRSxHQUFHLEVBQUU7SUFDcEMsSUFBSSxZQUFpQixDQUFDO0lBRXRCLElBQUEsbUJBQVUsRUFBQyxHQUFHLEVBQUU7UUFFZCxZQUFZLEdBQUc7WUFDYixhQUFhLEVBQUUsV0FBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7WUFDNUMsaUJBQWlCLEVBQUUsV0FBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQztnQkFDekMsU0FBUyxFQUFFLFdBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUM7b0JBQ2pDLElBQUksRUFBRSxXQUFFLENBQUMsRUFBRSxFQUFFO2lCQUNkLENBQUM7YUFDSCxDQUFDO1lBQ0YsaUJBQWlCLEVBQUUsV0FBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7WUFDOUMsVUFBVSxFQUFFLFdBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUM7U0FDakQsQ0FBQztRQUdGLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxHQUFHLGNBQWMsQ0FBQztRQUMxQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7SUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFBLGlCQUFRLEVBQUMsbUNBQW1DLEVBQUUsR0FBRyxFQUFFO1FBQ2pELElBQUEsV0FBRSxFQUFDLGlEQUFpRCxFQUFFLEdBQUcsRUFBRTtZQUN6RCxNQUFNLFFBQVEsR0FBRyxJQUFJLDhCQUFxQixFQUFFLENBQUM7WUFFN0MsUUFBUSxDQUFDLFVBQVUsQ0FBQztnQkFDbEIsUUFBUSxFQUFFLGtCQUFrQjtnQkFDNUIsUUFBUSxFQUFFLE1BQU07Z0JBQ2hCLFFBQVEsRUFBRSxNQUFNO2dCQUNoQixXQUFXLEVBQUUsY0FBYzthQUM1QixDQUFDLENBQUM7WUFFSCxJQUFBLGVBQU0sRUFBQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUMsSUFBQSxlQUFNLEVBQUMsUUFBUSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuRCxJQUFBLGVBQU0sRUFBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25ELElBQUEsZUFBTSxFQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFBLFdBQUUsRUFBQyw0Q0FBNEMsRUFBRSxHQUFHLEVBQUU7WUFDcEQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDO1lBQy9DLE1BQU0sUUFBUSxHQUFHLElBQUksOEJBQXFCLEVBQUUsQ0FBQztZQUU3QyxJQUFBLGVBQU0sRUFBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hELElBQUEsZUFBTSxFQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEQsSUFBQSxlQUFNLEVBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUEsV0FBRSxFQUFDLDZDQUE2QyxFQUFFLEdBQVMsRUFBRTtZQUMzRCxNQUFNLFFBQVEsR0FBRyxJQUFJLDhCQUFxQixFQUFFLENBQUM7WUFFN0MsUUFBUSxDQUFDLFVBQVUsQ0FBQztnQkFDbEIsUUFBUSxFQUFFLGtCQUFrQjtnQkFDNUIsUUFBUSxFQUFFLE1BQU07Z0JBQ2hCLFFBQVEsRUFBRSxNQUFNO2dCQUNoQixXQUFXLEVBQUUsY0FBYzthQUM1QixDQUFDLENBQUM7WUFFSCxNQUFNLElBQUEsZUFBTSxFQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDN0QsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXNjcmliZSwgaXQsIGV4cGVjdCwgdmksIGJlZm9yZUVhY2ggfSBmcm9tICd2aXRlc3QnO1xyXG5pbXBvcnQgeyBUc2VkVGVsZW1ldHJ5UHJvdmlkZXIgfSBmcm9tICcuLi9jb25maWcnO1xyXG5cclxuZGVzY3JpYmUoJ1RzZWRUZWxlbWV0cnlTZXJ2aWNlJywgKCkgPT4ge1xyXG4gIGxldCBtb2NrUHJvdmlkZXI6IGFueTtcclxuXHJcbiAgYmVmb3JlRWFjaCgoKSA9PiB7XHJcbiAgICAvLyBNb2NrIGRvIHByb3ZpZGVyXHJcbiAgICBtb2NrUHJvdmlkZXIgPSB7XHJcbiAgICAgIGlzSW5pdGlhbGl6ZWQ6IHZpLmZuKCkubW9ja1JldHVyblZhbHVlKHRydWUpLFxyXG4gICAgICBnZXRMb2dnZXJQcm92aWRlcjogdmkuZm4oKS5tb2NrUmV0dXJuVmFsdWUoe1xyXG4gICAgICAgIGdldExvZ2dlcjogdmkuZm4oKS5tb2NrUmV0dXJuVmFsdWUoe1xyXG4gICAgICAgICAgZW1pdDogdmkuZm4oKSxcclxuICAgICAgICB9KSxcclxuICAgICAgfSksXHJcbiAgICAgIGdldFRyYWNlclByb3ZpZGVyOiB2aS5mbigpLm1vY2tSZXR1cm5WYWx1ZSh7fSksXHJcbiAgICAgIGZvcmNlRmx1c2g6IHZpLmZuKCkubW9ja1Jlc29sdmVkVmFsdWUodW5kZWZpbmVkKSxcclxuICAgIH07XHJcblxyXG4gICAgLy8gTW9jayBlbnYgdmFyc1xyXG4gICAgcHJvY2Vzcy5lbnYuU0VSVklDRV9OQU1FID0gJ3Rlc3Qtc2VydmljZSc7XHJcbiAgICBwcm9jZXNzLmVudi5TVEFHRSA9ICd0ZXN0JztcclxuICB9KTtcclxuXHJcbiAgZGVzY3JpYmUoJ1RzZWRUZWxlbWV0cnlQcm92aWRlciBpbnRlZ3JhdGlvbicsICgpID0+IHtcclxuICAgIGl0KCdkZXZlIGNyaWFyIHByb3ZpZGVyIGNvbSBsb2dzLCB0cmFjZXMgZSBtw6l0cmljYXMnLCAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IFRzZWRUZWxlbWV0cnlQcm92aWRlcigpO1xyXG5cclxuICAgICAgcHJvdmlkZXIuaW5pdGlhbGl6ZSh7XHJcbiAgICAgICAgZW5kcG9pbnQ6ICdodHRwczovL3Rlc3QuY29tJyxcclxuICAgICAgICB1c2VybmFtZTogJ3VzZXInLFxyXG4gICAgICAgIHBhc3N3b3JkOiAncGFzcycsXHJcbiAgICAgICAgc2VydmljZU5hbWU6ICd0ZXN0LXNlcnZpY2UnLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGV4cGVjdChwcm92aWRlci5pc0luaXRpYWxpemVkKCkpLnRvQmUodHJ1ZSk7XHJcbiAgICAgIGV4cGVjdChwcm92aWRlci5nZXRMb2dnZXJQcm92aWRlcigpKS50b0JlRGVmaW5lZCgpO1xyXG4gICAgICBleHBlY3QocHJvdmlkZXIuZ2V0VHJhY2VyUHJvdmlkZXIoKSkudG9CZURlZmluZWQoKTtcclxuICAgICAgZXhwZWN0KHByb3ZpZGVyLmdldE1ldGVyUHJvdmlkZXIoKSkudG9CZURlZmluZWQoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGl0KCdkZXZlIHJldG9ybmFyIG51bGwgcXVhbmRvIG7Do28gaW5pY2lhbGl6YWRvJywgKCkgPT4ge1xyXG4gICAgICBkZWxldGUgcHJvY2Vzcy5lbnYuT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UO1xyXG4gICAgICBjb25zdCBwcm92aWRlciA9IG5ldyBUc2VkVGVsZW1ldHJ5UHJvdmlkZXIoKTtcclxuXHJcbiAgICAgIGV4cGVjdChwcm92aWRlci5nZXRMb2dnZXJQcm92aWRlcigpKS50b0JlTnVsbCgpO1xyXG4gICAgICBleHBlY3QocHJvdmlkZXIuZ2V0VHJhY2VyUHJvdmlkZXIoKSkudG9CZU51bGwoKTtcclxuICAgICAgZXhwZWN0KHByb3ZpZGVyLmdldE1ldGVyUHJvdmlkZXIoKSkudG9CZU51bGwoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGl0KCdkZXZlIGZhemVyIGZvcmNlRmx1c2ggZGUgdG9kb3Mgb3MgcHJvdmlkZXJzJywgYXN5bmMgKCkgPT4ge1xyXG4gICAgICBjb25zdCBwcm92aWRlciA9IG5ldyBUc2VkVGVsZW1ldHJ5UHJvdmlkZXIoKTtcclxuXHJcbiAgICAgIHByb3ZpZGVyLmluaXRpYWxpemUoe1xyXG4gICAgICAgIGVuZHBvaW50OiAnaHR0cHM6Ly90ZXN0LmNvbScsXHJcbiAgICAgICAgdXNlcm5hbWU6ICd1c2VyJyxcclxuICAgICAgICBwYXNzd29yZDogJ3Bhc3MnLFxyXG4gICAgICAgIHNlcnZpY2VOYW1lOiAndGVzdC1zZXJ2aWNlJyxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBhd2FpdCBleHBlY3QocHJvdmlkZXIuZm9yY2VGbHVzaCgpKS5yZXNvbHZlcy5ub3QudG9UaHJvdygpO1xyXG4gICAgfSk7XHJcbiAgfSk7XHJcbn0pO1xyXG4iXX0=
@@ -0,0 +1,26 @@
1
+ import { LoggerProvider } from '@opentelemetry/sdk-logs';
2
+ import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';
3
+ import { MeterProvider } from '@opentelemetry/sdk-metrics';
4
+ export interface TsedTelemetryConfig {
5
+ endpoint: string;
6
+ username: string;
7
+ password: string;
8
+ serviceName?: string;
9
+ serviceVersion?: string;
10
+ enabled?: boolean;
11
+ }
12
+ export declare class TsedTelemetryProvider {
13
+ private loggerProvider;
14
+ private tracerProvider;
15
+ private meterProvider;
16
+ private initialized;
17
+ constructor();
18
+ initialize(config: TsedTelemetryConfig): void;
19
+ getLoggerProvider(): LoggerProvider | null;
20
+ getTracerProvider(): NodeTracerProvider | null;
21
+ getMeterProvider(): MeterProvider | null;
22
+ isInitialized(): boolean;
23
+ forceFlush(): Promise<void>;
24
+ shutdown(): Promise<void>;
25
+ $onDestroy(): Promise<void>;
26
+ }
@@ -0,0 +1,166 @@
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.TsedTelemetryProvider = 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 exporter_trace_otlp_http_1 = require("@opentelemetry/exporter-trace-otlp-http");
16
+ const exporter_metrics_otlp_http_1 = require("@opentelemetry/exporter-metrics-otlp-http");
17
+ const resources_1 = require("@opentelemetry/resources");
18
+ const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
19
+ const sync_log_record_processor_1 = require("./sync-log-record-processor");
20
+ const sdk_trace_node_1 = require("@opentelemetry/sdk-trace-node");
21
+ const sdk_metrics_1 = require("@opentelemetry/sdk-metrics");
22
+ const api_1 = require("@opentelemetry/api");
23
+ class TsedTelemetryProvider {
24
+ constructor() {
25
+ this.loggerProvider = null;
26
+ this.tracerProvider = null;
27
+ this.meterProvider = null;
28
+ this.initialized = false;
29
+ if (!this.initialized && process.env.OTEL_EXPORTER_OTLP_ENDPOINT) {
30
+ const serviceName = process.env.SERVICE_NAME || 'unknown-service';
31
+ const serviceStage = process.env.STAGE;
32
+ this.initialize({
33
+ endpoint: process.env.OTEL_EXPORTER_OTLP_ENDPOINT || '',
34
+ username: process.env.OTEL_EXPORTER_OTLP_USER || '',
35
+ password: process.env.OTEL_EXPORTER_OTLP_PASS || '',
36
+ serviceName: `${serviceName}-${serviceStage}`,
37
+ serviceVersion: process.env.npm_package_version || '1.0.0',
38
+ enabled: process.env.OTEL_ENABLED !== 'false',
39
+ });
40
+ }
41
+ }
42
+ initialize(config) {
43
+ if (this.initialized) {
44
+ return;
45
+ }
46
+ if (config.enabled === false) {
47
+ console.log('[Telemetry] OpenTelemetry is disabled');
48
+ return;
49
+ }
50
+ if (!config.endpoint || !config.username || !config.password) {
51
+ if (process.env.NODE_ENV !== 'test' &&
52
+ process.env.OTEL_EXPORTER_OTLP_ENDPOINT) {
53
+ console.error('[Telemetry] Missing required configuration');
54
+ }
55
+ return;
56
+ }
57
+ try {
58
+ const resource = new resources_1.Resource({
59
+ [semantic_conventions_1.ATTR_SERVICE_NAME]: config.serviceName || 'unknown-service',
60
+ [semantic_conventions_1.ATTR_SERVICE_VERSION]: config.serviceVersion || '1.0.0',
61
+ });
62
+ const basicAuth = `Basic ${Buffer.from(`${config.username}:${config.password}`).toString('base64')}`;
63
+ const headers = {
64
+ Authorization: basicAuth,
65
+ 'Content-Type': 'application/json',
66
+ };
67
+ const logExporter = new exporter_logs_otlp_http_1.OTLPLogExporter({
68
+ url: `${config.endpoint}/v1/logs`,
69
+ headers,
70
+ timeoutMillis: 5000,
71
+ concurrencyLimit: 1,
72
+ });
73
+ const traceExporter = new exporter_trace_otlp_http_1.OTLPTraceExporter({
74
+ url: `${config.endpoint}/v1/traces`,
75
+ headers,
76
+ });
77
+ const metricExporter = new exporter_metrics_otlp_http_1.OTLPMetricExporter({
78
+ url: `${config.endpoint}/v1/metrics`,
79
+ headers,
80
+ });
81
+ const syncProcessor = new sync_log_record_processor_1.TsedSyncLogRecordProcessor(logExporter);
82
+ this.loggerProvider = new sdk_logs_1.LoggerProvider({
83
+ resource,
84
+ });
85
+ this.loggerProvider.addLogRecordProcessor(syncProcessor);
86
+ this.tracerProvider = new sdk_trace_node_1.NodeTracerProvider({
87
+ resource,
88
+ });
89
+ this.tracerProvider.addSpanProcessor(new sdk_trace_node_1.BatchSpanProcessor(traceExporter));
90
+ this.tracerProvider.register();
91
+ api_1.trace.setGlobalTracerProvider(this.tracerProvider);
92
+ const metricReader = new sdk_metrics_1.PeriodicExportingMetricReader({
93
+ exporter: metricExporter,
94
+ exportIntervalMillis: 1000,
95
+ });
96
+ this.meterProvider = new sdk_metrics_1.MeterProvider({
97
+ resource,
98
+ readers: [metricReader],
99
+ });
100
+ api_1.metrics.setGlobalMeterProvider(this.meterProvider);
101
+ this.initialized = true;
102
+ console.log('[Telemetry] OpenTelemetry initialized successfully');
103
+ }
104
+ catch (error) {
105
+ console.error('[Telemetry] Failed to initialize OpenTelemetry:', error);
106
+ }
107
+ }
108
+ getLoggerProvider() {
109
+ return this.loggerProvider;
110
+ }
111
+ getTracerProvider() {
112
+ return this.tracerProvider;
113
+ }
114
+ getMeterProvider() {
115
+ return this.meterProvider;
116
+ }
117
+ isInitialized() {
118
+ return this.initialized;
119
+ }
120
+ forceFlush() {
121
+ return __awaiter(this, void 0, void 0, function* () {
122
+ try {
123
+ const startTime = Date.now();
124
+ console.log('[Telemetry] Starting forceFlush...');
125
+ const promises = [];
126
+ if (this.loggerProvider) {
127
+ promises.push(this.loggerProvider.forceFlush());
128
+ }
129
+ if (this.tracerProvider) {
130
+ promises.push(this.tracerProvider.forceFlush());
131
+ }
132
+ if (this.meterProvider) {
133
+ promises.push(this.meterProvider.forceFlush());
134
+ }
135
+ yield Promise.all(promises);
136
+ const duration = Date.now() - startTime;
137
+ console.log(`[Telemetry] forceFlush completed successfully in ${duration}ms`);
138
+ }
139
+ catch (error) {
140
+ console.error('[Telemetry] Failed to force flush telemetry:', error);
141
+ throw error;
142
+ }
143
+ });
144
+ }
145
+ shutdown() {
146
+ return __awaiter(this, void 0, void 0, function* () {
147
+ const promises = [];
148
+ if (this.loggerProvider) {
149
+ promises.push(this.loggerProvider.shutdown());
150
+ }
151
+ if (this.tracerProvider) {
152
+ promises.push(this.tracerProvider.shutdown());
153
+ }
154
+ if (this.meterProvider) {
155
+ promises.push(this.meterProvider.shutdown());
156
+ }
157
+ yield Promise.all(promises);
158
+ this.initialized = false;
159
+ });
160
+ }
161
+ $onDestroy() {
162
+ return this.shutdown();
163
+ }
164
+ }
165
+ exports.TsedTelemetryProvider = TsedTelemetryProvider;
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RlbGVtZXRyeS90c2VkL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxzREFBeUQ7QUFDekQsb0ZBQXlFO0FBQ3pFLHNGQUE0RTtBQUM1RSwwRkFBK0U7QUFDL0Usd0RBQW9EO0FBQ3BELDhFQUc2QztBQUM3QywyRUFBeUU7QUFDekUsa0VBR3VDO0FBQ3ZDLDREQUdvQztBQUNwQyw0Q0FBb0Q7QUFXcEQsTUFBYSxxQkFBcUI7SUFNaEM7UUFMUSxtQkFBYyxHQUEwQixJQUFJLENBQUM7UUFDN0MsbUJBQWMsR0FBOEIsSUFBSSxDQUFDO1FBQ2pELGtCQUFhLEdBQXlCLElBQUksQ0FBQztRQUMzQyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUkxQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixFQUFFLENBQUM7WUFDakUsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLElBQUksaUJBQWlCLENBQUM7WUFDbEUsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7WUFDdkMsSUFBSSxDQUFDLFVBQVUsQ0FBQztnQkFDZCxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsSUFBSSxFQUFFO2dCQUN2RCxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsSUFBSSxFQUFFO2dCQUNuRCxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsSUFBSSxFQUFFO2dCQUNuRCxXQUFXLEVBQUUsR0FBRyxXQUFXLElBQUksWUFBWSxFQUFFO2dCQUM3QyxjQUFjLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsSUFBSSxPQUFPO2dCQUMxRCxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcs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SUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7Q0FDRjtBQW5NRCxzREFtTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dnZXJQcm92aWRlciB9IGZyb20gJ0BvcGVudGVsZW1ldHJ5L3Nkay1sb2dzJztcclxuaW1wb3J0IHsgT1RMUExvZ0V4cG9ydGVyIH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvZXhwb3J0ZXItbG9ncy1vdGxwLWh0dHAnO1xyXG5pbXBvcnQgeyBPVExQVHJhY2VFeHBvcnRlciB9IGZyb20gJ0BvcGVudGVsZW1ldHJ5L2V4cG9ydGVyLXRyYWNlLW90bHAtaHR0cCc7XHJcbmltcG9ydCB7IE9UTFBNZXRyaWNFeHBvcnRlciB9IGZyb20gJ0BvcGVudGVsZW1ldHJ5L2V4cG9ydGVyLW1ldHJpY3Mtb3RscC1odHRwJztcclxuaW1wb3J0IHsgUmVzb3VyY2UgfSBmcm9tICdAb3BlbnRlbGVtZXRyeS9yZXNvdXJjZXMnO1xyXG5pbXBvcnQge1xyXG4gIEFUVFJfU0VSVklDRV9OQU1FLFxyXG4gIEFUVFJfU0VSVklDRV9WRVJTSU9OLFxyXG59IGZyb20gJ0BvcGVudGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zJztcclxuaW1wb3J0IHsgVHNlZFN5bmNMb2dSZWNvcmRQcm9jZXNzb3IgfSBmcm9tICcuL3N5bmMtbG9nLXJlY29yZC1wcm9jZXNzb3InO1xyXG5pbXBvcnQge1xyXG4gIE5vZGVUcmFjZXJQcm92aWRlcixcclxuICBCYXRjaFNwYW5Qcm9jZXNzb3IsXHJcbn0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvc2RrLXRyYWNlLW5vZGUnO1xyXG5pbXBvcnQge1xyXG4gIE1ldGVyUHJvdmlkZXIsXHJcbiAgUGVyaW9kaWNFeHBvcnRpbmdNZXRyaWNSZWFkZXIsXHJcbn0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvc2RrLW1ldHJpY3MnO1xyXG5pbXBvcnQgeyB0cmFjZSwgbWV0cmljcyB9IGZyb20gJ0BvcGVudGVsZW1ldHJ5L2FwaSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRzZWRUZWxlbWV0cnlDb25maWcge1xyXG4gIGVuZHBvaW50OiBzdHJpbmc7XHJcbiAgdXNlcm5hbWU6IHN0cmluZztcclxuICBwYXNzd29yZDogc3RyaW5nO1xyXG4gIHNlcnZpY2VOYW1lPzogc3RyaW5nO1xyXG4gIHNlcnZpY2VWZXJzaW9uPzogc3RyaW5nO1xyXG4gIGVuYWJsZWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVHNlZFRlbGVtZXRyeVByb3ZpZGVyIHtcclxuICBwcml2YXRlIGxvZ2dlclByb3ZpZGVyOiBMb2dnZXJQcm92aWRlciB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgdHJhY2VyUHJvdmlkZXI6IE5vZGVUcmFjZXJQcm92aWRlciB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgbWV0ZXJQcm92aWRlcjogTWV0ZXJQcm92aWRlciB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAvLyBBdXRvLWluaXRpYWxpemUgc3luY2hyb25vdXNseSB3aXRoIGVudmlyb25tZW50IHZhcmlhYmxlc1xyXG4gICAgaWYgKCF0aGlzLmluaXRpYWxpemVkICYmIHByb2Nlc3MuZW52Lk9URUxfRVhQT1JURVJfT1RMUF9FTkRQT0lOVCkge1xyXG4gICAgICBjb25zdCBzZXJ2aWNlTmFtZSA9IHByb2Nlc3MuZW52LlNFUlZJQ0VfTkFNRSB8fCAndW5rbm93bi1zZXJ2aWNlJztcclxuICAgICAgY29uc3Qgc2VydmljZVN0YWdlID0gcHJvY2Vzcy5lbnYuU1RBR0U7XHJcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZSh7XHJcbiAgICAgICAgZW5kcG9pbnQ6IHByb2Nlc3MuZW52Lk9URUxfRVhQT1JURVJfT1RMUF9FTkRQT0lOVCB8fCAnJyxcclxuICAgICAgICB1c2VybmFtZTogcHJvY2Vzcy5lbnYuT1RFTF9FWFBPUlRFUl9PVExQX1VTRVIgfHwgJycsXHJcbiAgICAgICAgcGFzc3dvcmQ6IHByb2Nlc3MuZW52Lk9URUxfRVhQT1JURVJfT1RMUF9QQVNTIHx8ICcnLFxyXG4gICAgICAgIHNlcnZpY2VOYW1lOiBgJHtzZXJ2aWNlTmFtZX0tJHtzZXJ2aWNlU3RhZ2V9YCxcclxuICAgICAgICBzZXJ2aWNlVmVyc2lvbjogcHJvY2Vzcy5lbnYubnBtX3BhY2thZ2VfdmVyc2lvbiB8fCAnMS4wLjAnLFxyXG4gICAgICAgIGVuYWJsZWQ6IHByb2Nlc3MuZW52Lk9URUxfRU5BQkxFRCAhPT0gJ2ZhbHNlJyxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaW5pdGlhbGl6ZShjb25maWc6IFRzZWRUZWxlbWV0cnlDb25maWcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY29uZmlnLmVuYWJsZWQgPT09IGZhbHNlKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdbVGVsZW1ldHJ5XSBPcGVuVGVsZW1ldHJ5IGlzIGRpc2FibGVkJyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWNvbmZpZy5lbmRwb2ludCB8fCAhY29uZmlnLnVzZXJuYW1lIHx8ICFjb25maWcucGFzc3dvcmQpIHtcclxuICAgICAgLy8gTsOjbyBsb2dhciBlcnJvIHNlIGVzdGl2ZXJtb3MgZW0gbW9kbyBkZSBidWlsZFxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICd0ZXN0JyAmJlxyXG4gICAgICAgIHByb2Nlc3MuZW52Lk9URUxfRVhQT1JURVJfT1RMUF9FTkRQT0lOVFxyXG4gICAgICApIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZW1ldHJ5XSBNaXNzaW5nIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb24nKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gQ3JlYXRlIHJlc291cmNlIHdpdGggc2VydmljZSBpbmZvcm1hdGlvblxyXG4gICAgICBjb25zdCByZXNvdXJjZSA9IG5ldyBSZXNvdXJjZSh7XHJcbiAgICAgICAgW0FUVFJfU0VSVklDRV9OQU1FXTogY29uZmlnLnNlcnZpY2VOYW1lIHx8ICd1bmtub3duLXNlcnZpY2UnLFxyXG4gICAgICAgIFtBVFRSX1NFUlZJQ0VfVkVSU0lPTl06IGNvbmZpZy5zZXJ2aWNlVmVyc2lvbiB8fCAnMS4wLjAnLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGNvbnN0IGJhc2ljQXV0aCA9IGBCYXNpYyAke0J1ZmZlci5mcm9tKGAke2NvbmZpZy51c2VybmFtZX06JHtjb25maWcucGFzc3dvcmR9YCkudG9TdHJpbmcoJ2Jhc2U2NCcpfWA7XHJcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSB7XHJcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYmFzaWNBdXRoLFxyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgIH07XHJcblxyXG4gICAgICAvLyBDcmVhdGUgT1RMUCBleHBvcnRlcnMgd2l0aCBhdXRoZW50aWNhdGlvbiBhbmQgdGltZW91dCBjb25maWd1cmF0aW9uXHJcbiAgICAgIGNvbnN0IGxvZ0V4cG9ydGVyID0gbmV3IE9UTFBMb2dFeHBvcnRlcih7XHJcbiAgICAgICAgdXJsOiBgJHtjb25maWcuZW5kcG9pbnR9L3YxL2xvZ3NgLFxyXG4gICAgICAgIGhlYWRlcnMsXHJcbiAgICAgICAgdGltZW91dE1pbGxpczogNTAwMCwgLy8gNSBzZWNvbmQgdGltZW91dCBmb3IgZXhwb3J0c1xyXG4gICAgICAgIGNvbmN1cnJlbmN5TGltaXQ6IDEsIC8vIFByb2Nlc3Mgb25lIGV4cG9ydCBhdCBhIHRpbWVcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBjb25zdCB0cmFjZUV4cG9ydGVyID0gbmV3IE9UTFBUcmFjZUV4cG9ydGVyKHtcclxuICAgICAgICB1cmw6IGAke2NvbmZpZy5lbmRwb2ludH0vdjEvdHJhY2VzYCxcclxuICAgICAgICBoZWFkZXJzLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGNvbnN0IG1ldHJpY0V4cG9ydGVyID0gbmV3IE9UTFBNZXRyaWNFeHBvcnRlcih7XHJcbiAgICAgICAgdXJsOiBgJHtjb25maWcuZW5kcG9pbnR9L3YxL21ldHJpY3NgLFxyXG4gICAgICAgIGhlYWRlcnMsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gVXNlIGN1c3RvbSBTeW5jTG9nUmVjb3JkUHJvY2Vzc29yIGluc3RlYWQgb2YgU2ltcGxlTG9nUmVjb3JkUHJvY2Vzc29yXHJcbiAgICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBhc3luYyBIVFRQIGV4cG9ydCBpcyBwcm9wZXJseSBhd2FpdGVkIGluIExhbWJkYVxyXG4gICAgICAvLyBlbnZpcm9ubWVudHMgd2hlcmUgZXhlY3V0aW9uIGNvbnRleHQgZnJlZXplcyBhZnRlciBoYW5kbGVyIHJldHVybnNcclxuICAgICAgY29uc3Qgc3luY1Byb2Nlc3NvciA9IG5ldyBUc2VkU3luY0xvZ1JlY29yZFByb2Nlc3Nvcihsb2dFeHBvcnRlcik7XHJcblxyXG4gICAgICAvLyBDcmVhdGUgbG9nZ2VyIHByb3ZpZGVyIHdpdGggcmVzb3VyY2UgYW5kIHByb2Nlc3NvcnNcclxuICAgICAgdGhpcy5sb2dnZXJQcm92aWRlciA9IG5ldyBMb2dnZXJQcm92aWRlcih7XHJcbiAgICAgICAgcmVzb3VyY2UsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gQWRkIHByb2Nlc3NvciBhZnRlciBjcmVhdGlvblxyXG4gICAgICB0aGlzLmxvZ2dlclByb3ZpZGVyLmFkZExvZ1JlY29yZFByb2Nlc3NvcihzeW5jUHJvY2Vzc29yKTtcclxuXHJcbiAgICAgIC8vIENyZWF0ZSB0cmFjZXIgcHJvdmlkZXJcclxuICAgICAgdGhpcy50cmFjZXJQcm92aWRlciA9IG5ldyBOb2RlVHJhY2VyUHJvdmlkZXIoe1xyXG4gICAgICAgIHJlc291cmNlLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy50cmFjZXJQcm92aWRlci5hZGRTcGFuUHJvY2Vzc29yKFxyXG4gICAgICAgIG5ldyBCYXRjaFNwYW5Qcm9jZXNzb3IodHJhY2VFeHBvcnRlcilcclxuICAgICAgKTtcclxuICAgICAgdGhpcy50cmFjZXJQcm92aWRlci5yZWdpc3RlcigpO1xyXG5cclxuICAgICAgLy8gU2V0IGdsb2JhbCB0cmFjZXIgcHJvdmlkZXJcclxuICAgICAgdHJhY2Uuc2V0R2xvYmFsVHJhY2VyUHJvdmlkZXIodGhpcy50cmFjZXJQcm92aWRlcik7XHJcblxyXG4gICAgICAvLyBDcmVhdGUgbWV0ZXIgcHJvdmlkZXJcclxuICAgICAgY29uc3QgbWV0cmljUmVhZGVyID0gbmV3IFBlcmlvZGljRXhwb3J0aW5nTWV0cmljUmVhZGVyKHtcclxuICAgICAgICBleHBvcnRlcjogbWV0cmljRXhwb3J0ZXIsXHJcbiAgICAgICAgZXhwb3J0SW50ZXJ2YWxNaWxsaXM6IDEwMDAsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5tZXRlclByb3ZpZGVyID0gbmV3IE1ldGVyUHJvdmlkZXIoe1xyXG4gICAgICAgIHJlc291cmNlLFxyXG4gICAgICAgIHJlYWRlcnM6IFttZXRyaWNSZWFkZXJdLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIC8vIFNldCBnbG9iYWwgbWV0ZXIgcHJvdmlkZXJcclxuICAgICAgbWV0cmljcy5zZXRHbG9iYWxNZXRlclByb3ZpZGVyKHRoaXMubWV0ZXJQcm92aWRlcik7XHJcblxyXG4gICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgY29uc29sZS5sb2coJ1tUZWxlbWV0cnldIE9wZW5UZWxlbWV0cnkgaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5Jyk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdbVGVsZW1ldHJ5XSBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBPcGVuVGVsZW1ldHJ5OicsIGVycm9yKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRMb2dnZXJQcm92aWRlcigpOiBMb2dnZXJQcm92aWRlciB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMubG9nZ2VyUHJvdmlkZXI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0VHJhY2VyUHJvdmlkZXIoKTogTm9kZVRyYWNlclByb3ZpZGVyIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFjZXJQcm92aWRlcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRNZXRlclByb3ZpZGVyKCk6IE1ldGVyUHJvdmlkZXIgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLm1ldGVyUHJvdmlkZXI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNJbml0aWFsaXplZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRm9yY2UgZmx1c2ggYWxsIHBlbmRpbmcgbG9ncywgdHJhY2VzIGFuZCBtZXRyaWNzIHRvIGVuc3VyZSB0aGV5IGFyZSBzZW50IGJlZm9yZSBMYW1iZGEgZnJlZXplc1xyXG4gICAqIFRoaXMgaXMgY3JpdGljYWwgaW4gQVdTIExhbWJkYSBlbnZpcm9ubWVudHMgd2hlcmUgZXhlY3V0aW9uIGNvbnRleHQgZnJlZXplc1xyXG4gICAqIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBoYW5kbGVyIHJldHVybnMsIHBvdGVudGlhbGx5IGJlZm9yZSBhc3luYyBIVFRQIHJlcXVlc3RzIGNvbXBsZXRlXHJcbiAgICovXHJcbiAgcHVibGljIGFzeW5jIGZvcmNlRmx1c2goKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xyXG4gICAgICBjb25zb2xlLmxvZygnW1RlbGVtZXRyeV0gU3RhcnRpbmcgZm9yY2VGbHVzaC4uLicpO1xyXG5cclxuICAgICAgLy8gRm9yY2UgZmx1c2ggYWxsIHByb3ZpZGVycyBpbiBwYXJhbGxlbFxyXG4gICAgICBjb25zdCBwcm9taXNlczogUHJvbWlzZTx2b2lkPltdID0gW107XHJcblxyXG4gICAgICBpZiAodGhpcy5sb2dnZXJQcm92aWRlcikge1xyXG4gICAgICAgIHByb21pc2VzLnB1c2godGhpcy5sb2dnZXJQcm92aWRlci5mb3JjZUZsdXNoKCkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy50cmFjZXJQcm92aWRlcikge1xyXG4gICAgICAgIHByb21pc2VzLnB1c2godGhpcy50cmFjZXJQcm92aWRlci5mb3JjZUZsdXNoKCkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5tZXRlclByb3ZpZGVyKSB7XHJcbiAgICAgICAgcHJvbWlzZXMucHVzaCh0aGlzLm1ldGVyUHJvdmlkZXIuZm9yY2VGbHVzaCgpKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xyXG5cclxuICAgICAgY29uc3QgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gc3RhcnRUaW1lO1xyXG4gICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICBgW1RlbGVtZXRyeV0gZm9yY2VGbHVzaCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IGluICR7ZHVyYXRpb259bXNgXHJcbiAgICAgICk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdbVGVsZW1ldHJ5XSBGYWlsZWQgdG8gZm9yY2UgZmx1c2ggdGVsZW1ldHJ5OicsIGVycm9yKTtcclxuICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgc2h1dGRvd24oKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBwcm9taXNlczogUHJvbWlzZTx2b2lkPltdID0gW107XHJcblxyXG4gICAgaWYgKHRoaXMubG9nZ2VyUHJvdmlkZXIpIHtcclxuICAgICAgcHJvbWlzZXMucHVzaCh0aGlzLmxvZ2dlclByb3ZpZGVyLnNodXRkb3duKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnRyYWNlclByb3ZpZGVyKSB7XHJcbiAgICAgIHByb21pc2VzLnB1c2godGhpcy50cmFjZXJQcm92aWRlci5zaHV0ZG93bigpKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5tZXRlclByb3ZpZGVyKSB7XHJcbiAgICAgIHByb21pc2VzLnB1c2godGhpcy5tZXRlclByb3ZpZGVyLnNodXRkb3duKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gICRvbkRlc3Ryb3koKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5zaHV0ZG93bigpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,4 @@
1
+ export * from './config';
2
+ export * from './service';
3
+ export * from './log-telemetry';
4
+ export * from './sync-log-record-processor';
@@ -0,0 +1,21 @@
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("./service"), exports);
19
+ __exportStar(require("./log-telemetry"), exports);
20
+ __exportStar(require("./sync-log-record-processor"), exports);
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVsZW1ldHJ5L3RzZWQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUF5QjtBQUN6Qiw0Q0FBMEI7QUFDMUIsa0RBQWdDO0FBQ2hDLDhEQUE0QyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29uZmlnJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9sb2ctdGVsZW1ldHJ5JztcclxuZXhwb3J0ICogZnJvbSAnLi9zeW5jLWxvZy1yZWNvcmQtcHJvY2Vzc29yJztcclxuIl19
@@ -0,0 +1 @@
1
+ export declare function TsedLogTelemetry(): (_target: any, _propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;