@mecanizou/telemetry-hub 1.0.0 → 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 (95) 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/CHANGELOG.md +14 -0
  5. package/DOCS_GUIDE.md +151 -0
  6. package/README.md +248 -0
  7. package/dist/core/__tests__/logger-types.test.d.ts +1 -0
  8. package/dist/core/__tests__/logger-types.test.js +325 -0
  9. package/dist/core/__tests__/logger.test.d.ts +1 -0
  10. package/dist/core/__tests__/logger.test.js +337 -0
  11. package/dist/core/__tests__/tracer.test.d.ts +1 -0
  12. package/dist/core/__tests__/tracer.test.js +330 -0
  13. package/dist/core/index.d.ts +4 -0
  14. package/dist/core/index.js +8 -0
  15. package/dist/core/logger-types.d.ts +43 -0
  16. package/dist/core/logger-types.js +3 -0
  17. package/dist/core/logger.d.ts +13 -0
  18. package/dist/core/logger.js +123 -0
  19. package/dist/core/tracer-types.d.ts +50 -0
  20. package/dist/core/tracer-types.js +3 -0
  21. package/dist/core/tracer.d.ts +10 -0
  22. package/dist/core/tracer.js +114 -0
  23. package/dist/index.d.ts +3 -1
  24. package/dist/index.js +4 -2
  25. package/dist/sst/__tests__/telemetry.test.d.ts +1 -0
  26. package/dist/sst/__tests__/telemetry.test.js +138 -0
  27. package/dist/sst/index.d.ts +1 -0
  28. package/dist/sst/index.js +18 -0
  29. package/dist/sst/middy/index.d.ts +1 -0
  30. package/dist/sst/middy/index.js +18 -0
  31. package/dist/sst/middy/middleware.d.ts +5 -0
  32. package/dist/sst/middy/middleware.js +157 -0
  33. package/dist/sst/telemetry.d.ts +4 -0
  34. package/dist/sst/telemetry.js +121 -0
  35. package/dist/telemetry/core/__tests__/logger-types.test.d.ts +1 -0
  36. package/dist/telemetry/core/__tests__/logger-types.test.js +325 -0
  37. package/dist/telemetry/core/__tests__/logger.test.d.ts +1 -0
  38. package/dist/telemetry/core/__tests__/logger.test.js +337 -0
  39. package/dist/telemetry/core/__tests__/tracer.test.d.ts +1 -0
  40. package/dist/telemetry/core/__tests__/tracer.test.js +330 -0
  41. package/dist/telemetry/core/index.d.ts +4 -0
  42. package/dist/telemetry/core/index.js +8 -0
  43. package/dist/telemetry/core/logger-types.d.ts +43 -0
  44. package/dist/telemetry/core/logger-types.js +3 -0
  45. package/dist/telemetry/core/logger.d.ts +13 -0
  46. package/dist/telemetry/core/logger.js +123 -0
  47. package/dist/telemetry/core/tracer-types.d.ts +50 -0
  48. package/dist/telemetry/core/tracer-types.js +3 -0
  49. package/dist/telemetry/core/tracer.d.ts +10 -0
  50. package/dist/telemetry/core/tracer.js +114 -0
  51. package/dist/telemetry/index.d.ts +3 -0
  52. package/dist/telemetry/index.js +20 -0
  53. package/dist/telemetry/sst/__tests__/telemetry.test.d.ts +1 -0
  54. package/dist/telemetry/sst/__tests__/telemetry.test.js +138 -0
  55. package/dist/telemetry/sst/index.d.ts +1 -0
  56. package/dist/telemetry/sst/index.js +18 -0
  57. package/dist/telemetry/sst/middy/index.d.ts +1 -0
  58. package/dist/telemetry/sst/middy/index.js +18 -0
  59. package/dist/telemetry/sst/middy/middleware.d.ts +5 -0
  60. package/dist/telemetry/sst/middy/middleware.js +157 -0
  61. package/dist/telemetry/sst/telemetry.d.ts +4 -0
  62. package/dist/telemetry/sst/telemetry.js +121 -0
  63. package/dist/telemetry/tsed/__tests__/config.test.d.ts +1 -0
  64. package/dist/telemetry/tsed/__tests__/config.test.js +146 -0
  65. package/dist/telemetry/tsed/__tests__/service.test.d.ts +1 -0
  66. package/dist/telemetry/tsed/__tests__/service.test.js +63 -0
  67. package/dist/telemetry/tsed/config.d.ts +26 -0
  68. package/dist/telemetry/tsed/config.js +166 -0
  69. package/dist/telemetry/tsed/index.d.ts +4 -0
  70. package/dist/telemetry/tsed/index.js +21 -0
  71. package/dist/telemetry/tsed/log-telemetry.d.ts +1 -0
  72. package/dist/telemetry/tsed/log-telemetry.js +196 -0
  73. package/dist/telemetry/tsed/service.d.ts +26 -0
  74. package/dist/telemetry/tsed/service.js +150 -0
  75. package/dist/telemetry/tsed/sync-log-record-processor.d.ts +11 -0
  76. package/dist/telemetry/tsed/sync-log-record-processor.js +74 -0
  77. package/dist/tsed/__tests__/config.test.d.ts +1 -0
  78. package/dist/tsed/__tests__/config.test.js +146 -0
  79. package/dist/tsed/__tests__/service.test.d.ts +1 -0
  80. package/dist/tsed/__tests__/service.test.js +63 -0
  81. package/dist/tsed/config.d.ts +26 -0
  82. package/dist/tsed/config.js +166 -0
  83. package/dist/tsed/index.d.ts +4 -0
  84. package/dist/tsed/index.js +21 -0
  85. package/dist/tsed/log-telemetry.d.ts +1 -0
  86. package/dist/tsed/log-telemetry.js +196 -0
  87. package/dist/tsed/service.d.ts +26 -0
  88. package/dist/tsed/service.js +150 -0
  89. package/dist/tsed/sync-log-record-processor.d.ts +11 -0
  90. package/dist/tsed/sync-log-record-processor.js +74 -0
  91. package/package.json +72 -56
  92. package/release.config.js +23 -23
  93. package/vitest.config.ts +22 -0
  94. package/dist/check-if-is-working.d.ts +0 -1
  95. package/dist/check-if-is-working.js +0 -8
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHNlZC9fX3Rlc3RzX18vY29uZmlnLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBOEQ7QUFDOUQsc0NBQWtEO0FBRWxELElBQUEsaUJBQVEsRUFBQyx1QkFBdUIsRUFBRSxHQUFHLEVBQUU7SUFDckMsSUFBSSxRQUErQixDQUFDO0lBRXBDLElBQUEsbUJBQVUsRUFBQyxHQUFHLEVBQUU7UUFFZCxPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixHQUFHLGtCQUFrQixDQUFDO1FBQzdELE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEdBQUcsV0FBVyxDQUFDO1FBQ2xELE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEdBQUcsV0FBVyxDQUFDO1FBQ2xELE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxHQUFHLGNBQWMsQ0FBQztRQUMxQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7UUFFM0IsUUFBUSxHQUFHLElBQUksOEJBQXFCLEVBQUUsQ0FBQztJQUN6QyxDQUFDLENBQUMsQ0FBQztJQUVILElBQUEsaUJBQVEsRUFBQyxZQUFZLEVBQUUsR0FBRyxFQUFFO1FBQzFCLElBQUEsV0FBRSxFQUFDLDBDQUEwQyxFQUFFLEdBQUcsRUFBRTtZQUNsRCxRQUFRLENBQUMsVUFBVSxDQUFDO2dCQUNsQixRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QixRQUFRLEVBQUUsTUFBTTtnQkFDaEIsUUFBUSxFQUFFLE1BQU07Z0JBQ2hCLFdBQVcsRUFBRSxjQUFjO2dCQUMzQixjQUFjLEVBQUUsT0FBTztnQkFDdkIsT0FBTyxFQUFFLElBQUk7YUFDZCxDQUFDLENBQUM7WUFFSCxJQUFBLGVBQU0sRUFBQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFD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dCwgdmksIGJlZm9yZUVhY2ggfSBmcm9tICd2aXRlc3QnO1xyXG5pbXBvcnQgeyBUc2VkVGVsZW1ldHJ5UHJvdmlkZXIgfSBmcm9tICcuLi9jb25maWcnO1xyXG5cclxuZGVzY3JpYmUoJ1RzZWRUZWxlbWV0cnlQcm92aWRlcicsICgpID0+IHtcclxuICBsZXQgcHJvdmlkZXI6IFRzZWRUZWxlbWV0cnlQcm92aWRlcjtcclxuXHJcbiAgYmVmb3JlRWFjaCgoKSA9PiB7XHJcbiAgICAvLyBNb2NrIGRhcyB2YXJpw6F2ZWlzIGRlIGFtYmllbnRlXHJcbiAgICBwcm9jZXNzLmVudi5PVEVMX0VYUE9SVEVSX09UTFBfRU5EUE9JTlQgPSAnaHR0cHM6Ly90ZXN0LmNvbSc7XHJcbiAgICBwcm9jZXNzLmVudi5PVEVMX0VYUE9SVEVSX09UTFBfVVNFUiA9ICd0ZXN0LXVzZXInO1xyXG4gICAgcHJvY2Vzcy5lbnYuT1RFTF9FWFBPUlRFUl9PVExQX1BBU1MgPSAndGVzdC1wYXNzJztcclxuICAgIHByb2Nlc3MuZW52LlNFUlZJQ0VfTkFNRSA9ICd0ZXN0LXNlcnZpY2UnO1xyXG4gICAgcHJvY2Vzcy5lbnYuU1RBR0UgPSAndGVzdCc7XHJcblxyXG4gICAgcHJvdmlkZXIgPSBuZXcgVHNlZFRlbGVtZXRyeVByb3ZpZGVyKCk7XHJcbiAgfSk7XHJcblxyXG4gIGRlc2NyaWJlKCdpbml0aWFsaXplJywgKCkgPT4ge1xyXG4gICAgaXQoJ2RldmUgaW5pY2lhbGl6YXIgY29tIGNvbmZpZ3VyYcOnw6NvIHbDoWxpZGEnLCAoKSA9PiB7XHJcbiAgICAgIHByb3ZpZGVyLmluaXRpYWxpemUoe1xyXG4gICAgICAgIGVuZHBvaW50OiAnaHR0cHM6Ly90ZXN0LmNvbScsXHJcbiAgICAgICAgdXNlcm5hbWU6ICd1c2VyJyxcclxuICAgICAgICBwYXNzd29yZDogJ3Bhc3MnLFxyXG4gICAgICAgIHNlcnZpY2VOYW1lOiAndGVzdC1zZXJ2aWNlJyxcclxuICAgICAgICBzZXJ2aWNlVmVyc2lvbjogJzEuMC4wJyxcclxuICAgICAgICBlbmFibGVkOiB0cnVlLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGV4cGVjdChwcm92aWRlci5pc0luaXRpYWxpemVkKCkpLnRvQmUodHJ1ZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpdCgnbsOjbyBkZXZlIGluaWNpYWxpemFyIHNlIGrDoSBlc3RpdmVyIGluaWNpYWxpemFkbycsICgpID0+IHtcclxuICAgICAgcHJvdmlkZXIuaW5pdGlhbGl6ZSh7XHJcbiAgICAgICAgZW5kcG9pbnQ6ICdodHRwczovL3Rlc3QuY29tJyxcclxuICAgICAgICB1c2VybmFtZTogJ3VzZXInLFxyXG4gICAgICAgIHBhc3N3b3JkOiAncGFzcycsXHJcbiAgICAgICAgc2VydmljZU5hbWU6ICd0ZXN0LXNlcnZpY2UnLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGNvbnN0IGZpcnN0SW5pdCA9IHByb3ZpZGVyLmlzSW5pdGlhbGl6ZWQoKTtcclxuXHJcbiAgICAgIHByb3ZpZGVyLmluaXRpYWxpemUoe1xyXG4gICAgICAgIGVuZHBvaW50OiAnaHR0cHM6Ly9vdGhlci5jb20nLFxyXG4gICAgICAgIHVzZXJuYW1lOiAnb3RoZXInLFxyXG4gICAgICAgIHBhc3N3b3JkOiAnb3RoZXInLFxyXG4gICAgICAgIHNlcnZpY2VOYW1lOiAnb3RoZXItc2VydmljZScsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgZXhwZWN0KHByb3ZpZGVyLmlzSW5pdGlhbGl6ZWQoKSkudG9CZShmaXJzdEluaXQpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaXQoJ27Do28gZGV2ZSBpbmljaWFsaXphciBzZSBlbmFibGVkPWZhbHNlJywgKCkgPT4ge1xyXG4gICAgICAvLyBDcmlhciBwcm92aWRlciBzZW0gZW52IHZhcnMgcGFyYSBuw6NvIGF1dG8taW5pY2lhbGl6YXJcclxuICAgICAgZGVsZXRlIHByb2Nlc3MuZW52Lk9URUxfRVhQT1JURVJfT1RMUF9FTkRQT0lOVDtcclxuICAgICAgY29uc3QgbmV3UHJvdmlkZXIgPSBuZXcgVHNlZFRlbGVtZXRyeVByb3ZpZGVyKCk7XHJcblxyXG4gICAgICBuZXdQcm92aWRlci5pbml0aWFsaXplKHtcclxuICAgICAgICBlbmRwb2ludDogJ2h0dHBzOi8vdGVzdC5jb20nLFxyXG4gICAgICAgIHVzZXJuYW1lOiAndXNlcicsXHJcbiAgICAgICAgcGFzc3dvcmQ6ICdwYXNzJyxcclxuICAgICAgICBlbmFibGVkOiBmYWxzZSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBleHBlY3QobmV3UHJvdmlkZXIuaXNJbml0aWFsaXplZCgpKS50b0JlKGZhbHNlKTtcclxuICAgIH0pO1xyXG4gIH0pO1xyXG5cclxuICBkZXNjcmliZSgnZ2V0TG9nZ2VyUHJvdmlkZXInLCAoKSA9PiB7XHJcbiAgICBpdCgnZGV2ZSByZXRvcm5hciBMb2dnZXJQcm92aWRlciBhcMOzcyBpbmljaWFsaXphw6fDo28nLCAoKSA9PiB7XHJcbiAgICAgIHByb3ZpZGVyLmluaXRpYWxpemUoe1xyXG4gICAgICAgIGVuZHBvaW50OiAnaHR0cHM6Ly90ZXN0LmNvbScsXHJcbiAgICAgICAgdXNlcm5hbWU6ICd1c2VyJyxcclxuICAgICAgICBwYXNzd29yZDogJ3Bhc3MnLFxyXG4gICAgICAgIHNlcnZpY2VOYW1lOiAndGVzdC1zZXJ2aWNlJyxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBjb25zdCBsb2dnZXJQcm92aWRlciA9IHByb3ZpZGVyLmdldExvZ2dlclByb3ZpZGVyKCk7XHJcbiAgICAgIGV4cGVjdChsb2dnZXJQcm92aWRlcikudG9CZURlZmluZWQoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGl0KCdkZXZlIHJldG9ybmFyIG51bGwgc2UgbsOjbyBpbmljaWFsaXphZG8nLCAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld1Byb3ZpZGVyID0gbmV3IFRzZWRUZWxlbWV0cnlQcm92aWRlcigpO1xyXG4gICAgICAvLyBMaW1wYXIgZW52IHZhcnMgcGFyYSBuw6NvIGF1dG8taW5pY2lhbGl6YXJcclxuICAgICAgZGVsZXRlIHByb2Nlc3MuZW52Lk9URUxfRVhQT1JURVJfT1RMUF9FTkRQT0lOVDtcclxuXHJcbiAgICAgIGNvbnN0IGVtcHR5UHJvdmlkZXIgPSBuZXcgVHNlZFRlbGVtZXRyeVByb3ZpZGVyKCk7XHJcbiAgICAgIGV4cGVjdChlbXB0eVByb3ZpZGVyLmdldExvZ2dlclByb3ZpZGVyKCkpLnRvQmVOdWxsKCk7XHJcbiAgICB9KTtcclxuICB9KTtcclxuXHJcbiAgZGVzY3JpYmUoJ2dldFRyYWNlclByb3ZpZGVyJywgKCkgPT4ge1xyXG4gICAgaXQoJ2RldmUgcmV0b3JuYXIgVHJhY2VyUHJvdmlkZXIgYXDDs3MgaW5pY2lhbGl6YcOnw6NvJywgKCkgPT4ge1xyXG4gICAgICBwcm92aWRlci5pbml0aWFsaXplKHtcclxuICAgICAgICBlbmRwb2ludDogJ2h0dHBzOi8vdGVzdC5jb20nLFxyXG4gICAgICAgIHVzZXJuYW1lOiAndXNlcicsXHJcbiAgICAgICAgcGFzc3dvcmQ6ICdwYXNzJyxcclxuICAgICAgICBzZXJ2aWNlTmFtZTogJ3Rlc3Qtc2VydmljZScsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgY29uc3QgdHJhY2VyUHJvdmlkZXIgPSBwcm92aWRlci5nZXRUcmFjZXJQcm92aWRlcigpO1xyXG4gICAgICBleHBlY3QodHJhY2VyUHJvdmlkZXIpLnRvQmVEZWZpbmVkKCk7XHJcbiAgICB9KTtcclxuICB9KTtcclxuXHJcbiAgZGVzY3JpYmUoJ2dldE1ldGVyUHJvdmlkZXInLCAoKSA9PiB7XHJcbiAgICBpdCgnZGV2ZSByZXRvcm5hciBNZXRlclByb3ZpZGVyIGFww7NzIGluaWNpYWxpemHDp8OjbycsICgpID0+IHtcclxuICAgICAgcHJvdmlkZXIuaW5pdGlhbGl6ZSh7XHJcbiAgICAgICAgZW5kcG9pbnQ6ICdodHRwczovL3Rlc3QuY29tJyxcclxuICAgICAgICB1c2VybmFtZTogJ3VzZXInLFxyXG4gICAgICAgIHBhc3N3b3JkOiAncGFzcycsXHJcbiAgICAgICAgc2VydmljZU5hbWU6ICd0ZXN0LXNlcnZpY2UnLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGNvbnN0IG1ldGVyUHJvdmlkZXIgPSBwcm92aWRlci5nZXRNZXRlclByb3ZpZGVyKCk7XHJcbiAgICAgIGV4cGVjdChtZXRlclByb3ZpZGVyKS50b0JlRGVmaW5lZCgpO1xyXG4gICAgfSk7XHJcbiAgfSk7XHJcblxyXG4gIGRlc2NyaWJlKCdmb3JjZUZsdXNoJywgKCkgPT4ge1xyXG4gICAgaXQoJ2RldmUgZXhlY3V0YXIgZm9yY2VGbHVzaCBzZW0gZXJyb3MnLCBhc3luYyAoKSA9PiB7XHJcbiAgICAgIHByb3ZpZGVyLmluaXRpYWxpemUoe1xyXG4gICAgICAgIGVuZHBvaW50OiAnaHR0cHM6Ly90ZXN0LmNvbScsXHJcbiAgICAgICAgdXNlcm5hbWU6ICd1c2VyJyxcclxuICAgICAgICBwYXNzd29yZDogJ3Bhc3MnLFxyXG4gICAgICAgIHNlcnZpY2VOYW1lOiAndGVzdC1zZXJ2aWNlJyxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBhd2FpdCBleHBlY3QocHJvdmlkZXIuZm9yY2VGbHVzaCgpKS5yZXNvbHZlcy5ub3QudG9UaHJvdygpO1xyXG4gICAgfSk7XHJcbiAgfSk7XHJcblxyXG4gIGRlc2NyaWJlKCdzaHV0ZG93bicsICgpID0+IHtcclxuICAgIGl0KCdkZXZlIGZhemVyIHNodXRkb3duIGUgbWFyY2FyIGNvbW8gbsOjbyBpbmljaWFsaXphZG8nLCBhc3luYyAoKSA9PiB7XHJcbiAgICAgIHByb3ZpZGVyLmluaXRpYWxpemUoe1xyXG4gICAgICAgIGVuZHBvaW50OiAnaHR0cHM6Ly90ZXN0LmNvbScsXHJcbiAgICAgICAgdXNlcm5hbWU6ICd1c2VyJyxcclxuICAgICAgICBwYXNzd29yZDogJ3Bhc3MnLFxyXG4gICAgICAgIHNlcnZpY2VOYW1lOiAndGVzdC1zZXJ2aWNlJyxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBleHBlY3QocHJvdmlkZXIuaXNJbml0aWFsaXplZCgpKS50b0JlKHRydWUpO1xyXG5cclxuICAgICAgYXdhaXQgcHJvdmlkZXIuc2h1dGRvd24oKTtcclxuXHJcbiAgICAgIGV4cGVjdChwcm92aWRlci5pc0luaXRpYWxpemVkKCkpLnRvQmUoZmFsc2UpO1xyXG4gICAgfSk7XHJcbiAgfSk7XHJcblxyXG4gIGRlc2NyaWJlKCdpbnRlZ3Jhw6fDo28gY29tcGxldGEnLCAoKSA9PiB7XHJcbiAgICBpdCgnZGV2ZSBjcmlhciBwcm92aWRlciBjb21wbGV0byBjb20gbG9ncywgdHJhY2VzIGUgbcOpdHJpY2FzJywgKCkgPT4ge1xyXG4gICAgICBwcm92aWRlci5pbml0aWFsaXplKHtcclxuICAgICAgICBlbmRwb2ludDogJ2h0dHBzOi8vdGVzdC5jb20nLFxyXG4gICAgICAgIHVzZXJuYW1lOiAndXNlcicsXHJcbiAgICAgICAgcGFzc3dvcmQ6ICdwYXNzJyxcclxuICAgICAgICBzZXJ2aWNlTmFtZTogJ3Rlc3Qtc2VydmljZScsXHJcbiAgICAgICAgc2VydmljZVZlcnNpb246ICcyLjAuMCcsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgZXhwZWN0KHByb3ZpZGVyLmlzSW5pdGlhbGl6ZWQoKSkudG9CZSh0cnVlKTtcclxuICAgICAgZXhwZWN0KHByb3ZpZGVyLmdldExvZ2dlclByb3ZpZGVyKCkpLnRvQmVEZWZpbmVkKCk7XHJcbiAgICAgIGV4cGVjdChwcm92aWRlci5nZXRUcmFjZXJQcm92aWRlcigpKS50b0JlRGVmaW5lZCgpO1xyXG4gICAgICBleHBlY3QocHJvdmlkZXIuZ2V0TWV0ZXJQcm92aWRlcigpKS50b0JlRGVmaW5lZCgpO1xyXG4gICAgfSk7XHJcbiAgfSk7XHJcbn0pO1xyXG4iXX0=
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RzZWQvX190ZXN0c19fL3NlcnZpY2UudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLG1DQUE4RDtBQUM5RCxzQ0FBa0Q7QUFFbEQsSUFBQSxpQkFBUSxFQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRTtJQUNwQyxJQUFJLFlBQWlCLENBQUM7SUFFdEIsSUFBQSxtQkFBVSxFQUFDLEdBQUcsRUFBRTtRQUVkLFlBQVksR0FBRztZQUNiLGFBQWEsRUFBRSxXQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQztZQUM1QyxpQkFBaUIsRUFBRSxXQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDO2dCQUN6QyxTQUFTLEVBQUUsV0FBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQztvQkFDakMsSUFBSSxFQUFFLFdBQUUsQ0FBQyxFQUFFLEVBQUU7aUJBQ2QsQ0FBQzthQUNILENBQUM7WUFDRixpQkFBaUIsRUFBRSxXQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUM5QyxVQUFVLEVBQUUsV0FBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQztTQUNqRCxDQUFDO1FBR0YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEdBQUcsY0FBYyxDQUFDO1FBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztJQUM3QixDQUFDLENBQUMsQ0FBQztJQUVILElBQUEsaUJBQVEsRUFBQyxtQ0FBbUMsRUFBRSxHQUFHLEVBQUU7UUFDakQsSUFBQSxXQUFFLEVBQUMsaURBQWlELEVBQUUsR0FBRyxFQUFFO1lBQ3pELE1BQU0sUUFBUSxHQUFHLElBQUksOEJBQXFCLEVBQUUsQ0FBQztZQUU3QyxRQUFRLENBQUMsVUFBVSxDQUFDO2dCQUNsQixRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QixRQUFRLEVBQUUsTUFBTTtnQkFDaEIsUUFBUSxFQUFFLE1BQU07Z0JBQ2hCLFdBQVcsRUFBRSxjQUFjO2FBQzVCLENBQUMsQ0FBQztZQUVILElBQUEsZUFBTSxFQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QyxJQUFBLGVBQU0sRUFBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25ELElBQUEsZUFBTSxFQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkQsSUFBQSxlQUFNLEVBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUEsV0FBRSxFQUFDLDRDQUE0QyxFQUFFLEdBQUcsRUFBRTtZQUNwRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUM7WUFDL0MsTUFBTSxRQUFRLEdBQUcsSUFBSSw4QkFBcUIsRUFBRSxDQUFDO1lBRTdDLElBQUEsZUFBTSxFQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEQsSUFBQSxlQUFNLEVBQUMsUUFBUSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoRCxJQUFBLGVBQU0sRUFBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBQSxXQUFFLEVBQUMsNkNBQTZDLEVBQUUsR0FBUyxFQUFFO1lBQzNELE1BQU0sUUFBUSxHQUFHLElBQUksOEJBQXFCLEVBQUUsQ0FBQztZQUU3QyxRQUFRLENBQUMsVUFBVSxDQUFDO2dCQUNsQixRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QixRQUFRLEVBQUUsTUFBTTtnQkFDaEIsUUFBUSxFQUFFLE1BQU07Z0JBQ2hCLFdBQVcsRUFBRSxjQUFjO2FBQzVCLENBQUMsQ0FBQztZQUVILE1BQU0sSUFBQSxlQUFNLEVBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM3RCxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlc2NyaWJlLCBpdCwgZXhwZWN0LCB2aSwgYmVmb3JlRWFjaCB9IGZyb20gJ3ZpdGVzdCc7XHJcbmltcG9ydCB7IFRzZWRUZWxlbWV0cnlQcm92aWRlciB9IGZyb20gJy4uL2NvbmZpZyc7XHJcblxyXG5kZXNjcmliZSgnVHNlZFRlbGVtZXRyeVNlcnZpY2UnLCAoKSA9PiB7XHJcbiAgbGV0IG1vY2tQcm92aWRlcjogYW55O1xyXG5cclxuICBiZWZvcmVFYWNoKCgpID0+IHtcclxuICAgIC8vIE1vY2sgZG8gcHJvdmlkZXJcclxuICAgIG1vY2tQcm92aWRlciA9IHtcclxuICAgICAgaXNJbml0aWFsaXplZDogdmkuZm4oKS5tb2NrUmV0dXJuVmFsdWUodHJ1ZSksXHJcbiAgICAgIGdldExvZ2dlclByb3ZpZGVyOiB2aS5mbigpLm1vY2tSZXR1cm5WYWx1ZSh7XHJcbiAgICAgICAgZ2V0TG9nZ2VyOiB2aS5mbigpLm1vY2tSZXR1cm5WYWx1ZSh7XHJcbiAgICAgICAgICBlbWl0OiB2aS5mbigpLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICB9KSxcclxuICAgICAgZ2V0VHJhY2VyUHJvdmlkZXI6IHZpLmZuKCkubW9ja1JldHVyblZhbHVlKHt9KSxcclxuICAgICAgZm9yY2VGbHVzaDogdmkuZm4oKS5tb2NrUmVzb2x2ZWRWYWx1ZSh1bmRlZmluZWQpLFxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBNb2NrIGVudiB2YXJzXHJcbiAgICBwcm9jZXNzLmVudi5TRVJWSUNFX05BTUUgPSAndGVzdC1zZXJ2aWNlJztcclxuICAgIHByb2Nlc3MuZW52LlNUQUdFID0gJ3Rlc3QnO1xyXG4gIH0pO1xyXG5cclxuICBkZXNjcmliZSgnVHNlZFRlbGVtZXRyeVByb3ZpZGVyIGludGVncmF0aW9uJywgKCkgPT4ge1xyXG4gICAgaXQoJ2RldmUgY3JpYXIgcHJvdmlkZXIgY29tIGxvZ3MsIHRyYWNlcyBlIG3DqXRyaWNhcycsICgpID0+IHtcclxuICAgICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgVHNlZFRlbGVtZXRyeVByb3ZpZGVyKCk7XHJcblxyXG4gICAgICBwcm92aWRlci5pbml0aWFsaXplKHtcclxuICAgICAgICBlbmRwb2ludDogJ2h0dHBzOi8vdGVzdC5jb20nLFxyXG4gICAgICAgIHVzZXJuYW1lOiAndXNlcicsXHJcbiAgICAgICAgcGFzc3dvcmQ6ICdwYXNzJyxcclxuICAgICAgICBzZXJ2aWNlTmFtZTogJ3Rlc3Qtc2VydmljZScsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgZXhwZWN0KHByb3ZpZGVyLmlzSW5pdGlhbGl6ZWQoKSkudG9CZSh0cnVlKTtcclxuICAgICAgZXhwZWN0KHByb3ZpZGVyLmdldExvZ2dlclByb3ZpZGVyKCkpLnRvQmVEZWZpbmVkKCk7XHJcbiAgICAgIGV4cGVjdChwcm92aWRlci5nZXRUcmFjZXJQcm92aWRlcigpKS50b0JlRGVmaW5lZCgpO1xyXG4gICAgICBleHBlY3QocHJvdmlkZXIuZ2V0TWV0ZXJQcm92aWRlcigpKS50b0JlRGVmaW5lZCgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaXQoJ2RldmUgcmV0b3JuYXIgbnVsbCBxdWFuZG8gbsOjbyBpbmljaWFsaXphZG8nLCAoKSA9PiB7XHJcbiAgICAgIGRlbGV0ZSBwcm9jZXNzLmVudi5PVEVMX0VYUE9SVEVSX09UTFBfRU5EUE9JTlQ7XHJcbiAgICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IFRzZWRUZWxlbWV0cnlQcm92aWRlcigpO1xyXG5cclxuICAgICAgZXhwZWN0KHByb3ZpZGVyLmdldExvZ2dlclByb3ZpZGVyKCkpLnRvQmVOdWxsKCk7XHJcbiAgICAgIGV4cGVjdChwcm92aWRlci5nZXRUcmFjZXJQcm92aWRlcigpKS50b0JlTnVsbCgpO1xyXG4gICAgICBleHBlY3QocHJvdmlkZXIuZ2V0TWV0ZXJQcm92aWRlcigpKS50b0JlTnVsbCgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaXQoJ2RldmUgZmF6ZXIgZm9yY2VGbHVzaCBkZSB0b2RvcyBvcyBwcm92aWRlcnMnLCBhc3luYyAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IFRzZWRUZWxlbWV0cnlQcm92aWRlcigpO1xyXG5cclxuICAgICAgcHJvdmlkZXIuaW5pdGlhbGl6ZSh7XHJcbiAgICAgICAgZW5kcG9pbnQ6ICdodHRwczovL3Rlc3QuY29tJyxcclxuICAgICAgICB1c2VybmFtZTogJ3VzZXInLFxyXG4gICAgICAgIHBhc3N3b3JkOiAncGFzcycsXHJcbiAgICAgICAgc2VydmljZU5hbWU6ICd0ZXN0LXNlcnZpY2UnLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGF3YWl0IGV4cGVjdChwcm92aWRlci5mb3JjZUZsdXNoKCkpLnJlc29sdmVzLm5vdC50b1Rocm93KCk7XHJcbiAgICB9KTtcclxuICB9KTtcclxufSk7XHJcbiJdfQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RzZWQvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLHNEQUF5RDtBQUN6RCxvRkFBeUU7QUFDekUsc0ZBQTRFO0FBQzVFLDBGQUErRTtBQUMvRSx3REFBb0Q7QUFDcEQsOEVBRzZDO0FBQzdDLDJFQUF5RTtBQUN6RSxrRUFHdUM7QUFDdkMsNERBR29DO0FBQ3BDLDRDQUFvRDtBQVdwRCxNQUFhLHFCQUFxQjtJQU1oQztRQUxRLG1CQUFjLEdBQTBCLElBQUksQ0FBQztRQUM3QyxtQkFBYyxHQUE4QixJQUFJLENBQUM7UUFDakQsa0JBQWEsR0FBeUIsSUFBSSxDQUFDO1FBQzNDLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBSTFCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztZQUNqRSxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksSUFBSSxpQkFBaUIsQ0FBQztZQUNsRSxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztZQUN2QyxJQUFJLENBQUMsVUFBVSxDQUFDO2dCQUNkLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixJQUFJLEVBQUU7Z0JBQ3ZELFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixJQUFJLEVBQUU7Z0JBQ25ELFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixJQUFJLEVBQUU7Z0JBQ25ELFdBQVcsRUFBRSxHQUFHLFdBQVcsSUFBSSxZQUFZLEVBQUU7Z0JBQzdDLGNBQWMsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixJQUFJLE9BQU87Z0JBQzFELE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksS0FB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USxFQUFFLENBQUM7SUFDekIsQ0FBQztDQUNGO0FBbk1ELHNEQW1NQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvZ2dlclByb3ZpZGVyIH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvc2RrLWxvZ3MnO1xyXG5pbXBvcnQgeyBPVExQTG9nRXhwb3J0ZXIgfSBmcm9tICdAb3BlbnRlbGVtZXRyeS9leHBvcnRlci1sb2dzLW90bHAtaHR0cCc7XHJcbmltcG9ydCB7IE9UTFBUcmFjZUV4cG9ydGVyIH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvZXhwb3J0ZXItdHJhY2Utb3RscC1odHRwJztcclxuaW1wb3J0IHsgT1RMUE1ldHJpY0V4cG9ydGVyIH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvZXhwb3J0ZXItbWV0cmljcy1vdGxwLWh0dHAnO1xyXG5pbXBvcnQgeyBSZXNvdXJjZSB9IGZyb20gJ0BvcGVudGVsZW1ldHJ5L3Jlc291cmNlcyc7XHJcbmltcG9ydCB7XHJcbiAgQVRUUl9TRVJWSUNFX05BTUUsXHJcbiAgQVRUUl9TRVJWSUNFX1ZFUlNJT04sXHJcbn0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvc2VtYW50aWMtY29udmVudGlvbnMnO1xyXG5pbXBvcnQgeyBUc2VkU3luY0xvZ1JlY29yZFByb2Nlc3NvciB9IGZyb20gJy4vc3luYy1sb2ctcmVjb3JkLXByb2Nlc3Nvcic7XHJcbmltcG9ydCB7XHJcbiAgTm9kZVRyYWNlclByb3ZpZGVyLFxyXG4gIEJhdGNoU3BhblByb2Nlc3NvcixcclxufSBmcm9tICdAb3BlbnRlbGVtZXRyeS9zZGstdHJhY2Utbm9kZSc7XHJcbmltcG9ydCB7XHJcbiAgTWV0ZXJQcm92aWRlcixcclxuICBQZXJpb2RpY0V4cG9ydGluZ01ldHJpY1JlYWRlcixcclxufSBmcm9tICdAb3BlbnRlbGVtZXRyeS9zZGstbWV0cmljcyc7XHJcbmltcG9ydCB7IHRyYWNlLCBtZXRyaWNzIH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvYXBpJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVHNlZFRlbGVtZXRyeUNvbmZpZyB7XHJcbiAgZW5kcG9pbnQ6IHN0cmluZztcclxuICB1c2VybmFtZTogc3RyaW5nO1xyXG4gIHBhc3N3b3JkOiBzdHJpbmc7XHJcbiAgc2VydmljZU5hbWU/OiBzdHJpbmc7XHJcbiAgc2VydmljZVZlcnNpb24/OiBzdHJpbmc7XHJcbiAgZW5hYmxlZD86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUc2VkVGVsZW1ldHJ5UHJvdmlkZXIge1xyXG4gIHByaXZhdGUgbG9nZ2VyUHJvdmlkZXI6IExvZ2dlclByb3ZpZGVyIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSB0cmFjZXJQcm92aWRlcjogTm9kZVRyYWNlclByb3ZpZGVyIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBtZXRlclByb3ZpZGVyOiBNZXRlclByb3ZpZGVyIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplZCA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIC8vIEF1dG8taW5pdGlhbGl6ZSBzeW5jaHJvbm91c2x5IHdpdGggZW52aXJvbm1lbnQgdmFyaWFibGVzXHJcbiAgICBpZiAoIXRoaXMuaW5pdGlhbGl6ZWQgJiYgcHJvY2Vzcy5lbnYuT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UKSB7XHJcbiAgICAgIGNvbnN0IHNlcnZpY2VOYW1lID0gcHJvY2Vzcy5lbnYuU0VSVklDRV9OQU1FIHx8ICd1bmtub3duLXNlcnZpY2UnO1xyXG4gICAgICBjb25zdCBzZXJ2aWNlU3RhZ2UgPSBwcm9jZXNzLmVudi5TVEFHRTtcclxuICAgICAgdGhpcy5pbml0aWFsaXplKHtcclxuICAgICAgICBlbmRwb2ludDogcHJvY2Vzcy5lbnYuT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UIHx8ICcnLFxyXG4gICAgICAgIHVzZXJuYW1lOiBwcm9jZXNzLmVudi5PVEVMX0VYUE9SVEVSX09UTFBfVVNFUiB8fCAnJyxcclxuICAgICAgICBwYXNzd29yZDogcHJvY2Vzcy5lbnYuT1RFTF9FWFBPUlRFUl9PVExQX1BBU1MgfHwgJycsXHJcbiAgICAgICAgc2VydmljZU5hbWU6IGAke3NlcnZpY2VOYW1lfS0ke3NlcnZpY2VTdGFnZX1gLFxyXG4gICAgICAgIHNlcnZpY2VWZXJzaW9uOiBwcm9jZXNzLmVudi5ucG1fcGFja2FnZV92ZXJzaW9uIHx8ICcxLjAuMCcsXHJcbiAgICAgICAgZW5hYmxlZDogcHJvY2Vzcy5lbnYuT1RFTF9FTkFCTEVEICE9PSAnZmFsc2UnLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbml0aWFsaXplKGNvbmZpZzogVHNlZFRlbGVtZXRyeUNvbmZpZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb25maWcuZW5hYmxlZCA9PT0gZmFsc2UpIHtcclxuICAgICAgY29uc29sZS5sb2coJ1tUZWxlbWV0cnldIE9wZW5UZWxlbWV0cnkgaXMgZGlzYWJsZWQnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghY29uZmlnLmVuZHBvaW50IHx8ICFjb25maWcudXNlcm5hbWUgfHwgIWNvbmZpZy5wYXNzd29yZCkge1xyXG4gICAgICAvLyBOw6NvIGxvZ2FyIGVycm8gc2UgZXN0aXZlcm1vcyBlbSBtb2RvIGRlIGJ1aWxkXHJcbiAgICAgIGlmIChcclxuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Rlc3QnICYmXHJcbiAgICAgICAgcHJvY2Vzcy5lbnYuT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlbWV0cnldIE1pc3NpbmcgcmVxdWlyZWQgY29uZmlndXJhdGlvbicpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0cnkge1xyXG4gICAgICAvLyBDcmVhdGUgcmVzb3VyY2Ugd2l0aCBzZXJ2aWNlIGluZm9ybWF0aW9uXHJcbiAgICAgIGNvbnN0IHJlc291cmNlID0gbmV3IFJlc291cmNlKHtcclxuICAgICAgICBbQVRUUl9TRVJWSUNFX05BTUVdOiBjb25maWcuc2VydmljZU5hbWUgfHwgJ3Vua25vd24tc2VydmljZScsXHJcbiAgICAgICAgW0FUVFJfU0VSVklDRV9WRVJTSU9OXTogY29uZmlnLnNlcnZpY2VWZXJzaW9uIHx8ICcxLjAuMCcsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgY29uc3QgYmFzaWNBdXRoID0gYEJhc2ljICR7QnVmZmVyLmZyb20oYCR7Y29uZmlnLnVzZXJuYW1lfToke2NvbmZpZy5wYXNzd29yZH1gKS50b1N0cmluZygnYmFzZTY0Jyl9YDtcclxuICAgICAgY29uc3QgaGVhZGVycyA9IHtcclxuICAgICAgICBBdXRob3JpemF0aW9uOiBiYXNpY0F1dGgsXHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgfTtcclxuXHJcbiAgICAgIC8vIENyZWF0ZSBPVExQIGV4cG9ydGVycyB3aXRoIGF1dGhlbnRpY2F0aW9uIGFuZCB0aW1lb3V0IGNvbmZpZ3VyYXRpb25cclxuICAgICAgY29uc3QgbG9nRXhwb3J0ZXIgPSBuZXcgT1RMUExvZ0V4cG9ydGVyKHtcclxuICAgICAgICB1cmw6IGAke2NvbmZpZy5lbmRwb2ludH0vdjEvbG9nc2AsXHJcbiAgICAgICAgaGVhZGVycyxcclxuICAgICAgICB0aW1lb3V0TWlsbGlzOiA1MDAwLCAvLyA1IHNlY29uZCB0aW1lb3V0IGZvciBleHBvcnRzXHJcbiAgICAgICAgY29uY3VycmVuY3lMaW1pdDogMSwgLy8gUHJvY2VzcyBvbmUgZXhwb3J0IGF0IGEgdGltZVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGNvbnN0IHRyYWNlRXhwb3J0ZXIgPSBuZXcgT1RMUFRyYWNlRXhwb3J0ZXIoe1xyXG4gICAgICAgIHVybDogYCR7Y29uZmlnLmVuZHBvaW50fS92MS90cmFjZXNgLFxyXG4gICAgICAgIGhlYWRlcnMsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgY29uc3QgbWV0cmljRXhwb3J0ZXIgPSBuZXcgT1RMUE1ldHJpY0V4cG9ydGVyKHtcclxuICAgICAgICB1cmw6IGAke2NvbmZpZy5lbmRwb2ludH0vdjEvbWV0cmljc2AsXHJcbiAgICAgICAgaGVhZGVycyxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICAvLyBVc2UgY3VzdG9tIFN5bmNMb2dSZWNvcmRQcm9jZXNzb3IgaW5zdGVhZCBvZiBTaW1wbGVMb2dSZWNvcmRQcm9jZXNzb3JcclxuICAgICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGFzeW5jIEhUVFAgZXhwb3J0IGlzIHByb3Blcmx5IGF3YWl0ZWQgaW4gTGFtYmRhXHJcbiAgICAgIC8vIGVudmlyb25tZW50cyB3aGVyZSBleGVjdXRpb24gY29udGV4dCBmcmVlemVzIGFmdGVyIGhhbmRsZXIgcmV0dXJuc1xyXG4gICAgICBjb25zdCBzeW5jUHJvY2Vzc29yID0gbmV3IFRzZWRTeW5jTG9nUmVjb3JkUHJvY2Vzc29yKGxvZ0V4cG9ydGVyKTtcclxuXHJcbiAgICAgIC8vIENyZWF0ZSBsb2dnZXIgcHJvdmlkZXIgd2l0aCByZXNvdXJjZSBhbmQgcHJvY2Vzc29yc1xyXG4gICAgICB0aGlzLmxvZ2dlclByb3ZpZGVyID0gbmV3IExvZ2dlclByb3ZpZGVyKHtcclxuICAgICAgICByZXNvdXJjZSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICAvLyBBZGQgcHJvY2Vzc29yIGFmdGVyIGNyZWF0aW9uXHJcbiAgICAgIHRoaXMubG9nZ2VyUHJvdmlkZXIuYWRkTG9nUmVjb3JkUHJvY2Vzc29yKHN5bmNQcm9jZXNzb3IpO1xyXG5cclxuICAgICAgLy8gQ3JlYXRlIHRyYWNlciBwcm92aWRlclxyXG4gICAgICB0aGlzLnRyYWNlclByb3ZpZGVyID0gbmV3IE5vZGVUcmFjZXJQcm92aWRlcih7XHJcbiAgICAgICAgcmVzb3VyY2UsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnRyYWNlclByb3ZpZGVyLmFkZFNwYW5Qcm9jZXNzb3IoXHJcbiAgICAgICAgbmV3IEJhdGNoU3BhblByb2Nlc3Nvcih0cmFjZUV4cG9ydGVyKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnRyYWNlclByb3ZpZGVyLnJlZ2lzdGVyKCk7XHJcblxyXG4gICAgICAvLyBTZXQgZ2xvYmFsIHRyYWNlciBwcm92aWRlclxyXG4gICAgICB0cmFjZS5zZXRHbG9iYWxUcmFjZXJQcm92aWRlcih0aGlzLnRyYWNlclByb3ZpZGVyKTtcclxuXHJcbiAgICAgIC8vIENyZWF0ZSBtZXRlciBwcm92aWRlclxyXG4gICAgICBjb25zdCBtZXRyaWNSZWFkZXIgPSBuZXcgUGVyaW9kaWNFeHBvcnRpbmdNZXRyaWNSZWFkZXIoe1xyXG4gICAgICAgIGV4cG9ydGVyOiBtZXRyaWNFeHBvcnRlcixcclxuICAgICAgICBleHBvcnRJbnRlcnZhbE1pbGxpczogMTAwMCxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLm1ldGVyUHJvdmlkZXIgPSBuZXcgTWV0ZXJQcm92aWRlcih7XHJcbiAgICAgICAgcmVzb3VyY2UsXHJcbiAgICAgICAgcmVhZGVyczogW21ldHJpY1JlYWRlcl0sXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gU2V0IGdsb2JhbCBtZXRlciBwcm92aWRlclxyXG4gICAgICBtZXRyaWNzLnNldEdsb2JhbE1ldGVyUHJvdmlkZXIodGhpcy5tZXRlclByb3ZpZGVyKTtcclxuXHJcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgICBjb25zb2xlLmxvZygnW1RlbGVtZXRyeV0gT3BlblRlbGVtZXRyeSBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHknKTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlbWV0cnldIEZhaWxlZCB0byBpbml0aWFsaXplIE9wZW5UZWxlbWV0cnk6JywgZXJyb3IpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldExvZ2dlclByb3ZpZGVyKCk6IExvZ2dlclByb3ZpZGVyIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5sb2dnZXJQcm92aWRlcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRUcmFjZXJQcm92aWRlcigpOiBOb2RlVHJhY2VyUHJvdmlkZXIgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLnRyYWNlclByb3ZpZGVyO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldE1ldGVyUHJvdmlkZXIoKTogTWV0ZXJQcm92aWRlciB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMubWV0ZXJQcm92aWRlcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc0luaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGb3JjZSBmbHVzaCBhbGwgcGVuZGluZyBsb2dzLCB0cmFjZXMgYW5kIG1ldHJpY3MgdG8gZW5zdXJlIHRoZXkgYXJlIHNlbnQgYmVmb3JlIExhbWJkYSBmcmVlemVzXHJcbiAgICogVGhpcyBpcyBjcml0aWNhbCBpbiBBV1MgTGFtYmRhIGVudmlyb25tZW50cyB3aGVyZSBleGVjdXRpb24gY29udGV4dCBmcmVlemVzXHJcbiAgICogaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGhhbmRsZXIgcmV0dXJucywgcG90ZW50aWFsbHkgYmVmb3JlIGFzeW5jIEhUVFAgcmVxdWVzdHMgY29tcGxldGVcclxuICAgKi9cclxuICBwdWJsaWMgYXN5bmMgZm9yY2VGbHVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdbVGVsZW1ldHJ5XSBTdGFydGluZyBmb3JjZUZsdXNoLi4uJyk7XHJcblxyXG4gICAgICAvLyBGb3JjZSBmbHVzaCBhbGwgcHJvdmlkZXJzIGluIHBhcmFsbGVsXHJcbiAgICAgIGNvbnN0IHByb21pc2VzOiBQcm9taXNlPHZvaWQ+W10gPSBbXTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmxvZ2dlclByb3ZpZGVyKSB7XHJcbiAgICAgICAgcHJvbWlzZXMucHVzaCh0aGlzLmxvZ2dlclByb3ZpZGVyLmZvcmNlRmx1c2goKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLnRyYWNlclByb3ZpZGVyKSB7XHJcbiAgICAgICAgcHJvbWlzZXMucHVzaCh0aGlzLnRyYWNlclByb3ZpZGVyLmZvcmNlRmx1c2goKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLm1ldGVyUHJvdmlkZXIpIHtcclxuICAgICAgICBwcm9taXNlcy5wdXNoKHRoaXMubWV0ZXJQcm92aWRlci5mb3JjZUZsdXNoKCkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XHJcblxyXG4gICAgICBjb25zdCBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBzdGFydFRpbWU7XHJcbiAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgIGBbVGVsZW1ldHJ5XSBmb3JjZUZsdXNoIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgaW4gJHtkdXJhdGlvbn1tc2BcclxuICAgICAgKTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlbWV0cnldIEZhaWxlZCB0byBmb3JjZSBmbHVzaCB0ZWxlbWV0cnk6JywgZXJyb3IpO1xyXG4gICAgICB0aHJvdyBlcnJvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzaHV0ZG93bigpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHByb21pc2VzOiBQcm9taXNlPHZvaWQ+W10gPSBbXTtcclxuXHJcbiAgICBpZiAodGhpcy5sb2dnZXJQcm92aWRlcikge1xyXG4gICAgICBwcm9taXNlcy5wdXNoKHRoaXMubG9nZ2VyUHJvdmlkZXIuc2h1dGRvd24oKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMudHJhY2VyUHJvdmlkZXIpIHtcclxuICAgICAgcHJvbWlzZXMucHVzaCh0aGlzLnRyYWNlclByb3ZpZGVyLnNodXRkb3duKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm1ldGVyUHJvdmlkZXIpIHtcclxuICAgICAgcHJvbWlzZXMucHVzaCh0aGlzLm1ldGVyUHJvdmlkZXIuc2h1dGRvd24oKSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xyXG4gICAgdGhpcy5pbml0aWFsaXplZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgJG9uRGVzdHJveSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHJldHVybiB0aGlzLnNodXRkb3duKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHNlZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQXlCO0FBQ3pCLDRDQUEwQjtBQUMxQixrREFBZ0M7QUFDaEMsOERBQTRDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb25maWcnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xvZy10ZWxlbWV0cnknO1xyXG5leHBvcnQgKiBmcm9tICcuL3N5bmMtbG9nLXJlY29yZC1wcm9jZXNzb3InO1xyXG4iXX0=
@@ -0,0 +1 @@
1
+ export declare function TsedLogTelemetry(): (_target: any, _propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;